@@ -113,9 +113,13 @@ func (p *StateProcessor) Process(block *types.Block, statedb *state.StateDB, cfg
113
113
return nil , err
114
114
}
115
115
// EIP-7002
116
- ProcessWithdrawalQueue (& requests , evm )
116
+ if err := ProcessWithdrawalQueue (& requests , evm ); err != nil {
117
+ return nil , err
118
+ }
117
119
// EIP-7251
118
- ProcessConsolidationQueue (& requests , evm )
120
+ if err := ProcessConsolidationQueue (& requests , evm ); err != nil {
121
+ return nil , err
122
+ }
119
123
}
120
124
121
125
// 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) {
265
269
266
270
// ProcessWithdrawalQueue calls the EIP-7002 withdrawal queue contract.
267
271
// 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 )
270
274
}
271
275
272
276
// ProcessConsolidationQueue calls the EIP-7251 consolidation queue contract.
273
277
// 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 )
276
280
}
277
281
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 {
279
283
if tracer := evm .Config .Tracer ; tracer != nil {
280
284
onSystemCallStart (tracer , evm .GetVMContext ())
281
285
if tracer .OnSystemCallEnd != nil {
@@ -292,17 +296,20 @@ func processRequestsSystemCall(requests *[][]byte, evm *vm.EVM, requestType byte
292
296
}
293
297
evm .SetTxContext (NewEVMTxContext (msg ))
294
298
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 )
296
300
evm .StateDB .Finalise (true )
301
+ if err != nil {
302
+ return fmt .Errorf ("system call failed to execute: %v" , err )
303
+ }
297
304
if len (ret ) == 0 {
298
- return // skip empty output
305
+ return nil // skip empty output
299
306
}
300
-
301
307
// Append prefixed requestsData to the requests list.
302
308
requestsData := make ([]byte , len (ret )+ 1 )
303
309
requestsData [0 ] = requestType
304
310
copy (requestsData [1 :], ret )
305
311
* requests = append (* requests , requestsData )
312
+ return nil
306
313
}
307
314
308
315
var depositTopic = common .HexToHash ("0x649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c5" )
0 commit comments