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

SDK command line

В пакет входят две команды. epic управляет уже запущенным программным обеспечением Epic. epic-sdk устанавливает и запускает его.

Обе требуют дополнения cli:

uv sync --extra cli

Данные поступают в stdout, всё остальное — в stderr, поэтому через пайп передаётся только результат. --json при любом чтении выводит по одному JSON-документу на строку. Код завершения: 0 — успех, 1 — Epic получил вызов и отклонил его, 2 — вызов не дошёл, 64 — ошибка использования.

Откуда epic читает настройки​

Флаг имеет приоритет над переменной окружения, которая имеет приоритет над значением по умолчанию.

НастройкаФлаг или переменная окруженияDefault
URL узла--url, EPIC_NODE_URLhttp://127.0.0.1:3413
Секрет API узла--api-secret-file, EPIC_NODE_API_SECRETнет
URL кошелька--url, EPIC_WALLET_URLhttp://127.0.0.1:3420/v3/owner
Секрет API кошелька--api-secret-file, EPIC_WALLET_API_SECRETнет
Пароль кошелька--password-file, EPIC_WALLET_PASSWORDзапрос, когда stdin — терминал
URL релея--url, EPIC_EPICBOX_URLнет

Пароль или секрет считывается из переменной окружения либо из файла, указанного флагом --*-file. Передача значения через флаг завершается с кодом 64.

epic-wallet 4.1.0 требует секрет wallet API — содержимое файла .owner_api_secret кошелька. См. доступ владельца к кошельку.

epic node​

epic node height​

Выводит высоту блока цепочки.

epic node height
epic node height --url https://node.example:3413 --json

epic node status​

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

epic node status --json

Обе принимают --url, --api-secret-file и --json.

epic wallet​

Каждая команда здесь принимает --url, --api-secret-file, --password-file и --json.

epic wallet balance​

Выводит доступно к трате, итого, ожидает подтверждения, ожидает финализации, незрелые и заблокированные средства.

EPIC_WALLET_PASSWORD=... epic wallet balance --json

epic wallet address​

Выводит адрес epicbox кошелька вместе с портом.

epic wallet txs​

Выводит список транзакций с их slate id, состоянием и суммой.

epic wallet send​

Отправляет через epicbox и ожидает оба раунда.

epic wallet send 1.5 esYG...@epicbox.epiccash.com:443
epic wallet send 1.5 esYG...@epicbox.epiccash.com:443 --dry-run
ОпцияНазначение
--dry-runПоказывает комиссию, ничего не отправляет.
--yesПропускает запрос подтверждения.
--messageСообщение, передаваемое в слейте (slate).

Can spend funds Без --dry-run и без --yes команда запрашивает подтверждение и отказывает, если stdin не является терминалом. Сумма задаётся десятичной строкой в EPIC.

epic epicbox listen​

Подписывается на релей и выводит каждый слейт (slate) по мере поступления, переподключаясь на всё время работы.

epic epicbox listen --url wss://epicbox.epiccash.com --key-file ./relay.key
epic epicbox listen --ephemeral --count 1 --json
ОпцияНазначение
--key-file32-байтовый скаляр secp256k1 в hex. Определяет адрес получателя.
--ephemeralГенерирует одноразовый ключ.
--countОстанавливается после указанного числа слейтов (slates). 0 работает до прерывания.
--decryptРасшифровывает входящие слейты. Включено по умолчанию.

Требуется одно из --key-file или --ephemeral.

epic quirks list​

Выводит список поведений Epic, которые учитывает клиент, и указывает, какие из них он обрабатывает.

epic quirks list --status unhandled --json

epic-sdk​

epic-sdk собирает и запускает локальное окружение Epic: находит или загружает бинарники, записывает их конфигурации, создаёт кошельки и управляет процессами.

Каждая команда принимает --root для каталога окружения, EPIC_DEV_ROOT внутри окружения или ~/emulator по умолчанию. --chain выбирает сеть, и настраивается только user. --json выводит машиночитаемый результат, --dry-run принимает решения и сообщает о них без внесения изменений, --yes отвечает утвердительно на каждый вопрос.

Создание окружения​

epic-sdk env doctor # может ли эта машина запустить один
epic-sdk env new ~/epic-lab --yes # собрать один
epic-sdk env status --json # что существует и что запущено
epic-sdk env path # корень, bin, данные цепочки, логи, манифест

env new проверяет машину, получает бинарники, генерирует конфигурацию узла и майнера, создаёт каждый кошелёк с собственным запечатанным паролем, настраивает релей и однократно запускает всё для проверки. Работает в интерактивном режиме, если не задан --yes.

ОпцияDefaultНазначение
--componentsзапрашиваетЛюбое из node, wallet, miner, relay.
--walletsalice,bobИмена экземпляров. Первый получает награды за майнинг.
--preferautorelease скачивает, source компилирует.
--threads4Потоки майнинга RandomX.
--relay-pathСуществующий чекаут epic-relay.
--offlineИспользует только то, что уже есть на машине.

Загрузка релиза занимает секунды. Сборка из исходников занимает от десяти до тридцати минут на каждый компонент.

Работа с существующим деревом​

epic-sdk env adopt # записать env.json для дерева, собранного вручную
epic-sdk env sync --dry-run # сообщить о расхождениях между конфигами и env.json
epic-sdk env sync # записать значения окружения обратно
epic-sdk env add-wallets carol,dave
epic-sdk env outputs alice --into 4 # отправить кошелёк самому себе, чтобы перераспределить его выходы

env adopt регистрирует найденные кошельки как обнаруженные; обнаруженный кошелёк никогда не открывается и не запускается. env outputs требует, чтобы Owner API кошелька и его слушатель были запущены.

Can spend funds env outputs отправляет кошелёк самому себе. Это реальная транзакция с реальной комиссией.

Бинарники и релизы​

epic-sdk bin find # все бинарники Epic на этой машине с версиями
epic-sdk bin check # установлено относительно upstream
epic-sdk bin add ~/build/epic # принять уже имеющийся
epic-sdk bin install node wallet # скачать их
epic-sdk bin install node --source # скомпилировать вместо этого
epic-sdk release list --component node

Загрузка проверяется по SHA-256 перед использованием.

Релей​

epic-sdk relay setup --domain localhost --port 3423
epic-sdk relay wallet-config --json # указать каждый кошелёк на него и вывести их адреса

relay setup требует uv на машине и клонирует epic-relay, если чекаут не указан.

Учётные данные​

Пароли кошельков, сгенерированные env new, запечатаны с привязкой к идентификатору конкретной машины.

epic-sdk keys status # какое хранилище содержит приватную часть
epic-sdk keys init --require-keystore # создать его, запретив резервный вариант с файлом
epic-sdk env secrets # перечислить запечатанные записи, не раскрывая ничего
epic-sdk env secrets show alice # вывести одно значение

env secrets show — единственная команда, которая выводит учётные данные, и записывает это значение только в stdout.

Дашборд​

epic-sdk serve --root ~/epic-lab

Описано на панели управления.