MCPcopy Create free account
hub / github.com/bitcoin/bitcoin / CBlockHeader

Class CBlockHeader

test/functional/test_framework/messages.py:731–788  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

729
730
731class CBlockHeader:
732 __slots__ = ("hashMerkleRoot", "hashPrevBlock", "nBits", "nNonce",
733 "nTime", "nVersion")
734
735 def __init__(self, header=None):
736 if header is None:
737 self.set_null()
738 else:
739 self.nVersion = header.nVersion
740 self.hashPrevBlock = header.hashPrevBlock
741 self.hashMerkleRoot = header.hashMerkleRoot
742 self.nTime = header.nTime
743 self.nBits = header.nBits
744 self.nNonce = header.nNonce
745
746 def set_null(self):
747 self.nVersion = 4
748 self.hashPrevBlock = 0
749 self.hashMerkleRoot = 0
750 self.nTime = 0
751 self.nBits = 0
752 self.nNonce = 0
753
754 def deserialize(self, f):
755 self.nVersion = int.from_bytes(f.read(4), "little", signed=True)
756 self.hashPrevBlock = deser_uint256(f)
757 self.hashMerkleRoot = deser_uint256(f)
758 self.nTime = int.from_bytes(f.read(4), "little")
759 self.nBits = int.from_bytes(f.read(4), "little")
760 self.nNonce = int.from_bytes(f.read(4), "little")
761
762 def serialize(self):
763 return self._serialize_header()
764
765 def _serialize_header(self):
766 r = b""
767 r += self.nVersion.to_bytes(4, "little", signed=True)
768 r += ser_uint256(self.hashPrevBlock)
769 r += ser_uint256(self.hashMerkleRoot)
770 r += self.nTime.to_bytes(4, "little")
771 r += self.nBits.to_bytes(4, "little")
772 r += self.nNonce.to_bytes(4, "little")
773 return r
774
775 @property
776 def hash_hex(self):
777 """Return block header hash as hex string."""
778 return hash256(self._serialize_header())[::-1].hex()
779
780 @property
781 def hash_int(self):
782 """Return block header hash as integer."""
783 return uint256_from_str(hash256(self._serialize_header()))
784
785 def __repr__(self):
786 return "CBlockHeader(nVersion=%i hashPrevBlock=%064x hashMerkleRoot=%064x nTime=%s nBits=%08x nNonce=%08x)" \
787 % (self.nVersion, self.hashPrevBlock, self.hashMerkleRoot,
788 time.ctime(self.nTime), self.nBits, self.nNonce)

Callers 15

run_testMethod · 0.90
run_testMethod · 0.90
async_routineMethod · 0.90
test_timewarpMethod · 0.90
run_testMethod · 0.90
send_headersMethod · 0.90

Calls

no outgoing calls