Según el papel amarillo, una de las variables del entorno de ejecución es:
Iw, el permiso para hacer modificaciones al estado.
No puedo encontrar más información al respecto, por ejemplo, cómo se configura y qué valores puede obtener (supongo que 1 o 0)
También me gustaría asegurarme de que la variable
Es decir, la profundidad de la presente llamada de mensaje o creación de contrato (es decir, el número de CALL o CREATE que se están ejecutando actualmente).
solo se decrementa en uno para cada código de operación CALL y CREATE, pero nunca para un DELEGATECALL o CALLCODE
Mi respuesta se basa en la versión actual del papel amarillo .
Iw, el permiso para hacer modificaciones al estado
La importancia de esta bandera se explica en el párrafo sobre Detención excepcional:
Tenga en cuenta solo la última condición, dice que si el permiso para modificar es falso y la instrucción actual es una especificada por W
(es decir, las instrucciones que pueden alterar el estado), entonces tenemos una excepción. Para completar, informo también la función W
:
I_w normalmente se establece en T
(verdadero) y se establece en F
solo cuando se realiza una STATICCALL.
solo se decrementa en uno para cada código de operación CALL y CREATE, pero nunca para un DELEGATECALL o CALLCODE
Esto está mal. También DELEGATECALL y CALLCODE incrementan y decrementan la pila de llamadas (se especifica en el papel amarillo).