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)
Esempio n. 2
0
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())
Esempio n. 3
0
 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)
Esempio n. 6
0
def gen_block_header(block_height):
    return CBlockHeader(
        nTime=block_height * 10,  # So that block times are increasing.
    )