MCPcopy Create free account
hub / github.com/ElementsProject/elements / CBlockHeader

Class CBlockHeader

test/functional/test_framework/messages.py:1076–1178  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1074HEADER_HF_BIT = 1 << 31
1075HEADER_DYNAFED_HF_MASK = 0x7fffffff
1076class CBlockHeader:
1077 __slots__ = ("hash", "hashMerkleRoot", "hashPrevBlock", "nBits", "nNonce",
1078 "nTime", "nVersion", "sha256", "block_height", "proof", "m_dynafed_params",
1079 "m_signblock_witness")
1080
1081 def __init__(self, header=None):
1082 if header is None:
1083 self.set_null()
1084 else:
1085 self.nVersion = header.nVersion
1086 self.hashPrevBlock = header.hashPrevBlock
1087 self.hashMerkleRoot = header.hashMerkleRoot
1088 self.nTime = header.nTime
1089 self.block_height = header.block_height
1090 self.proof = header.proof
1091 self.sha256 = header.sha256
1092 self.hash = header.hash
1093 self.m_dynafed_params = header.m_dynafed_params
1094 self.m_signblock_witness = header.m_signblock_witness
1095 self.calc_sha256()
1096
1097 def set_null(self):
1098 self.nVersion = 4
1099 self.hashPrevBlock = 0
1100 self.hashMerkleRoot = 0
1101 self.nTime = 0
1102 self.block_height = 0
1103 self.proof = CProof()
1104 self.m_dynafed_params = DynaFedParams()
1105 self.m_signblock_witness = CScriptWitness()
1106 self.sha256 = None
1107 self.hash = None
1108
1109 def deserialize(self, f):
1110 self.nVersion = struct.unpack("<i", f.read(4))[0]
1111 is_dyna = False
1112
1113 if self.nVersion < 0:
1114 is_dyna = True
1115 self.nVersion = HEADER_DYNAFED_HF_MASK & self.nVersion
1116
1117 self.hashPrevBlock = deser_uint256(f)
1118 self.hashMerkleRoot = deser_uint256(f)
1119 self.nTime = struct.unpack("<I", f.read(4))[0]
1120 self.block_height = struct.unpack("<I", f.read(4))[0]
1121 if is_dyna:
1122 self.m_dynafed_params.deserialize(f)
1123 self.m_signblock_witness.stack = deser_string_vector(f)
1124 else:
1125 self.proof.deserialize(f)
1126 self.sha256 = None
1127 self.hash = None
1128
1129 def serialize(self):
1130 r = b""
1131 nVersion = self.nVersion
1132 is_dyna = False
1133 if not self.m_dynafed_params.is_null():

Callers 15

run_testMethod · 0.90
run_testMethod · 0.90
run_testMethod · 0.90
test_block_relayMethod · 0.90
run_testMethod · 0.90
on_getheadersMethod · 0.90

Calls

no outgoing calls

Tested by 4

test_block_relayMethod · 0.72