Skip to content

Commit

Permalink
fix: insert error stage to rpc error in OpSealPayload engine api
Browse files Browse the repository at this point in the history
  • Loading branch information
bnoieh committed Jan 15, 2025
1 parent 66811de commit 7151e52
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 10 deletions.
6 changes: 3 additions & 3 deletions beacon/engine/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ import (
type PayloadVersion byte

const (
GetPayloadStage = "getPayload"
NewPayloadStage = "newPayload"
ForkchoiceUpdatedStage = "forkchoiceUpdated"
GetPayloadStage = "sealApiGetPayloadErrStage"
NewPayloadStage = "sealApiNewPayloadErrStage"
ForkchoiceUpdatedStage = "sealApiForkchoiceUpdatedErrStage"
)

var (
Expand Down
22 changes: 15 additions & 7 deletions eth/catalyst/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -723,11 +723,11 @@ func (api *ConsensusAPI) opSealPayload(payloadID engine.PayloadID, update engine
} else if version == "V3" {
payloadEnvelope, err = api.GetPayloadV3(payloadID)
} else {
return engine.OpSealPayloadResponse{ErrStage: engine.GetPayloadStage}, engine.UnsupportedFork.With(errors.New("invalid engine api version"))
return engine.OpSealPayloadResponse{ErrStage: engine.GetPayloadStage}, engine.UnsupportedFork.With(errors.New(engine.GetPayloadStage + "invalid engine api version"))
}
if err != nil {
log.Error("Seal payload error when get payload", "error", err, "payloadID", payloadID)
return engine.OpSealPayloadResponse{ErrStage: engine.GetPayloadStage}, err
return engine.OpSealPayloadResponse{ErrStage: engine.GetPayloadStage}, fmt.Errorf("sealApiGetPayloadErrStage: %w", err)
}

var payloadStatus engine.PayloadStatusV1
Expand All @@ -736,18 +736,26 @@ func (api *ConsensusAPI) opSealPayload(payloadID engine.PayloadID, update engine
} else if version == "V3" {
payloadStatus, err = api.NewPayloadV3(*payloadEnvelope.ExecutionPayload, []common.Hash{}, payloadEnvelope.ParentBeaconBlockRoot)
} else {
return engine.OpSealPayloadResponse{ErrStage: engine.NewPayloadStage}, engine.UnsupportedFork.With(errors.New("invalid engine api version"))
return engine.OpSealPayloadResponse{ErrStage: engine.NewPayloadStage}, engine.UnsupportedFork.With(errors.New(engine.NewPayloadStage + "invalid engine api version"))
}
if err != nil || payloadStatus.Status != engine.VALID {
if err != nil {
log.Error("Seal payload error when new payload", "error", err, "payloadStatus", payloadStatus)
return engine.OpSealPayloadResponse{ErrStage: engine.NewPayloadStage, PayloadStatus: payloadStatus}, err
return engine.OpSealPayloadResponse{ErrStage: engine.NewPayloadStage, PayloadStatus: payloadStatus}, fmt.Errorf("sealApiNewPayloadErrStage: %w", err)
}
if payloadStatus.Status != engine.VALID {
log.Error("Seal payload status error when new payload", "payloadStatus", payloadStatus)
return engine.OpSealPayloadResponse{ErrStage: engine.NewPayloadStage, PayloadStatus: payloadStatus}, nil
}

update.HeadBlockHash = payloadEnvelope.ExecutionPayload.BlockHash
updateResponse, err := api.ForkchoiceUpdatedV3(update, nil)
if err != nil || updateResponse.PayloadStatus.Status != engine.VALID {
if err != nil {
log.Error("Seal payload error when forkchoiceUpdated", "error", err, "payloadStatus", updateResponse.PayloadStatus)
return engine.OpSealPayloadResponse{ErrStage: engine.ForkchoiceUpdatedStage, PayloadStatus: updateResponse.PayloadStatus}, err
return engine.OpSealPayloadResponse{ErrStage: engine.ForkchoiceUpdatedStage, PayloadStatus: updateResponse.PayloadStatus}, fmt.Errorf("sealApiForkchoiceUpdatedErrStage: %w", err)
}
if updateResponse.PayloadStatus.Status != engine.VALID {
log.Error("Seal payload status error when forkchoiceUpdated", "payloadStatus", updateResponse.PayloadStatus)
return engine.OpSealPayloadResponse{ErrStage: engine.ForkchoiceUpdatedStage, PayloadStatus: updateResponse.PayloadStatus}, nil
}

log.Info("opSealPayload succeed", "hash", payloadEnvelope.ExecutionPayload.BlockHash, "number", payloadEnvelope.ExecutionPayload.Number, "id", payloadID, "payloadStatus", updateResponse.PayloadStatus)
Expand Down

0 comments on commit 7151e52

Please sign in to comment.