// If the specified head matches with our local head, do nothing and keep
// generating the payload. It's a special corner case that a few slots are
// missing and we are requested to generate the payload in slot.
}else{
}else{
// If the head block is already in our canonical chain, the beacon client is
// If the head block is already in our canonical chain, the beacon client is
// probably resyncing. Ignore the update.
// probably resyncing. Ignore the update.
log.Info("Ignoring beacon update to old head","number",block.NumberU64(),"hash",update.HeadBlockHash,"age",common.PrettyAge(time.Unix(int64(block.Time()),0)),"have",api.eth.BlockChain().CurrentBlock().NumberU64())
log.Info("Ignoring beacon update to old head","number",block.NumberU64(),"hash",update.HeadBlockHash,"age",common.PrettyAge(time.Unix(int64(block.Time()),0)),"have",api.eth.BlockChain().CurrentBlock().NumberU64())
returnvalid(nil),nil
}
}
api.eth.SetSynced()
api.eth.SetSynced()
@ -183,12 +193,6 @@ func (api *ConsensusAPI) ForkchoiceUpdatedV1(update beacon.ForkchoiceStateV1, pa
returnbeacon.STATUS_INVALID,beacon.InvalidForkChoiceState.With(errors.New("safe block not in canonical chain"))
returnbeacon.STATUS_INVALID,beacon.InvalidForkChoiceState.With(errors.New("safe block not in canonical chain"))