Настройка узла и кошелька для mainnet
Mainnet работает с реальными ценностями. Всё описанное здесь предполагает, что вы уже прошли локальную цепочку в запуске локальной сети и первом переводе, поскольку механика идентична, а последствия — нет.
Два процесса. Узел, который валидирует и ретранслирует цепочку, и кошелёк, который хранит ключи и запрашивает у узла состояние сети. Узел необходим. Майнинг не обязателен.
1. Запустить узел
Mainnet — сеть по умолчанию, поэтому флаг не нужен:
epic
Узел записывает epic-server.toml при первом запуске и читает его при всех последующих. Редактирование этого
файла — стандартный способ изменить поведение, поскольку большинство настроек существуют только как
ключи конфигурации, а не как флаги командной строки. Каждый ключ требует перезапуска.
Убедитесь, что узел запущен. Интерфейс владельца требует аутентификации, секрет создаётся автоматически:
- Linux и macOS
- Windows
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
$secret = (Get-Content "$HOME\.epic\main\.api_secret" -First 1).Trim()
$body = '{"jsonrpc":"2.0","method":"get_status","params":[],"id":1}'
Invoke-RestMethod -Uri 'http://127.0.0.1:3413/v2/owner' -Method Post `
-ContentType 'application/json' -Body $body `
-Authentication Basic -Credential (
[PSCredential]::new('epic', (ConvertTo-SecureString $secret -AsPlainText -Force))
) -AllowUnencryptedAuthentication
Первая синхронизация загружает и валидирует всю цепочку. Ожидайте, что это займёт некоторое время и потребует реального дискового пространства.
Порты
| Порт | Назначение | Привязка по умолчанию |
|---|---|---|
| 3413 | HTTP API | 127.0.0.1 |
| 3414 | P2P | Все интерфейсы |
| 3416 | Stratum-сервер майнинга | 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
Вам будет предложено задать пароль, и будет показана фраза восстановления.
Фраза — единственное, что позволяет восстановить ваши средства. Она отображается здесь один раз, а
впоследствии — только через 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 запускает фоновый поток, который завершается с ошибкой. Есть два
способа отключить это, и один из них действует на уровне отдельной команды:
[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) спрашивает кошелёк, а кошелёк не валидирует полученное состояние цепочки.