diff --git a/eth/api_backend.go b/eth/api_backend.go index a48815e0db..8272896ada 100644 --- a/eth/api_backend.go +++ b/eth/api_backend.go @@ -127,7 +127,7 @@ func (b *EthAPIBackend) GetTd(blockHash common.Hash) *big.Int { func (b *EthAPIBackend) GetEVM(ctx context.Context, msg core.Message, state *state.StateDB, header *types.Header) (*vm.EVM, func() error, error) { state.SetBalance(msg.From(), math.MaxBig256) - vmError := func() error { return nil } + vmError := func() error { return ctx.Err() } context := core.NewEVMContext(msg, header, b.eth.BlockChain(), nil) return vm.NewEVM(context, state, b.eth.chainConfig, *b.eth.blockchain.GetVMConfig()), vmError, nil diff --git a/les/api_backend.go b/les/api_backend.go index 7531396235..b3fd0541c6 100644 --- a/les/api_backend.go +++ b/les/api_backend.go @@ -108,7 +108,13 @@ func (b *LesApiBackend) GetTd(hash common.Hash) *big.Int { func (b *LesApiBackend) GetEVM(ctx context.Context, msg core.Message, state *state.StateDB, header *types.Header) (*vm.EVM, func() error, error) { state.SetBalance(msg.From(), math.MaxBig256) context := core.NewEVMContext(msg, header, b.eth.blockchain, nil) - return vm.NewEVM(context, state, b.eth.chainConfig, vm.Config{}), state.Error, nil + vmError := func() error { + if err := state.Error(); err != nil { + return err + } + return ctx.Err() + } + return vm.NewEVM(context, state, b.eth.chainConfig, vm.Config{}), vmError, nil } func (b *LesApiBackend) SendTx(ctx context.Context, signedTx *types.Transaction) error {