eth/catalyst: set finalized block hash properly in dev mode (#27886)

Co-authored-by: Martin Holst Swende <martin@swende.se>
This commit is contained in:
jwasinger 2023-08-22 00:33:37 +07:00 committed by GitHub
parent b3024e8fe6
commit f56ee7d9c5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -32,6 +32,8 @@ import (
"github.com/ethereum/go-ethereum/rpc" "github.com/ethereum/go-ethereum/rpc"
) )
const devEpochLength = 32
// withdrawalQueue implements a FIFO queue which holds withdrawals that are // withdrawalQueue implements a FIFO queue which holds withdrawals that are
// pending inclusion. // pending inclusion.
type withdrawalQueue struct { type withdrawalQueue struct {
@ -157,6 +159,13 @@ func (c *SimulatedBeacon) sealBlock(withdrawals []*types.Withdrawal) error {
} }
payload := envelope.ExecutionPayload payload := envelope.ExecutionPayload
var finalizedHash common.Hash
if payload.Number%devEpochLength == 0 {
finalizedHash = payload.BlockHash
} else {
finalizedHash = c.eth.BlockChain().GetBlockByNumber((payload.Number - 1) / devEpochLength * devEpochLength).Hash()
}
// mark the payload as canon // mark the payload as canon
if _, err = c.engineAPI.NewPayloadV2(*payload); err != nil { if _, err = c.engineAPI.NewPayloadV2(*payload); err != nil {
return fmt.Errorf("failed to mark payload as canonical: %v", err) return fmt.Errorf("failed to mark payload as canonical: %v", err)
@ -164,7 +173,7 @@ func (c *SimulatedBeacon) sealBlock(withdrawals []*types.Withdrawal) error {
c.curForkchoiceState = engine.ForkchoiceStateV1{ c.curForkchoiceState = engine.ForkchoiceStateV1{
HeadBlockHash: payload.BlockHash, HeadBlockHash: payload.BlockHash,
SafeBlockHash: payload.BlockHash, SafeBlockHash: payload.BlockHash,
FinalizedBlockHash: payload.BlockHash, FinalizedBlockHash: finalizedHash,
} }
// mark the block containing the payload as canonical // mark the block containing the payload as canonical
if _, err = c.engineAPI.ForkchoiceUpdatedV2(c.curForkchoiceState, nil); err != nil { if _, err = c.engineAPI.ForkchoiceUpdatedV2(c.curForkchoiceState, nil); err != nil {