- The
EXTCODECOPY,EXTCODEHASH, andEXTCODESIZEopcodes are allowed within EOF containers. Their behavior is the same as when called from outside a container. - Restrictions on creating EOF contracts from existing facilities remains, with
EOFCREATEandTXCREATEopcodes providing contract creation services. - The entire "Ban Gas Introspection" theme is removed. The
CALL,STATICCALL,DELEGATECALL, andGASopcodes are allowed within EOF containers.CALLCODEis not allowed as it is a deprecated instruction.
::: spoiler Summary of EOF opcode changes
The list of opcodes not permitted in EOF contracts now consists of 9 instructions, down from 16.
CODESIZEandCODECOPYinstructions, as described in EIP-3540CALLCODEandSELFDESTRUCTinstructions, as described in EIP-3670JUMP,JUMPI, andPCinstructions, as described in EIP-4200CREATEandCREATE2instructions, as described in EIP-7620
The list of opcodes exclusive to EOF containers now consists of 15 opcodes, down from 19.
SWAPN,DUPN, andEXCHANGEinstructions, as described in EIP-663RJUMP,RJUMPI, andRJUMPVinstructions, as described in EIP-4200CALLFandRETFinstructions, as described in EIP-4750JUMPFinstruction, as described in EIP-6209DATALOAD,DATALOADN,DATASIZE, andDATACOPYinstructions, as described in EIP-7480EOFCREATEandRETURNCODEinstruction, as described in EIP-7620
One opcode added to code in and not in an EOF container:
TXCREATEinstruction, as decribed in EIP-7873 :::
There is a small PR implementing these changes.
- EIPs 7069, 7698, 7761, 7880 are moved from their present state in Fusaka to "DFI"
- EIP-3540
- Remove the ban of the
EXTCODESIZE,EXTCODECOPY,EXTCODEHASH, andGASopcodes from code in an EOF container. - The behavior of the
EXTCODE*series of opcodes is extended to code in an EOF container, with all the same semantics.
- Remove the ban of the
- EIP-7480 updates a rationale section to refer to new behavior, but otherwise remains the same.
- EIP-7620 updates the motivation to align with new behavior, but otherwise remains the same.
- eofwrap will need to be updated to include the previously restricted opcodes as valid opcodes
- eofwrap results will be inspected to ensure all existing tests for
*CALLseries opcodes are ported over to EOF. - eofwrap results will be inspected to ensure all existing tests for
EXTCODE*series opcodes are ported over to EOF. - Tests for
EXTCODETYPEandEXTCODEADDRESSwill not be written. - Most EIP-7069 tests for
EXT*CALLtests will be retired. Tests that validate they do not work in plain bytecode will be extended to cover EOF containers. - Gas testing will be added to the new EOF opcodes
- Existing EOF gas testing will be removed, as the tests are complex.
After finishing eof-devnet-1, these are the remaining changes.
- Clients MUST update instruction dispatch to add previously restricted instructions so they are valid in an EOF conainer.
- Clients MUST update other code that otherwise prevents the added operations from working inside an EOF container, if such code exists.
- Clients MUST remove
EXT*CALLinstructions from their instruction dispatches. - Clients SHOULD remove code implementing
EXT*CALLseries opcodes and code exclusively supporting it.
Estimated 8 to 12 hours per client, once test code is delivered.
The eof-devnet-1 plan remains as is.
The current eof-devnet-2 plan will be significanty revised.
Another devnet one to two weeks after eof-devnet-1 is launched will be launced adding the previously restricted bytecodes. The same devnet succes standards as for devnet-1 will be used.
It is anticipated that this final eof-devnet will be complete before the May 20th fusaka-devnet-0 launch and will be included.
This nets to at least two weeks removed from EOF work, shifting the readyness of EOF protocol changes "left" by at least two weeks.
If EIP-7834 (metadata section) is moved to SFI, it would be added in a fusaka series devnet.