In relation to the selfdestruct stuff, I would like to propose EIP-6190 as a non-breaking selfdestruct solution.
Thanks for creating this Tim. Some opinions my own and some the Besu team’s:
- Priorities should be EOF and 4844, (and whatever consensus we reach on SELFDESTRUCT). The EIP grab-bag approach from Shanghai, while useful, should be limited if we can. There are often many details that come up during the implementation phase and I think it would be best to avoid creep on this already large fork.
- I think the progress on 4844 in the workshop should drive a timeline. We initially dubbed this a fast-follow fork, which sounds like early 2H. With Shanghai, timelines are dictated by our need to ship withdrawals. While we can accumulate some tech-debt in Shanghai for withdrawals as we have a chance to correct it in Cancun, more pervasive protocol changes in 4844 and EOF will be quickly enshrined tools, langs, and live contracts. To this end, delays are more prudent than shipping “something,” especially with EOF and EVM version requiring support in clients and languages.
- I have no preference on this - protocol schedules are flexible. We can ship code that lives dormant for a while on Mainnet while we iron it out elsewhere. Weakly in favor of ship often, test often approach.
I’d like to propose EIP-1153 for inclusion in Cancun. I’ve updated the candidate thread with the latest status. Further progress on EIP-1153 is blocked by marking it for inclusion, allowing it to be part of devnets and giving client developers a reason to finish code reviews and merge the outstanding PRs.
And some meta commentary: the main reason EIP-1153 is not in Shanghai is that EOF was added in December and removed a month later. I think this is a failure of prioritization that deserves more discussion. I’d suggest this time around not committing to anything else (other than EIP-4844) for which the spec is not finalized, and EOF is still figuring out parts of the spec (e.g. just a week ago DELEGATECALL into legacy code was brought up).
To increase Layer 2 adoption we need lower cost transactions, hence the need for EIP4844.
Shapella was focused on withdraOWLs .
Dencun (Cancun + Deneb) should focus on blobspace .
The timeline for Cancun should be based on EIP4844 readiness. e.g. May/June.
Any additional EIPs should have finalized specs and not add significant delay (e.g. more that 1-2 months) to the delivery of Cancun, otherwise they should be candidates for inclusion in the Prague upgrade later in 2023 or early 2024.
Assume finalized EIP spec and EIPs don’t add significant delay to delivery of Cancun.
- EIP1153: Transient storage opcodes
- EIP2537: Precompile for BLS12-381 curve operations
- Other (reply with details)
It’s simple and the spec is basically finalized. There’s a PR to add it to nethermind: Add EIP-5920 by Pandapip1 · Pull Request #5166 · NethermindEth/nethermind · GitHub
EIP2537 or a new implementation for a BLS precompile would be great in order to make it easier for decentralized off-chain networks Lido or Gelato to utilize BLS for threshold signatures.
EIP-4788 keeps coming up and I think would be a relatively small change that unlocks a lot of benefits so should be CFI in Cancun.
It would also be nice to unlock some kind of BLS arithmetic in Cancun, either via EIP-2537 or something like EVMMax (which requires EOF AIUI).
For reference, the latest proposal for EVMMAX is documented in the EIP-5843 discussion thread.
A new spec is being prepared which addresses issues identified in 5843.
- EIP-6493 SSZ signature scheme
- EIP-6404 / EIP-6466
These would be great to have in Cancun, still being designed though, specs not final.
I’ll keep track of EIPs proposed for the upgrade in the first post of this thread. If you’d like to propose an EIP and it’s not part of the list, please reach out to me. You can add the
cancun-candidate tag as well to make it easy for people to see all proposed EIPs’ threads on a single page here
Can we move EIP-663 into the EOF group? The current revision of the spec depends on immediate arguments, which is only viable in an EOF container.
Nethermind internal core dev discussions go this way in terms of priorities, what is deliverable, size, state of implementation:
- Yes: 4844, 6780, 1153
- Maybe but more yes: 2537, 4788
- Maybe but more no: 5920
- Next post-cancun hardfork: SSZ, EOF, EVMMAX
- Next-next post-cancun hardfork: Verkle
This one claims to depend on 6475, which introduces Optionals to the SSZ spec.
SELFDESTRUCT is broken such that it can no-longer remove code (eg via EIP-6780), I want to include EIP-6913 (
SETCODE) to preserve code mutability.
The minimal parts for Cancun should be EIP-6493 SSZ signature scheme, and EIP-6475 SSZ Optional definition. Not deciding on how these should look for Cancun makes it difficult to change in the future.
EIP-6465 and EIP-6404 / EIP-6466 can be addressed later, the overhead is same whether done in Cancun or in E-Fork.
I’d like to propose inclusion of EIP 5656 (MCOPY) in Cancun. I don’t think there is any contention about the spec or its usefulness, it’s easy to understand and implement, it would enable better codegen for batch memory copies in compilers, and it already has an open PR to implement in geth.
Thanks, @charles-cooper - I’ve updated the first post to include this, as well as the decisions made in ACDE#160. See the spec PR: Update Include and CFI'd EIPs by timbeiko · Pull Request #754 · ethereum/execution-specs · GitHub
evmone has merged support for MCOPY: https://github.com/ethereum/evmone/pull/629
Note, the scope for Cancun was finalized on ACDE last week. Here’s a PR which updates the list of EIPs: Update included EIPs list by timbeiko · Pull Request #792 · ethereum/execution-specs · GitHub