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?
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
Als praktisches Kompliment an die Antwort von Tjaden wird in Solidity eine Gasrückerstattung ausgestellt, wenn selfdestruct
oder delete
für vorhandene Daten gemacht wird:
delete a
weist den Anfangswert für den Typ zua
. Dh für ganze Zahlen ist es äquivalent zua
= 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.
delete
wirkt 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 a
es sich wirklich wie eine Zuweisung an verhälta
, dh es speichert ein neues Objekt ina
.
eth
Nick Johnson
Alper
length_of_the_array
? Weitere Einzelheiten zu diesem Thema finden Sie unter ( ethereum.stackexchange.com/q/69882/4575 ). @ethBenutzer2284570