Wie schätzt Ethereum das Gas für die Ausführung eines Vertrags ein?

Ich bin neu bei Ethereum. Ich kenne das Gaslimit und den Gaspreis gut. aber immer noch verwirrt

  1. Schlägt Ethereum beim Senden einer Transaktion zum Ausführen eines bereitgestellten Vertrags eine Schätzung vor, wie viel Gaslimit erforderlich ist, um die Transaktion abzuschließen?

  2. Wenn ja , wie genau ist diese Schätzung? Mit anderen Worten, wird es immer erfolgreich abgeschlossen, wenn nur das Schätzgas bezahlt wird?

  3. Wenn nein , wie kann ich das benötigte Gas kennen/vorhersagen?

  4. Wenn Miner eine Transaktion zum Ausführen eines Vertrags erhalten, können sie wissen, wie viel es dauern wird, um die Ausführung abzuschließen (wissen, wie viel Gaslimit (Rechenschritte) diese Transaktion kostet) oder sie wissen nur, wie hoch der Gaspreis ist ?.

  5. Wie überprüfen Validatoren, ob Miner einen Vertrag korrekt ausgeführt haben? Werden sie es erneut ausführen oder nur den Block ohne laufende Verträge validieren?

Ich habe versucht, diese herauszufinden, aber immer noch nicht in der Lage.

Vielen Dank

Antworten (1)

Geth schätzt zwar die Gaskosten einer Transaktion, aber theoretisch kann niemand – weder Geth, noch die Miner oder irgendjemand sonst – die Gaskosten einer Transaktion kennen, bevor sie beim Erstellen eines Blocks ausgeführt wird. Dies liegt daran, dass etwas anderes in einem Block passieren könnte, bevor die Transaktion ausgeführt wird (oder sogar im selben Block), wodurch sich das Ergebnis ändert, das geth bei der Schätzung erhalten hat. Es ist sogar möglich, dass Geth die Schätzung für einen Block vorgenommen hat, der es nicht einmal in die kanonische Blockchain geschafft hat.

Was den zweiten Punkt bringt. geth erhält seine Schätzung, indem es die Transaktion selbst simuliert, basierend auf dem letzten Block. Es gibt im Grunde keine andere Möglichkeit, dies zu tun. Dies wird das Halteproblem genannt, wenn Sie es nachschlagen wollen, und das ist der Grund, warum Gas überhaupt existiert.

In den meisten Fällen reicht es jedoch aus, den Kostenvoranschlag zu senden. In (IMHO) den meisten Situationen ist es sogar möglich, zu bestimmen, wie viel Gas eine Transaktion jemals möglicherweise verbrauchen könnte, und das dann zu verwenden.

Danke Matthew für die nützliche Antwort. Ich habe noch eine Frage, die ich gerade aufgeworfen habe. Ich weiß, dass jeder Vorgang im EVM eine bestimmte Menge Gas verbraucht. Wie hat Ethereum die Kosten für jede Operation vordefiniert (z. B. ADD kostet 3 Gas)? Basiert es auf der Zeit, die für die Abwicklung der Transaktion benötigt wird? oder ist das nur eine vermutung?
Vielleicht möchten Sie das als separate Frage stellen, da Kommentare nicht wirklich darauf ausgelegt sind, darauf zu antworten.