Ethereum All Core Developers Execution Call #155 Writeup
On February 16, Ethereum developers gathered for All Core Developers Execution (ACDE) call #155. Chaired by the Ethereum Foundation’s Tim Beiko, the ACDE calls are one of two bi-weekly meeting series where Ethereum developers discuss and coordinate changes to the protocolof Ethereum. The ACDE calls focus on changes impacting the execution layer (EL) of Ethereum while the other meeting series, ACD Consensus (ACDC) calls, focus on changes impacting the consensus layer.
This week, developers discussed a bug in the latest Shanghai release for the Geth EL client that was discovered on the Zhejiang test network. They agreed to move forward with launching Shanghai on the Sepolia test network later this month on February 28. They also made progress on planning for the Cancun upgrade, agreeing to exclude zero blob transactions, which are transactions formatted as batches of Layer-2 rollup data that do not actually contain any data, from the mempool and Ethereum protocol.
Empty Blocks Throw Geth Nodes Out of Sync
The Geth (EL) client team ran into an unexpected issue with their nodes on the Zhejiang testnet on Thursday, February 16. According to Geth developer Marius van der Wijden, nodes failed to properly download and initialize blocks with zero withdrawals and transactions. “Basically, the issue is if we got a block that was empty, so it had no transactions, no uncles, and no withdrawals, then we would actually set the withdrawal hash to nil instead of empty and we wouldn’t download the block body because the block body is empty and we also wouldn’t correctly initialize it,” said van der Wijden on the call.
Since discovering this bug, the Geth (EL) client team has issued a fix. Chair of the ACDE calls Tim Beiko asked whether other client teams were vulnerable to the same bug. Representatives of the Nethermind and Erigon (EL) client teams said they would double check the logic for handling empty blocks in their latest releases. In addition, Mario Vega who is on the testing team at the Ethereum Foundation has created a new Hive test case for identifying this specific bug in EL clients. The new test case has been posted to GitHub. Barnabus Busa, a DevOps Engineer at the Ethereum Foundation noted that a bug was also discovered in the Besu (EL) and Prysm (CL) clients on a different Shanghai test network this week which caused nodes to stop processing staked ETH deposits. The Prysm and Besu client teams are in the process of investigating the bug.
During last week’s ACDC call, Ethereum client teams agreed to launch the Shanghai upgrade on the Sepolia testnet on February 28th. To do this, Beiko highlighted on this week’s call that client teams would need to cut new releases for Shanghai by early next week. All client teams confirmed they could do this and were comfortable moving forward with the upgrade on Sepolia by the end of February. As highlighted during last week ACDC call, developers will also begin testing the circuit breaker mechanism of MEV-Boost software in earnest during the forthcoming weeks.
Zero Blob Transactions Get Banned from the Protocol
During ACDE call #154, developers discussed how the Ethereum protocol and mempool should handle transactions formatted as blobs, that is binary large object data types, that does not contain any data. Differentiation between blobs, non-blobs, and zero-blob transaction types requires specialized logic for marking transactions, based on their size or other properties, and gossiping them to the appropriate mempool for inclusion in a block. Geth (EL) developer Péter Szilágyi was against creating specialized logic for zero blob transactions due to the increased protocol complexity this would create. “The theory is super nice, super elegant, and insanely complicated. … You can have a lot of large transactions in a block but you can only have one or two blob transactions in a block. That’s a huge behavioral differentiation,” said Szilágyi on the call. Andrew Ashikhmin from the Erigon (EL) client team was in agreement. After more discussion about the matter, developers agreed to ban zero blob transactions from the Ethereum protocol in their implementation of EIP 4844 for the Cancun upgrade.
Related to this discussion around transaction and mempool design for Ethereum’s next upgrade after Shanghai, Etan Kissling, a developer of the Ethereum Nimbus (CL) client team, gave an update on progress for updating Ethereum EL block headers to an SSZ format. For background on this conversation, read prior call notes here. Kissling noted that there were two main approaches for updating transaction representations in the block header and that developers would create prototypes of both to see how these approaches differ in practice. “So I will be working on creating those prototypes and benchmarking them against each other to be included in about two weeks. Then we will take another session to decide whether we want to use the union approach or the normalized transaction approach to represent those on the transactions route,” said Kissling on the call. The next dedicated meeting around SSZ transaction types will be hosted on Wednesday, March 1. The agenda for this meeting can be found here. Kissling also raised a handful of questions around the SSZ formatting for staked ETH withdrawal operations in the Shanghai upgrade. Beiko recommended that developers continue the discussion on SSZ formatting for withdrawals on the #typed-transactions Discord channel and this Ethereum Magicians forum.
Minimal presets: Dustin Brody, a developer for the Nimbus (CL) client team, raised upcoming changes to the EL testing experience due to EIP 4844 and the introduction of blob transaction types. He recommended a few different paths forward to ensure that testing speeds on the EL are not negatively impacted. For more information, read Brody’s proposal here.
Standardize ‘txpool’ namespace: Wesley Van Heijie, who appears to be part of the events team at the Ethereum Foundation, briefly presented his proposal for improving interoperability between Ethereum clients. Heijie emphasized that working on standardization now will make it easier in the future to implement solutions like censorship resistance lists in the Ethereum protocol.
Removal of the self-destruct opcode: Jared Wasinger, a Geth (EL) developer for the Ethereum Foundation, gave an update about his findings on the impact of EIP 4758 to existing decentralized applications (dapps) and smart contracts. EIP 4758 deactivates the self-destruct opcode on Ethereum, which Ethereum core developers have for some time strongly discouraged dapp developers from using. Wasinger was tasked during an earlier call to investigate concerns of breaking functionality in existing Ethereum smart contracts due to EIP 4758. Wasinger affirmed on this week’s call that EIP 4758 would have a significant and non-trivial impact on existing smart contracts and questioned whether further investigation was needed to come to a decision about either EIP 4758 or alternative proposals. Beiko encouraged developers to continue thinking about this discussion and paths forward for deprecating the self-destruct opcode.