forked from cerc-io/plugeth
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:
parent
b3024e8fe6
commit
f56ee7d9c5
@ -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 {
|
||||||
|
Loading…
Reference in New Issue
Block a user