Subject: [Bitcoin-development] Testnet reset for the 0.7 release

From: Gavin Andresen <[email-masked]>
Date: Tue, 29 May 2012 10:54:03 -0400

Testnet "Mark III" will be part of the 0.7 release, and is now in the
master github branch.

"Mark III" because this is the third genesis block for the testnet. The
main reason for the reset is to get a more 'sane' test network; with the
BIP16 and BIP30 and testnet difficulty blockchain rule changes the old
testnet is a mess, with old clients serving up different, incompatible
chains. The good news is the mess uncovered a couple of
large-block-chain-reorganization bugs, but having a stable testnet to test
new implementations or services is more important.

Rules for tesnet3:
  + Minimum difficulty 1.0 (same as main net-- old testnet min difficulty
was 0.125)
  + max-difficulty-protection rule that allows blocks to be mined at min
difficulty if the block's timestamp is 20 minutes or more after the last
block AND the block isn't on a difficulty-adjustment boundary.

To make it easy to run either old code (using the old tesnet) and new code,
the wallet and blockchain are stored in $DATADIR/testnet3 instead of
$DATADIR/testnet.

And to make it easy to find other testnet3-running nodes, the IRC channel
used for bootstrapping is #bitcoinTEST3 (instead of #bitcoinTEST).

The new testnet comes with a new blockchain that is full of interesting
test cases. In particular, there are test cases for:
 + BIP16; early blocks were generated with a timestamp before the BIP16
switchover date, and there are transactions that test the BIP16 switchover
rules
 + Most of the enabled Script opcodes. I created thousands of transactions
that try to exercise edge cases in the Script interpreter. Missing are
comprehensive tests for the signature opcodes and SIGHASH_ modes.
 + Block acceptance rules, including the rule on maximum block size, block
times, etc (thanks to gmaxwell)

If you're re-implementing Bitcoin then accepting the Mark III testnet
blockchain is a good first test for compatibility. You'll still need to do
a lot of work to make sure you reject the same set of invalid transactions
or blocks as the original Bitcoin code.

-- 
--
Gavin Andresen