diff --git a/eth/stagedsync/stage_headers.go b/eth/stagedsync/stage_headers.go index 7384acf297e..4ffadcd0284 100644 --- a/eth/stagedsync/stage_headers.go +++ b/eth/stagedsync/stage_headers.go @@ -164,12 +164,12 @@ func HeadersPOS( return nil } + cfg.hd.SetPOSSync(true) log.Info(fmt.Sprintf("[%s] Waiting for Beacon Chain...", s.LogPrefix())) onlyNewRequests := cfg.hd.PosStatus() == headerdownload.Syncing interrupt, requestId, requestWithStatus := cfg.hd.BeaconRequestList.WaitForRequest(onlyNewRequests, test) - cfg.hd.SetPOSSync(true) cfg.hd.SetHeaderReader(&chainReader{config: &cfg.chainConfig, tx: tx, blockReader: cfg.blockReader}) headerInserter := headerdownload.NewHeaderInserter(s.LogPrefix(), nil, s.BlockNumber, cfg.blockReader) diff --git a/ethdb/privateapi/engine_test.go b/ethdb/privateapi/engine_test.go index f62b91f8a66..bd56e791772 100644 --- a/ethdb/privateapi/engine_test.go +++ b/ethdb/privateapi/engine_test.go @@ -91,7 +91,7 @@ func TestMockDownloadRequest(t *testing.T) { makeTestDb(ctx, db) hd := headerdownload.NewHeaderDownload(0, 0, nil, nil) - + hd.SetPOSSync(true) events := NewEvents() backend := NewEthBackendServer(ctx, nil, db, events, nil, ¶ms.ChainConfig{TerminalTotalDifficulty: common.Big1}, nil, hd, false) @@ -149,6 +149,7 @@ func TestMockValidExecution(t *testing.T) { makeTestDb(ctx, db) hd := headerdownload.NewHeaderDownload(0, 0, nil, nil) + hd.SetPOSSync(true) events := NewEvents() backend := NewEthBackendServer(ctx, nil, db, events, nil, ¶ms.ChainConfig{TerminalTotalDifficulty: common.Big1}, nil, hd, false) @@ -184,6 +185,7 @@ func TestMockInvalidExecution(t *testing.T) { makeTestDb(ctx, db) hd := headerdownload.NewHeaderDownload(0, 0, nil, nil) + hd.SetPOSSync(true) events := NewEvents() backend := NewEthBackendServer(ctx, nil, db, events, nil, ¶ms.ChainConfig{TerminalTotalDifficulty: common.Big1}, nil, hd, false) diff --git a/ethdb/privateapi/ethbackend.go b/ethdb/privateapi/ethbackend.go index e4f168ff867..4e27d8f57a3 100644 --- a/ethdb/privateapi/ethbackend.go +++ b/ethdb/privateapi/ethbackend.go @@ -397,24 +397,18 @@ func (s *EthBackendServer) getPayloadStatusFromHashIfPossible(blockHash common.H } // Retrieve parent and total difficulty. var parent *types.Header - var td *big.Int if newPayload { // Obtain TD parent, err = rawdb.ReadHeaderByHash(tx, parentHash) if err != nil { return nil, err } - td, err = rawdb.ReadTdByHash(tx, parentHash) - } else { - td, err = rawdb.ReadTdByHash(tx, blockHash) - } - if err != nil { - return nil, err } + // Check if we already reached TTD. - if td != nil && td.Cmp(s.config.TerminalTotalDifficulty) < 0 { + if !s.hd.POSSync() { log.Warn(fmt.Sprintf("[%s] TTD not reached yet", prefix), "hash", blockHash) - return &engineapi.PayloadStatus{Status: remote.EngineStatus_INVALID, LatestValidHash: common.Hash{}}, nil + return &engineapi.PayloadStatus{Status: remote.EngineStatus_SYNCING, LatestValidHash: common.Hash{}}, nil } var canonicalHash common.Hash