Nehmen wir an, ich habe eine Transaktion gesendet, um einen Smart Contract aufzurufen (an seine Adresse). An welchem Punkt wird der Smart Contract ausgeführt? Ist es während des Transaktionsvalidierungsprozesses?
Gibt es auch eine Begrenzung, wie lange ein Smart Contract laufen kann? Beispielsweise beträgt die Blockgenerierungszeit in Ethereum etwa 12 Sekunden. Wenn es einen Smart Contract gibt, dessen Ausführung lange dauert, und wenn er während des Transaktionsvalidierungsprozesses ausgeführt wird, wie würde sich das auf die Blockzeit auswirken?
Die Ausführung einer Smart-Contract-Transaktion erfolgt, wenn der Mining-Knoten die Transaktion in einen von ihm generierten Block einschließt. Der Transaktions- und Smart-Contract-Code wird von jedem Validierungsknoten nach Erhalt des Blocks erneut ausgeführt.
Mining-Knoten, um einen Block zu generieren:
Sobald der Block generiert ist, wird er an das Netzwerk verteilt, und jeder Knoten, der diesen Block empfängt, fährt fort, die Liste der Transaktionen zu durchlaufen, um sicherzustellen, dass jede Transaktion gültig ist (einschließlich der Ausführung des zugehörigen Codes). Wenn sich ein neuer Knoten mit dem Netzwerk verbindet, lädt er jeden Block im Verlauf herunter und validiert jede Transaktion in jedem neu.
Wann wird also Smart Contract Code ausgeführt?
Die wiederholte Validierung ist möglich, da intelligente Vertragstransaktionen deterministisch sind. Sie können von Faktoren wie der Blocknummer selbst, aktuellen Speicherwerten für einen Vertrag oder dem Ergebnis der Berechnung eines anderen Smart Contracts abhängen, aber diese Informationen sind konstant und können perfekt neu berechnet werden, indem Transaktionen vom Anfang der Kette an durchlaufen werden.
Hinweis: Dies bezieht sich speziell auf Transaktionen . Die EVM definiert auch den Begriff eines Anrufs . Diese Unterscheidung wird an anderer Stelle in diesem Forum gut erklärt.
Die Grenzwerte werden über das System „Gas“ vorgegeben. Das Gas wird basierend auf der Menge des verwendeten Speichers zuzüglich der individuellen Gaskosten für jede Maschinenanweisung (Opcode) berechnet.
Gas wird durch zwei Mechanismen begrenzt:
Der Absender einer Transaktion gibt das Gaslimit an, das er bereit ist, für die Transaktion auszugeben. (Dies wird normalerweise automatisch auf der Grundlage einer Schätzung berechnet)
Mining-Knoten geben ein Block-Gesamtgaslimit an, das theoretisch auf Rentabilität basierend auf der Netzwerkleistung optimiert wird. Transaktionen, die das Blockgaslimit überschreiten, werden in keinen Block aufgenommen.
Während der Validierung kann die Ausführung des Transaktionscodes sicher abgebrochen werden, wenn eines dieser Limits erreicht wird. Dies verhindert, dass Nodes übermäßig viel Rechenzeit für diese Validierung aufwenden, und verhindert, dass die Blockzeit mit zunehmender Anzahl von Transaktionen anwächst.
Prabath Siriwardena
gnidan
Prabath Siriwardena
gnidan
Prabath Siriwardena
gnidan
Lajos Nagy