go-ethereum/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 2d3ef53c53.

* 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.go rpc: add error when call result parameter is not addressable (#20638) 2020-02-11 09:48:58 +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
constants_unix.go accounts, p2p, rpc: make CGO_ENABLED=0 build again (#19593) 2019-05-26 01:07:10 +03:00
constants_unix_nocgo.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.go rpc: add explicit 200 response for empty HTTP GET (#20952) 2020-04-28 10:43:21 +02:00
http_test.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.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
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.go all: fix typos in comments (#21118) 2020-05-25 10:21:28 +02:00
server_test.go internal/ethapi: return revert reason for eth_call (#21083) 2020-06-08 11:09:49 +03: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.go graphql, node, rpc: fix typos in comments (#20824) 2020-03-27 13:52:53 +01:00
subscription_test.go all: fix a bunch of inconsequential goroutine leaks (#20667) 2020-04-03 20:07:22 +02:00
testservice_test.go internal/ethapi: return revert reason for eth_call (#21083) 2020-06-08 11:09:49 +03:00
types.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
websocket.go rpc: send websocket ping when connection is idle (#21142) 2020-06-02 15:04:44 +03:00
websocket_test.go rpc: add missing timer.Stop calls in websocket tests (#20863) 2020-04-02 22:08:45 +02:00