Laut dem gelben Papier ist eine der Variablen der Ausführungsumgebung:
Iw, die Erlaubnis, Änderungen am Zustand vorzunehmen.
Ich kann keine weiteren Informationen darüber finden, zum Beispiel wie es eingestellt ist und welche Werte es bekommen kann (ich denke 1 oder 0)
Außerdem möchte ich sicherstellen, dass die Variable
Das heißt, die Tiefe des aktuellen Nachrichtenaufrufs oder der Vertragserstellung (dh die Anzahl der derzeit ausgeführten CALLs oder CREATEs).
wird nur für jeden CALL- und CREATE-Opcode um eins dekrementiert, aber niemals für einen DELEGATECALL- oder CALLCODE
Meine Antwort basiert auf der aktuellen Version des gelben Papiers .
Iw, die Erlaubnis, Änderungen am Zustand vorzunehmen
Die Bedeutung dieses Flags wird im Abschnitt über außergewöhnliche Haltevorgänge erklärt:
Berücksichtigen Sie nur die letzte Bedingung, die besagt, dass W
wir eine Ausnahme haben, wenn die Änderungserlaubnis falsch ist und die aktuelle Anweisung eine ist, die von angegeben ist (dh die Anweisungen, die den Zustand ändern können). Der Vollständigkeit halber berichte ich auch die Funktion W
:
I_w ist normalerweise auf T
(wahr) gesetzt und wird F
nur dann auf gesetzt, wenn ein STATICCALL durchgeführt wird.
wird nur für jeden CALL- und CREATE-Opcode um eins dekrementiert, aber niemals für einen DELEGATECALL- oder CALLCODE
Das ist falsch. Auch DELEGATECALL und CALLCODE inkrementieren und dekrementieren den Callstack (es ist im gelben Papier angegeben).