Примеры кода
Готовые к запуску примеры для рабочих процессов, которые нужны большинству интеграций, — в виде командной строки и на Python.
Высота блока цепочки, блоки, мемпул и пиры. Без процедуры аутентификации — хорошая отправная точка.
Зашифрованное рукопожатие, открытие кошелька и чтение баланса.
Полный перевод, получение, отмена и доказательства платежа.
Выбор целевого интерфейса
| Задача | Поверхность | Учётные данные |
|---|---|---|
| Статус узла, пиры | Node API /v2/owner | Базовый, секрет создаётся автоматически |
| Блоки, заголовки, ядра (kernels), мемпул | Node /v2/foreign | Нет |
| Опубликовать сырую транзакцию | Node /v2/foreign | Нет |
| Всё, что связано с ключами или балансом | Wallet Owner API /v3/owner | ECDH-хендшейк и токен кошелька |
| Получить перевод | Wallet 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-запроса и ответа.