Ethereum Cat Herders Update #41
An updated roadmap for Stateless Ethereum, Verkle tree migration, Epoch based state expiry scheme, Merge Implementers meeting — Consensus Upgrade discussion, Eth1 upgrades -Berlin, London, Shanghai update, Eth2- Altair, Prater, research update, ECH Berlin community call, PEEPanEIP — RPC spec, ENS & Fork identifier proposals, and more.
Welcome to another edition of the Ethereum Cat Herders community update to bring you up to speed since the last update.
Ethereum Statelessness: Epoch-based state expiry
Verkle tree migration
- Guillaume Ballet shared the progress on the Go-Ethereum side. It can also be followed at the go-verkle repository.
- General Verkle tree is validated against Dankrad’s type.
- Complete sync can be achieved in 14–15 hrs
Epoch based state expiry scheme
- Vitalik B. from his post ‘A few paths to statelessness and state expiry’, shared an Epoch-based state expiry scheme.
- A huge simplification of codes can be expected, post the merge. His post presents some concrete potential roadmaps for how either weak statelessness or state expiry can be introduced.
- Epoch-based state expiry scheme is an alternative proposal to In-place swap to a Verkle tree. There is also a mention of Option 3: per-epoch state expiry + Verkle trees in one step.
- Rules for reading and writing in Epoch-based state expiry scheme are based on two key principles:
— Only the most recent tree (ie. the tree corresponding to the current epoch) can be modified.
— Full nodes (including block proposers) are expected to only hold the most recent two trees, so only objects in the most recent two trees can be read without a witness.
An updated roadmap for Stateless Ethereum
- Piper M. shared an updated roadmap for Stateless Ethereum.
- This document suggests some shifts in the way forward. The focus is no more solving stateless block mining, the DSA (Dynamic State Access) issue, or attaching witnesses to transactions for the purpose of execution.
- EIP-3102: Binary Trie and EIP-2926: Code Merklization is no longer on the critical path and has been replaced by Verkle Tries.
- The way forward are:
— Stateless validators for “The Merge” via block witnesses
— Mitigating state growth via State Expiry
— Stateless Client Infrastructure via “Portal Clients”
— Regenesis (but maybe without the state clearing)
There is a huge requirement for developers to work on the proposal and are looking to have different teams — State expiry team, Statelessness team, History expiry team. If you are interested or you know someone who can be helpful, please reach out to Piper Merriam.
Other resources:
- Increasing address size from 20 to 32 bytes
- Resurrection-conflict-minimized state bounding, take 2
- Proposed Verkle tree scheme for Ethereum state
Merge Implementers’ Meeting
Rayonism announcement ☀️
- Rayonism is a scaling project around the ETH Global Scaling Hackathon (April 16 — May 14), experimenting with Merge and Sharding Eth1-Eth2 testnets. This is an important hackathon that may help decide the timeline of the merge. If you’re interested to participate and or contribute in any way, contact Protolambda (Eth2).
Consensus Upgrade discussion
For general understanding,
- Application layer = Mempool, EVM, change mgmt, tx pool
- Consensus Layer = Beacon chain & consensus layer
Application-layer (EVM layer)
- Mikhail shared Ethereum consensus upgrade [application-layer perspective] that contains the design for application layer post-merge.
- Communication between the Application & Consensus layer— Currently switching between modes is one-way action, which can be considered bi-directional. The beacon chain will pass on the information.
- Block processing — block will be usable at the exact time
- Block gossip is deprecated after the merge.
- Finalization — 64 blocks
This document also provides us an overview of the Transition Process. Application-layer switches between three subsequent operation modes during the transition.
- PoW mode. Application-layer operates as normal. The chain is secured by PoW, thus, all PoW validity conditions are maintained and the fork choice rule remains unchanged.
- Transition mode. PoW blocks are received from the wire, verified, and processed as usual. It implies missing ancestor blocks are being requested from other peers. The total difficulty rule is replaced by the external fork choice rule.
- PoS mode. Block gossip is disabled implying that no PoW blocks are processed and propagated across the network. Consensus-layer messages become the only source of application blocks.
Consensus-layer (Beacon chain layer)
Merge implementers meeting #1: agenda, video. The next meeting is scheduled for April 15, 2021, at 1400 UTC.
Ethereum All Core Developers’ meeting
Berlin updates
- Rinkeby testnet is forked on Mar 21, 2021, everything went well. Mainnet expected on Apr 15th.
- EthCatHerders is organizing a Berlin Upgrade Countdown Community Call to watch it go live. Also, read The Berlin Upgrade Overview to learn about Berlin EIPs.
London upgrade
- EIP-1559 — Besu, Nethermind and Geth implementation are in sync on a testnet with the latest version including EIP-2718 transaction envelopes implemented. An issue is identified, the team will work on that.
- The first client integration testnet for London will be started soon. It will be called Aleut.
Shanghai or merge
- There is huge community sentiment in favor of merge sooner rather than later. However, not all teams can move at the same speed. TurboGeth is working on a new client from scratch, OpenEthereum is still in the process of being transitioned over to new maintainers, etc. so we need to be mindful of that if we want to maintain client diversity.
Other proposals
- EIP-3403: Partial removal of refunds — William Morris shared his disagreement with the proposal and interest in the EIP-3298: Removal of refund. EIP-3403 & its alternatives will make GasToken unusable and the value of existing gas tokens would go to zero.
- EIP-3198: BASEFEE opcode — It is a very small change. No major objection for this proposal and it will be included in the Aleut devnet.
- EIP-3074: AUTH and AUTHCALL opcodes — This proposal received huge interest from the dApp developers community. A Geth implementation, testnetis setup for testing the proposal! If you’re interested in trying it out as a smart contract or wallet developer, reach Sam Wilson. Alexey A. (TurboGeth) & Martin S. (Geth) expressed some concerns. matt garnett a document Threat model to address possible security concerns. Vitalik mentioned that multi-operation transactions will become more and more common as people start using multisig/social recovery wallets, so in practice, we are headed to a world with 3074-like trust guarantees and we’ve to come up with ways to address the security concerns and this proposal may be useful for the future. Dan Finlay’s comment on Fellowship of Ethereum Magicians.
- EIP-2537: Precompile for BLS12–381 curve operations — Kelly Olson shared the progress update. It is almost at the same state as last time except for minor repricing. He asked, “What additional information is needed by core dev for CFI?” There is no clarity if either or both BLS & EVM-384 should be implemented.
- EVM-384 — Paul published a report on the progress.
- EIP-2677: Limit size of `initcode` — No strong objection but more investigation needed before including.
ACD meeting #109: agenda, video, Tim’s tweet, notes. The next meeting is scheduled for April 16, 2021, at 1400 UTC.
Eth1.0 Clients update
- Geth — Gemini Sigma (v1.10.1) is a minor release with the sole purpose of enabling the Berlin hard-fork!
- OpenEthereum v3.2.2-rc.1. Bug fixes & enhancements. Add Nethermind to clients that accept service transactions. Bump ethereum/tests to v8.0.2. rpc module reverted for RPC JSON api. Revert “Remove eth/63 protocol version.
- Besu — 21.1.3. Increase node diversity when downloading blocks. Ethereum Node Records are now dynamically recalculated when we pass network upgrade blocks. This allows for better peering through transitions without needing to restart the node.
- TurboGeth — 2021.04.01-alpha. rpctest: recording/replaying requests. fixups for gas estimation, cleanup of unused code.
- Nethermind — v1.10.51. Fixing fast sync for networks after Berlin fork. Mitigate issues with long branches. It could cause high memory usage and trouble with application closing. Support block reward block transitions. Database is forward compatible. The older version of Nethermind won’t work with a database created by 1.10.50 and above.
- Ethereum JS — @ethereumjs/vm v5.3.0. EIP-2930 Tx Access List Generation added, there is an edge case on accessList generation where an internal call might revert without an accessList but pass if the accessList is used for a tx run (so the subsequent behavior might change). This edge case is not covered by this implementation.
Ethereum 2.0
Eth2.0 Implementers meeting
Eth2 HF1 (Altair)
- Altair specs.
- Validator rewards analysis — Barnabe Monnot found that the invariant of 1 “base reward” per validator per epoch is slightly off, it is expected to be fixed in alpha.3 — test generator fix for fork choice test.
Eth2 Testnet (Prater)
- Prater launch went well. Nimbus reported minor issue but resolved seems About 98% participation now!
- Prater is a “devnet”, will migrate users soon, so they can use Pyrmont for testing e.g. non-finality
Research
- Vitalik shared Simplified Active Validator Cap and Rotation Proposal to limit validator set to 2¹⁹, 2²⁰
- There are some fork choice updates in the pipeline — address some edge cases in LMD-GHOST fork choice.
Eth2 implementers meeting #60: agenda, video, Ben’s notes, notes, Alex Stokes tweet.
Eth2.0 Clients’s update
- Nimbus-eth2 — v1.0.12. This is a bugfix release correcting a minor error in the built-in Prater testnet configuration (an error which led to incorrect eth1 voting).
- Lighthouse — Shleemypants. This release contains a fix for an issue where a small clock disparity between the beacon node and validator client would cause errors stating “request epoch [n+1] is ahead of the current epoch [n]”. This release also mitigates an incompatibility with Eth2 Infura (not Eth1 Infura) which was prematurely including Altair parameters in their API endpoints.
— Lighthouse produced its first Eth1 & Eth2 merge transaction.
- Lodestar — Release v0.19.0
- Prysm — v1.3.6. This minor release has a few bug fixes and general improvements. This release contains an update to the most recent blst cryptography library. ⚠️ Prysm slasher binary will be deprecated soon. The slasher functionality will be available in the beacon node binary in an upcoming release. Validators using remote slashing protection will need to update their configuration in an upcoming release. ⚠️ Update blst to latest release.
- Teku —v21.3.2. The events api
/eth/v1/events
-block
event now returns the slot and root as detailed in the standard API specification, instead of the entire block.
EIPIP working group
- EIPIP meeting #28: agenda, video, notes.
- The next EIPIP meeting is scheduled for March 24th at 1500 UTC. Agenda.
Community events
- EthCatHerders is organizing a Berlin Upgrade Countdown Community Call to watch it go live. The live stream will begin 45 minutes before the estimated time for fork block, 12 244 000, is mined.
- Global Scaling Hackathon (April 16 — May 14), participate in Rayonism.
Ethereum Cat Herders
Peep an EIP
Released video
EIP-2124: Fork identifier for chain compatibility checks with Felix
EIP-1474: Remote procedure call specification with Erik Marks & Marius VanDerWijden
ENS EIP-137: Specs. & 2544:ENS Wildcard Resolution with Nick Johnson
Upcoming
- EIP-3198: BASEFEE Opcode Ratan Rai Sur.
- Difficulty bomb with Afri S.
- Follow EIP scheduled at ECH GitHub. If you have any questions related to a proposal, or you want to join a talk with the author, reach me on ECH Discord.
Upgrading the Ethereum Cat Herders website
The first draft of the website design was shared in the ECH meeting. With a new theme, it seems to be coming out well. If you have got an improvement suggestion, share it with us.
- The Ethereum Cat Herders meeting #55: agenda, video, notes. The next meeting is scheduled for April 13, 2021, at 1500 UTC. Agenda.
Support the Ethereum Cat Herders
https://gitcoin.co/grants/782/ethereum-cat-herders-community-fund
- Gitcoin CLR matching round 9 is completed. THANK YOU to all who have contributed to the Ethereum Cat Herders so far. Share yours ❤️ with the Cat Herders at Gitcoin & Clr.fund. We accept all tokens!
- Join the decentralized project management team by submitting the ECH onboarding form and at ECH Discord.
- Follow the Ethereum Cat Herders at Website, GitHub, Twitter, Medium, and YouTube.
Share your question, comments, and suggestions with me on Twitter. Thank you for reading 🙏.
— The Ethereum Cat Herders