mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-13 12:33:42 +02:00
blockheaders include block height, nodes validate it
The block height validation is gated by the startup option `con_blockheightinheader`, accesible in custom chains only using option `chain=<name>`. Only if set to true will this field be (de)serialized and evaluated in consensus logic. Otherwise the field is simply ignored, other than being stored in memory as the default value 0.
This commit is contained in:
parent
8f6bedfd4b
commit
2bfabb3e4f
23 changed files with 180 additions and 129 deletions
|
|
@ -3271,6 +3271,11 @@ static bool ContextualCheckBlockHeader(const CBlockHeader& block, CValidationSta
|
|||
if (block.GetBlockTime() <= pindexPrev->GetMedianTimePast())
|
||||
return state.Invalid(false, REJECT_INVALID, "time-too-old", "block's timestamp is too early");
|
||||
|
||||
// Check height in header against prev
|
||||
if (g_con_blockheightinheader && (uint32_t)nHeight != block.block_height)
|
||||
return state.Invalid(error("%s: block height in header is incorrect", __func__),
|
||||
REJECT_INVALID, "bad-header-height");
|
||||
|
||||
// Check timestamp
|
||||
if (block.GetBlockTime() > nAdjustedTime + MAX_FUTURE_BLOCK_TIME)
|
||||
return state.Invalid(false, REJECT_INVALID, "time-too-new", "block timestamp too far in the future");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue