The entire ethereum ecosystem is to upgrade in the next few hours through a flag day hardfork which is now to be expected imminently.
This is the second major planned upgrade of the network and does not appear to be controversial, therefore we might not see any intentional chain-split.
But coders are on very high alert as the fork now looms. More so than usual because they are fuzzing, and their fuzzing is showing some bugs.
Both Geth and Parity released an emergency client yesterday for different reasons. Parity discovered “a critical consensus-relevant fix for the Byzantium hard-fork.” While Geth addressed “a DOS vulnerability in the EVM starting at Byzantium.”
As such everyone must upgrade immediately, especially miners and businesses, as well as those who constantly use their node to transact, but preferably every single node operator should upgrade instantly.
Because the fork is going ahead under metaphorical war like conditions as the fuzzing keeps on firing. Keeping coders on their feet, with Hudson Jameson, an ethereum developer, stating: “it took one hour from the time the bug was discovered to patch it and alert everyone.”
But what is this fuzz? The simple explanation is that it’s a testing tool which inputs a massive amounts of random data in an attempt to make the network fail in some way.
The far more detailed and technical explanation of this new testing tool that started being used just days ago is provided by Casey Detrio, an eth coder, who says among many things:
“We have two fuzzing tools that are discovering bugs. The first tool is a “heuristic-based fuzzer”… which uses heuristics to generate random test cases…
With those [tools], last week I was running evmlab and hit the first parity bug… A couple days later the second parity bug was hit when Martin Holst Swende was running it.
The second tool is a “coverage-driven fuzzer,” developed by Guido Vranken, and in many ways is much more powerful than the first. Using it, he found the third parity bug and the geth DoS bug…
Note that the type of fuzzing we are doing is different from usual fuzzing… We are doing differential fuzzing (or equivalence testing), which ensures that multiple programs produce the exact same output. Doing that required building custom tooling to hook up multiple EVM’s and measure their code coverage across different languages (Rust and Go).”
In short, we are seeing some state of the art stress testing that is pew pewing all the bugs, but with just hours to go, some, and that includes Parity Technologies themselves, said the upgrade should be postphoned:
“Fuzz tester still finding Ethereum Byzantium bugs. Parity yesterday, Geth today. The fork should be postponed until two weeks of no bugs, as with Frontier.”
The problem is postponing the now imminent fork might lead to a certain chain-split because new non-fork clients need to be released and everyone that has upgraded needs to upgrade to the non-fork clients in, well, minutes.
Which appear to be quite unrealistic at this stage. Hudson Jameson, an eth developer, says:
“With the amount of time left and the risk of accidentally hard forking I cannot support a 2 week delay in forking. This is all spurned by fear over new testing tools that were recently built and utilized for the first time.
There is no guarantee that the fuzzing tester tools will not find more bugs, but at least Parity has their auto-update mechanism and geth does not have a consensus related bug in any of their Byzantium compatible updates thus far.”
Break fast and move things is the new mantra as ethereum heads bravely to a new frontier under fire. It is all code, so any problems there’ll just be a fix, but it is at this stage recommended to not transact for the next few hours until the fork is done and settled.
If you must transact then a high number of confirmations is suggested, which for eth would be something like 1,000 or so. Because the fork is going ahead under dicey conditions.
Node operators here have a considerable responsibility. To support the network and the coders who are hard at work, you must upgrade immediately to the newest release, especially if you have already upgraded to a fork client.
If you don’t run a node or don’t plan to transact for the next few hours, then you can just enjoy the show and watch an ecosystem wide upgrade of a decentralized network as money, the code, gets coded up with some cool new stuff like zk-Snarks.
There won’t be many of these big ones. Another 4 or perhaps 5, maybe a bit more, so get a glass and party on, unless you’re one of the coders. Then please stick to coffee. We’ll need someone sober to drive us home.