Version
Show / Hide Table of Contents

API 参考

每个 NEO-CLI 节点都可选的提供了一套 API 接口,用于从该节点获取区块链数据,使得开发区块链应用变得十分方便。接口通过 JSON-RPC 的方式提供,底层使用 HTTP/HTTPS 协议进行通讯。要启动一个提供 RPC 服务的节点,可运行以下命令:

dotnet neo-cli.dll /rpc

监听端口

JSON-RPC 服务器启动后,会监听 TCP 端口,默认端口如下。P2P 和 WebSocket 的端口详见 NEO 节点介绍

主网(Main Net)测试网(Test Net)
JSON-RPC HTTPS1033120331
JSON-RPC HTTP1033220332

命令列表

方法参数说明备注
claimgas [address]提取钱包中的 GAS需要打开钱包
dumpprivkey <address>导出指定地址的私钥需要打开钱包
getaccountstate <address>根据账户地址,查询账户资产信息
getapplicationlog <txid>根据指定的 NEP-5 交易 ID 获取合约日志。
getassetstate <asset_id>根据指定的资产编号,查询资产信息
getbalance <asset_id>根据指定的资产编号,返回钱包中对应资产的余额信息需要打开钱包
getbestblockhash 获取主链中高度最大的区块的散列
getblock <hash> [verbose=0]根据指定的散列值,返回对应的区块信息
getblock <index> [verbose=0]根据指定的索引,返回对应的区块信息
getblockcount 获取主链中区块的数量
getblockhash <index>根据指定的索引,返回对应区块的散列值
getblockheader <hash> [verbose=0]根据指定的散列值,返回对应的区块头信息。
getblocksysfee <index>根据指定的索引,返回截止到该区块前的系统手续费
getclaimable <address>根据指定地址,返回可以 claim 的 GAS 信息。
getconnectioncount 获取节点当前的连接数
getcontractstate <script_hash>根据合约脚本散列,查询合约信息
getmetricblocktimestamp <blocks numbers> <endHeight>返回指定区块高度及之前 n 个区块的 timestamp。
getnep5balances <address>返回指定地址内的所有 NEP-5 资产余额。
getnep5transfers <address>返回指定地址内的所有 NEP-5 交易记录。
getutxotransfers <address> asset 返回指定地址在指定时间段内的 UTXO 交易记录
getnewaddress 创建一个新的地址需要打开钱包
getrawmempool 获取内存中已确认或未确认的交易列表
getrawtransaction <txid> [verbose=0]根据指定的散列值,返回对应的交易信息
getstateheight 获取当前最高的区块高度以及被验证过的state高度。
getstateroot <key>获取区块的状态根信息。
getstorage <script_hash> <key>根据合约脚本散列和存储的 key,返回存储的 value
gettransactionheight <txid>获取交易高度。
gettxout <txid> <n>根据指定的散列和索引,返回对应的交易输出(零钱)信息
getpeers 获得该节点当前已连接/未连接的节点列表
getproof <stateroot> <scripthash> <key>根据StateRoot,合约脚本散列和存储的 key,返回存储的 value的proof。
getunclaimed <address>返回地址中未提取的 GAS 数量。
getunclaimedgas 显示钱包中未提取的 GAS 数量。需要打开钱包
getunspents <address>返回指定账户中未花费的 UTXO 资产信息。
getversion 获取查询节点的版本信息
getvalidators 查看当前共识节点的信息
getwalletheight 获取当前钱包索引高度需要打开钱包
importprivkey 导入私钥到钱包需要打开钱包
invokefunction <script_hash> <operation> <params>以指定的脚本散列值调用智能合约,传入操作及参数
invokescript <script>通过虚拟机运行脚本并返回结果
listaddress 列出当前钱包内的所有地址需要打开钱包
listplugins 列出节点已加载的所有插件。
sendrawtransaction <hex>广播交易
sendfrom <asset_id> <from><to> <value> [fee=0]从指定地址,向指定地址转账需要打开钱包
sendtoaddress <asset_id> <address> <value> [fee=0]向指定地址转账需要打开钱包
sendmany <outputsarray> [fee=0] [changeaddress]批量转账命令需要打开钱包
submitblock <hex>提交新的区块需要成为共识节点
validateaddress <address>验证地址是否是正确的 NEO 地址
verifyproof <state_root> <proof>根据StateRoot和proof,返回解出的value。

GET 请求示例

一次典型的 JSON-RPC GET 请求格式如下:

下面以获取主链中区块的数量方法为例。

请求 URL:

http://somewebsite.com:10332?jsonrpc=2.0&method=getblockcount&params=[]&id=1

发送请求后,将会得到如下的响应:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": 909129
}

POST 请求示例

一次典型的 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 扩展程序需要科学上网),下面是测试截图:

其它

C# JSON-RPC 使用方法