From 6e0ae5dd3c17727a718ddd70ef3e0fe33cfea3b3 Mon Sep 17 00:00:00 2001 From: Capri Date: Mon, 14 Sep 2026 21:09:32 +0000 Subject: [PATCH] Propagate RandomX hashing failures safely --- src/primitives/block.cpp | 20 +++++++------------- src/primitives/block.h | 2 +- src/test/pow_tests.cpp | 3 ++- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/src/primitives/block.cpp b/src/primitives/block.cpp index 7a19fa3..29b4a5c 100644 --- a/src/primitives/block.cpp +++ b/src/primitives/block.cpp @@ -39,23 +39,17 @@ uint256 CBlockHeader::GetPoWAlgoHash(const Consensus::Params& params) const return GetHash(); } -uint256 CBlockHeader::GetRandomXPoWHash(const uint256& seed) const +bool CBlockHeader::GetRandomXPoWHash(const uint256& seed, uint256& result) const { CDataStream stream(SER_GETHASH, PROTOCOL_VERSION); stream << *this; - uint256 result; - - if (!VextaRandomXHash( - stream.data(), - stream.size(), - seed.data(), - seed.size(), - result.begin())) { - result.SetNull(); - } - - return result; + return VextaRandomXHash( + stream.data(), + stream.size(), + seed.data(), + seed.size(), + result.begin()); } std::string CBlock::ToString(const Consensus::Params& params) const diff --git a/src/primitives/block.h b/src/primitives/block.h index 6bdb9e5..a001d27 100644 --- a/src/primitives/block.h +++ b/src/primitives/block.h @@ -102,7 +102,7 @@ public: * The input is the canonical serialized 80-byte block header. * The seed is supplied in raw uint256 serialization byte order. */ - uint256 GetRandomXPoWHash(const uint256& seed) const; + bool GetRandomXPoWHash(const uint256& seed, uint256& result) const; int64_t GetBlockTime() const { diff --git a/src/test/pow_tests.cpp b/src/test/pow_tests.cpp index 7a0f6e6..9758f6e 100644 --- a/src/test/pow_tests.cpp +++ b/src/test/pow_tests.cpp @@ -589,7 +589,8 @@ BOOST_AUTO_TEST_CASE(RandomX_header_hash_vector_test) HexStr(seedBytes), "0ffeeddccbbaa9988776655443322110ffeeddccbbaa99887766554433221100"); - const uint256 randomXHash = header.GetRandomXPoWHash(seed); + uint256 randomXHash; + BOOST_REQUIRE(header.GetRandomXPoWHash(seed, randomXHash)); BOOST_CHECK_EQUAL( randomXHash.ToString(),