From 24267213c64b2a2dda17fcb21767c024ff6a6b21 Mon Sep 17 00:00:00 2001 From: admin Date: Mon, 12 Feb 2018 13:02:48 +0400 Subject: [PATCH] create coinbase transaction --- pybtc/blockchain.py | 5 ++++- test/block.py | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/pybtc/blockchain.py b/pybtc/blockchain.py index f229411..bdf4a0e 100644 --- a/pybtc/blockchain.py +++ b/pybtc/blockchain.py @@ -580,6 +580,7 @@ class Block(): self.hash = hash self.header = header self.version = version + self.nversion = int.from_bytes(version,'little') self.prev_block = prev_block self.merkle_root = merkle_root self.timestamp = timestamp @@ -602,7 +603,7 @@ class Block(): self.witness_root_hash = None if txs: if txs[0].coinbase: - if version > 1: + if self.nversion > 1: self.height = int.from_bytes(txs[0].tx_in[0].sig_script.raw[1:5], "little") self.coinbase = txs[0].tx_in[0].sig_script.raw[5:] else: @@ -644,8 +645,10 @@ class Block(): if insert: if self.transactions[0].coinbase: self.transactions[0] = tx + self.tx_hash_list[0] = tx.hash else: self.transactions.insert(0,tx) + self.tx_hash_list.insert(0, tx.hash) return tx def split_coinbase(self, extranonce_size = 8, extranonce_start = -8): diff --git a/test/block.py b/test/block.py index c802700..52f158a 100644 --- a/test/block.py +++ b/test/block.py @@ -587,7 +587,8 @@ class BlockDeserializeTests(unittest.TestCase): def setUpClass(cls): print("\nTesting Block class deserialization:\n") def test_block_deserialize(self): - block = blockchain.Block.deserialize(block_a) + block_c = "2000000000000000000001b7b88a5bad46d2e6707a89d7dc850441c81876cc9b7cfa6ce4c7a3304d8f487f52b6268d942f72d908a10a027ea01c3c04c93aff718bb8783e8053815a1a372b40915ae40604010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff2303c38e130068747470733a5c6170692e6269746170732e636f6d204a5948fc8a000000ffffffff02c7a2a904000000001976a914d4e49947b9f545218cd20389244c249d3520545d88ac0000000000000000266a24aa21a9ed7a2c14ed22283b657a9181f8981dc05361ca46f0b2a5c71d983326e5a73578100120000000000000000000000000000000000000000000000000000000000000000000000000010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff2303c38e130068747470733a5c6170692e6269746170732e636f6d2004b7841500000000ffffffff02c7a2a904000000001976a914d4e49947b9f545218cd20389244c249d3520545d88ac0000000000000000266a24aa21a9edcdbbce5ecb7d4878ac6828fe9284eb5616b26941d395524a95af8ea9b7b62df301200000000000000000000000000000000000000000000000000000000000000000000000000100000001f70f321af3d0cd51241b3755129298e2b389056084e7f9e716677feb7bfc823c010000006a47304402204970ddbb984e260419d78ac265af76ed427aa7789a38661e65d08535db408f1d022048f11c920753c8409b83cc5adfbfa36c19a176b502d5ea59b693dd45661db5ac012103b403539e4175cde64cc99b71d0d9cfc701c193bed1d6df17ae37b92e8506f141ffffffff0200000000000000001e6a1c504f455400000002b2dabb0c40f888bcedc5006bdf1cf3ed7bd26b0b239ede490a0000001976a9140fcc88829c46f85443edcce2150a8edbf57b48be88ac0000000001000000015bd2dcb6ec8cb4c82c2d6c59dc6390d94693d807d91f8749a5638fd925e88cd200000000fdfe000048304502210081c18398e662da86f8a8106ab78bdbd5732e456c872cc112f646070cc02f375202200ad1dd76bdf427222ce3edc73262128ecf20b0d57b328450e5fdaa7420fefc9a01483045022100ec41d289edc6bbec37560cf9f47d294c47d92a811cb67400a17e6bcd82594328022061031dd011fac9bc90bcde08eadca8143725854c502ab559270caa84c298d73b014c69522102f4dade8a5d54a904e3c7e639f397f049ab597b0859c6b486c5721344f4488f4921034b669c9a2f24d3d3d3d72358ae3f75bb257bfd3e166b404b4ff4ba8d6d0b52a821030fbf0e349acc83649bf187ba78c7764845f16cfe95c7c0287b6fac123815755753aeffffffff02a08601000000000017a914ac160ac1388194d6fe0e8e620d905e90bb3031fd87de6f850b0000000017a914d24feab4ad5431661fe18ffd158295158fe046218700000000" + block = blockchain.Block.deserialize(block_c) print(">>>",block.bits) print(">>>",block.hash)