@@ -26,88 +26,6 @@ using namespace dev;
2626using namespace dev ::eth;
2727using namespace dev ::test;
2828
29- class ExtVMIstanbulTestFixture : public TestOutputHelperFixture
30- {
31- public:
32- ExtVMIstanbulTestFixture ()
33- : networkSelector(eth::Network::IstanbulTransitionTest),
34- testBlockchain (TestBlockChain::defaultGenesisBlock()),
35- genesisBlock(testBlockchain.testGenesis()),
36- genesisDB(genesisBlock.state().db()),
37- blockchain(testBlockchain.getInterface())
38- {
39- TestBlock testBlock;
40- // block 1 - before Istanbul
41- testBlock.mine (testBlockchain);
42- testBlockchain.addBlock (testBlock);
43- preIstanbulBlockHash = testBlock.blockHeader ().hash ();
44-
45- // block 2 - first Istanbul block
46- testBlock.mine (testBlockchain);
47- testBlockchain.addBlock (testBlock);
48- istanbulBlockHash = testBlock.blockHeader ().hash ();
49- }
50-
51- NetworkSelector networkSelector;
52- TestBlockChain testBlockchain;
53- TestBlock const & genesisBlock;
54- OverlayDB const & genesisDB;
55- BlockChain const & blockchain;
56- h256 preIstanbulBlockHash;
57- h256 istanbulBlockHash;
58- };
59-
60- BOOST_FIXTURE_TEST_SUITE (ExtVmIstanbulSuite, ExtVMIstanbulTestFixture)
61-
62- BOOST_AUTO_TEST_CASE(ScheduleAccordingToForkBeforeIstanbul)
63- {
64- Block block = blockchain.genesisBlock (genesisDB);
65- block.sync (blockchain, preIstanbulBlockHash);
66-
67- TestLastBlockHashes lastBlockHashes ({});
68- EnvInfo envInfo (block.info (), lastBlockHashes, 0 );
69- Address addr (" 0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" );
70- ExtVM extVM (block.mutableState (), envInfo, *blockchain.sealEngine (), addr, addr, addr, 0 , 0 , {},
71- {}, {}, 0 , 0 , false , false );
72-
73- BOOST_CHECK_EQUAL (extVM.evmSchedule ().accountVersion , 0 );
74- BOOST_CHECK (extVM.evmSchedule ().haveCreate2 && !extVM.evmSchedule ().eip1283Mode );
75- }
76-
77- BOOST_AUTO_TEST_CASE (PetersburgScheduleForVersionZeroInIstanbul)
78- {
79- Block block = blockchain.genesisBlock (genesisDB);
80- block.sync (blockchain, istanbulBlockHash);
81-
82- TestLastBlockHashes lastBlockHashes ({});
83- EnvInfo envInfo (block.info (), lastBlockHashes, 0 );
84- Address addr (" 0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" );
85- u256 const version = 0 ;
86- ExtVM extVM (block.mutableState (), envInfo, *blockchain.sealEngine (), addr, addr, addr, 0 , 0 , {},
87- {}, {}, version, 0 , false , false );
88-
89- BOOST_CHECK_EQUAL (extVM.evmSchedule ().accountVersion , version);
90- BOOST_CHECK (extVM.evmSchedule ().haveCreate2 && !extVM.evmSchedule ().eip1283Mode );
91- }
92-
93- BOOST_AUTO_TEST_CASE (IstanbulScheduleForVersionOneInIstanbul)
94- {
95- Block block = blockchain.genesisBlock (genesisDB);
96- block.sync (blockchain, istanbulBlockHash);
97-
98- TestLastBlockHashes lastBlockHashes ({});
99- EnvInfo envInfo (block.info (), lastBlockHashes, 0 );
100- Address addr (" 0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" );
101- u256 const version = 1 ;
102- ExtVM extVM (block.mutableState (), envInfo, *blockchain.sealEngine (), addr, addr, addr, 0 , 0 , {},
103- {}, {}, version, 0 , false , false );
104-
105- BOOST_CHECK_EQUAL (extVM.evmSchedule ().accountVersion , version);
106- }
107-
108-
109- BOOST_AUTO_TEST_SUITE_END ()
110-
11129class ExtVMExperimentalTestFixture : public TestOutputHelperFixture
11230{
11331public:
@@ -122,17 +40,21 @@ class ExtVMExperimentalTestFixture : public TestOutputHelperFixture
12240 // block 1 - before Experimental
12341 testBlock.mine (testBlockchain);
12442 testBlockchain.addBlock (testBlock);
43+ preExperimentalBlockHash = testBlock.blockHeader ().hash ();
12544
12645 // block 2 - first Experimental block
12746 testBlock.mine (testBlockchain);
12847 testBlockchain.addBlock (testBlock);
48+ experimentalBlockHash = testBlock.blockHeader ().hash ();
12949 }
13050
13151 NetworkSelector networkSelector;
13252 TestBlockChain testBlockchain;
13353 TestBlock const & genesisBlock;
13454 OverlayDB const & genesisDB;
13555 BlockChain const & blockchain;
56+ h256 preExperimentalBlockHash;
57+ h256 experimentalBlockHash;
13658};
13759
13860BOOST_FIXTURE_TEST_SUITE (ExtVmExperimentalSuite, ExtVMExperimentalTestFixture)
@@ -193,5 +115,53 @@ BOOST_AUTO_TEST_CASE(BlockhashDoesntNeedLastHashesInExperimental)
193115 BOOST_REQUIRE_EQUAL (hash, blockchain.numberHash (200 ));
194116}
195117
118+ BOOST_AUTO_TEST_CASE (ScheduleAccordingToForkBeforeExperimental)
119+ {
120+ Block block = blockchain.genesisBlock (genesisDB);
121+ block.sync (blockchain, preExperimentalBlockHash);
122+
123+ TestLastBlockHashes lastBlockHashes ({});
124+ EnvInfo envInfo (block.info (), lastBlockHashes, 0 );
125+ Address addr (" 0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" );
126+ ExtVM extVM (block.mutableState (), envInfo, *blockchain.sealEngine (), addr, addr, addr, 0 , 0 , {},
127+ {}, {}, 0 , 0 , false , false );
128+
129+ BOOST_CHECK_EQUAL (extVM.evmSchedule ().accountVersion , 0 );
130+ BOOST_CHECK (
131+ extVM.evmSchedule ().txDataNonZeroGas == 16 && extVM.evmSchedule ().blockhashGas == 20 );
132+ }
133+
134+ BOOST_AUTO_TEST_CASE (IstanbulScheduleForVersionZeroInExperimental)
135+ {
136+ Block block = blockchain.genesisBlock (genesisDB);
137+ block.sync (blockchain, experimentalBlockHash);
138+
139+ TestLastBlockHashes lastBlockHashes ({});
140+ EnvInfo envInfo (block.info (), lastBlockHashes, 0 );
141+ Address addr (" 0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" );
142+ u256 const version = 0 ;
143+ ExtVM extVM (block.mutableState (), envInfo, *blockchain.sealEngine (), addr, addr, addr, 0 , 0 , {},
144+ {}, {}, version, 0 , false , false );
145+
146+ BOOST_CHECK_EQUAL (extVM.evmSchedule ().accountVersion , version);
147+ BOOST_CHECK (
148+ extVM.evmSchedule ().txDataNonZeroGas == 16 && extVM.evmSchedule ().blockhashGas == 20 );
149+ }
150+
151+ BOOST_AUTO_TEST_CASE (ExperimentalScheduleForVersionOneInExperimental)
152+ {
153+ Block block = blockchain.genesisBlock (genesisDB);
154+ block.sync (blockchain, experimentalBlockHash);
155+
156+ TestLastBlockHashes lastBlockHashes ({});
157+ EnvInfo envInfo (block.info (), lastBlockHashes, 0 );
158+ Address addr (" 0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" );
159+ u256 const version = 1 ;
160+ ExtVM extVM (block.mutableState (), envInfo, *blockchain.sealEngine (), addr, addr, addr, 0 , 0 , {},
161+ {}, {}, version, 0 , false , false );
162+
163+ BOOST_CHECK_EQUAL (extVM.evmSchedule ().accountVersion , version);
164+ }
165+
196166
197167BOOST_AUTO_TEST_SUITE_END ()
0 commit comments