Wie handhabt man Ether-Einzahlungen wie Börsen?

Eine der Kernphilosophien von Ethereum ist die Dezentralisierung. Es gibt jedoch immer noch viele gültige Anwendungsfälle für die Bereitstellung zentralisierter Wallet-Dienste, wobei Börsen eines der bekanntesten Beispiele sind.

Es scheint sehr wenig Informationen darüber zu geben, wie man Einzahlungen für solche Szenarien technisch umsetzt.

  • Was ist die neueste Empfehlung für die Anzahl der Sendebestätigungen mit dem Homestead-Release? ¹
  • Gibt es Bibliotheken oder Dienste, die Beispielimplementierungen bereitstellen? ²
  • Was ist die grobe Pseudo-Code-Implementierung, um dies selbst zu handhaben?
  • Irgendwelche anderen Überlegungen? ³

1) 5 hier genannte Bestätigungen Welche Anzahl an Bestätigungen gilt in Ethereum als sicher? und 12 hier Wie soll ich mit Blockchain-Forks in meiner DApp umgehen? , aber wie relevant sind diese noch mit der Homestead-Veröffentlichung?

2) reflux-tx wird hier erwähnt Wie soll ich mit Blockchain-Forks in meiner DApp umgehen?

3) Ich habe gesehen, wie Vitalik empfohlen hat, zwei Knoten zu betreiben, um die Risiken zu reduzieren.

Entweder gibt es zu viele Antwortmöglichkeiten oder gute Antworten wären zu lang für dieses Format. Bitte fügen Sie Details hinzu, um die Antwortmenge einzugrenzen oder ein Problem zu isolieren, das in wenigen Absätzen beantwortet werden kann. Vielleicht könnten Sie diese aufteilen und einzelne präzise Fragen beantworten.
Bitte fügen Sie einen Link zu "Ich habe gesehen, wie Vitalik empfiehlt, zwei Knoten zu betreiben, um die Risiken zu reduzieren.". Der Kontext könnte wichtig sein. Da ich viele Off-Blockchain-Interaktionen mache und mich daher sehr um dieses Thema kümmere, plane ich 3, die jeweils eine andere Technologie ausführen (z. B. Geth, Pyeth, Ethereumjs, Parität usw.), alle in verschiedenen Clouds mit unterschiedliche mgmt-Anmeldeinformationen.
Für Transaktionen wurde es jetzt ziemlich definitiv beantwortet als 12 confirmations + 2 implementations(wenn es um große Mengen an ETH geht.) reddit.com/r/ethereum/comments/4eplsv/…
@NikhilM: Ich denke, die Kritik am großen Umfang der Frage ist unbegründet. Die Hauptfrage ist ziemlich einfach: Wie implementieren wir EOA-Lagerstätten, wobei die weiteren Fragen auf die sehr relevanten Details abzielen.

Antworten (2)

Sie haben zusätzlich zu Ihrer Hauptfrage, wie mit Ether-Einzahlungen umzugehen ist, eine Reihe von Fragen gestellt.

Das Hauptproblem, mit dem Sie sich auseinandersetzen möchten, ist das Problem der doppelten Ausgaben. Wenn jemand auf Ihre Dapp-Börse einzahlt, wie stellen Sie sicher, dass die Gelder nicht doppelt ausgegeben werden, und wie gehen Sie mit Geldern um, die eingezahlt und dann aufgrund eines Forks effektiv nicht ausgegeben werden?

Die Antwort liegt in gewisser Weise bei Ihnen als DAPP Exchange-Entwickler – Sie entscheiden. Warum also nicht 24 Blöcke wählen oder, wie es eine Börse tut, 360 Blöcke? Je nachdem, was Ihnen das nötige Vertrauen gibt.

Mir ist klar, dass dies keine technische Antwort ist, aber es gibt ein funktionales Problem damit, hauptsächlich, dass der Benutzer, der einen Kauf- oder Verkaufsauftrag einreicht, zur gleichen Zeit warten muss, bis er abgeschlossen oder in das Auftragsbuch eingetragen wird. Sie müssen also Stabilität gegen Benutzerfreundlichkeit eintauschen.

Sie sollten sich auch darüber im Klaren sein, dass Sie aufgrund der Natur des Blockerstellungsprozesses Bestellungen nicht schnell oder auf die gleiche Weise wie bei einem zentralisierten Dienst bearbeiten können. Dies liegt daran, dass ein Knoten nicht alle Aufträge (d. h. Transaktionen) kennen kann, die irgendwo im Netzwerk platziert werden, und zwar in dem Moment, in dem er versucht, Aufträge zu verarbeiten, die er über das Netzwerk erhalten hat.

Auch dies ist ein wesentlicher Unterschied zu einem zentralisierten Dienst, und Sie sollten dies ebenfalls als Teil derselben Lösung betrachten.

Mir sind keine verfügbaren Bibliotheken bekannt, die Ihnen eine schnelle Antwort geben könnten, aber es scheint eine Reihe von Projekten zu geben.

Ziemlich gute Antwort angesichts des großen Umfangs der Frage. Das einzige, was ich hinzufügen möchte, ist, dass Sie die Anzahl der Blöcke proportional zum Wert machen können, um das Risiko zu reduzieren und gleichzeitig die Latenz für viele Transaktionen zu verringern. Wenn zum Beispiel jemand 1M Ether im Austausch gegen einen realen Wert sendet, würde ich VIELE Blöcke warten, bevor ich diesen realen Wert austausche. Wenn es 10 Ether sind, reichen ein paar Blöcke aus. Auf ethstats.net können Sie die Anzahl der Onkel sehen, die pro Bulk-Block-Zählung auftreten

Was ist die neueste Empfehlung für die Anzahl der Sendebestätigungen mit dem Homestead-Release?

Laut den Web3-APIs sind 12 Blöcke gut, um sicherzustellen, dass es keinen Fork gibt. Was TX-Bestätigungen betrifft ... Ich würde sagen, 5 ist immer noch der Defacto-Betrag, den Sie dort haben möchten. Das wird sich offensichtlich mit Serenity ändern, und ich bin mir nicht sicher, wie ich darauf antworten soll, angesichts der enormen Veränderungen, die Casper mit sich bringen wird. Folgen Sie dem Blog von Vitalik, damit Sie diese Dinge bei der Entwicklung im Hinterkopf behalten können.

Gibt es Bibliotheken oder Dienste, die Beispielimplementierungen bereitstellen?

hmmm ... Sie möchten wahrscheinlich mit Ereignissen und dieser Handhabung arbeiten ... nicht sicher über Ihren Sendebestätigungsbereich ... es scheint keine vorgefertigten Tools für diese Zwecke zu geben ... wahrscheinlich müssten Hacken Sie etwas in einem der Clients zusammen (ich würde empfehlen, Parity dafür zu verwenden, weil Sie etwas Schnelles wollen ... und Parity ist blitzschnell).

Was ist die grobe Pseudo-Code-Implementierung, um dies selbst zu handhaben?

etwas wie das

js:

var i = myEthereumEvents
myEthereumEvents.watchAllEvents() {
    if (eventHit)
         var boolean = contract.promisifiedCheckBalanceOfPeer()
         if (boolean)
              contract.exchangeTokenValue()
}

Jetzt müssen Sie wahrscheinlich Zinsen für einige von ihnen sammeln und eine Art Lastausgleich in Solidity erstellen ... das wird Ihrerseits einiges Nachdenken erfordern ... es gibt dort unzählige Beispiele für die Erstellung von Metacoins, würden Sie nur Müssen Sie es so einrichten, dass es die Token-Lieferung anderer Ketten nachahmt? Dies könnte helfen, die erforderliche Menge zu sichern ... andererseits sprechen Sie möglicherweise von etwas ganz anderem und möchten etwas rein von einer Austauschseite ... Eine Sache, die ich auf jeden Fall empfehlen würde, ist, die schnelle Synchronisierung auszuschalten und die Menge zu überwachen der eingehenden Transaktionen und passen sich entsprechend an Ihre Algorithmen an.

Lassen Sie mich wissen, ob dies Ihre Frage beantwortet.