From f56ee7d9c5e750f054022bb51e34575427b59d49 Mon Sep 17 00:00:00 2001 From: jwasinger Date: Tue, 22 Aug 2023 00:33:37 +0700 Subject: [PATCH] eth/catalyst: set finalized block hash properly in dev mode (#27886) Co-authored-by: Martin Holst Swende --- eth/catalyst/simulated_beacon.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/eth/catalyst/simulated_beacon.go b/eth/catalyst/simulated_beacon.go index d4b08b7ba..2836cda23 100644 --- a/eth/catalyst/simulated_beacon.go +++ b/eth/catalyst/simulated_beacon.go @@ -32,6 +32,8 @@ import ( "github.com/ethereum/go-ethereum/rpc" ) +const devEpochLength = 32 + // withdrawalQueue implements a FIFO queue which holds withdrawals that are // pending inclusion. type withdrawalQueue struct { @@ -157,6 +159,13 @@ func (c *SimulatedBeacon) sealBlock(withdrawals []*types.Withdrawal) error { } 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 if _, err = c.engineAPI.NewPayloadV2(*payload); err != nil { 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{ HeadBlockHash: payload.BlockHash, SafeBlockHash: payload.BlockHash, - FinalizedBlockHash: payload.BlockHash, + FinalizedBlockHash: finalizedHash, } // mark the block containing the payload as canonical if _, err = c.engineAPI.ForkchoiceUpdatedV2(c.curForkchoiceState, nil); err != nil {