Wie unterscheidet sich die tatsächliche Nutzung der Gaseinheit für die ähnliche Transaktion?

Ich habe ETH dreimal auf einen Smart Contract übertragen, der 48734 tatsächliche Gaseinheiten zur Ausführung benötigt.

Es dauerte 68932 Einheiten für den ersten TX und 48734 für die verbleibenden 2. Warum brauchte es mehr Benzin für den ersten TX als die letzten 2?

Link zum 2. und 3. TX.

Sie haben eine Smart-Contract-Methode aufgerufen, vielleicht muss sie zum ersten Mal einen Wert für Ihre Adresse initialisieren, der die verbrauchte Gasmenge ändern kann.

Antworten (1)

Das meiste davon ist wahrscheinlich Speicher. Eine der teuersten Operationen mit 20.000 Gas ist die Zuweisung eines neuen Lagerplatzes. Wenn also ein intelligenter Vertrag einen Speicherplatz von null auf ungleich null setzt, werden dem Sender des TX 20.000 Gas berechnet. In ähnlicher Weise werden, wenn ein Speicherschlitz von Nicht-Null auf Nicht-Null gesetzt wird (Aktualisieren eines bereits zugewiesenen Speicherschlitzes), dem Absender der tx 5.000 berechnet. Dies bedeutet häufig, dass dem Benutzer bei vielen Systemen mehr für einen erstmaligen Aufruf in Rechnung gestellt wird, insbesondere bei Token-Verträgen, da das Konto des Benutzers initialisiert werden muss.

Abgesehen davon kann eine normale Verzweigung oft einige hundert bis mehrere tausend Unterschiede verursachen. Ein häufiger Unterschied liegt auch in den TX-Daten. Tx-Daten werden 64 Gas für Nicht-Null-Bytes und nur 4 Gas für Null-Bytes berechnet. Wenn also zwei Personen dieselbe Funktion aufrufen, aber meine Parameter mehr Null-Bytes haben, dann ist es billiger für mich.

Weitere Informationen zur Opcode-Preisgestaltung finden Sie im Yellowpaper auf den Seiten 20 und 21.