We are pleased to announce that the Ropsten testnet has been revived! Thanks to a generous donation of GPU hashpower, the Ropsten chain has been cleared of the spam blocks that had accumulated in a recent attack.
The denial-of-service (DoS) attack on Ropsten inserted "state bloat" or spam blocks that were very slow to process, requiring a lot of CPU time and memory. Thus, syncing an Ethereum client to the Ropsten testnet became slow, and consumed excessive disk space (the attack blocks added over 10 Gigabytes of bloat to the Ropsten state database).
To revive the Ropsten chain without changing the protocol (i.e. without a soft or hard fork), we mined a new highest-difficulty ("heaviest") chain from a block prior to the DoS attack. Because the new revived chain has the highest difficulty, it is now the default chain for all Ropsten testnet clients. And because the chain excludes the DoS attack blocks, syncing to Ropsten is once again a fast and low memory process (the cleaned state is around 1 Gigabyte). To use the revived Ropsten chain, users should resync their clients; this may require resetting the chain database, depending on when the client was last used. Instructions for syncing to the revived chain can be found here.
Additionally, on the revived chain we have reprocessed ("replayed") all transactions that occurred on Ropsten since the attack (around 250,000 transactions in over 120,000 blocks). This means that any users who deployed contracts or sent transactions after the attack can expect to find those contracts and transactions on the revived chain as well. This comes with the caveat that the replayed transactions may have executed differently on the revived chain (particularly for transactions that read in block hashes as a source of randomness, for example). Further technical details of the chain revival and transaction replaying process are here.
While there is a trend toward adoption of alternative "Proof-of-Authority" (PoA) consensus protocols for Ethereum testnets, such as Kovan and Rinkeby, Ropsten as a public Proof-of-Work (PoW) Ethereum testnet remains relevant for multiple reasons.
Since the Ethereum mainnet still operates based on PoW consensus, a PoW testnet best reproduces the current production environment, i.e. system and network conditions on the live Ethereum mainnet. Thus, Ropsten is useful for experiments to investigate certain issues that we observe today on the mainnet, such as the relation between uncle rates and gas prices. And for Dapp developers, Ropsten is useful for realistic tests of back-end performance (i.e. mainnet transactions and block times) and front-end user experience.
Furthermore, some exciting projects on the horizon will begin on a public PoW Ethereum testnet. In the very near term, this includes SmartPool, which promises contract-based decentralized mining pools that could transform not only the existing mining pool infrastructure for Ethereum, but also the pool infrastructure of other PoW blockchains like Bitcoin and Zcash. And later, a PoW testnet will be needed for testing the Casper hybrid PoW/PoS transition strategy.
Given the disruption of Ropsten-based Dapp development that occurred in the wake of the attack, many members of the Ethereum community have wondered about the future of Ropsten, and whether a PoW testnet chain is economically viable in a public setting open to potential attackers. The Ropsten Revival demonstrates that although an attack can be disruptive, defensive counter-measures to restore and protect the chain's integrity are practical.
To coordinate further defensive efforts, we have set up a Ropsten Testnet mining pool at http://pool.ropsten.ethereum.org and a Ropsten gitter room at gitter.im/ethereum/ropsten. The gitter room will also serve to gather participants for upcoming PoW testnet projects, including the aforementioned SmartPool, and for longer-term planning of Ropsten's direction. There's no doubt that Ropsten is necessary as a PoW Ethereum chain and public testnet, but its evolution could take many forms. Let's see what the future brings; to Ropsten!