• 官网
  • 中文
  • English
  • Español
  • 日本語
  • 한국어
  • Deutsch
  • Nederlands
  • Portuguese (Br)
  • French
  • Italiano
Show / Hide Table of Contents
  • NEO 基础知识
    • NEO 白皮书
    • NEO Contract白皮书
    • 共识机制
      • 共识机制白皮书
      • 共识机制图解
  • NEO 节点
    • NEO 节点介绍
    • NEO-GUI
    • NEO-CLI
      • 安装
      • NEO-CLI 命令参考
      • API 参考
        • dumpprivkey
        • getaccountstate
        • getapplicationlog
        • getassetstate
        • getbalance
        • getbestblockhash
        • getblock
        • getblock
        • getblockcount
        • getblockhash
        • getblocksysfee
        • getconnectioncount
        • getcontractstate
        • getnewaddress
        • getrawmempool
        • getrawtransaction
        • getstorage
        • gettxout
        • getpeers
        • getversion
        • invoke
        • invokefunction
        • invokescript
        • listaddress
        • sendfrom
        • sendrawtransaction
        • sendtoaddress
        • sendmany
        • validateaddress
    • NEO-Python
  • NEO 网络
    • 测试网
    • 搭建私有链
    • 快速同步区块
    • 网络协议
  • NEO 开发工具
    • NEO SDK
      • 欢迎使用 NEO SDK
      • NEO SDK 常见用法
  • 智能合约
    • 智能合约介绍
    • 快速入门
      • 如何开始
        • 使用C# (Windows)
        • 使用C# (macOS)
        • 使用C# (uubuntu)
        • 使用 Java
        • 使用 Python
      • 合约编写限制
      • 测试
      • 部署合约
      • 调用合约
    • 开发参考
      • API 参考
        • NEO
        • System
      • 框架
        • .net 框架
          • NEO
            • Account
            • Asset
            • Block
            • Blockchain
            • Contract
            • Enrollment
            • Header
            • Runtime
            • Storage
            • StorageContext
            • Transaction
            • TransactionAttribute
            • TransactionInput
            • TransactionOutput
            • TriggerType
            • Validator
          • System
            • ExecutionEngine
    • 合约示例与教程
      • Hello World
      • Lock(锁仓合约)
      • Domain(域名系统)
      • 鉴权合约示例教程
      • 锁仓合约的部署
    • 参数和返回值
    • 智能合约触发器
    • 系统使用费
  • 常见问题
  • 交易所对接指南
    • v2.7.3
    • v2.7.1
    • v2.6.0

API 参考

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

dotnet neo-cli.dll /rpc

若要通过 HTTPS 的方式访问 RPC 服务器,需要在启动节点前修改配置文件 config.json,并设置域名、证书和密码:

{
  "ApplicationConfiguration": {
    "Paths": {
      "Chain": "Chain"
    },
    "P2P": {
      "Port": 10333,
      "WsPort": 10334
    },
    "RPC": {
      "Port": 10331,
      "SslCert": "YourSslCertFile.xxx",
      "SslCertPassword": "YourPassword"
    }
  }
}

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

主网(Main Net) 测试网(Test Net)
JSON-RPC HTTPS 10331 20331
JSON-RPC HTTP 10332 20332

命令列表

方法 参数 说明 备注
dumpprivkey <address> 导出指定地址的私钥 需要打开钱包
getaccountstate <address> 根据账户地址,查询账户资产信息
getapplicationlog <txid> [verbose=0] 根据指定的交易 ID 获取合约日志 需要启动日志记录
getassetstate <asset_id> 根据指定的资产编号,查询资产信息
getbalance <asset_id> 根据指定的资产编号,返回钱包中对应资产的余额信息 需要打开钱包
getbestblockhash 获取主链中高度最大的区块的散列
getblock <hash> [verbose=0] 根据指定的散列值,返回对应的区块信息
getblock <index> [verbose=0] 根据指定的索引,返回对应的区块信息
getblockcount 获取主链中区块的数量
getblockhash <index> 根据指定的索引,返回对应区块的散列值
getblocksysfee <index> 根据指定的索引,返回截止到该区块前的系统手续费
getconnectioncount 获取节点当前的连接数
getcontractstate <script_hash> 根据合约脚本散列,查询合约信息
getnewaddress 创建一个新的地址 需要打开钱包
getrawmempool 获取内存中未确认的交易列表
getrawtransaction <txid> [verbose=0] 根据指定的散列值,返回对应的交易信息
getstorage <script_hash> <key> 根据合约脚本散列和存储的 key,返回存储的 value
gettxout <txid> <n> 根据指定的散列和索引,返回对应的交易输出(零钱)信息
getpeers 获得该节点当前已连接/未连接的节点列表
getversion 获取查询节点的版本信息
invoke <script_hash> <params> 使用给定的参数以散列值调用智能合约
invokefunction <script_hash> <operation> <params> 以指定的脚本散列值调用智能合约,传入操作及参数
invokescript <script> 通过虚拟机运行脚本并返回结果
listaddress 列出当前钱包内的所有地址 需要打开钱包
sendrawtransaction <hex> 广播交易
sendfrom <asset_id> <from><to> <value> [fee=0] 从指定地址,向指定地址转账 需要打开钱包
sendtoaddress <asset_id> <address> <value> [fee=0] 向指定地址转账 需要打开钱包
sendmany <outputs_array> [fee=0] [change_address] 批量转账命令 需要打开钱包
submitblock <hex> 提交新的区块 需要成为共识节点
validateaddress <address> 验证地址是否是正确的 NEO 地址

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
}

测试工具

你可以用 Chrome 扩展程序中的 Postman 来方便地进行测试(安装 Chrome 扩展程序需要科学上网),下面是测试截图

其它

C# JSON-RPC 使用方法

  • Improve this Doc
Back to top Copyright © 2014-2018 NEO