Repercussions are being felt in the ethereum development ecosystem after an initial test of the platform’s forthcoming software upgrade, Constantinople, failed to deliver expected results.
A system-wide change initially earmarked to go live in 2018, the code release, meant to introduce five improvements and alter the economics of the $20 billion blockchain, may now be delayed following a failure of Saturday’s activation on the test network Ropsten, developers told CoinDesk on Monday.
After a meeting of ethereum’s open-source developer team last Friday, in which it was suggested that Constantinople could be implemented as early as November, Saturday’s failed activation revealed unexpected issues in the code. Namely, a bug was discovered by security lead for the Ethereum Foundation Martin Holst Swende, one which caused two different iterations of the same software upgrade to run on testnet.
Though a patch to fix the identified bug has since been issued, independent ethereum developer Lane Rettig explained to CoinDesk Monday that investigations into the events of Constantinople testnet release are ongoing.
“We should take our time to understand what went wrong and how to avoid issues like this in the future – not just the low-level code issue but all of the related issues (the mining issue, communication issues over the weekend, how it wasn’t caught by the tests, etc.) There’s a lot of forensics still to be done.”
Rettig also affirmed that plans for Constantinople’s release could be delayed as a result, asserting: “If an upgrade causes a fork on the testnet, we should put the mainnet release on hold for some minimum period of time.”
While a fixed date for implementation of Constantinople has yet to be set, Griff Green, ethereum community lead and founder of blockchain-based nonprofit Giveth, set mainnet activation for sometime in 2019.
“I would expect it to get delayed to 2019, the blockchain doesn’t take holidays, but developers do,” Green said. “If I were to make a wager on a prediction market I would put my ETH on late January, early February.”
Ethereum core developers have agreed to collectively regroup this coming Friday over a live-streamed call that will find them discussing plans in light of the failed test implementation.
‘Never fork on weekends’
To recap the events of Saturday, rollout of Constantinople was planned to proceed on ethereum’s main test network at block number 4,230,000, however, miners failed to upgrade their software in accordance with the timed launch.
As it occurred “much earlier than expected on a Saturday,” Schoedon said many developers “[were] not available and not even aware” of the change. Schoedon added his takeaway from the events: “Never fork on weekends.”
This proved to be an issue, as for the hard fork to progress smoothly, all participating “nodes” or computers run by miners and users, needed to upgrade near-simultaneously to the same software.
Following an open call from ethereum developers on social media to move the test forward, the network underwent a second chain split as a result of discrepancies in Constantinople code between two major ethereum clients, Geth and Parity. (As background, ethereum clients are the individuals and businesses running nodes to support the ethereum network.)
Speaking to CoinDesk, Brian Venturo, a miner actively contributing to the Ropsten testnet, explained:
“It looks like the consensus failure was driven by changes to the SSTORE opcode in EIP-1283 that were implemented differently between Parity and Geth.”
Part of the Constantinople upgrade features new code under ethereum improvement proposal (EIP) 1283 that will change the way smart contracts are stored on ethereum and reduce the cost to smart contract developers of updating stored contracts.
However, the iteration of EIP 1283 as designed in the Constantinople code released by Parity featured refund mechanisms that caused a “noticeable disagreement regarding [Ropsten] block 4,230,605” and the cost for the deployment of this smart contract, as highlighted in the official notes by ethereum core developers.
Upon discovering the discrepancies in Constantinople code, ethereum core developers agreed to patch Parity’s code to align with code supported by Geth and attempt another re-sync to the correct Ropsten chain.
Part of the Plan
Still, some see the failed test as a positive for development overall.
Seeing the attempted rollout of Constantinople on Ropsten this past Saturday as having achieved its intended purpose, Rettig tweeted out on Sunday:
“We broke Ropsten, but it’s a testnet, and it will be fixed, and this is precisely the point of releasing to a testnet first. It’s really fun, exciting, and reassuring to see this process play out as designed.”
He also later added in email to CoinDesk Monday that he now had “more confidence than ever that the right things are happening, in the right order, to keep [ethereum] mainnet running and secure.”
Other core developers appear to agree with the sentiment shared by Rettig, with the security lead at the Ethereum Foundation writing in a public Gitter channel that Saturday was “evidently a good test,” adding that the temporary forked state of Ropsten was nothing to “lose any sleep over.”
Ethereum core developer, Alexey Akhunov, also wrote in the same channel that while “smooth processes are good for efficiency…they can [instill] a false sense of security,” adding that, “breakages…make people more alert.”
Moving forward, the plan for all ethereum developers as explained by release manager for Parity, Afri Schoedon, is to implement bug fixes for relevant clients and “bring them all together on the Geth Ropsten chain again.”
He added that “once this is done, hopefully around Devcon, we can continue testing Constantinople on Ropsten…and eventually agree on a main network fork date.”
Schoeden affirmed that he too thinks the most likely outcome will be a release date in the new year.
Schoedon told CoinDesk:
“I see January 2019 as realistic fork date, but only if the clients will be patched, all tests are ready (and pass), and [there] are no further issues discovered on Ropsten.”
Ethereum image via Shutterstock