Skip to content

Commit

Permalink
validation: remove nchaintx from assumeutxo metadata
Browse files Browse the repository at this point in the history
This value is no longer used and is instead specified statically
in chainparams. This change means that previously generated
snapshots will no longer be usable.
  • Loading branch information
jamesob committed Apr 23, 2021
1 parent 931684b commit 4317d41
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 22 deletions.
11 changes: 2 additions & 9 deletions src/node/utxo_snapshot.h
Expand Up @@ -22,22 +22,15 @@ class SnapshotMetadata
//! during snapshot load to estimate progress of UTXO set reconstruction.
uint64_t m_coins_count = 0;

//! Necessary to "fake" the base nChainTx so that we can estimate progress during
//! initial block download for the assumeutxo chainstate.
//!
//! TODO: this is unused and should be removed.
unsigned int m_nchaintx = 0;

SnapshotMetadata() { }
SnapshotMetadata(
const uint256& base_blockhash,
uint64_t coins_count,
unsigned int nchaintx) :
m_base_blockhash(base_blockhash),
m_coins_count(coins_count),
m_nchaintx(nchaintx) { }
m_coins_count(coins_count) { }

SERIALIZE_METHODS(SnapshotMetadata, obj) { READWRITE(obj.m_base_blockhash, obj.m_coins_count, obj.m_nchaintx); }
SERIALIZE_METHODS(SnapshotMetadata, obj) { READWRITE(obj.m_base_blockhash, obj.m_coins_count); }
};

#endif // BITCOIN_NODE_UTXO_SNAPSHOT_H
14 changes: 1 addition & 13 deletions src/test/validation_chainstatemanager_tests.cpp
Expand Up @@ -266,16 +266,7 @@ BOOST_FIXTURE_TEST_CASE(chainstatemanager_activate_snapshot, TestChain100Setup)
metadata.m_base_blockhash = uint256::ONE;
}));

constexpr int bad_nchaintx = 9999;

BOOST_REQUIRE(CreateAndActivateUTXOSnapshot(
m_node, m_path_root, [](CAutoFile& auto_infile, SnapshotMetadata& metadata) {
// Provide an nChainTx that differs from the hardcoded one.
//
// Ultimately this malleation check should be removed when we remove
// the now-unnecessary nChainTx from the user-specified snapshot metadata.
metadata.m_nchaintx = bad_nchaintx;
}));
BOOST_REQUIRE(CreateAndActivateUTXOSnapshot(m_node, m_path_root));

// Ensure our active chain is the snapshot chainstate.
BOOST_CHECK(!chainman.ActiveChainstate().m_from_snapshot_blockhash.IsNull());
Expand All @@ -286,10 +277,7 @@ BOOST_FIXTURE_TEST_CASE(chainstatemanager_activate_snapshot, TestChain100Setup)
const AssumeutxoData& au_data = *ExpectedAssumeutxo(snapshot_height, ::Params());
const CBlockIndex* tip = chainman.ActiveTip();

// Ensure that, despite a bad nChainTx value being in the snapshot, activation
// uses the hardcoded value from chainparams.
BOOST_CHECK_EQUAL(tip->nChainTx, au_data.nChainTx);
BOOST_CHECK(tip->nChainTx != bad_nchaintx);

// To be checked against later when we try loading a subsequent snapshot.
uint256 loaded_snapshot_blockhash{*chainman.SnapshotBlockhash()};
Expand Down

0 comments on commit 4317d41

Please sign in to comment.