Ethereum All Core Developers Consensus Call #101 Writeup
On January 12, 2023, Ethereum developers gathered for their 101th Consensus Layer (CL) call. Chaired by the Ethereum Foundation’s Danny Ryan, the CL calls are one of two bi-weekly meeting series where Ethereum developers discuss and coordinate changes to the protocol of Ethereum. This week’s call was the first CL call of the year. Starting in 2023, CL calls have been renamed to ACD Consensus (ACDC) calls to reflect their focus on changes to the consensus layer of Ethereum. They are also live streamed from the @EthereumProtocol YouTube channel, instead of the @EthereumFoundation YouTube channel. The other bi-weekly meeting series, which developers have renamed to ACD Execution (ACDE) calls, focus on topics related to the development of the execution layer of Ethereum.
This week, CL client teams discussed progress for testing the Shanghai/Capella upgrade, differences in the consensus and execution layer serialization formats for block headers, updates to the Ethereum Engine API, and client status updates for ongoing work on Ethereum Improvement Proposal (EIP) 4844.
Staked ETH Withdrawals
On January 11, 2023, developers launched the 2nd devnet for staked ETH withdrawals. According to Parithosh Jayanthi of the Developer Operations team at Ethereum Foundation, the launch went well with only a few bad blocks being produced by nodes on the network. In addition to the 2nd devnet, developers also conducted their first shadow fork of the Sepolia testnet earlier in the day on January 12. Next week, developers plan on launching a larger, public test network for staked ETH withdrawals and in the next few weeks, they plan on conducting their first shadow fork of mainnet Ethereum.
On the topic of data field formatting for EL and CL block headers, developers agreed on the call to move forward with a limited change, updating the units for returning withdrawal amounts in the Ethereum Engine API from wei to gwei. As background, wei is the smallest denomination of ether, the native cryptocurrency of Ethereum. One ETH is equal to 10^18 wei. Gwei is one billionth of one ETH.
Harmonizing the withdrawal amounts between the CL and EL for Shanghai to both read in units of gwei is an important change advocated by Andrew Ashikhmin from the Erigon (EL) client team. “I will still advocate switching to gwei because if we don’t do it now then later it will be a much harder change. Right now, it’s a trivial change technically but later because some tools [for staked ETH withdrawals] will be released [and] will be enshrined having wei instead of gwei, it will be a nightmare to switch. So, I advocate doing that bit in Ethereum technically now.” Several developers on the call agreed with Ashikhmin. The specification updates to support this change for Shanghai has been put forward for broader discussion and approval by EL client teams by Alex Stokes, researcher for the Ethereum Foundation. They can be read in more detail here.
While developers came to consensus about harmonizing units for withdrawal amounts, they were hesitant about making changes to the serialization formats between the EL block header and the CL execution payload header for Shanghai. For background on this topic, read last week’s call notes here. “This is a more involved change and requires non-trivial code additions to ELs beyond what exist today,” wrote Stokes in a message on the Ethereum R&D Discord channel shortly after Thursday’s meeting. Because harmonizing the serialization formats between the EL and CL block headers may cause delays to Shanghai, several developers were not in favor of including this change for Shanghai but potentially doing it in a future hard fork such as Cancun. The final call around whether to include changes to the serialization formats between the EL and CL for staked ETH withdrawals will be made next week, during ACDE call #153.
Finally, on the topic of staked ETH withdrawals, developers discussed a minor improvement to CL specifications for stakers. The change was described by Mikhail Kalinin, Lead Researcher at ConsenSys R&D, as a change to the way timestamps are created for Beacon Chain epochs that will help prevent unnecessary rejections of withdrawal credential change messages sent from validator node operators. More information about the change can be read here. According to pseudonymous developer “Potuz” from the Prysmatic Labs team, the change has already been implemented in the Prysm client. However, he is uncertain about when to start broadcasting credential change messages and how to handle gossiped messages before the activation of Capella. To this, developers agreed that CL clients should ignore all gossiped messages before Capella and use the genesis fork ID for signing credential change messages once Capella is activated.
Engine API Improvements
Moving on from discussions around staked ETH withdrawals, developers briefly discussed three pull requests (PRs) related to the Engine API that were recently merged as part of the Shanghai upgrade. One of the three merged PRs is titled “a bunch of cleanups.” These small revisions to the Engine API are ones that were overlooked in lead up to the Merge that help reduce Ethereum’s technical debt by addressing minor discrepancies in code, as well as deprecating certain outdated logic.
EIP 4844 Updates
Then, developers went around the table giving status updates on their progress with the implementation of EIP 4844. Most CL client teams reported passing all, if not most, of the latest specification tests. The Nimbus team reported that there is still quite a lot of work to be done on the user experience front for EIP 4844, which includes matters like how long to store blobs, the size of blobs, and their pruning. A representative of the Besu (EL) team requested a list of all the EIP 4844 testing resources available for clients, which Proto agreed to work on compiling after the call.
Hsiao-Wei Wang from the Consensus R&D team at the Ethereum Foundation raised the topic of naming around the upgrade to activate EIP 4844. During a prior call, developers agreed to remove EIP 4844 from Shanghai and include the code change in the next upgrade dubbed Cancun. However, these upgrade names refer specifically to changes on the EL of Ethereum. Changes to the CL of Ethereum are denoted by a separate name. For Shanghai, the accompanying CL hard fork is called Capella. For Cancun, developers had proposed naming the accompanying CL hard fork Dubhe. Both Capella and Dubhe are the name of stars. Specifically, Dubhe is the second brightest star in the constellation of Ursa Major. Hsiao-Wei Wang proposed naming the CL upgrade for EIP 4844 Deneb, instead of Dubhe, for ease of pronunciation. Deneb is a star in the constellation of Cygnus. Developers agreed to go with the name of Deneb and start updating the name of relevant code repositories for the implementation of EIP 4844 after the EIP 4484 interop event. As a reminder, developers have a third weekly meeting series known as the “EIP-4844 Implementers’ Call,” where progress on Ethereum’s scaling initiatives through proto-danksharding are discussed in more detail. The next EIP-4844 Implementers’ Call will be hosted next Tuesday, January 17th. For details about the call and its livestream link, click here.
Zsolt Felföldi, a developer for the Geth team at the Ethereum Foundation, presented two code changes to the Beacon API for supporting better light client functionality. Felföldi emphasized that no decisions about these changes were required before Shanghai, but that early feedback and discussion on them would be welcome. The technical details about both changes are explained in more detail here and here. Finally, Tim Beiko, Chair of the ACDE calls, announced that in preparation for the Shanghai/Capella upgrade, he would be organizing community calls to answer questions from Ethereum stakeholders about the upgrade. The first Shanghai/Capella Community Call will be held next Friday at 15:00 UTC/10:00 ET. Details of the call and its agenda can be found here.