From 7c5716fdc2938e8257d2d4cbee910ca1c2121fc7 Mon Sep 17 00:00:00 2001 From: Giulio Rebuffo Date: Sat, 2 Jul 2022 21:06:48 +0200 Subject: [PATCH] Fixed Invalid block number on payload --- eth/stagedsync/stage_headers.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/eth/stagedsync/stage_headers.go b/eth/stagedsync/stage_headers.go index 204f76b301f..6b6f5f547e9 100644 --- a/eth/stagedsync/stage_headers.go +++ b/eth/stagedsync/stage_headers.go @@ -500,7 +500,7 @@ func handleNewPayload( }, nil } - parent, err := cfg.blockReader.Header(ctx, tx, header.ParentHash, headerNumber-1) + parent, err := cfg.blockReader.HeaderByHash(ctx, tx, header.ParentHash) if err != nil { return nil, err } @@ -513,6 +513,14 @@ func handleNewPayload( return &privateapi.PayloadStatus{Status: remote.EngineStatus_SYNCING}, nil } + if header.Number.Uint64() != parent.Number.Uint64()+1 { + return &privateapi.PayloadStatus{ + Status: remote.EngineStatus_INVALID, + LatestValidHash: header.ParentHash, + ValidationError: errors.New("invalid block number"), + }, nil + } + cfg.hd.BeaconRequestList.Remove(requestId) for _, tx := range payloadMessage.Body.Transactions { @@ -574,6 +582,10 @@ func verifyAndSaveNewPoSHeader( }, false, nil } + if err := rawdb.WriteHeaderNumber(tx, headerHash, headerNumber); err != nil { + return nil, false, err + } + err = headerInserter.FeedHeaderPoS(tx, header, headerHash) if err != nil { return nil, false, err