@@ -113,9 +113,13 @@ func (p *StateProcessor) Process(block *types.Block, statedb *state.StateDB, cfg
113113 return nil , err
114114 }
115115 // EIP-7002
116- ProcessWithdrawalQueue (& requests , evm )
116+ if err := ProcessWithdrawalQueue (& requests , evm ); err != nil {
117+ return nil , err
118+ }
117119 // EIP-7251
118- ProcessConsolidationQueue (& requests , evm )
120+ if err := ProcessConsolidationQueue (& requests , evm ); err != nil {
121+ return nil , err
122+ }
119123 }
120124
121125 // Finalize the block, applying any consensus engine specific extras (e.g. block rewards)
@@ -265,17 +269,17 @@ func ProcessParentBlockHash(prevHash common.Hash, evm *vm.EVM) {
265269
266270// ProcessWithdrawalQueue calls the EIP-7002 withdrawal queue contract.
267271// It returns the opaque request data returned by the contract.
268- func ProcessWithdrawalQueue (requests * [][]byte , evm * vm.EVM ) {
269- processRequestsSystemCall (requests , evm , 0x01 , params .WithdrawalQueueAddress )
272+ func ProcessWithdrawalQueue (requests * [][]byte , evm * vm.EVM ) error {
273+ return processRequestsSystemCall (requests , evm , 0x01 , params .WithdrawalQueueAddress )
270274}
271275
272276// ProcessConsolidationQueue calls the EIP-7251 consolidation queue contract.
273277// It returns the opaque request data returned by the contract.
274- func ProcessConsolidationQueue (requests * [][]byte , evm * vm.EVM ) {
275- processRequestsSystemCall (requests , evm , 0x02 , params .ConsolidationQueueAddress )
278+ func ProcessConsolidationQueue (requests * [][]byte , evm * vm.EVM ) error {
279+ return processRequestsSystemCall (requests , evm , 0x02 , params .ConsolidationQueueAddress )
276280}
277281
278- func processRequestsSystemCall (requests * [][]byte , evm * vm.EVM , requestType byte , addr common.Address ) {
282+ func processRequestsSystemCall (requests * [][]byte , evm * vm.EVM , requestType byte , addr common.Address ) error {
279283 if tracer := evm .Config .Tracer ; tracer != nil {
280284 onSystemCallStart (tracer , evm .GetVMContext ())
281285 if tracer .OnSystemCallEnd != nil {
@@ -292,17 +296,20 @@ func processRequestsSystemCall(requests *[][]byte, evm *vm.EVM, requestType byte
292296 }
293297 evm .SetTxContext (NewEVMTxContext (msg ))
294298 evm .StateDB .AddAddressToAccessList (addr )
295- ret , _ , _ := evm .Call (msg .From , * msg .To , msg .Data , 30_000_000 , common .U2560 )
299+ ret , _ , err := evm .Call (msg .From , * msg .To , msg .Data , 30_000_000 , common .U2560 )
296300 evm .StateDB .Finalise (true )
301+ if err != nil {
302+ return fmt .Errorf ("system call failed to execute: %v" , err )
303+ }
297304 if len (ret ) == 0 {
298- return // skip empty output
305+ return nil // skip empty output
299306 }
300-
301307 // Append prefixed requestsData to the requests list.
302308 requestsData := make ([]byte , len (ret )+ 1 )
303309 requestsData [0 ] = requestType
304310 copy (requestsData [1 :], ret )
305311 * requests = append (* requests , requestsData )
312+ return nil
306313}
307314
308315var depositTopic = common .HexToHash ("0x649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c5" )
0 commit comments