def test_headers_message_one_block_not_in_flight(self): header1 = CBlockHeader(nNonce=1) header2 = CBlockHeader(nNonce=2) message = messages.msg_headers() message.headers = [header1, header2] self.networking.blocks_in_flight = {header1.GetHash(): 'in_flight'} self.networking.headers_message(self.private_connection, message) self.assertEqual(self.private_connection.send.call_args[0][0], 'getdata') self.assertEqual(len(self.private_connection.send.call_args[0][1].inv), 1)
def header_from_insight_block(d): version = int(d['version']) prev_block = lx(d['previousblockhash']) merkle_root = lx(d['merkleroot']) time = int(d['time']) bits = int(d['bits'], 16) nonce = int(d['nonce']) return b2x( CBlockHeader(version, prev_block, merkle_root, time, bits, nonce).serialize())
def get_header(self): """Return the block header Returned header is a new object. """ return CBlockHeader(nVersion=self.nVersion, hashPrevBlock=self.hashPrevBlock, hashMerkleRoot=self.hashMerkleRoot, nTime=self.nTime, nBits=self.nBits, nNonce=self.nNonce)
def test_headers_message_two_unknown_blocks(self): header1 = CBlockHeader(nNonce=1) header2 = CBlockHeader(nNonce=2) message = messages.msg_headers() message.headers = [header1, header2] self.networking.blocks_in_flight = {} self.networking.request_blocks = MagicMock() self.networking.headers_message(self.private_connection, message) self.assertEqual(self.chain.process_header.call_count, 2) self.assertEqual(self.chain.process_header.call_args[0][1], BlockOrigin.private) self.assertTrue(self.networking.request_blocks.called) self.assertEqual(len(self.networking.request_blocks.call_args[0][1]), 2) self.assertIn(header1.GetHash(), self.networking.request_blocks.call_args[0][1]) self.assertIn(header2.GetHash(), self.networking.request_blocks.call_args[0][1])
def setUp(self): self.first_block_chain_a = Block(None, BlockOrigin.private) self.first_block_chain_a.height = 1 self.first_block_chain_a.prevBlock = test_util.genesis_block self.first_block_chain_a.cached_hash = '1a' self.first_block_chain_a.cblock_header = CBlockHeader(nNonce=11) self.first_block_chain_a.cblock = CBlock(nNonce=11) self.second_block_chain_a = Block(None, BlockOrigin.private) self.second_block_chain_a.height = 2 self.second_block_chain_a.prevBlock = self.first_block_chain_a self.second_block_chain_a.cached_hash = '2a' self.second_block_chain_a.cblock_header = CBlockHeader(nNonce=21) self.second_block_chain_a.cblock = CBlock(nNonce=21) self.third_a_block_chain_a = Block(None, BlockOrigin.private) self.third_a_block_chain_a.height = 3 self.third_a_block_chain_a.prevBlock = self.second_block_chain_a self.third_a_block_chain_a.cached_hash = '3a_1' self.third_a_block_chain_a.cblock_header = CBlockHeader(nNonce=311) self.third_a_block_chain_a.cblock = CBlock(nNonce=311) self.third_b_block_chain_a = Block(None, BlockOrigin.private) self.third_b_block_chain_a.height = 3 self.third_b_block_chain_a.prevBlock = self.second_block_chain_a self.third_b_block_chain_a.cached_hash = '3a_2' self.third_b_block_chain_a.cblock_header = CBlockHeader(nNonce=312) self.third_b_block_chain_a.cblock = CBlock(nNonce=312) self.fourth_block_chain_a = Block(None, BlockOrigin.private) self.fourth_block_chain_a.height = 4 self.fourth_block_chain_a.prevBlock = self.third_a_block_chain_a self.fourth_block_chain_a.cached_hash = '4a' self.fourth_block_chain_a.cblock_header = CBlockHeader(nNonce=41) self.fourth_block_chain_a.cblock = CBlock(nNonce=41) self.first_block_chain_b = Block(None, BlockOrigin.public) self.first_block_chain_b.height = 1 self.first_block_chain_b.prevBlock = test_util.genesis_block self.first_block_chain_b.cached_hash = '1b' self.first_block_chain_b.cblock_header = CBlockHeader(nNonce=12) self.first_block_chain_b.cblock = CBlock(nNonce=12) self.second_block_chain_b = Block(None, BlockOrigin.public) self.second_block_chain_b.height = 2 self.second_block_chain_b.prevBlock = self.first_block_chain_b self.second_block_chain_b.cached_hash = '2b' self.second_block_chain_b.cblock_header = CBlockHeader(nNonce=22) self.second_block_chain_b.cblock = CBlock(nNonce=22) self.third_a_block_chain_b = Block(None, BlockOrigin.public) self.third_a_block_chain_b.height = 3 self.third_a_block_chain_b.prevBlock = self.second_block_chain_b self.third_a_block_chain_b.cached_hash = '3b_1' self.third_a_block_chain_b.cblock_header = CBlockHeader(nNonce=321) self.third_a_block_chain_b.cblock = CBlock(nNonce=321) self.third_b_block_chain_b = Block(None, BlockOrigin.public) self.third_b_block_chain_b.height = 3 self.third_b_block_chain_b.prevBlock = self.second_block_chain_b self.third_b_block_chain_b.cached_hash = '3b_2' self.third_b_block_chain_b.cblock_header = CBlockHeader(nNonce=322) self.third_b_block_chain_b.cblock = CBlock(nNonce=322) self.fourth_block_chain_b = Block(None, BlockOrigin.public) self.fourth_block_chain_b.height = 4 self.fourth_block_chain_b.prevBlock = self.third_a_block_chain_b self.fourth_block_chain_b.cached_hash = '4b' self.fourth_block_chain_b.cblock_header = CBlockHeader(nNonce=42) self.fourth_block_chain_b.cblock = CBlock(nNonce=42)
def gen_block_header(block_height): return CBlockHeader( nTime=block_height * 10, # So that block times are increasing. )