Create a new block
(self, nVersion=2, hashPrevBlock=b'\x00'*32, hashMerkleRoot=b'\x00'*32, nTime=0, nBits=0, nNonce=0, vtx=())
| 643 | return commit_pos |
| 644 | |
| 645 | def __init__(self, nVersion=2, hashPrevBlock=b'\x00'*32, hashMerkleRoot=b'\x00'*32, nTime=0, nBits=0, nNonce=0, vtx=()): |
| 646 | """Create a new block""" |
| 647 | if vtx: |
| 648 | vMerkleTree = tuple(CBlock.build_merkle_tree_from_txs(vtx)) |
| 649 | if hashMerkleRoot == b'\x00'*32: |
| 650 | hashMerkleRoot = vMerkleTree[-1] |
| 651 | elif hashMerkleRoot != vMerkleTree[-1]: |
| 652 | raise CheckBlockError("CBlock : hashMerkleRoot is not compatible with vtx") |
| 653 | else: |
| 654 | vMerkleTree = () |
| 655 | super(CBlock, self).__init__(nVersion, hashPrevBlock, hashMerkleRoot, nTime, nBits, nNonce) |
| 656 | |
| 657 | object.__setattr__(self, 'vMerkleTree', vMerkleTree) |
| 658 | try: |
| 659 | vWitnessMerkleTree = tuple(CBlock.build_witness_merkle_tree_from_txs(vtx)) |
| 660 | except NoWitnessData: |
| 661 | vWitnessMerkleTree = () |
| 662 | object.__setattr__(self, 'vWitnessMerkleTree', vWitnessMerkleTree) |
| 663 | object.__setattr__(self, 'vtx', tuple(CTransaction.from_tx(tx) for tx in vtx)) |
| 664 | |
| 665 | @classmethod |
| 666 | def stream_deserialize(cls, f): |
nothing calls this directly
no test coverage detected