mirror of
https://github.com/nspcc-dev/neo-go.git
synced 2025-03-24 05:21:47 +00:00
rpc: split README into developer and user parts
Most of the document is written for developers and thus belongs to godoc. User-related document is now moved to docs as per #339.
This commit is contained in:
parent
778d29f543
commit
9441c5e77b
4 changed files with 145 additions and 116 deletions
|
@ -22,8 +22,7 @@ This project aims to be a full port of the original C# [NEO project](https://git
|
||||||
A complete toolkit for the NEO blockchain, including:
|
A complete toolkit for the NEO blockchain, including:
|
||||||
|
|
||||||
- Consensus node (WIP)
|
- Consensus node (WIP)
|
||||||
- [RPC node & client](https://github.com/nspcc-dev/neo-go/tree/master/pkg/rpc/README.md)
|
- [RPC node & client](https://github.com/nspcc-dev/neo-go/tree/master/docs/rpc.md)
|
||||||
- [RPC client](https://github.com/nspcc-dev/neo-go/blob/master/pkg/rpc/README.md)
|
|
||||||
- [CLI tool](https://github.com/nspcc-dev/neo-go/blob/master/docs/cli.md)
|
- [CLI tool](https://github.com/nspcc-dev/neo-go/blob/master/docs/cli.md)
|
||||||
- [Smart contract compiler](https://github.com/nspcc-dev/neo-go/blob/master/docs/compiler.md)
|
- [Smart contract compiler](https://github.com/nspcc-dev/neo-go/blob/master/docs/compiler.md)
|
||||||
- [NEO virtual machine](https://github.com/nspcc-dev/neo-go/blob/master/pkg/vm/README.md)
|
- [NEO virtual machine](https://github.com/nspcc-dev/neo-go/blob/master/pkg/vm/README.md)
|
||||||
|
|
63
docs/rpc.md
Normal file
63
docs/rpc.md
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
# RPC
|
||||||
|
|
||||||
|
## Client
|
||||||
|
|
||||||
|
Client is provided as a Go package, so please refer to the
|
||||||
|
[relevant godocs page](https://godoc.org/github.com/nspcc-dev/neo-go/pkg/rpc).
|
||||||
|
|
||||||
|
## Server
|
||||||
|
|
||||||
|
The server is written to support as much of the [JSON-RPC 2.0 Spec](http://www.jsonrpc.org/specification) as possible. The server is run as part of the node currently.
|
||||||
|
|
||||||
|
### Example call
|
||||||
|
|
||||||
|
An example would be viewing the version of the node:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ curl -X POST -d '{"jsonrpc": "2.0", "method": "getversion", "params": [], "id": 1}' http://localhost:20332
|
||||||
|
```
|
||||||
|
|
||||||
|
which would yield the response:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"jsonrpc" : "2.0",
|
||||||
|
"id" : 1,
|
||||||
|
"result" : {
|
||||||
|
"port" : 20333,
|
||||||
|
"useragent" : "/NEO-GO:0.36.0-dev/",
|
||||||
|
"nonce" : 9318417
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Supported methods
|
||||||
|
|
||||||
|
| Method | Implemented |
|
||||||
|
| ------- | ------------|
|
||||||
|
| `getaccountstate` | Yes |
|
||||||
|
| `getassetstate` | Yes |
|
||||||
|
| `getbestblockhash` | Yes |
|
||||||
|
| `getblock` | Yes |
|
||||||
|
| `getblockcount` | Yes |
|
||||||
|
| `getblockhash` | Yes |
|
||||||
|
| `getblocksysfee` | No |
|
||||||
|
| `getconnectioncount` | Yes |
|
||||||
|
| `getcontractstate` | No |
|
||||||
|
| `getpeers` | Yes |
|
||||||
|
| `getrawmempool` | No |
|
||||||
|
| `getrawtransaction` | No |
|
||||||
|
| `getstorage` | No |
|
||||||
|
| `gettxout` | No |
|
||||||
|
| `getversion` | Yes |
|
||||||
|
| `invoke` | No |
|
||||||
|
| `invokefunction` | No |
|
||||||
|
| `invokescript` | No |
|
||||||
|
| `sendrawtransaction` | No |
|
||||||
|
| `submitblock` | No |
|
||||||
|
| `validateaddress` | Yes |
|
||||||
|
|
||||||
|
## Reference
|
||||||
|
|
||||||
|
* [JSON-RPC 2.0 Specification](http://www.jsonrpc.org/specification)
|
||||||
|
* [NEO JSON-RPC 2.0 docs](https://docs.neo.org/en-us/node/cli/apigen.html)
|
|
@ -1,110 +0,0 @@
|
||||||
# RPC
|
|
||||||
|
|
||||||
## What
|
|
||||||
|
|
||||||
* Structs used by `JSON-RPC` server and for interacting with a `JSON-RPC` endpoint.
|
|
||||||
* Server for running the `JSON-RPC` protocol based on port in configuration.
|
|
||||||
|
|
||||||
> This package is currently in `alpha` and is subject to change.
|
|
||||||
|
|
||||||
## Reference
|
|
||||||
|
|
||||||
* [JSON-RPC 2.0 Specification](http://www.jsonrpc.org/specification)
|
|
||||||
* [NEO JSON-RPC 2.0 docs](https://docs.neo.org/en-us/node/cli/apigen.html)
|
|
||||||
|
|
||||||
## Client
|
|
||||||
|
|
||||||
You can create a new client and start interacting with any NEO node that exposes their
|
|
||||||
`JSON-RPC` endpoint. See [godocs](https://godoc.org/github.com/CityOfZion/neo-go/pkg/rpc) for example.
|
|
||||||
|
|
||||||
> Not all methods are currently supported in the client, please see table below for supported methods.
|
|
||||||
|
|
||||||
### TODO
|
|
||||||
|
|
||||||
* Merge structs so can be used by both server and client.
|
|
||||||
* Add missing methods to client.
|
|
||||||
* Allow client to connect using client cert.
|
|
||||||
|
|
||||||
### Supported methods
|
|
||||||
|
|
||||||
| Method | Implemented | Required to implement |
|
|
||||||
| ------- | ------------| --------------------- |
|
|
||||||
| `getblock` | Yes | - |
|
|
||||||
| `getaccountstate` | Yes | - |
|
|
||||||
| `invokescript` | Yes | - |
|
|
||||||
| `invokefunction` | Yes | - |
|
|
||||||
| `sendrawtransaction` | Yes | - |
|
|
||||||
| `invoke` | Yes | - |
|
|
||||||
| `getrawtransaction` | Yes | - |
|
|
||||||
| `validateaddress` | No | Handler and result struct |
|
|
||||||
| `getblocksysfee` | No | Handler and result struct |
|
|
||||||
| `getcontractstate` | No | Handler and result struct |
|
|
||||||
| `getrawmempool` | No | Handler and result struct |
|
|
||||||
| `getstorage` | No | Handler and result struct |
|
|
||||||
| `submitblock` | No | Handler and result struct |
|
|
||||||
| `gettxout` | No | Handler and result struct |
|
|
||||||
| `getassetstate` | No | Handler and result struct |
|
|
||||||
| `getpeers` | No | Handler and result struct |
|
|
||||||
| `getversion` | No | Handler and result struct |
|
|
||||||
| `getconnectioncount` | No | Handler and result struct |
|
|
||||||
| `getblockhash` | No | Handler and result struct |
|
|
||||||
| `getblockcount` | No | Handler and result struct |
|
|
||||||
| `getbestblockhash` | No | Handler and result struct |
|
|
||||||
|
|
||||||
## Server
|
|
||||||
|
|
||||||
The server is written to support as much of the [JSON-RPC 2.0 Spec](http://www.jsonrpc.org/specification) as possible. The server is run as part of the node currently.
|
|
||||||
|
|
||||||
### TODO
|
|
||||||
|
|
||||||
* Implement HTTPS server.
|
|
||||||
* Add remaining methods (Documented below).
|
|
||||||
* Add Swagger spec and test using dredd in circleCI.
|
|
||||||
|
|
||||||
### Example call
|
|
||||||
|
|
||||||
An example would be viewing the version of the node:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ curl -X POST -d '{"jsonrpc": "2.0", "method": "getversion", "params": [], "id": 1}' http://localhost:20332
|
|
||||||
```
|
|
||||||
|
|
||||||
which would yield the response:
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"jsonrpc" : "2.0",
|
|
||||||
"id" : 1,
|
|
||||||
"result" : {
|
|
||||||
"port" : 20333,
|
|
||||||
"useragent" : "/NEO-GO:0.36.0-dev/",
|
|
||||||
"nonce" : 9318417
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Supported methods
|
|
||||||
|
|
||||||
| Method | Implemented | Required to implement |
|
|
||||||
| ------- | ------------| --------------------- |
|
|
||||||
| `getblock` | Yes | - |
|
|
||||||
| `getaccountstate` | Yes | - |
|
|
||||||
| `invokescript` | No | VM |
|
|
||||||
| `invokefunction` | No | VM |
|
|
||||||
| `sendrawtransaction` | No | Needs to be implemented in `pkg/core/blockchain.go` |
|
|
||||||
| `validateaddress` | Yes | - |
|
|
||||||
| `getblocksysfee` | No | N/A |
|
|
||||||
| `getcontractstate` | No | Needs to be implemented in `pkg/core/blockchain.go` |
|
|
||||||
| `getrawmempool` | No | Needs to be implemented on in `pkg/network/server.go` |
|
|
||||||
| `getrawtransaction` | No | Needs to be implemented in `pkg/core/blockchain.go` |
|
|
||||||
| `getstorage` | No | VM |
|
|
||||||
| `submitblock` | No | Needs to be implemented in `pkg/core/blockchain.go` |
|
|
||||||
| `gettxout` | No | Needs to be implemented in `pkg/core/blockchain.go` |
|
|
||||||
| `invoke` | No | VM |
|
|
||||||
| `getassetstate` | Yes |-|
|
|
||||||
| `getpeers` | Yes | - |
|
|
||||||
| `getversion` | Yes | - |
|
|
||||||
| `getconnectioncount` | Yes | - |
|
|
||||||
| `getblockhash` | Yes | - |
|
|
||||||
| `getblockcount` | Yes | - |
|
|
||||||
| `getbestblockhash` | Yes | - |
|
|
|
@ -1,7 +1,9 @@
|
||||||
package rpc
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Package rpc provides interaction with a NEO node over JSON-RPC.
|
Package rpc implements NEO-specific JSON-RPC 2.0 client and server.
|
||||||
|
This package is currently in alpha and is subject to change.
|
||||||
|
|
||||||
|
Client
|
||||||
|
|
||||||
After creating a client instance with or without a ClientConfig
|
After creating a client instance with or without a ClientConfig
|
||||||
you can interact with the NEO blockchain by its exposed methods.
|
you can interact with the NEO blockchain by its exposed methods.
|
||||||
|
|
||||||
|
@ -29,5 +31,80 @@ An example:
|
||||||
log.Println(resp.Result.ScriptHash)
|
log.Println(resp.Result.ScriptHash)
|
||||||
log.Println(resp.Result.Balances)
|
log.Println(resp.Result.Balances)
|
||||||
|
|
||||||
To be continued with more in depth examples.
|
TODO:
|
||||||
|
Merge structs so can be used by both server and client.
|
||||||
|
Add missing methods to client.
|
||||||
|
Allow client to connect using client cert.
|
||||||
|
More in-depth examples.
|
||||||
|
|
||||||
|
Supported methods
|
||||||
|
|
||||||
|
getblock
|
||||||
|
getaccountstate
|
||||||
|
invokescript
|
||||||
|
invokefunction
|
||||||
|
sendrawtransaction
|
||||||
|
invoke
|
||||||
|
getrawtransaction
|
||||||
|
|
||||||
|
Unsupported methods
|
||||||
|
|
||||||
|
validateaddress
|
||||||
|
getblocksysfee
|
||||||
|
getcontractstate
|
||||||
|
getrawmempool
|
||||||
|
getstorage
|
||||||
|
submitblock
|
||||||
|
gettxout
|
||||||
|
getassetstate
|
||||||
|
getpeers
|
||||||
|
getversion
|
||||||
|
getconnectioncount
|
||||||
|
getblockhash
|
||||||
|
getblockcount
|
||||||
|
getbestblockhash
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
TODO:
|
||||||
|
Implement HTTPS server.
|
||||||
|
Add remaining methods (Documented below).
|
||||||
|
Add Swagger spec and test using dredd in circleCI.
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Unsupported methods
|
||||||
|
|
||||||
|
getblocksysfee
|
||||||
|
getcontractstate (needs to be implemented in pkg/core/blockchain.go)
|
||||||
|
getrawmempool (needs to be implemented on in pkg/network/server.go)
|
||||||
|
getrawtransaction (needs to be implemented in pkg/core/blockchain.go)
|
||||||
|
getstorage (lacks VM functionality)
|
||||||
|
gettxout (needs to be implemented in pkg/core/blockchain.go)
|
||||||
|
invoke (lacks VM functionality)
|
||||||
|
invokefunction (lacks VM functionality)
|
||||||
|
invokescript (lacks VM functionality)
|
||||||
|
sendrawtransaction (needs to be implemented in pkg/core/blockchain.go)
|
||||||
|
submitblock (needs to be implemented in pkg/core/blockchain.go)
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
package rpc
|
||||||
|
|
Loading…
Add table
Reference in a new issue