Перейти к основному содержимому

Справочник API

Epic предоставляет семь программируемых поверхностей в трёх программных компонентах. Выбор зависит от того, нужны ли вам данные цепочки или операции с ключами.

Краткий обзор

ПоверхностьГдеПротоколПорт по умолчаниюМожет тратить
Node /v1/*nodeREST, чтение цепочки и администрирование3413No
Node /v2/ownernodeJSON-RPC 2.0, администрирование узла3413No
Node /v2/foreignnodeJSON-RPC 2.0, чтение цепочки и отправка транзакций3413No
Wallet Owner /v3/ownerwalletJSON-RPC 2.0, зашифрованный3420Yes
Wallet Owner /v2/ownerwalletJSON-RPC 2.0, незашифрованный3420Yes
Wallet Foreign /v2/foreignwalletJSON-RPC 2.03415No
Epicbox relayrelayWebSocket over TLS443No

Документация актуальна для узла 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. Для программной обработки слейта используется метод 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.

Далее