refactor: Use type-safe assumeutxo hash

This avoids accidentally mixing it up with other hashes (like block
hashes).
This commit is contained in:
MarcoFalke committed 2021-05-11 10:40:40 +02:00
1 parent 0000007709
commit fa5668bfb3
4 files changed
+11 -6

No files matched your search

+2 -2
View File
@@ -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
View File
@@ -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().
//! //!
+2 -2
View File
@@ -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
View File
@@ -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;