2 # Copyright (c) 2014-2016 The Bitcoin Core developers
3 # Distributed under the MIT software license, see the accompanying
4 # file COPYING or http://www.opensource.org/licenses/mit-license.php.
5 """Test the BIP66 changeover logic."""
7 from test_framework
.test_framework
import BitcoinTestFramework
8 from test_framework
.util
import *
10 class BIP66Test(BitcoinTestFramework
):
14 self
.setup_clean_chain
= False
15 self
.extra_args
= [[], ["-blockversion=2"], ["-blockversion=3"]]
17 def setup_network(self
):
19 connect_nodes(self
.nodes
[1], 0)
20 connect_nodes(self
.nodes
[2], 0)
24 cnt
= self
.nodes
[0].getblockcount()
26 # Mine some old-version blocks
27 self
.nodes
[1].generate(100)
29 if (self
.nodes
[0].getblockcount() != cnt
+ 100):
30 raise AssertionError("Failed to mine 100 version=2 blocks")
32 # Mine 750 new-version blocks
34 self
.nodes
[2].generate(50)
36 if (self
.nodes
[0].getblockcount() != cnt
+ 850):
37 raise AssertionError("Failed to mine 750 version=3 blocks")
39 # TODO: check that new DERSIG rules are not enforced
41 # Mine 1 new-version block
42 self
.nodes
[2].generate(1)
44 if (self
.nodes
[0].getblockcount() != cnt
+ 851):
45 raise AssertionError("Failed to mine a version=3 blocks")
47 # TODO: check that new DERSIG rules are enforced
49 # Mine 198 new-version blocks
51 self
.nodes
[2].generate(99)
53 if (self
.nodes
[0].getblockcount() != cnt
+ 1049):
54 raise AssertionError("Failed to mine 198 version=3 blocks")
56 # Mine 1 old-version block
57 self
.nodes
[1].generate(1)
59 if (self
.nodes
[0].getblockcount() != cnt
+ 1050):
60 raise AssertionError("Failed to mine a version=2 block after 949 version=3 blocks")
62 # Mine 1 new-version blocks
63 self
.nodes
[2].generate(1)
65 if (self
.nodes
[0].getblockcount() != cnt
+ 1051):
66 raise AssertionError("Failed to mine a version=3 block")
68 # Mine 1 old-version blocks. This should fail
69 assert_raises_jsonrpc(-1, "CreateNewBlock: TestBlockValidity failed: bad-version(0x00000002)", self
.nodes
[1].generate
, 1)
71 if (self
.nodes
[0].getblockcount() != cnt
+ 1051):
72 raise AssertionError("Accepted a version=2 block after 950 version=3 blocks")
74 # Mine 1 new-version blocks
75 self
.nodes
[2].generate(1)
77 if (self
.nodes
[0].getblockcount() != cnt
+ 1052):
78 raise AssertionError("Failed to mine a version=3 block")
80 if __name__
== '__main__':