mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-03-29 18:05:58 +02:00
headerssync: Make HeadersSyncState more flexible and move constants
Move calculated constants from the top of src/headerssync.cpp into src/kernel/chainparams.cpp. Instead of being hardcoded to mainnet parameters, HeadersSyncState can now vary depending on chain or test. (This means we can reset TARGET_BLOCKS back to the nice round number of 15'000). Signet and testnets got new HeadersSyncParams constants through temporarily altering headerssync-params.py with corresponding GENESIS_TIME and MINCHAINWORK_HEADERS (based off defaultAssumeValid block height comments, corresponding to nMinimumChainWork). Regtest doesn't have a default assume valid block height, so the values are copied from Testnet 4. Since the constants only affect memory usage, and have very low impact unless dealing with a largely malicious chain, it's not that critical to keep updating them for non-mainnet chains. GENESIS_TIMEs (UTC): Testnet3: 1296688602 = datetime(2011, 2, 2) Testnet4: 1714777860 = datetime(2024, 5, 3) Signet: 1598918400 = datetime(2020, 9, 1)
This commit is contained in:
@@ -136,7 +136,8 @@ public:
|
||||
* minimum_required_work: amount of chain work required to accept the chain
|
||||
*/
|
||||
HeadersSyncState(NodeId id, const Consensus::Params& consensus_params,
|
||||
const CBlockIndex* chain_start, const arith_uint256& minimum_required_work);
|
||||
const HeadersSyncParams& params, const CBlockIndex* chain_start,
|
||||
const arith_uint256& minimum_required_work);
|
||||
|
||||
/** Result data structure for ProcessNextHeaders. */
|
||||
struct ProcessingResult {
|
||||
@@ -179,8 +180,8 @@ protected:
|
||||
/** The (secret) offset on the heights for which to create commitments.
|
||||
*
|
||||
* m_header_commitments entries are created at any height h for which
|
||||
* (h % HEADER_COMMITMENT_PERIOD) == m_commit_offset. */
|
||||
const unsigned m_commit_offset;
|
||||
* (h % m_params.commitment_period) == m_commit_offset. */
|
||||
const size_t m_commit_offset;
|
||||
|
||||
private:
|
||||
/** Clear out all download state that might be in progress (freeing any used
|
||||
@@ -214,6 +215,9 @@ private:
|
||||
/** We use the consensus params in our anti-DoS calculations */
|
||||
const Consensus::Params& m_consensus_params;
|
||||
|
||||
/** Parameters that impact memory usage for a given chain, especially when attacked. */
|
||||
const HeadersSyncParams m_params;
|
||||
|
||||
/** Store the last block in our block index that the peer's chain builds from */
|
||||
const CBlockIndex* m_chain_start{nullptr};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user