Testing a fork
The Spurious Dragon hardfork is scheduled for the coming week; block 2675000 is likely to occur Tuesday evening (CET). The block number for the testnet “Morden” was scheduled at block 1885000. Performing the fork in the test network prior to performing it in the main network was an important measure taken in the testing process to ensure a smooth rollover into the post-fork state.
The Morden fork occurred on Nov-20-2016, 06:12:20 +UTC, at block 1885000 as planned. A bit later, at block 1885074, there was a consensus issue between Geth and Parity.
Morden replay protection
The Morden testnet has been running since the launch of the Ethereum blockchain (July 2015). At that time, concerns about replay-attacks between Morden and Mainnet were addressed by using a nonce-offset. All accounts on Morden used a starting nonce of 2^20 instead of 0, ensuring that any transaction valid on one chain would not be valid on the other.
EIP 161 specifies new EVM rules regarding nonces. The implementation of those rules, in combination with Morden-specific nonce-rules, resulted in Geth and Parity creating incompatible blocks at block 1885074.
Consequences for the Main network
All issues found during the rollout of Spurious Dragon on the test network were Morden-specific. There are currently no known issues affecting the Mainnet.
Starting the new “Ropsten” test network
Before the current hard forks, there were already discussions about restarting the test network from a new genesis block in order to make full syncing simpler and less resource intensive. And due to the low difficulty of the testnet, the difficulty bomb was already causing noticeable increases in block times, which would continue to grow if unaddressed. So the time is now right to leave Morden behind and start a new test network.
New clients will be released that use Ropsten instead of Morden as the default testnet.
Developers who want to get started with Ropsten right away can download the genesis file here, and start a client with the Ropsten network id:3
- geth: geth –datadir /path/to/testnet/data init genesis.json; geth –datadir /path/to/testnet/data –networkid 3 console
- parity: Download ropsten.json, then parity –chain path/to/ropsten.json