mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-21 15:50:07 +01:00
Merge bitcoin/bitcoin#30604: doc, chainparams: 29775 release notes and follow-ups
92c1d7d1f8validation: Use MAX_TIMEWARP constant as testnet4 timewarp defense delta (Fabian Jahr)4b2fad502edoc: Add release notes for 29775 (Fabian Jahr)f7cc97313bdoc: Align deprecation warnings (Fabian Jahr)1163b08378chainparams: Add initial minimum chain work for Testnet4 (Fabian Jahr) Pull request description: This completes follow-ups left open in #29775. - Adds release notes - Addresses the [misalignment](https://github.com/bitcoin/bitcoin/pull/29775#discussion_r1706982102) in deprecation warnings and hints at the intention to remove support for Testnet3. - Adds initial minimum chainwork for Testnet4. - Use the `MAX_TIMEWARP` constant as the timewarp defense delta, equal to `MAX_FUTURE_BLOCK_TIME`. ACKs for top commit: Sjors: ACK92c1d7d1f8achow101: ACK92c1d7d1f8tdb3: re ACK92c1d7d1f8Tree-SHA512: 7ebdac7809f96231f75ca62706af59cd1ed27f713a4c7be5e2ad69fae95832b146b3ea23c712fb03b412da1deda7e8a5dae55bb2bbd2dcfd9f926e85c2a72666
This commit is contained in:
@@ -107,6 +107,21 @@ const std::vector<std::string> CHECKLEVEL_DOC {
|
||||
* */
|
||||
static constexpr int PRUNE_LOCK_BUFFER{10};
|
||||
|
||||
/**
|
||||
* Maximum number of seconds that the timestamp of the first
|
||||
* block of a difficulty adjustment period is allowed to
|
||||
* be earlier than the last block of the previous period (BIP94).
|
||||
*/
|
||||
static constexpr int64_t MAX_TIMEWARP{MAX_FUTURE_BLOCK_TIME};
|
||||
|
||||
/**
|
||||
* If the timestamp of the last block in a difficulty period is set
|
||||
* MAX_FUTURE_BLOCK_TIME seconds in the future, an honest miner should
|
||||
* be able to mine the first block using the current time. This is not
|
||||
* a consensus rule, but changing MAX_TIMEWARP should be done with caution.
|
||||
*/
|
||||
static_assert(MAX_FUTURE_BLOCK_TIME <= MAX_TIMEWARP);
|
||||
|
||||
GlobalMutex g_best_block_mutex;
|
||||
std::condition_variable g_best_block_cv;
|
||||
uint256 g_best_block;
|
||||
@@ -4188,7 +4203,7 @@ static bool ContextualCheckBlockHeader(const CBlockHeader& block, BlockValidatio
|
||||
// Check timestamp for the first block of each difficulty adjustment
|
||||
// interval, except the genesis block.
|
||||
if (nHeight % consensusParams.DifficultyAdjustmentInterval() == 0) {
|
||||
if (block.GetBlockTime() < pindexPrev->GetBlockTime() - 60 * 60 * 2) {
|
||||
if (block.GetBlockTime() < pindexPrev->GetBlockTime() - MAX_TIMEWARP) {
|
||||
return state.Invalid(BlockValidationResult::BLOCK_INVALID_HEADER, "time-timewarp-attack", "block's timestamp is too early on diff adjustment block");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user