This note tracks potential EVM upgrade in the near future, and tries to give each naive workload and feasibility estimation. ## Shanghai List taken from [Shanghai Network Upgrade Specification](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/shanghai.md). ### Included | EIP | Workload | Uncertainty [^uncertainty] | | ------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------- | -------------------------- | | [EIP-3651: Warm COINBASE](https://eips.ethereum.org/EIPS/eip-3651) | Either add some extra logic in the first `BeginTx` or introduce another state `BeginBlock` to warm `COINBASE` address | Low-Medium | | [EIP-3855: PUSH0 instruction](https://eips.ethereum.org/EIPS/eip-3855) | Extend current `PUSH` state to support it | Low-Medium | | [EIP-3860: Limit and meter initcode](https://eips.ethereum.org/EIPS/eip-3860) | Check the length should be less than `0x6000` in `RETURN` when `is_create` | Low | | [EIP-4895: Beacon chain push withdrawals as operations](https://eips.ethereum.org/EIPS/eip-4895) | Ignore | | [^uncertainty]: Higher uncertainty naively means more time to come up with the solution, but not necessarily means more time to implement. ## Cancun List taken from [Cancun Network Upgrade Specification](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/cancun.md). ### Considered for Inclusion | EIP | Workload | Uncertainty | | ---------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | | [EIP-1153: Transient storage opcodes](https://eips.ethereum.org/EIPS/eip-1153) | Create a new tag `TransientStorage` in State circuit that has per-tx lifespan | Medium | | [EIP-4844: Shard Blob Transactions](https://eips.ethereum.org/EIPS/eip-4844) | Ignored | | | [EIP-6780: SELFDESTRUCT only in same transaction](https://eips.ethereum.org/EIPS/eip-6780) | ==TODO== | Medium | ## Others | EIP | Workload | Uncertainty | | ---------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | | [EIP-2537: Precompile for BLS12-381 curve operations](https://eips.ethereum.org/EIPS/eip-2537) | ==TODO== | | | [EIP-3540: EVM Object Format (EOF) v1](https://eips.ethereum.org/EIPS/eip-3540) | Extend Bytecode circuit to validate bytecode format if it has EOF magic prefix then annotate if it's valid, and add `section_index` for `PC` and `JUMP*` related logic and rename original `index` to `container_index` for `CODECOPY` and `EXTCODECOPY` | High | | [EIP-3670: EOF - Code Validation](https://eips.ethereum.org/EIPS/eip-3670) | Extend Bytecode circuit to validate bytecode bytes if it has EOF magic prefix then annotate if it's valid. | Medium-High | | [EIP-4200: EOF - Static relative jumps](https://eips.ethereum.org/EIPS/eip-4200) | Extend EVM circuit to have `RJUMP`, `RJUMPI`, and `RJUMPV` | Medium-High | | [EIP-4750: EOF - Functions](https://eips.ethereum.org/EIPS/eip-4750) | ==TODO== | | | [EIP-5450: EOF - Stack Validation](https://eips.ethereum.org/EIPS/eip-5450) | ==TODO== | | | [EIP-4788: Beacon block root in the EVM](https://eips.ethereum.org/EIPS/eip-4788) | ==TODO== | | | [EIP-5656: MCOPY - Memory copying instruction](https://eips.ethereum.org/EIPS/eip-5656) | ==TODO== | | | [EIP-5920: PAY opcode](https://eips.ethereum.org/EIPS/eip-5920) | ==TODO== | | | [EIP-7069: Revamped CALL instructions](https://eips.ethereum.org/EIPS/eip-7069) | ==TODO== | | ## Reference - https://notes.ethereum.org/@ipsilon/evm-object-format-overview - https://notes.ethereum.org/ttCtHNsWSwe0EVk-jsW7-A - https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades - https://notes.ethereum.org/@ipsilon/eof2-proposal