API参考
Epic在三个软件中提供七个可编程接口。选择哪个取决于你需要链数据还是密钥操作。
链数据、区块、内存池(mempool)、对等节点及交易提交。
余额、转账、证明。37个方法。这是唯一能花费资金的接口。
六个监听器方法,用于接收slate并构建挖矿奖励。
在钱包之间传输slate的WebSocket协议。
哪些接口需要凭据,以及如何在其前面部署TLS。
概览
| 接口 | 位置 | 协议 | 默认端口 | 可花费 |
|---|---|---|---|---|
Node /v1/* | 节点 | REST,链读取与管理 | 3413 | 否 |
节点/v2/owner | 节点 | JSON-RPC 2.0,节点管理 | 3413 | 否 |
Node /v2/foreign | 节点 | JSON-RPC 2.0,链读取与交易提交 | 3413 | 否 |
钱包 Owner /v3/owner | 钱包 | JSON-RPC 2.0,加密 | 3420 | 是 |
Wallet Owner /v2/owner | 钱包 | JSON-RPC 2.0,未加密 | 3420 | 是 |
Wallet Foreign /v2/foreign | 钱包 | JSON-RPC 2.0 | 3415 | 否 |
| Epicbox中继 | 中继 | WebSocket over TLS | 443 | 否 |
文档基于节点4.0.3和钱包4.0.0编写。
节点在同一端口的同一监听器上同时提供/v1和/v2,作为两种接口风格而非两代接口。两者均处于活跃状态,该页面将每个v1路由映射到对应的JSON-RPC方法。
钱包也通过同一监听器提供两个owner接口,其中未加密的/v2/owner是两者中较旧的一个。
选择接口
读取链数据。 使用节点上的JSON-RPC:/v2/foreign用于区块、内核(kernel)和输出(output),/v2/owner用于节点状态和对等节点。不涉及密钥。从节点查询开始。
涉及余额、密钥或转账的操作。 使用钱包Owner API。它需要ECDH握手和钱包令牌,具体步骤参见连接与读取。
接收支付。 运行epic-wallet listen会通过epicbox协议或HTTP自动处理。若要以编程方式处理slate,对应的Foreign API方法为receive_tx。
运营中继基础设施。 参见epicbox协议。
响应封装
每个Epic JSON-RPC方法均返回HTTP 200及JSON-RPC result,该结果内部包含第二层Ok或Err信封。一个请求可以在HTTP层和JSON-RPC层均成功,但仍可能执行失败:
{"id": 1, "jsonrpc": "2.0", "result": {"Ok": {"...": "data"}}}
{"id": 1, "jsonrpc": "2.0", "result": {"Err": {"NotEnoughFunds": {"available": 0}}}}
一个函数负责解包两层。examples/python/epic_wallet.py中的_unwrap在Err时抛出异常,在Ok时返回值,该客户端中的每个调用都经过它。
金额
每个金额均为**freeman**的整数计数,1 EPIC等于100,000,000个。钱包Owner API将其u64字段序列化为JSON字符串,因此retrieve_summary_info以字符串形式返回total及每个amount_字段,node_height也以字符串形式返回height。在进行算术运算前需先解析。节点的JSON-RPC返回裸整数,包括get_status上的supply和max_supply。