zkevm-circuits
zkevm-circuits copied to clipboard
Towards Shanghai Upgrade
Describe the feature you would like
I list the steps to do:
- change golang tracer to latest geth #1363
- change some opcodes implementation: initcode gas change & prevrandao
- add new opcodes like push0 https://github.com/privacy-scaling-explorations/zkevm-circuits/pull/1361
- change submodule revision inside testool
anything missing?
It may be an "atomic" change, we can only choose fork like london vs shanghai, it is difficult & meaningless to make our circuit behavior as london + push0.
Additional context
No response
For EIPs, I list them in a separate session so that we can track decisions of what EIP to include in zkevm in the future.
Here's the list of EIPs in Shanghai upgrade:
- [x] EIP-3651: Warm COINBASE #1367
- [x] EIP-3855: PUSH0 instruction #1361
- [x] EIP-3860: Limit and meter initcode #1368
- [ ] EIP-4895: Beacon chain push withdrawals as operations #1369
- [x] EIP-6049: Deprecate SELFDESTRUCT This is noop, so no implementation is required.
Paris upgrade
London upgrade
- [ ] [EIP-1559] #69
- https://github.com/scroll-tech/zkevm-circuits/pull/1066
another remainder is that we need to support prevrandao opcode (renamed from DIFFICULTY). I make this change https://github.com/scroll-tech/zkevm-circuits/blob/1ea9b5970ff873191de29e625687765f427326dd/bus-mapping/src/circuit_input_builder/block.rs#L119-L127 to be compatible with latest node/libs.
We have to update the version of Ethereum tests. @adria0 will file an issue for it.