Senden von Ether an ein Konto von einem Smart Contract

Ich habe gerade angefangen, mich mit Smart Contracts und Ethereum zu beschäftigen, und bin dabei auf das klassische Beispiel von FoundRaising gestoßen. (zB https://developer.ibm.com/clouddataservices/2016/05/19/block-chain-technology-smart-contracts-and-ethereum/ )

Da die gute Praxis eines Smart Contracts impliziert, dass das Ergebnis des Vertrags über alle Knoten hinweg gleich sein muss, habe ich ein Problem damit, die Drawdown()-Funktionalität des Smart Contracts zu verstehen, der unter der angegebenen URL präsentiert wird.

Konkret beim Anruf:

wohltäter.send(this.balance);

  1. Wie läuft der eigentliche Sendevorgang ab? Wird das Guthaben des Wohltäters lokal in jedem Knoten geändert, der den Smart Contract ausführt? Und wenn...

  2. Wie kommt der Konsens zustande?

Antworten (1)

Alle Nodes haben eine Kopie des gleichen Anhänge-Ledgers (als Blockchain bezeichnet), das den Zustand zum Zeitpunkt des Minings des Blocks speichert. Miner und Mining werden super gut im Ethereum Whitepaper erklärt .

Das Gleichgewicht wird lokal in jedem Knoten geändert, ja, aber die Knoten erzielen keinen Konsens über jede einzelne Vertragsausführung/Zustandsänderung in Echtzeit, wenn sie auftreten, es ist einfach der Bergmann, der den Block erfolgreich abgebaut hat, der entscheiden kann, welcher Zustand sich ändert und Funktionsaufrufe sind enthalten. Diese Frage erörtert weiter, wann jeder Knoten tatsächlich den Code jedes Transaktions-/Vertragsaufrufs ausführt.

Dieser neu abgebaute Block wird an die Blockchain angehängt, und die Blockchain mit der meisten Arbeit dahinter wird als die "richtige" Kette akzeptiert, sodass sich alle Knoten einig sind, dass alle Zustände in diesem Block vorerst die richtigen Zustände sind.

Stellen Sie sich beispielsweise vor, Sie haben benefactor.send(this.balance);mit dem Kontostandswert 294820984 angerufen, und ich habe mit dem Kontostandswert 7429847298 angerufen. Wenn wir diese Vertragsaufrufe gleichzeitig an das Netzwerk senden, könnten einige Bergleute Ihren Anruf einbeziehen und ihr Statusprotokoll entsprechend aktualisieren , aber einige könnten meine enthalten. Sie würden sich jedoch nur auf denjenigen einigen, der in einen Block abgebaut wird. In dieser Antwort wird genauer untersucht, auf welche Knoten sich einig ist, wenn ein Konsens erreicht wird.