Skip to content

Commit f3c791d

Browse files
committed
test: refactor: dedup CBlockHeader serialization
Note that we can't call `.serialize()` directly in the `.calc_sha256()` method, as this could wrongly lead to the serialization of the derived class (CBlock) if called from an instance there.
1 parent 9f713b8 commit f3c791d

File tree

1 file changed

+4
-7
lines changed

1 file changed

+4
-7
lines changed

test/functional/test_framework/messages.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -742,6 +742,9 @@ def deserialize(self, f):
742742
self.hash = None
743743

744744
def serialize(self):
745+
return self._serialize_header()
746+
747+
def _serialize_header(self):
745748
r = b""
746749
r += self.nVersion.to_bytes(4, "little", signed=True)
747750
r += ser_uint256(self.hashPrevBlock)
@@ -753,13 +756,7 @@ def serialize(self):
753756

754757
def calc_sha256(self):
755758
if self.sha256 is None:
756-
r = b""
757-
r += self.nVersion.to_bytes(4, "little", signed=True)
758-
r += ser_uint256(self.hashPrevBlock)
759-
r += ser_uint256(self.hashMerkleRoot)
760-
r += self.nTime.to_bytes(4, "little")
761-
r += self.nBits.to_bytes(4, "little")
762-
r += self.nNonce.to_bytes(4, "little")
759+
r = self._serialize_header()
763760
self.sha256 = uint256_from_str(hash256(r))
764761
self.hash = hash256(r)[::-1].hex()
765762

0 commit comments

Comments
 (0)