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 26, 2021
1 parent 931684b commit 91d93aa
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 23 deletions.
11 changes: 2 additions & 9 deletions src/node/utxo_snapshot.h
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
2 changes: 1 addition & 1 deletion test/functional/rpc_dumptxoutset.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ def run_test(self):
digest = hashlib.sha256(f.read()).hexdigest()
# UTXO snapshot hash should be deterministic based on mocked time.
assert_equal(
digest, 'be032e5f248264ba08e11099ac09dbd001f6f87ffc68bf0f87043d8146d50664')
digest, '7ae82c986fa5445678d2a21453bb1c86d39e47af13da137640c2b1cf8093691c')

# Specifying a path to an existing file will fail.
assert_raises_rpc_error(
Expand Down

0 comments on commit 91d93aa

Please sign in to comment.