MCPcopy Create free account
hub / github.com/ElementsProject/elements / run_test

Method run_test

test/functional/feature_assumevalid.py:85–174  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

83 break
84
85 def run_test(self):
86 p2p0 = self.nodes[0].add_p2p_connection(BaseNode())
87
88 # Build the blockchain
89 self.tip = int(self.nodes[0].getbestblockhash(), 16)
90 self.block_time = self.nodes[0].getblock(self.nodes[0].getbestblockhash())['time'] + 1
91
92 self.blocks = []
93
94 # Get a pubkey for the coinbase TXO
95 coinbase_key = ECKey()
96 coinbase_key.generate()
97 coinbase_pubkey = coinbase_key.get_pubkey().get_bytes()
98
99 # Create the first block with a coinbase output to our key
100 height = self.nodes[0].getblockcount() + 1
101 block = create_block(self.tip, create_coinbase(height, coinbase_pubkey), self.block_time)
102 self.blocks.append(block)
103 self.block_time += 1
104 block.solve()
105 # Save the coinbase for later
106 self.block1 = block
107 self.tip = block.sha256
108 height += 1
109
110 # Bury the block 100 deep so the coinbase output is spendable
111 for _ in range(100):
112 block = create_block(self.tip, create_coinbase(height), self.block_time)
113 block.solve()
114 self.blocks.append(block)
115 self.tip = block.sha256
116 self.block_time += 1
117 height += 1
118
119 # Create a transaction spending the coinbase output with an invalid (null) signature
120 tx = CTransaction()
121 tx.vin.append(CTxIn(COutPoint(self.block1.vtx[0].sha256, 0), scriptSig=b""))
122 tx.vout.append(CTxOut(49 * 100000000, CScript([OP_TRUE])))
123 tx.calc_sha256()
124
125 block102 = create_block(self.tip, create_coinbase(height), self.block_time, txlist=[tx])
126 self.block_time += 1
127 block102.solve()
128 self.blocks.append(block102)
129 self.tip = block102.sha256
130 self.block_time += 1
131 height += 1
132
133 # Bury the assumed valid block 2100 deep
134 for _ in range(2100):
135 block = create_block(self.tip, create_coinbase(height), self.block_time)
136 block.solve()
137 self.blocks.append(block)
138 self.tip = block.sha256
139 self.block_time += 1
140 height += 1
141
142 self.nodes[0].disconnect_p2ps()

Callers

nothing calls this directly

Calls 15

generateMethod · 0.95
get_pubkeyMethod · 0.95
calc_sha256Method · 0.95
ECKeyClass · 0.90
create_blockFunction · 0.90
create_coinbaseFunction · 0.90
CTransactionClass · 0.90
CTxInClass · 0.90
COutPointClass · 0.90
CTxOutClass · 0.90
CScriptClass · 0.90

Tested by

no test coverage detected