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

Настройка узла и кошелька для mainnet

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

Два процесса. Узел, который валидирует и ретранслирует цепочку, и кошелёк, который хранит ключи и запрашивает у узла состояние сети. Узел необходим. Майнинг не обязателен.

1. Запустить узел​

Mainnet — сеть по умолчанию, поэтому флаг не нужен:

epic

Узел записывает epic-server.toml при первом запуске и читает его при всех последующих. Редактирование этого файла — стандартный способ изменить поведение, поскольку большинство настроек существуют только как ключи конфигурации, а не как флаги командной строки. Каждый ключ требует перезапуска.

Убедитесь, что узел запущен. Интерфейс владельца требует аутентификации, секрет создаётся автоматически:

curl -s -u epic:$(cat ~/.epic/main/.api_secret) -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","method":"get_status","params":[],"id":1}' \
http://127.0.0.1:3413/v2/owner

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

Порты​

ПортНазначениеПривязка по умолчанию
3413HTTP API127.0.0.1
3414P2PВсе интерфейсы
3416Stratum-сервер майнинга127.0.0.1, по умолчанию отключено

Только P2P-порт должен быть доступен извне. Оставьте API на loopback и прочитайте аутентификацию и TLS перед тем, как это менять. Каждый порт и сетевое смещение описаны в справочнике CLI.

Настройки валидации синхронизации​

skip_pow_validation по умолчанию равно true, а disable_checkpoints — false. Пропуск доказательства работы внутри диапазона с чекпоинтами — это оптимизация скорости синхронизации, а не ослабление настроек по умолчанию: пропускаемый диапазон заканчивается на жёстко заданном чекпоинте, хэш которого должен совпасть, и каждый заголовок в нём ссылается на этот чекпоинт. Сравниваются по хэшу только заголовки на высотах 13 чекпоинтов; заголовки между ними — нет.

Где находится блокВалидация выполняется на mainnet
В диапазоне контрольных точек, до высоты 3,710,000Заголовок на высоте контрольной точки сравнивается с захардкоженным хешем; несовпадение прерывает синхронизацию. Доказательство работы пропускается, пока skip_pow_validation равно true
Выше последнего чекпоинтаПолное доказательство работы, всегда, независимо от этих настроек

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

В узел скомпилировано 13 чекпоинтов, в chain/src/types.rs:432. Код — check_header_against_checkpoints(), решение о пропуске — should_skip_pow(); при запуске на mainnet узел записывает в лог, какая политика применяется.

disable_checkpoints игнорируется на mainnet. В тестовой сети, при skip_pow_validation также true, он расширяет пропуск за пределы последнего чекпоинта для блоков, находящихся более чем на 1,000 ниже вершины цепочки (POW_VERIFICATION_THRESHOLD).

Установите skip_pow_validation = false, чтобы самостоятельно проверить всё историческое доказательство работы. Это потребует значительно более долгой начальной синхронизации.

Что хранит узел​

chain_data, файл конфигурации, файлы логов и API-секрет. chain_data — крупный элемент, и он одноразовый: его удаление обходится пересинхронизацией и ничем больше. Узел не хранит ключей, поэтому ничто в его каталоге данных не требует резервного копирования.

2. Создать кошелёк​

epic-wallet init

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

Write the recovery phrase down before continuing

Фраза — единственное, что позволяет восстановить ваши средства. Она отображается здесь один раз, а впоследствии — только через epic-wallet recover, которому нужен пароль.

КомандаЭффект
epic-wallet initСоздать кошелёк в расположении по умолчанию, ~/.epic/main
epic-wallet init -wСоздать в текущем каталоге. Флаг не принимает значения
epic-wallet init -rВосстановить из существующей фразы восстановления

init -r отказывается запускаться, если файл сида уже существует, поэтому восстановление в каталог, в котором уже есть кошелёк, требует предварительного перемещения этого кошелька. См. резервное копирование и восстановление.

Отключить слушатель Tor​

Кошелёк по умолчанию устанавливает use_tor_listener в true и ожидает бинарный файл Tor, который в архивах релиза не поставляется, поэтому epic-wallet listen запускает фоновый поток, который завершается с ошибкой. Есть два способа отключить это, и один из них действует на уровне отдельной команды:

epic-wallet.toml
[tor]
use_tor_listener = false
epic-wallet listen -n

-n объявляется только в listen (src/cmd/wallet_args.rs:123), поэтому его нужно повторять при каждом listen. Ключ конфигурации применяется ко всем командам в данном каталоге кошелька и является предпочтительной настройкой. Ни один из вариантов не влияет на использование Tor узлом.

Что хранит кошелёк​

Резервное копирование и восстановление перечисляет все файлы в каталоге кошелька, что они содержат и нужно ли их резервировать. Фраза восстановления восстанавливает ваши средства, но не историю. Записи транзакций, метки аккаунтов и записи доказательств платежа хранятся только в базе данных, и ничто в цепочке не может их восстановить.

Порты, открываемые кошельком​

epic-wallet listen открывает Foreign API на 3415, а epic-wallet owner_api открывает Owner API на 3420. Порт Foreign API определяется сетью; порт Owner API равен 3420 в любой сети, поэтому второй кошелёк на той же машине будет конфликтовать с ним вне зависимости от того, в какой цепочке он работает. Переопределите owner_api_listen_port. Полный список — в справочнике CLI.

3. Указать кошельку адрес узла​

Кошелёк по умолчанию подключается к узлу на loopback на порту 3413. Настройка не требуется.

Вызовы кошелька идут к поверхностям узла, не требующим учётных данных, поэтому перемещение любого из каталогов не нарушает работу. node_api_secret_path важен только для поиска onion-адреса Tor; см. учётные данные, которые кошелёк предъявляет узлу. Чтобы использовать другой узел, установите check_node_api_http_addr в epic-wallet.toml.

epic-wallet info

Нулевой баланс без ошибки означает, что кошелёк достиг узла и узел ответил. Код 401 означает, что у узла установлен foreign_api_secret_path, с которым epic-wallet 4.1.0 не может работать. Судя по коду, узел старше 4.1.0 с API-секретом также ответит 401; эта комбинация не тестировалась.

Кошелёк, направленный на публичный узел, работает. Этот узел видит, о каких выходах (outputs) спрашивает кошелёк, а кошелёк не валидирует полученное состояние цепочки.

Далее​