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.1.0和钱包4.1.0编写。
节点从一个监听器的一个端口同时提供/v1和/v2,作为两种接口风格而非两代接口。两者均处于活跃状态,该页面将每条v1路由映射到对应的JSON-RPC方法。
钱包同样从一个监听器提供两个所有者接口,其中未加密的/v2/owner是两者中较旧的一个。
选择接口
读取链数据。 节点上的JSON-RPC:/v2/foreign用于区块、内核(kernel)和输出(output),/v2/owner用于节点状态和对等节点。不涉及密钥。从节点查询开始。
涉及余额、密钥或转账的操作。 钱包Owner API。需要使用钱包的.owner_api_secret进行HTTP Basic身份验证、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。