示例#1
0
def create_block():
    block_header = block_pb2.BlockHeader(block_num=85,
                                         state_root_hash="0987654321fedcba",
                                         previous_block_id="0000000000000000")
    block = BlockWrapper(
        block_pb2.Block(header_signature="abcdef1234567890",
                        header=block_header.SerializeToString()))
    return block
示例#2
0
    def _generate_genesis_block():
        """
        Returns a blocker wrapper with the basics of the block header in place
        """
        genesis_header = block_pb2.BlockHeader(
            previous_block_id=NULL_BLOCK_IDENTIFIER, block_num=0)

        return BlockBuilder(genesis_header)
示例#3
0
def _build_block(block_num, block_id, previous_block_id):
    header = block_pb2.BlockHeader(
        block_num=block_num,
        previous_block_id=previous_block_id)

    return block_pb2.Block(
        header_signature=block_id,
        header=header.SerializeToString())
示例#4
0
    def _generate_genesis_block(self):
        """
        Returns a blocker wrapper with the basics of the block header in place
        """
        genesis_header = block_pb2.BlockHeader(
            block_num=0,
            previous_block_id=NULL_BLOCK_IDENTIFIER,
            signer_pubkey=self._identity_public_key)

        return BlockBuilder(genesis_header)
示例#5
0
    def test_block_manager(self):
        block_a = _build_block(1, "A", NULL_BLOCK_IDENTIFIER)
        block_b = _build_block(2, "B", "A")
        block_c = _build_block(3, "C", "B")

        self.block_manager.put([block_a, block_b, block_c])

        block_e = _build_block(5, "E", "D")

        with self.assertRaises(MissingPredecessor):
            self.block_manager.put([block_e])

        block_d = _build_block(4, "D", "C")

        self.block_manager.put([block_d, block_e])

        block_c2 = _build_block(3, "C2", "B")

        block_d2 = _build_block(4, "D2", "C2")

        block_e2 = _build_block(5, "E2", "D2")

        with self.assertRaises(MissingPredecessorInBranch):
            self.block_manager.put([block_c2, block_e2, block_d2])

        block_id = "D"
        for block in self.block_manager.branch("D"):
            self.assertEqual(block.header_signature, block_id)
            header = block_pb2.BlockHeader()
            header.ParseFromString(block.header)
            block_id = header.previous_block_id

        self.block_manager.put([block_c2, block_d2, block_e2])

        block_id = "D"
        for block in self.block_manager.branch_diff("D", "E2"):
            self.assertEqual(block.header_signature, block_id)
            header = block_pb2.BlockHeader()
            header.ParseFromString(block.header)
            block_id = header.previous_block_id

        for block in self.block_manager.get("C"):
            self.assertEqual(block.header_signature, "C")
示例#6
0
def create_block(block_num=85,
                 previous_block_id="0000000000000000",
                 block_id="abcdef1234567890",
                 batches=None):
    if batches is None:
        batches = []
    block_header = block_pb2.BlockHeader(block_num=block_num,
                                         state_root_hash="0987654321fedcba",
                                         previous_block_id=previous_block_id)
    block = BlockWrapper(
        block_pb2.Block(header_signature=block_id,
                        header=block_header.SerializeToString(),
                        batches=batches))
    return block