-
更新
-
删除
claimgas
,getaccountstate
,getassetstate
,getclaimable
,getmetricblocktimestamp
,gettxout
,getunspents
,invoke
每个 Neo 节点 Neo-CLI 都可选的提供了一套 API 接口,用于从节点获取区块链数据,使得开发区块链应用变得十分方便。接口通过 JSON-RPC 的方式提供,底层使用 HTTP/HTTPS 协议进行通讯。要启动一个提供 RPC 服务的节点,需要使用以下命令安装RpcServer插件:
install RpcServer
-
HTTPS 配置:若要通过 HTTPS 的方式访问 RPC 服务器,需要在安装插件前修改
RpcServer
插件的配置文件config.json
,并设置域名、证书和密码:{ "PluginConfiguration": { "BindAddress": "127.0.0.1", "Port": 10332, "SslCert": "YourSslCertFile.xxx", "SslCertPassword": "YourPassword", "TrustedAuthorities": [], "RpcUser": "", "RpcPass": "", "MaxGasInvoke": 10, "MaxFee": 0.1, "MaxConcurrentConnections": 40, "DisabledMethods": [] }
-
开启钱包: 如果需要通过RPC调用钱包相关的服务,首先需要调用
openwallet
方法打开钱包.完成配置后重启 NEO-CLI,则可开始使用RPC服务。
JSON-RPC 服务器启动后,会监听 TCP 端口,默认端口如下。P2P 和 WebSocket 的端口详见 Neo 节点介绍。
主网(Main Net) | 测试网(Test Net) | |
---|---|---|
JSON-RPC HTTPS | 10331 | 20331 |
JSON-RPC HTTP | 10332 | 20332 |
NEO3 变更:
调用方式更新:getblockheader,getrawmempool
返回结果更新:getblock,getblockheader,getrawtransaction,getversion,getcontractstate
方法 | 参数 | 说明 | 备注 |
---|---|---|---|
getbestblockhash | 获取主链中高度最大的区块的散列 | ||
getblock | <hash> [verbose=0] | 根据指定的散列值,返回对应的区块信息 | |
getblock | <index> [verbose=0] | 根据指定的索引,返回对应的区块信息 | |
getblockcount | 获取主链中区块的数量 | ||
getblockhash | <index> | 根据指定的索引,返回对应区块的散列值 | |
getblockheader | <hash> [verbose=0] | 根据指定的散列值,返回对应的区块头信息。 | |
getblockheader | <index> [verbose=0] | 根据指定的索引,返回对应的区块头信息。 | |
getblocksysfee | <index> | 根据指定的索引,返回截止到该区块前的系统手续费 | |
getconnectioncount | 获取节点当前的连接数 | ||
getcontractstate | <script_hash> | 根据合约脚本散列,查询合约信息 | |
getpeers | 获得该节点当前已连接/未连接的节点列表 | ||
getrawmempool | [shouldGetUnverified=0] | 获取内存中未确认的交易列表 | |
getrawtransaction | <txid> [verbose=0] | 根据指定的散列值,返回对应的交易信息 | |
getstorage | <script_hash> <key> | 根据合约脚本散列和存储的 key,返回存储的 value | |
gettransactionheight | <txid> | 获取交易高度。 | |
getvalidators | 查看当前共识节点的信息 | ||
getversion | 获取查询节点的版本信息 | ||
invokefunction | <script_hash> <operation> <params> | 以指定的脚本散列值调用智能合约,传入操作及参数 | |
invokescript | <script> | 通过虚拟机运行脚本并返回结果 | |
listplugins | 列出节点已加载的所有插件。 | ||
sendrawtransaction | <hex> | 广播交易 | |
submitblock | <hex> | 提交新的区块 | 需要成为共识节点 |
validateaddress | <address> | 验证地址是否是正确的 Neo 地址 | |
getapplicationlog | <txid> | 根据指定的交易ID 获取合约日志 | |
getnep5transfers | <address> <timestamp> | 返回指定地址内的所有 NEP-5 交易记录 | |
getnep5balances | <address> | 返回指定地址内的所有 NEP-5 资产余额 |
方法 | 参数 | 说明 | 备注 |
---|---|---|---|
closewallet | 关闭已打开的钱包 | ||
openwallet | <path><password> | 打开指定路径下的钱包 | |
dumpprivkey | <address> | 导出指定地址的私钥 | |
getbalance | <asset_id> | 查询资产余额 | |
getnewaddress | 创建一个新的地址 | ||
getunclaimedgas | 显示钱包中未提取的 GAS 数量 | ||
importprivkey | <key> | 导入私钥到钱包 | |
listaddress | 列出当前钱包内的所有地址 | ||
sendfrom | <asset_id><from><to><value> | 从指定地址,向指定地址转账 | |
sendmany | <outputs_array> | 在一笔交易中向指定地址发起多笔转账 | |
sendtoaddress | <asset_id><address><value> | 向指定地址转账 |
一次典型的 JSON-RPC GET 请求格式如下:
下面以获取主链中区块的数量方法为例。
请求 URL:
http://somewebsite.com:10332?jsonrpc=2.0&method=getblockcount¶ms=[]&id=1
发送请求后,将会得到如下的响应:
{
"jsonrpc": "2.0",
"id": 1,
"result": 909129
}
一次典型的 JSON-RPC Post 请求的格式如下:
下面以获取主链中区块的数量方法为例。
请求 URL:
http://somewebsite.com:10332
请求 Body:
{
"jsonrpc": "2.0",
"method": "getblockcount",
"params": [],
"id": 1
}
发送请求后,将会得到如下的响应:
{
"jsonrpc": "2.0",
"id": 1,
"result": 909122
}
注:当使用离线同步包同步区块时,程序可能无法响应 API 请求,建议将区块同步到最新高度后再使用 API,否则返回的结果可能不是最新的。
你可以用 Chrome 扩展程序中的 Postman 来方便地进行测试(安装 Chrome 扩展程序需要科学上网),下面是测试截图:
点击此处查看RPC英文版