@@ -89,21 +89,24 @@ func (api *DebugAPI) DumpBlock(blockNr rpc.BlockNumber) (state.Dump, error) {
89
89
return stateDb .RawDump (opts ), nil
90
90
}
91
91
92
- func (api * DebugAPI ) ExecutionWitness (blockNr rpc.BlockNumber ) (* stateless.Witness , error ) {
92
+ func (api * DebugAPI ) ExecutionWitness (ctx context. Context , blockNrOrHash rpc.BlockNumberOrHash ) (* stateless.Witness , error ) {
93
93
witness := & stateless.Witness {}
94
94
95
- block := api .eth .blockchain .GetBlockByNumber (uint64 (blockNr ))
95
+ block , err := api .eth .APIBackend .BlockByNumberOrHash (ctx , blockNrOrHash )
96
+ if err != nil {
97
+ return nil , fmt .Errorf ("failed to retrieve block: %w" , err )
98
+ }
96
99
if block == nil {
97
- return nil , fmt .Errorf ("block #%d not found" , blockNr )
100
+ return nil , fmt .Errorf ("block %s not found" , blockNrOrHash . String () )
98
101
}
99
102
statedb , err := api .eth .blockchain .StateAt (block .ParentHash ())
100
103
if err != nil {
101
- return nil , fmt .Errorf ("failed to retrieve parent state: %v " , err )
104
+ return nil , fmt .Errorf ("failed to retrieve parent state: %w " , err )
102
105
}
103
106
statedb .StartPrefetcher ("debug_execution_witness" , witness )
104
107
105
108
if _ , err = api .eth .blockchain .Processor ().Process (block , statedb , vm.Config {}); err != nil {
106
- return nil , fmt .Errorf ("failed to process block %d: %v " , block .Number (), err )
109
+ return nil , fmt .Errorf ("failed to process block %d: %w " , block .Number (), err )
107
110
}
108
111
109
112
return witness , nil
0 commit comments