3.9 KiB
RPC
Client
Client is provided as a Go package, so please refer to the relevant godocs page.
Server
The server is written to support as much of the JSON-RPC 2.0 Spec as possible. The server is run as part of the node currently.
Example call
An example would be viewing the version of the node:
$ curl -X POST -d '{"jsonrpc": "2.0", "method": "getversion", "params": [], "id": 1}' http://localhost:20332
which would yield the response:
{
"jsonrpc" : "2.0",
"id" : 1,
"result" : {
"port" : 20333,
"useragent" : "/NEO-GO:0.36.0-dev/",
"nonce" : 9318417
}
}
Supported methods
Method |
---|
getaccountstate |
getapplicationlog |
getassetstate |
getbestblockhash |
getblock |
getblockcount |
getblockhash |
getblockheader |
getblocksysfee |
getclaimable |
getconnectioncount |
getcontractstate |
getnep5balances |
getnep5transfers |
getpeers |
getrawmempool |
getrawtransaction |
getstorage |
gettransactionheight |
gettxout |
getunclaimed |
getunspents |
getvalidators |
getversion |
invoke |
invokefunction |
invokescript |
sendrawtransaction |
submitblock |
validateaddress |
Implementation notices
invokefunction
and invoke
neo-go's implementation of invokefunction
and invoke
does not return tx
field in the answer because that requires signing the transaction with some
key in the server which doesn't fit the model of our node-client interactions.
Lacking this signature the transaction is almost useless, so there is no point
in returning it.
Both methods also don't currently support arrays in function parameters.
Unsupported methods
Methods listed down below are not going to be supported for various reasons and we're not accepting issues related to them.
Method | Reason |
---|---|
claimgas |
Doesn't fit neo-go wallet model, use CLI to do that |
dumpprivkey |
Shouldn't exist for security reasons, see claimgas comment also |
getbalance |
Use getaccountstate instead, see claimgas comment also |
getmetricblocktimestamp |
Not really useful, use other means for node monitoring |
getnewaddress |
See claimgas comment |
getunclaimedgas |
Use getunclaimed instead, see claimgas comment also |
getwalletheight |
Not applicable to neo-go, see claimgas comment |
importprivkey |
Not applicable to neo-go, see claimgas comment |
listaddress |
Not applicable to neo-go, see claimgas comment |
listplugins |
neo-go doesn't have any plugins, so it makes no sense |
sendfrom |
Not applicable to neo-go, see claimgas comment |
sendmany |
Not applicable to neo-go, see claimgas comment |
sendtoaddress |
Not applicable to neo-go, see claimgas comment |
Extensions
Some additional extensions are implemented as a part of this RPC server.
Websocket server
This server accepts websocket connections on ws://$BASE_URL/ws
address. You
can use it to perform regular RPC calls over websockets (it's supposed to be a
little faster than going regular HTTP route) and you can also use it for
additional functionality provided only via websockets (like notifications).
Notification subsystem
Notification subsystem consists of two additional RPC methods (subscribe
and
unsubscribe
working only over websocket connection) that allow to subscribe
to various blockchain events (with simple event filtering) and receive them on
the client as JSON-RPC notifications. More details on that are written in the
notifications specification.