From 03cac18ce3ba62103697405113d5ba6347a0e523 Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Tue, 14 Feb 2023 15:50:25 +0100 Subject: [PATCH 1/3] eth/catalyst: return error if withdrawals are nil post-shanghai --- eth/catalyst/api.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/eth/catalyst/api.go b/eth/catalyst/api.go index 01a29fc447dc..1d2e993734c2 100644 --- a/eth/catalyst/api.go +++ b/eth/catalyst/api.go @@ -417,6 +417,11 @@ func (api *ConsensusAPI) NewPayloadV1(params engine.ExecutableData) (engine.Payl // NewPayloadV2 creates an Eth1 block, inserts it in the chain, and returns the status of the chain. func (api *ConsensusAPI) NewPayloadV2(params engine.ExecutableData) (engine.PayloadStatusV1, error) { + if api.eth.BlockChain().Config().IsShanghai(params.Timestamp) { + if params.Withdrawals == nil { + return engine.PayloadStatusV1{Status: engine.INVALID}, fmt.Errorf("nil withdrawals post-shanghai") + } + } return api.newPayload(params) } From f23df1b74d499433bc80a7157dba779af974237e Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Tue, 14 Feb 2023 15:59:11 +0100 Subject: [PATCH 2/3] eth/catalyst: use invalid params error --- eth/catalyst/api.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eth/catalyst/api.go b/eth/catalyst/api.go index 1d2e993734c2..3a1df1f9a4b8 100644 --- a/eth/catalyst/api.go +++ b/eth/catalyst/api.go @@ -410,7 +410,7 @@ func (api *ConsensusAPI) getPayload(payloadID engine.PayloadID) (*engine.Executi // NewPayloadV1 creates an Eth1 block, inserts it in the chain, and returns the status of the chain. func (api *ConsensusAPI) NewPayloadV1(params engine.ExecutableData) (engine.PayloadStatusV1, error) { if params.Withdrawals != nil { - return engine.PayloadStatusV1{Status: engine.INVALID}, fmt.Errorf("withdrawals not supported in V1") + return engine.PayloadStatusV1{Status: engine.INVALID}, engine.InvalidParams.With(fmt.Errorf("withdrawals not supported in V1")) } return api.newPayload(params) } @@ -419,7 +419,7 @@ func (api *ConsensusAPI) NewPayloadV1(params engine.ExecutableData) (engine.Payl func (api *ConsensusAPI) NewPayloadV2(params engine.ExecutableData) (engine.PayloadStatusV1, error) { if api.eth.BlockChain().Config().IsShanghai(params.Timestamp) { if params.Withdrawals == nil { - return engine.PayloadStatusV1{Status: engine.INVALID}, fmt.Errorf("nil withdrawals post-shanghai") + return engine.PayloadStatusV1{Status: engine.INVALID}, engine.InvalidParams.With(fmt.Errorf("nil withdrawals post-shanghai")) } } return api.newPayload(params) From 573b5b270fd54d4954e8494c0d997a58a34c5cde Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Tue, 14 Feb 2023 16:35:23 +0100 Subject: [PATCH 3/3] eth/catalyst: return error if withdrawals are set pre-shanghai --- eth/catalyst/api.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/eth/catalyst/api.go b/eth/catalyst/api.go index 3a1df1f9a4b8..00c4772185b1 100644 --- a/eth/catalyst/api.go +++ b/eth/catalyst/api.go @@ -421,6 +421,8 @@ func (api *ConsensusAPI) NewPayloadV2(params engine.ExecutableData) (engine.Payl if params.Withdrawals == nil { return engine.PayloadStatusV1{Status: engine.INVALID}, engine.InvalidParams.With(fmt.Errorf("nil withdrawals post-shanghai")) } + } else if params.Withdrawals != nil { + return engine.PayloadStatusV1{Status: engine.INVALID}, engine.InvalidParams.With(fmt.Errorf("non-nil withdrawals pre-shanghai")) } return api.newPayload(params) }