Welche Art von Betrieb hat negative Gaskosten?

Ich verstehe, dass einige Operationen negatives Gas kosten, weil sie Speicherplatz auf der Blockchain freigeben, wie z. B. Selbstzerstörung. Was sind alle Operationen, die negatives Gas haben können? Tritt dies nur auf, weil die Operation letztendlich Speicherplatz in der Blockchain freigibt, oder gibt es andere Gründe, warum sie negatives Gas hat?

Antworten (2)

Die einzigen beiden OPCODEs mit negativen Gaskosten sind STORAGEKILL(-15000) und GSUICIDEREFUND(-24000).

Diese treten auf, wenn Speicherwerte gelöscht oder Kontakte getötet werden.

Diese OPCODEs gewähren Gasrückerstattungen, weil sie Platz in der Blockchain freigeben.

Die Preise aller OPCODEs finden Sie hier

Der neuere SELFDESTRUCT "Opcode" ist ein Alias ​​für SUICIDE; GSUICIDEREFUND gilt auch direkt für SELFDESTRUCT.
Beachten Sie, dass sie nicht wirklich negatives Benzin kosten; Stattdessen erstatten sie am Ende der Transaktion so viel Benzin zurück. Der Unterschied ist wichtig, wenn die Transaktion zunächst mit einer kleinen Menge Gas gesendet wurde.
Nach dem Löschen eines Arrays; Wie viel Gas wird erstattet? wären es 15.000 oder die 15.000 * length_of_the_array? Weitere Einzelheiten zu diesem Thema finden Sie unter ( ethereum.stackexchange.com/q/69882/4575 ). @eth
@TjadenHess du hast den Stipendienanruf 2300 vergessen.

Als praktisches Kompliment an die Antwort von Tjaden wird in Solidity eine Gasrückerstattung ausgestellt, wenn selfdestructoder deletefür vorhandene Daten gemacht wird:

delete aweist den Anfangswert für den Typ zu a. Dh für ganze Zahlen ist es äquivalent zu a= 0, aber es kann auch auf Arrays verwendet werden, wo es ein dynamisches Array der Länge Null oder ein statisches Array der gleichen Länge mit zurückgesetzten Elementen zuweist. Für Strukturen weist es eine Struktur zu, bei der alle Mitglieder zurückgesetzt werden.

deletewirkt sich nicht auf ganze Zuordnungen aus (da die Schlüssel von Zuordnungen beliebig sein können und im Allgemeinen unbekannt sind). Wenn Sie also eine Struktur löschen, werden alle Elemente zurückgesetzt, die keine Zuordnungen sind, und auch in die Elemente rekursiv, es sei denn, es handelt sich um Zuordnungen. Einzelne Tasten und ihre Zuordnung können jedoch gelöscht werden.

Es ist wichtig zu beachten, dass delete aes sich wirklich wie eine Zuweisung an verhält a, dh es speichert ein neues Objekt in a.

Eine erwähnenswerte Sache ist : Wenn Sie eine Transaktion oder Geld an einen selbstzerstörten Vertrag senden, verlieren Sie Ihr Geld.