Справочник API
Epic предоставляет семь программируемых поверхностей в трёх программных компонентах. Выбор зависит от того, нужны ли вам данные цепочки или операции с ключами.
Данные цепочки, блоки, мемпул, пиры и отправка транзакций.
Балансы, переводы, доказательства. 37 методов. Это единственная поверхность, которая может тратить средства.
Шесть методов слушателя для получения слейтов (slate) и формирования наград за майнинг.
Протокол WebSocket, по которому слейты передаются между кошельками.
Какие поверхности требуют учётные данные и как разместить перед ними TLS.
Краткий обзор
| Поверхность | Где | Протокол | Порт по умолчанию | Может тратить |
|---|---|---|---|---|
Node /v1/* | node | REST, чтение цепочки и администрирование | 3413 | No |
Node /v2/owner | node | JSON-RPC 2.0, администрирование узла | 3413 | No |
Node /v2/foreign | node | JSON-RPC 2.0, чтение цепочки и отправка транзакций | 3413 | No |
Wallet Owner /v3/owner | wallet | JSON-RPC 2.0, зашифрованный | 3420 | Yes |
Wallet Owner /v2/owner | wallet | JSON-RPC 2.0, незашифрованный | 3420 | Yes |
Wallet Foreign /v2/foreign | wallet | JSON-RPC 2.0 | 3415 | No |
| Epicbox relay | relay | WebSocket over TLS | 443 | No |
Документация актуальна для узла 4.1.0 и кошелька 4.1.0.
Узел обслуживает /v1 и /v2 через один слушатель на одном порту как два стиля интерфейса, а не
два поколения. Оба активны, и на той странице каждый маршрут v1 сопоставлен с соответствующим
методом JSON-RPC.
Кошелёк также обслуживает два owner-интерфейса через один слушатель, и незашифрованный /v2/owner
является более старым из них.
Выбор поверхности
Чтение данных цепочки. JSON-RPC на узле: /v2/foreign для блоков, ядер (kernels) и выходов (outputs),
/v2/owner для статуса узла и пиров. Ключи не задействованы. Начните с запросов к узлу.
Всё, что связано с балансами, ключами или переводами. Wallet Owner API. Требует HTTP Basic с
.owner_api_secret кошелька, ECDH-рукопожатия и токена кошелька — это описано пошагово в подключении и
чтении.
Получение платежа. Запуск epic-wallet listen обрабатывает это автоматически через протокол epicbox или HTTP.
Для программной обработки слейта (slate) используется метод Foreign API receive_tx.
Эксплуатация релей-инфраструктуры. Протокол epicbox.
Конверт ответа
Каждый метод Epic JSON-RPC возвращает HTTP 200 с result JSON-RPC, а внутри этого результата находится
второй конверт Ok или Err. Запрос может завершиться успешно на уровнях HTTP и JSON-RPC и при этом
оказаться неудачным:
{"id": 1, "jsonrpc": "2.0", "result": {"Ok": {"...": "data"}}}
{"id": 1, "jsonrpc": "2.0", "result": {"Err": {"NotEnoughFunds": {"available": 0}}}}
Одна функция разворачивает оба уровня. _unwrap в examples/python/epic_wallet.py выбрасывает исключение при Err и возвращает
значение при Ok, и каждый вызов в этом клиенте проходит через неё.
Суммы
Каждая сумма является целым числом freeman, и 1 EPIC равен 100,000,000 таких единиц. Owner API кошелька
сериализует поля u64 как JSON-строки, поэтому retrieve_summary_info возвращает total и каждое поле amount_ как строку, а
node_height возвращает height как строку. Выполняйте разбор перед арифметическими операциями. JSON-RPC узла
возвращает чистые целые числа, включая supply и max_supply в get_status.