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