refactor: Use type-safe assumeutxo hash
This avoids accidentally mixing it up with other hashes (like block hashes).
This commit is contained in:
4 files changed
+11
-6
No files matched your search
+2
-2
@@ -451,11 +451,11 @@ public:
|
|||||||
m_assumeutxo_data = MapAssumeutxo{
|
m_assumeutxo_data = MapAssumeutxo{
|
||||||
{
|
{
|
||||||
110,
|
110,
|
||||||
{uint256S("0x1ebbf5850204c0bdb15bf030f47c7fe91d45c44c712697e4509ba67adb01c618"), 110},
|
{AssumeutxoHash{uint256S("0x1ebbf5850204c0bdb15bf030f47c7fe91d45c44c712697e4509ba67adb01c618")}, 110},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
210,
|
210,
|
||||||
{uint256S("0x9c5ed99ef98544b34f8920b6d1802f72ac28ae6e2bd2bd4c316ff10c230df3f2"), 210},
|
{AssumeutxoHash{uint256S("0x9c5ed99ef98544b34f8920b6d1802f72ac28ae6e2bd2bd4c316ff10c230df3f2")}, 210},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+6
-1
@@ -10,6 +10,7 @@
|
|||||||
#include <consensus/params.h>
|
#include <consensus/params.h>
|
||||||
#include <primitives/block.h>
|
#include <primitives/block.h>
|
||||||
#include <protocol.h>
|
#include <protocol.h>
|
||||||
|
#include <util/hash_type.h>
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
@@ -25,6 +26,10 @@ struct CCheckpointData {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct AssumeutxoHash : public BaseHash<uint256> {
|
||||||
|
explicit AssumeutxoHash(const uint256& hash) : BaseHash(hash) {}
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holds configuration for use during UTXO snapshot load and validation. The contents
|
* Holds configuration for use during UTXO snapshot load and validation. The contents
|
||||||
* here are security critical, since they dictate which UTXO snapshots are recognized
|
* here are security critical, since they dictate which UTXO snapshots are recognized
|
||||||
@@ -32,7 +37,7 @@ struct CCheckpointData {
|
|||||||
*/
|
*/
|
||||||
struct AssumeutxoData {
|
struct AssumeutxoData {
|
||||||
//! The expected hash of the deserialized UTXO set.
|
//! The expected hash of the deserialized UTXO set.
|
||||||
const uint256 hash_serialized;
|
const AssumeutxoHash hash_serialized;
|
||||||
|
|
||||||
//! Used to populate the nChainTx value, which is used during BlockManager::LoadBlockIndex().
|
//! Used to populate the nChainTx value, which is used during BlockManager::LoadBlockIndex().
|
||||||
//!
|
//!
|
||||||
|
|||||||
@@ -135,11 +135,11 @@ BOOST_AUTO_TEST_CASE(test_assumeutxo)
|
|||||||
}
|
}
|
||||||
|
|
||||||
const auto out110 = *ExpectedAssumeutxo(110, *params);
|
const auto out110 = *ExpectedAssumeutxo(110, *params);
|
||||||
BOOST_CHECK_EQUAL(out110.hash_serialized, uint256S("1ebbf5850204c0bdb15bf030f47c7fe91d45c44c712697e4509ba67adb01c618"));
|
BOOST_CHECK_EQUAL(out110.hash_serialized.ToString(), "1ebbf5850204c0bdb15bf030f47c7fe91d45c44c712697e4509ba67adb01c618");
|
||||||
BOOST_CHECK_EQUAL(out110.nChainTx, (unsigned int)110);
|
BOOST_CHECK_EQUAL(out110.nChainTx, (unsigned int)110);
|
||||||
|
|
||||||
const auto out210 = *ExpectedAssumeutxo(210, *params);
|
const auto out210 = *ExpectedAssumeutxo(210, *params);
|
||||||
BOOST_CHECK_EQUAL(out210.hash_serialized, uint256S("9c5ed99ef98544b34f8920b6d1802f72ac28ae6e2bd2bd4c316ff10c230df3f2"));
|
BOOST_CHECK_EQUAL(out210.hash_serialized.ToString(), "9c5ed99ef98544b34f8920b6d1802f72ac28ae6e2bd2bd4c316ff10c230df3f2");
|
||||||
BOOST_CHECK_EQUAL(out210.nChainTx, (unsigned int)210);
|
BOOST_CHECK_EQUAL(out210.nChainTx, (unsigned int)210);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -4939,7 +4939,7 @@ bool ChainstateManager::PopulateAndValidateSnapshot(
|
|||||||
|
|
||||||
const AssumeutxoData& au_data = *maybe_au_data;
|
const AssumeutxoData& au_data = *maybe_au_data;
|
||||||
|
|
||||||
if (stats.hashSerialized != au_data.hash_serialized) {
|
if (AssumeutxoHash{stats.hashSerialized} != au_data.hash_serialized) {
|
||||||
LogPrintf("[snapshot] bad snapshot content hash: expected %s, got %s\n",
|
LogPrintf("[snapshot] bad snapshot content hash: expected %s, got %s\n",
|
||||||
au_data.hash_serialized.ToString(), stats.hashSerialized.ToString());
|
au_data.hash_serialized.ToString(), stats.hashSerialized.ToString());
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Reference in new issue
Block a user