eth/catalyst: return 0x0 if latestvalid is pow block (#25423)

* eth/catalyst: return 0x0 if latestvalid is pow block

* eth/catalyst: return 0x0 if latestvalid is pow block

* eth/catalyst: fix header retrieval, fix sign check

Co-authored-by: Péter Szilágyi <peterke@gmail.com>
This commit is contained in:
Marius van der Wijden 2022-07-28 15:16:15 +02:00 committed by GitHub
parent f3549814a9
commit 377c7d799f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -479,10 +479,15 @@ func (api *ConsensusAPI) checkInvalidAncestor(check common.Hash, head common.Has
} }
api.invalidTipsets[head] = invalid api.invalidTipsets[head] = invalid
} }
// If the last valid hash is the terminal pow block, return 0x0 for latest valid hash
lastValid := &invalid.ParentHash
if header := api.eth.BlockChain().GetHeader(invalid.ParentHash, invalid.Number.Uint64()-1); header != nil && header.Difficulty.Sign() != 0 {
lastValid = &common.Hash{}
}
failure := "links to previously rejected block" failure := "links to previously rejected block"
return &beacon.PayloadStatusV1{ return &beacon.PayloadStatusV1{
Status: beacon.INVALID, Status: beacon.INVALID,
LatestValidHash: &invalid.ParentHash, LatestValidHash: lastValid,
ValidationError: &failure, ValidationError: &failure,
} }
} }