Ausführungsumgebungsvariablen Iw und Ie

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

Antworten (1)

Meine Antwort basiert auf der aktuellen Version des gelben Papiers .

Ich_w

Iw, die Erlaubnis, Änderungen am Zustand vorzunehmen

Die Bedeutung dieses Flags wird im Abschnitt über außergewöhnliche Haltevorgänge erklärt:

Geben Sie hier die Bildbeschreibung ein

Berücksichtigen Sie nur die letzte Bedingung, die besagt, dass Wwir 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:

Geben Sie hier die Bildbeschreibung ein

I_w ist normalerweise auf T(wahr) gesetzt und wird Fnur 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).