Following the success of the Ethereum merge upgrade in September, all eyes are back on the network as it prepares to roll out its next big update.
This one, dubbed Shanghai, promises to deliver something Ethereum users have been eagerly awaiting: a way to get back the $25 billion worth of ETH that they have pledged to the network through its staking program. There’s just one problem: Ethereum’s core devs, the small group of coders responsible for making changes to the network, are butting heads about how and when the upgrade should be implemented.
Ethereum moved to a proof-of-stake system just months ago through the merge, an event that fused the Ethereum mainnet with the Beacon Chain, a preliminary proof-of-stake version of Ethereum launched in December 2020. Proof-of-stake networks allow users to deposit funds to become validators and help authenticate on-chain transactions; such users accrue rewards in the form of newly generated tokens. Since December 2020, users have been able to stake their ETH and earn rewards. Now, with Shanghai, users will finally be able to access those rewards, and their original ETH deposits.
By all accounts, Shanghai appears ready to launch by March. But recently, a vocal minority of Ethereum’s core developers has begun voicing concerns that the upgrade is being rolled out too quickly, out of fear of public reprisal, at the expense of technical costs that could have lasting impact on the network.
“It feels like we’re not thinking about the long-term health of Ethereum,” core developer Micah Zoltu cautioned on an all core developers’ call Thursday. “We’re thinking, ‘How do we do what the public wants, today?’”
Zoltu and a few of the network’s other 30-odd core developers are worried that a recent decision to forego a technical adjustment to Shanghai will expose Ethereum to unnecessary technical debt, with unknown implications for the years and decades ahead. The tweak would have taken an extra two to four weeks to implement by these developers’ estimates, an amount of time the rest of Ethereum’s core developers weren’t willing to keep the public waiting.
Technical debt refers to future work or headaches created when software developers prioritize the speed of a product’s release over perfect code. In this case, Ethereum’s developers decided not to make ETH withdrawals compatible with simple serialize, or SSZ, a flexible, modern encoding method described by developers as “the future of Ethereum encoding.” Instead of using SSZ, Ethereum is sticking with recursive-length prefix serialization, or RLP, an existing encoding method that may eventually be phased out and retired.
While the difference there is highly technical and seemingly semantic, it could create unending headaches for Ethereum’s developers down the road. A large contingent of Ethereum’s core developers have signaled their willingness to switch ETH withdrawals over to the new encoding method in the upgrade following Shanghai, which is being called “Cancun.”
But such a fix would still mean that any withdrawal activity initiated between Shanghai and Cancun would have been encoded with the old method. And thanks to the immutable Ethereum ledger, that activity—even if it took place within a few months—could keep on living on the Ethereum blockchain, forever.
So, developers will have to eventually translate all that encoding from the old method to the new, a laborious endeavor. Beyond that, though, the mismatch created by encoding early withdrawals with the old RLP method, and the rest with the new SSZ, could have further-reaching repercussions.
“There could be unknown unknowns around what this mismatch means—with withdrawals, design problems, vulnerabilities,” Matt Nelson, another Ethereum core developer, told Decrypt. “We just don’t know.”
At their meeting Thursday, Tomasz Stańczak, another core developer, pushed back against these concerns, stating that it wasn’t even certain yet if Ethereum was going to fully switch over to the new encoding method, SSZ.
“A delay now for the sake of a better long-term network would be very convincing. But this particular change will be part of a larger process. Of thinking, of designing,” he said. “I would prefer us to look at this holistically, and give ourselves the proper time, in preparation for Cancun.”
Zoltu found arguments Thursday about the uncertainty of SSZ’s future to have potentially been made in bad faith, as he considers it a settled fact that Ethereum will eventually switch its execution layer over to SSZ.
“Introducing code that we know is going to be replaced in the near future means we are adding technical debt that could be avoided,” he told Decrypt.
Why then, are most Ethereum developers so reluctant to spend a few extra weeks preventing an untold amount of future hassle? To Nelson, the answer has a lot to do with recent history.
The merge, Ethereum’s historic transition to proof-of-stake, was first discussed over 5 years ago. In the years following, the network’s leadership routinely found itself justifying the upgrade’s long roadmap to disgruntled investors and community members; after plans for the merge became more concrete in 2021, the upgrade’s launch date was repeatedly punted, due to technical considerations, before its eventual release in September 2022.
“I think [the current Shanghai] timeline definitely was driven by a lot of the scrutiny that was somewhat justly put on the merge, which was delayed countless times for the right reasons, but was still delayed,” Nelson said.
Ethereum’s developers, says Nelson, are reluctant to again attract the ire of the masses. That’s in part understandable to him; Shanghai will impact tens of billions of dollars worth of funds, some portion of which has been locked up with the network for years.
The tension reveals the unique role played by Etthereum’s cadre of core developers: their job is, first and foremost, to architect a blockchain as close to flawless as possible. But there’s no escaping the pressures that also stem from being charged with designing the network behind the world’s second-largest cryptocurrency. Ethereum currently boasts a market capitalization of $189 billion.
While Nelson would have rather prioritized Ethereum’s technical needs, he understands why Ethereum’s developers decided Thursday to proceed without making requested changes.
“In this case, we have a choice where we can be expedient without sacrificing too, too much,” he said. “And so that choice was made.”