The merger event on the Ethereum network is the transition to the Proof of Stake consensus model of the currently employed Proof of Work model. This merger means that the current Ethereum mainnet system and the new Beacon chain, often referred to as Ethereum 2.0, will be merged into a single blockchain.
To test the fusion, the Kintsugi testnet was deployed in December. The purpose of the testnet is to run different extreme cases and observe how the system behaves. One of the developers involved in running tests on Kintsugi is Marius van der Wijden, a core Ethereum developer working with Geth’s (Go-Ethereum) client team.
“The test network worked without problems for a couple of weeks. Last week I created a fuzzer that would send invalid blocks. A block contains a lot of information, such as transactions, the hash of the previous block, the gas limit, and so on, ”says Marius van der Wijden.
Some implementations did not execute or verify the block.
A fuzzer is a common type of testing tool used among developers to generate random inputs to functions or other pieces of code, and try to make them break in one way or another. It’s about generating unexpected and malformed inputs and observing what happens to the system.
The fuzzer created by van der Wijden produces a valid block and changes an element of it to be invalid. One technique he uses is swapping one item for another. In this case, the fuzzer changed the blockhash to the main hash.
“The nodes should reject such a changed block. However, since the main hash was pointing to a valid block itself, some implementations did not actually execute or verify the block, but instead looked for it in a cache. Since the old block was valid and was in the cache, they assumed that the new block was also valid, ”explains van der Wijden.
Network divided twice
The result was that half of the network, Geth’s clients, rejected the lock, while the other half, Nethermind and Besu’s clients, accepted it, causing the chain to split as we now had two different views. of the correct state. To make matters worse, there was another problem on top.
According to van der Wijden, the nodes of the Geth chain, in turn, consisting of Lighthouse-Geth, Prysm-Geth, Lodestar-Geth, Nimbus-Geth, and Teku-Geth, are also divided among themselves.
“This division is still being investigated, but it seems that Teku could also have some caching mechanism that failed,” says van der Wijden.
Since there are several different branches of the Kintsugi test network at the time of writing, and each node thinks it is on a correct fork, the network no longer terminates.
“We are going to think of something to put the network back together. We have already updated the Nethermind client and those nodes are now on the correct chain. We still need the Teku correction, since more than 33% of the nodes are Teku; otherwise the chain will not end, ”says van der Wijden.
The incident brings something good
According to van der Wijden, this incident does not prohibit or delay further testing of the Ethereum merger, nor does it delay the merger itself. In fact, van der Wijden says that the incident actually helps test extreme cases that would have been difficult to test if the network was working properly.
“Long periods of non-completion are challenging for nodes and it is very important for us to see how they behave right now. We think the testnet will eventually come together again, but I don’t think we will try to fix it manually as it gives us a chance to test interesting extreme cases. “
“I don’t think this will delay the merger, as the merger is not scheduled yet. But it shows how important testing is. I think the merger is progressing very well. We need a couple more weeks for the software to be in acceptable condition and then we need a couple of months to test it, ”says van der Wijden.
What if this happens on the main network?
An interesting question is what would have happened if an error like this had occurred in the main chain.
“We started testing pretty early so we were expecting a couple of bugs like this. However, such a bug on the mainnet would be quite unpleasant as we would need to find and fix the bug, which we are pretty good at, post the code, and then inform all concerned that they should update their nodes. In my opinion, the last part is the difficult part, as some users are not following the development very closely, ”says van der Wijden.
For more details, the interested reader is encouraged to read Marius van der Wijden’s book. tweets about the incident.
Featuring a roundup of the biggest daily stories in the world of cryptocurrencies, DeFi, NFT, and more.
Obtain a edge in the crypto asset market
Access more information and cryptographic context in each article as a paid member of CryptoSlate edge.
Join now for $ 19 / month Explore all the benefits