MCPcopy
hub / github.com/petertodd/python-bitcoinlib / test_checkblock

Method test_checkblock

bitcoin/tests/test_segwit.py:112–135  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

110 x('511e8e52ed574121fc1b654970395502128263f62662e076dc6baf05c2e6a99b'))
111
112 def test_checkblock(self):
113 # (No witness) coinbase generated by Bitcoin Core
114 str_coinbase = '01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff03520101ffffffff0100f2052a01000000232102960c90bc04a631cb17922e4f5d80ac75fd590a88b8baaa5a3d5086ac85e4d788ac00000000'
115 # No witness transaction
116 str_tx = '0100000001e3d0c1d051a3abe79d5951dcab86f71d8926aff5caed5ff9bd72cb593e4ebaf5010000006b483045022100a28e1c57e160296953e1af85c5034bb1b907c12c50367da75ba547874a8a8c52022040682e888ddce7fd5c72519a9f28f22f5164c8af864d33332bbc7f65596ad4ae012102db30394fd5cc8288bed607b9382338240c014a98c9c0febbfb380db74ceb30a3ffffffff020d920000000000001976a914ad781c8ffcc18b2155433cba2da4601180a66eef88aca3170000000000001976a914bacb1c4b0725e61e385c7093b4260533953c8e1688ac00000000'
117 # SegWit transaction
118 str_w_tx = '0100000000010115e180dc28a2327e687facc33f10f2a20da717e5548406f7ae8b4c811072f8560100000000ffffffff0100b4f505000000001976a9141d7cd6c75c2e86f4cbf98eaed221b30bd9a0b92888ac02483045022100df7b7e5cda14ddf91290e02ea10786e03eb11ee36ec02dd862fe9a326bbcb7fd02203f5b4496b667e6e281cc654a2da9e4f08660c620a1051337fa8965f727eb19190121038262a6c6cec93c2d3ecd6c6072efea86d02ff8e3328bbd0242b20af3425990ac00000000'
119 witness_nonce = bytes(random.getrandbits(8) for _ in range(32))
120
121 coinbase = CMutableTransaction.deserialize(x(str_coinbase))
122 coinbase.wit = CTxWitness([CTxInWitness(CScriptWitness([witness_nonce]))])
123
124 tx_legacy = CTransaction.deserialize(x(str_tx))
125 tx_segwit = CTransaction.deserialize(x(str_w_tx))
126
127 witness_merkle_root = CBlock.build_witness_merkle_tree_from_txs((coinbase, tx_legacy, tx_segwit))[-1]
128
129 commitment = Hash(witness_merkle_root + witness_nonce)
130 commitment_script = bitcoin.core.WITNESS_COINBASE_SCRIPTPUBKEY_MAGIC + commitment
131 coinbase.vout.append(CTxOut(0, CScript(commitment_script)))
132
133 block = CBlock(2, b'\x00'*32, b'\x00'*32, 0, 0, 0, (coinbase, tx_legacy, tx_segwit))
134
135 CheckBlock(block, False, True)

Callers

nothing calls this directly

Calls 11

xFunction · 0.85
CTxWitnessClass · 0.85
CTxInWitnessClass · 0.85
CScriptWitnessClass · 0.85
HashFunction · 0.85
CTxOutClass · 0.85
CScriptClass · 0.85
CBlockClass · 0.85
CheckBlockFunction · 0.85
deserializeMethod · 0.45

Tested by

no test coverage detected