3540 | 3670 | 4200 | 4750 | 5450 | 6206 | 7480 | 7069 | 7620 | 7698 | 663 | |
---|---|---|---|---|---|---|---|---|---|---|---|
Megaspec | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 |
EIP | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 |
testing | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 | 🚧 | 👍 | 👍 | 👍 | |
besu | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 |
erigon | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | |||
erigon++ (silkworm) | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 | 🚧 | 👍 | 👍 |
ethereumjs | stale | stale | stale | stale | stale | ||||||
evmone | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 | 🚧 | 👍 | 👍 |
geth | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | |
nethermind | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | 🚧 | |
revm | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 | 👍 |
solidity POC | 👍 | N/A | 👍 | 👍 | N/A | 👍 | 👍 | 👍 | 👍 | 👍 | |
vyper | stale | N/A | stale | stale | N/A |
Megaspec is ready and main source of truth.
Are aligned with the Megaspec, Meta EOF EIP at https://eips.ethereum.org/EIPS/eip-7692.
Currently EOF is in a branch mega-eof.
Erigon++ is a version of Erigon using Silkworm as the execution engine. Since Silkworm uses evmone, it receives the feature from upstream.
Ethereumjs in 2022 has merged the initial EOF EIPs into mainline, and then worked on the late 2022 version in PR#2453. This code can be considered stale.
Current work-in-progress implementation resides at: ethereum/go-ethereum#29518
Nethermind currently has EOF support in the branch feature/evm/eof (PR#6896).
Last implementation resides at ethereum/solidity#13825. This is based on the December 2022 version of EOF.
There is a contributor submitted PR from mid 2023 implementing some of EOF: vyperlang/vyper#3457
-
EIP-3540 - EOF Container
- Validation
- Execution - https://github.com/ethereum/tests/tree/develop/EIPTests/StateTests/stEOF/stEIP3540
- Legacy->EOF
EXTCODE*
state tests generated from evmone unit tests - https://github.com/ipsilon/tests/tree/eof-create3-evmone-generated/EIPTests/StateTests/stEOF/extcode
-
EIP-3670 - Code Validation
- Validation - https://github.com/ethereum/tests/tree/develop/EOFTests/EIP3670
- Validation tests generated from evmone unit tests - https://github.com/ethereum/tests/tree/develop/EOFTests/efValidation
- these cover validation rules from all EIPs
-
EIP-4200 - Static Relative Jumps
-
EIP-4750 - Functions
-
EIP-5450 - Stack Validation
- Validation - https://github.com/ethereum/tests/tree/develop/EOFTests/EIP5450
- Execution - https://github.com/ethereum/tests/tree/develop/EIPTests/StateTests/stEOF/stEIP5450
- Validation tests generated from evmone unit tests - https://github.com/ethereum/tests/tree/develop/EOFTests/efStack
-
EIP-6206 - JUMPF and non-returning functions
-
EIP-7480 - Data section access
- Execution - ethereum/execution-spec-tests#518
-
EIP-7069 - Revamped CALL instructions
EXT*CALL
state tests generated from evmone unit tests - https://github.com/ipsilon/tests/tree/eof-create3-evmone-generated/EIPTests/StateTests/stEOF/eof_calls
-
EIP-7620 - EOF Create Instructions
- Creation state tests generated from evmone unit tests - https://github.com/ipsilon/tests/tree/eof-create3-evmone-generated/EIPTests/StateTests/stEOF/stCreate
-
EIP-7698 - EOF - Creation transaction
-
EIP-663 - SWAPN/DUPN/EXCHANGE
- Execution - ethereum/execution-spec-tests#502