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;
|
||||
numTransactions: int; checkSealOK: bool;
|
||||
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:
|
||||
return err("BlockHeader.extraData larger than 32 bytes")
|
||||
|
||||
|
@ -160,9 +169,8 @@ proc validateHeader(db: BaseChainDB; header, parentHeader: BlockHeader;
|
|||
if header.timestamp.toUnix <= parentHeader.timestamp.toUnix:
|
||||
return err("timestamp must be strictly later than parent")
|
||||
|
||||
if db.config.daoForkSupport and
|
||||
db.config.daoForkBlock <= header.blockNumber and
|
||||
header.extraData != daoForkBlockExtraData:
|
||||
if db.config.daoForkSupport and inDAOExtraRange(header.blockNumber):
|
||||
if header.extraData != daoForkBlockExtraData:
|
||||
return err("header extra data should be marked DAO")
|
||||
|
||||
let calcDiffc = db.config.calcDifficulty(header.timestamp, parentHeader)
|
||||
|
|
Loading…
Reference in New Issue