plugeth/rpc
Marius van der Wijden 0b3f3be2b5
internal/ethapi: return revert reason for eth_call (#21083)
* internal/ethapi: return revert reason for eth_call

* internal/ethapi: moved revert reason logic to doCall

* accounts/abi/bind/backends: added revert reason logic to simulated backend

* internal/ethapi: fixed linting error

* internal/ethapi: check if require reason can be unpacked

* internal/ethapi: better error logic

* internal/ethapi: simplify logic

* internal/ethapi: return vmError()

* internal/ethapi: move handling of revert out of docall

* graphql: removed revert logic until spec change

* rpc: internal/ethapi: added custom error types

* graphql: use returndata instead of return

Return() checks if there is an error. If an error is found, we return nil.
For most use cases it can be beneficial to return the output even if there
was an error. This code should be changed anyway once the spec supports
error reasons in graphql responses

* accounts/abi/bind/backends: added tests for revert reason

* internal/ethapi: add errorCode to revert error

* internal/ethapi: add errorCode of 3 to revertError

* internal/ethapi: unified estimateGasErrors, simplified logic

* internal/ethapi: unified handling of errors in DoEstimateGas

* rpc: print error data field

* accounts/abi/bind/backends: unify simulatedBackend and RPC

* internal/ethapi: added binary data to revertError data

* internal/ethapi: refactored unpacking logic into newRevertError

* accounts/abi/bind/backends: fix EstimateGas

* accounts, console, internal, rpc: minor error interface cleanups

* Revert "accounts, console, internal, rpc: minor error interface cleanups"

This reverts commit 2d3ef53c5304e429a04983210a417c1f4e0dafb7.

* re-apply the good parts of 2d3ef53c53

* rpc: add test for returning server error data from client

Co-authored-by: rjl493456442 <garyrong0905@gmail.com>
Co-authored-by: Péter Szilágyi <peterke@gmail.com>
Co-authored-by: Felix Lange <fjl@twurst.com>
2020-06-08 11:09:49 +03:00
..
testdata rpc: implement full bi-directional communication (#18471) 2019-02-04 13:47:34 +01:00
client_example_test.go rpc: make ExampleClientSubscription work with the geth API (#19483) 2020-04-27 17:25:24 +02:00
client_test.go internal/ethapi: return revert reason for eth_call (#21083) 2020-06-08 11:09:49 +03:00
client.go rpc: add error when call result parameter is not addressable (#20638) 2020-02-11 09:48:58 +01:00
constants_unix_nocgo.go accounts, p2p, rpc: make CGO_ENABLED=0 build again (#19593) 2019-05-26 01:07:10 +03:00
constants_unix.go accounts, p2p, rpc: make CGO_ENABLED=0 build again (#19593) 2019-05-26 01:07:10 +03:00
doc.go rpc: remove 'exported or builtin' restriction for parameters (#20332) 2019-11-20 10:06:21 +02:00
endpoints.go node: allow websocket and HTTP on the same port (#20810) 2020-04-08 13:33:12 +02:00
errors.go internal/ethapi: return revert reason for eth_call (#21083) 2020-06-08 11:09:49 +03:00
handler.go internal/ethapi: return revert reason for eth_call (#21083) 2020-06-08 11:09:49 +03:00
http_test.go rpc: add explicit 200 response for empty HTTP GET (#20952) 2020-04-28 10:43:21 +02:00
http.go rpc: add explicit 200 response for empty HTTP GET (#20952) 2020-04-28 10:43:21 +02:00
inproc.go rpc, p2p/simulations: use github.com/gorilla/websocket (#20289) 2019-11-18 10:40:59 +02:00
ipc_js.go all: update author list and licenses 2019-07-22 12:17:27 +03:00
ipc_unix.go rpc: implement websockets with github.com/gorilla/websocket (#19866) 2019-07-22 13:22:39 +03:00
ipc_windows.go all: import "context" instead of "golang.org/x/net/context" 2017-03-22 20:49:15 +01:00
ipc.go rpc, p2p/simulations: use github.com/gorilla/websocket (#20289) 2019-11-18 10:40:59 +02:00
json.go internal/ethapi: return revert reason for eth_call (#21083) 2020-06-08 11:09:49 +03:00
metrics.go rpc: metrics for JSON-RPC method calls (#20847) 2020-04-03 12:36:44 +02:00
server_test.go internal/ethapi: return revert reason for eth_call (#21083) 2020-06-08 11:09:49 +03:00
server.go all: fix typos in comments (#21118) 2020-05-25 10:21:28 +02:00
service.go rpc: remove 'exported or builtin' restriction for parameters (#20332) 2019-11-20 10:06:21 +02:00
stdio.go rpc, p2p/simulations: use github.com/gorilla/websocket (#20289) 2019-11-18 10:40:59 +02:00
subscription_test.go all: fix a bunch of inconsequential goroutine leaks (#20667) 2020-04-03 20:07:22 +02:00
subscription.go graphql, node, rpc: fix typos in comments (#20824) 2020-03-27 13:52:53 +01:00
testservice_test.go internal/ethapi: return revert reason for eth_call (#21083) 2020-06-08 11:09:49 +03:00
types_test.go internal/ethapi: support block number or hash on state-related methods (#19491) 2019-09-26 10:47:31 +02:00
types.go internal/ethapi: return revert reason for eth_call (#21083) 2020-06-08 11:09:49 +03:00
websocket_test.go rpc: add missing timer.Stop calls in websocket tests (#20863) 2020-04-02 22:08:45 +02:00
websocket.go rpc: send websocket ping when connection is idle (#21142) 2020-06-02 15:04:44 +03:00