Настройка узла и кошелька для 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 и disable_checkpoints оба по умолчанию равны true. Это оптимизация скорости синхронизации, а не ослабленное
значение по умолчанию.
| Где находится блок | Выполняемая проверка |
|---|---|
| Внутри диапазона с контрольной точкой | Хеш заголовка сравнивается с жёстко заданной контрольной точкой. Несовпадение прерывает синхронизацию. Доказательство работы пропускается |
| За контрольными точками, более чем на 1,000 блоков позади вершины цепочки | Доказательство работы пропускается |
| В пределах 1,000 блоков от вершины цепочки | Полное доказательство работы, всегда, независимо от этих настроек |
В узел скомпилировано 12 контрольных сумм в chain/src/types.rs:432. Код — check_header_against_checkpoints(), решение о пропуске — в servers/src/common/adapters.rs:728, нижняя
граница — POW_VERIFICATION_THRESHOLD.
Установите оба в false, чтобы самостоятельно верифицировать всё историческое доказательство работы.
Это потребует значительно более долгой начальной синхронизации.
Что хранит узел
chain_data, файл конфигурации, файлы журналов и API secret. 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 и в стандартной конфигурации разрешает API secret узла из того же файла, который создал узел. Настройка не требуется.
Два случая меняют это. Если вы переместили любой из каталогов, установите node_api_secret_path в учётные данные,
которые кошелёк предъявляет узлу. Если нужен другой узел, установите check_node_api_http_addr в epic-wallet.toml.
epic-wallet info
Нулевой баланс без ошибки означает, что кошелёк достиг узла и узел ответил. Код 401 означает, что они расходятся в секрете.
Кошелёк, направленный на публичный узел, работает. Этот узел видит, о каких выходах (outputs) спрашивает кошелёк, а кошелёк не валидирует полученное состояние цепочки.