fix missing EIP-799 extra range check in header validation
This commit is contained in:
parent
447deb29ff
commit
5c4c1784a0
|
@ -145,6 +145,15 @@ proc validateSeal(hashCache: var EpochHashCache;
|
||||||
proc validateHeader(db: BaseChainDB; header, parentHeader: BlockHeader;
|
proc validateHeader(db: BaseChainDB; header, parentHeader: BlockHeader;
|
||||||
numTransactions: int; checkSealOK: bool;
|
numTransactions: int; checkSealOK: bool;
|
||||||
hashCache: var EpochHashCache): Result[void,string] =
|
hashCache: var EpochHashCache): Result[void,string] =
|
||||||
|
|
||||||
|
template inDAOExtraRange(blockNumber: BlockNumber): bool =
|
||||||
|
# EIP-799
|
||||||
|
# Blocks with block numbers in the range [1_920_000, 1_920_009]
|
||||||
|
# MUST have DAOForkBlockExtra
|
||||||
|
let DAOHigh = db.config.daoForkBlock + DAOForkExtraRange.u256
|
||||||
|
db.config.daoForkBlock <= blockNumber and
|
||||||
|
blockNumber < DAOHigh
|
||||||
|
|
||||||
if header.extraData.len > 32:
|
if header.extraData.len > 32:
|
||||||
return err("BlockHeader.extraData larger than 32 bytes")
|
return err("BlockHeader.extraData larger than 32 bytes")
|
||||||
|
|
||||||
|
@ -160,10 +169,9 @@ proc validateHeader(db: BaseChainDB; header, parentHeader: BlockHeader;
|
||||||
if header.timestamp.toUnix <= parentHeader.timestamp.toUnix:
|
if header.timestamp.toUnix <= parentHeader.timestamp.toUnix:
|
||||||
return err("timestamp must be strictly later than parent")
|
return err("timestamp must be strictly later than parent")
|
||||||
|
|
||||||
if db.config.daoForkSupport and
|
if db.config.daoForkSupport and inDAOExtraRange(header.blockNumber):
|
||||||
db.config.daoForkBlock <= header.blockNumber and
|
if header.extraData != daoForkBlockExtraData:
|
||||||
header.extraData != daoForkBlockExtraData:
|
return err("header extra data should be marked DAO")
|
||||||
return err("header extra data should be marked DAO")
|
|
||||||
|
|
||||||
let calcDiffc = db.config.calcDifficulty(header.timestamp, parentHeader)
|
let calcDiffc = db.config.calcDifficulty(header.timestamp, parentHeader)
|
||||||
if header.difficulty < calcDiffc:
|
if header.difficulty < calcDiffc:
|
||||||
|
|
Loading…
Reference in New Issue