mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-02 09:46:52 -05:00
validation: remove nchaintx from assumeutxo metadata
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.
This commit is contained in:
parent
931684b24a
commit
91d93aac4e
3 changed files with 4 additions and 23 deletions
|
@ -22,22 +22,15 @@ public:
|
||||||
//! during snapshot load to estimate progress of UTXO set reconstruction.
|
//! during snapshot load to estimate progress of UTXO set reconstruction.
|
||||||
uint64_t m_coins_count = 0;
|
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() { }
|
||||||
SnapshotMetadata(
|
SnapshotMetadata(
|
||||||
const uint256& base_blockhash,
|
const uint256& base_blockhash,
|
||||||
uint64_t coins_count,
|
uint64_t coins_count,
|
||||||
unsigned int nchaintx) :
|
unsigned int nchaintx) :
|
||||||
m_base_blockhash(base_blockhash),
|
m_base_blockhash(base_blockhash),
|
||||||
m_coins_count(coins_count),
|
m_coins_count(coins_count) { }
|
||||||
m_nchaintx(nchaintx) { }
|
|
||||||
|
|
||||||
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
|
#endif // BITCOIN_NODE_UTXO_SNAPSHOT_H
|
||||||
|
|
|
@ -266,16 +266,7 @@ BOOST_FIXTURE_TEST_CASE(chainstatemanager_activate_snapshot, TestChain100Setup)
|
||||||
metadata.m_base_blockhash = uint256::ONE;
|
metadata.m_base_blockhash = uint256::ONE;
|
||||||
}));
|
}));
|
||||||
|
|
||||||
constexpr int bad_nchaintx = 9999;
|
BOOST_REQUIRE(CreateAndActivateUTXOSnapshot(m_node, m_path_root));
|
||||||
|
|
||||||
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;
|
|
||||||
}));
|
|
||||||
|
|
||||||
// Ensure our active chain is the snapshot chainstate.
|
// Ensure our active chain is the snapshot chainstate.
|
||||||
BOOST_CHECK(!chainman.ActiveChainstate().m_from_snapshot_blockhash.IsNull());
|
BOOST_CHECK(!chainman.ActiveChainstate().m_from_snapshot_blockhash.IsNull());
|
||||||
|
@ -286,10 +277,7 @@ BOOST_FIXTURE_TEST_CASE(chainstatemanager_activate_snapshot, TestChain100Setup)
|
||||||
const AssumeutxoData& au_data = *ExpectedAssumeutxo(snapshot_height, ::Params());
|
const AssumeutxoData& au_data = *ExpectedAssumeutxo(snapshot_height, ::Params());
|
||||||
const CBlockIndex* tip = chainman.ActiveTip();
|
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_EQUAL(tip->nChainTx, au_data.nChainTx);
|
||||||
BOOST_CHECK(tip->nChainTx != bad_nchaintx);
|
|
||||||
|
|
||||||
// To be checked against later when we try loading a subsequent snapshot.
|
// To be checked against later when we try loading a subsequent snapshot.
|
||||||
uint256 loaded_snapshot_blockhash{*chainman.SnapshotBlockhash()};
|
uint256 loaded_snapshot_blockhash{*chainman.SnapshotBlockhash()};
|
||||||
|
|
|
@ -41,7 +41,7 @@ class DumptxoutsetTest(BitcoinTestFramework):
|
||||||
digest = hashlib.sha256(f.read()).hexdigest()
|
digest = hashlib.sha256(f.read()).hexdigest()
|
||||||
# UTXO snapshot hash should be deterministic based on mocked time.
|
# UTXO snapshot hash should be deterministic based on mocked time.
|
||||||
assert_equal(
|
assert_equal(
|
||||||
digest, 'be032e5f248264ba08e11099ac09dbd001f6f87ffc68bf0f87043d8146d50664')
|
digest, '7ae82c986fa5445678d2a21453bb1c86d39e47af13da137640c2b1cf8093691c')
|
||||||
|
|
||||||
# Specifying a path to an existing file will fail.
|
# Specifying a path to an existing file will fail.
|
||||||
assert_raises_rpc_error(
|
assert_raises_rpc_error(
|
||||||
|
|
Loading…
Add table
Reference in a new issue