From e5cc56f15da466199cd8de73682d02797eb87fe1 Mon Sep 17 00:00:00 2001 From: Andrew Ashikhmin <34320705+yperbasis@users.noreply.github.com> Date: Wed, 2 Oct 2024 15:55:39 +0200 Subject: [PATCH] engineapi: Fix req list check (#12180) Cherry pick #11191 Co-authored-by: Somnath --- turbo/engineapi/engine_server.go | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/turbo/engineapi/engine_server.go b/turbo/engineapi/engine_server.go index fbe700d2a32..c1e5a972118 100644 --- a/turbo/engineapi/engine_server.go +++ b/turbo/engineapi/engine_server.go @@ -121,12 +121,16 @@ func (s *EngineServer) checkWithdrawalsPresence(time uint64, withdrawals types.W return nil } -func (s *EngineServer) checkRequestsPresence(time uint64, requests types.Requests) error { - if !s.config.IsPrague(time) && requests != nil { - return &rpc.InvalidParamsError{Message: "requests before Prague"} +func (s *EngineServer) checkRequestsPresence(time uint64, payload *engine_types.ExecutionPayload) error { + if !s.config.IsPrague(time) { + if payload.DepositRequests != nil || payload.WithdrawalRequests != nil || payload.ConsolidationRequests != nil { + return &rpc.InvalidParamsError{Message: "requests before Prague"} + } } - if s.config.IsPrague(time) && requests == nil { - return &rpc.InvalidParamsError{Message: "missing requests list"} + if s.config.IsPrague(time) { + if payload.DepositRequests == nil || payload.WithdrawalRequests == nil || payload.ConsolidationRequests == nil { + return &rpc.InvalidParamsError{Message: "missing requests list"} + } } return nil } @@ -175,14 +179,16 @@ func (s *EngineServer) newPayload(ctx context.Context, req *engine_types.Executi } var requests types.Requests - if version >= clparams.ElectraVersion && req.DepositRequests != nil { + if err := s.checkRequestsPresence(header.Time, req); err != nil { + return nil, err + } + if version >= clparams.ElectraVersion { + requests = make(types.Requests, 0) requests = append(requests, req.DepositRequests.Requests()...) requests = append(requests, req.WithdrawalRequests.Requests()...) requests = append(requests, req.ConsolidationRequests.Requests()...) } - if err := s.checkRequestsPresence(header.Time, requests); err != nil { - return nil, err - } + if requests != nil { rh := types.DeriveSha(requests) header.RequestsRoot = &rh