代码示例
可运行的示例,涵盖大多数集成所需的工作流,提供命令行和Python两种形式。
节点查询钱包:连接与读取钱包:发送与接收
链高度、区块、内存池(mempool)和对等节点。无需身份验证流程,适合作为第一个调用目标。
加密握手、打开钱包及读取余额。
完整的转账流程,包括接收、取消和支付证明。
目标接口
| 任务 | 接口 | 凭据 |
|---|---|---|
| 节点状态、对等节点 | 节点 /v2/owner | 基础,自动创建机密 |
| 区块、区块头、内核(kernel)、内存池(mempool) | 节点/v2/foreign | 无 |
| 广播原始交易 | Node /v2/foreign | 无 |
| 涉及密钥或余额的任何操作 | 钱包 Owner API /v3/owner | ECDH 握手与钱包令牌 |
| 接收转账 | 钱包 Foreign API,或 epic-wallet listen | 无 |
节点的JSON-RPC方法分布在两个路径下:/v2/owner用于管理,所有链读取操作在/v2/foreign上。参见节点API。
前提条件
- CLI
- Python
curl和jq。
sudo apt install curl jq # Debian 和 Ubuntu
winget install jqlang.jq # Windows,其中 curl 已预装
Python 3.10或更高版本。
pip install requests coincurve pycryptodome
coincurve提供secp256k1,pycryptodome提供AES-GCM,两者均用于钱包Owner API。节点查询仅需requests。
示例约定
- 从仓库的
examples目录运行命令,Python模块位于该目录下。 import each other from. - 节点端口为3413,钱包Owner API端口为3420,钱包Foreign API端口为3415。每个客户端均支持
NODE_URL、EPIC_OWNER_URL和EPIC_FOREIGN_URL,可将其指向其他地址。 - 金额为整数,以freeman为单位计数。1 EPIC等于100,000,000。
- 机密从对应文件中读取,钱包密码从
EPIC_WALLET_PASSWORD读取。
响应信封
每个Epic JSON-RPC方法均返回HTTP 200及JSON-RPC result,该结果内部包含第二层信封。操作成功时携带Ok:
{"id": 1, "jsonrpc": "2.0", "result": {"Ok": {"...": "the actual data"}}}
操作失败时在相同位置携带Err:
{"id": 1, "jsonrpc": "2.0", "result": {"Err": {"NotEnoughFunds": {"available": 0, "needed": 100000000}}}}
编写一个解包辅助函数并在所有地方使用。连接与读取中钱包客户端的_unwrap在Err时抛出异常,在Ok时返回值,该客户端中的每个调用均通过它执行。
信封的逐字段说明见API概述。
参考客户端位置
钱包仓库附带一个执行相同握手的Python客户端:doc/samples/python/secure_api_example.py。
方法签名定义在api/src/owner_rpc_s.rs中,几乎每个方法的文档注释中都包含完整的JSON请求和响应示例。