以太坊雷电网络/Raiden Network API手册
雷电网络(Raiden Network)是以太坊区块链的链下扩容方案。其中Raiden节点 提供了Restful API供开发人员使用,这些端结点的请求与响应都是采用JSON编码。
Raiden API访问URL端结点中通常包含有版本信息,以便支持对不同版本API
的访问。所有的API访问URL前缀都是:/api/<version>/
。
1、API请求与响应数据的JSON编码
API的访问请求与响应都采用JSON编码。下面是API中的常用对象。
通道 / Channel
通道对象示例如下:
{
"channel_identifier": 21,
"token_network_identifier": "0x2a65Aca4D5fC5B5C859090a6c34d164135398226",
"partner_address": "0x61C808D82A3Ac53231750daDc13c777b59310bD9",
"token_address": "0xEA674fdDe714fd979de3EdF0F56AA9716B898ec8",
"balance": 25000000,
"total_deposit": 35000000,
"state": "opened",
"settle_timeout": 500,
"reveal_timeout": 40
}
通道对象包含如下字段:
- channel_identifier:通道的标识,整数
- partner_address:对方地址, EIP55编码的地址字符串,用来开启一个通道
- token_address:代币地址,EIP555编码的代币地址字符串,用于通道上的交易
- token_network_identifier:代币网络标识符,EIP55编码的代币网络标识符
- balance:可用代币余额,整数
- total_deposit:已存入通道合约的金额,整数
- state:通道的当前状态,字符串,可能的值包括:
opened
- 通道已开启closed
- 通道已关闭settled
- 通道已关闭而且已清算 - settle_timeout:通道清算超时区块数,整数
- reveal_timeout:允许的最大揭示超时区块数,整数
通道事件 / Event
通道事件也编码为JSON对象,事件的参数作为事件对象的属性。为了便于区分不同
类型的事件,在事件对象上额外添加了event_type
和block_number
属性。
2、API错误信息
对于不成功的API请求,会返回对应的http状态码,例如409冲突或400错误请求等,同时也
会在返回的json对象中附带errors字段,你可以用来获取关于错误的详细信息。但是,需要指出的
是,如果Raiden不能处理收到的请求并且抛出异常,那么将返回http状态码 500,这时返回的就不是
json对象,而只是一个字符串消息Internal server error
。 这是由于我们依赖于其他开发库来
实现API,发生异常时我们无法正常处理响应消息。无论如何,我们认为500错误是Raiden的
bug,如果你碰到这种现象,请反馈给我们。
3、访问端结点
Raiden提供了以下访问端结点,可以在开发时选用:
- 基础API
- 查询雷电节点信息: GET /api/(version)/address
- 注册代币 :PUT /api/(version)/tokens/(token_address)
- 通道及代币信息查询API
- 获取未结算通道列表:GET /api/(version)/channels
- 获取指定代币的未结算通道列表:GET /api/(version)/channels/(token_address)
- 查询指定通道的信息: GET /api/(version)/channels/(token_address)/(partner_address)
- 获取已注册代币列表: GET /api/(version)/tokens
- 获取指定代币的部署地址: GET /api/(version)/tokens/(token_address)
- 获取指定代币未结算通道的对手方列表: GET /api/(version)/tokens/(token_address)/partners
- 获取未完成转账清单:GET /api/(version)/pending_transfers
- 获取指定代币的未完成转账列表:GET /api/(version)/pending_transfers/(token_address)
- 获取指定通道的未完成转账列表:GET /api/(version)/pending_transfers/(token_address)/(partner_address)
- 通道管理API
- 开启通道:PUT /api/(version)/channels
- 关闭通道:PATCH /api/(version)/channels/(token_address)/(partner_address)
- 连接管理API
- 查询已加入的代币网络:GET /api/(version)/connections
- 自动加入代币网络:PUT /api/(version)/connections/(token_address)
- 删除指定的代币网络:DELETE /api/(version)/connections/(token_address)
- 支付相关API
- 发起支付 : POST /api/(version)/payments/(token_address)/(target_address)
- 查询支付历史 : GET /api/v1/payments/(token_address)/(target_address)