Справочник 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.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.