|
|
@ -190,21 +190,21 @@ func (api *ConsensusAPI) ForkchoiceUpdatedV1(update engine.ForkchoiceStateV1, pa |
|
|
|
// attributes. It supports both PayloadAttributesV1 and PayloadAttributesV2.
|
|
|
|
// attributes. It supports both PayloadAttributesV1 and PayloadAttributesV2.
|
|
|
|
func (api *ConsensusAPI) ForkchoiceUpdatedV2(update engine.ForkchoiceStateV1, params *engine.PayloadAttributes) (engine.ForkChoiceResponse, error) { |
|
|
|
func (api *ConsensusAPI) ForkchoiceUpdatedV2(update engine.ForkchoiceStateV1, params *engine.PayloadAttributes) (engine.ForkChoiceResponse, error) { |
|
|
|
if params != nil { |
|
|
|
if params != nil { |
|
|
|
|
|
|
|
if params.BeaconRoot != nil { |
|
|
|
|
|
|
|
return engine.STATUS_INVALID, engine.InvalidPayloadAttributes.With(errors.New("unexpected beacon root")) |
|
|
|
|
|
|
|
} |
|
|
|
switch api.eth.BlockChain().Config().LatestFork(params.Timestamp) { |
|
|
|
switch api.eth.BlockChain().Config().LatestFork(params.Timestamp) { |
|
|
|
case forks.Paris: |
|
|
|
case forks.Paris: |
|
|
|
if params.Withdrawals != nil { |
|
|
|
if params.Withdrawals != nil { |
|
|
|
return engine.STATUS_INVALID, engine.InvalidParams.With(errors.New("withdrawals before shanghai")) |
|
|
|
return engine.STATUS_INVALID, engine.InvalidPayloadAttributes.With(errors.New("withdrawals before shanghai")) |
|
|
|
} |
|
|
|
} |
|
|
|
case forks.Shanghai: |
|
|
|
case forks.Shanghai: |
|
|
|
if params.Withdrawals == nil { |
|
|
|
if params.Withdrawals == nil { |
|
|
|
return engine.STATUS_INVALID, engine.InvalidParams.With(errors.New("missing withdrawals")) |
|
|
|
return engine.STATUS_INVALID, engine.InvalidPayloadAttributes.With(errors.New("missing withdrawals")) |
|
|
|
} |
|
|
|
} |
|
|
|
default: |
|
|
|
default: |
|
|
|
return engine.STATUS_INVALID, engine.UnsupportedFork.With(errors.New("forkchoiceUpdatedV2 must only be called with paris and shanghai payloads")) |
|
|
|
return engine.STATUS_INVALID, engine.UnsupportedFork.With(errors.New("forkchoiceUpdatedV2 must only be called with paris and shanghai payloads")) |
|
|
|
} |
|
|
|
} |
|
|
|
if params.BeaconRoot != nil { |
|
|
|
|
|
|
|
return engine.STATUS_INVALID, engine.InvalidParams.With(errors.New("unexpected beacon root")) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
return api.forkchoiceUpdated(update, params, engine.PayloadV2, false) |
|
|
|
return api.forkchoiceUpdated(update, params, engine.PayloadV2, false) |
|
|
|
} |
|
|
|
} |
|
|
@ -213,15 +213,11 @@ func (api *ConsensusAPI) ForkchoiceUpdatedV2(update engine.ForkchoiceStateV1, pa |
|
|
|
// in the payload attributes. It supports only PayloadAttributesV3.
|
|
|
|
// in the payload attributes. It supports only PayloadAttributesV3.
|
|
|
|
func (api *ConsensusAPI) ForkchoiceUpdatedV3(update engine.ForkchoiceStateV1, params *engine.PayloadAttributes) (engine.ForkChoiceResponse, error) { |
|
|
|
func (api *ConsensusAPI) ForkchoiceUpdatedV3(update engine.ForkchoiceStateV1, params *engine.PayloadAttributes) (engine.ForkChoiceResponse, error) { |
|
|
|
if params != nil { |
|
|
|
if params != nil { |
|
|
|
// TODO(matt): according to https://github.com/ethereum/execution-apis/pull/498,
|
|
|
|
|
|
|
|
// payload attributes that are invalid should return error
|
|
|
|
|
|
|
|
// engine.InvalidPayloadAttributes. Once hive updates this, we should update
|
|
|
|
|
|
|
|
// on our end.
|
|
|
|
|
|
|
|
if params.Withdrawals == nil { |
|
|
|
if params.Withdrawals == nil { |
|
|
|
return engine.STATUS_INVALID, engine.InvalidParams.With(errors.New("missing withdrawals")) |
|
|
|
return engine.STATUS_INVALID, engine.InvalidPayloadAttributes.With(errors.New("missing withdrawals")) |
|
|
|
} |
|
|
|
} |
|
|
|
if params.BeaconRoot == nil { |
|
|
|
if params.BeaconRoot == nil { |
|
|
|
return engine.STATUS_INVALID, engine.InvalidParams.With(errors.New("missing beacon root")) |
|
|
|
return engine.STATUS_INVALID, engine.InvalidPayloadAttributes.With(errors.New("missing beacon root")) |
|
|
|
} |
|
|
|
} |
|
|
|
if api.eth.BlockChain().Config().LatestFork(params.Timestamp) != forks.Cancun { |
|
|
|
if api.eth.BlockChain().Config().LatestFork(params.Timestamp) != forks.Cancun { |
|
|
|
return engine.STATUS_INVALID, engine.UnsupportedFork.With(errors.New("forkchoiceUpdatedV3 must only be called for cancun payloads")) |
|
|
|
return engine.STATUS_INVALID, engine.UnsupportedFork.With(errors.New("forkchoiceUpdatedV3 must only be called for cancun payloads")) |
|
|
|