Майнингdocs/operate/external-miner.md

Внешний майнер

Внешний майнинг отделяет поиск nonce для PoW от ноды. Мемпул, выбор транзакций, переход State, доказательство HistoryStep, шаблон и ретрансляция блока по-прежнему принадлежат ноде.

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

Локальный вычислитель

Создайте защищённый файл с токеном и используйте его для ноды и вычислителя:

sh
umask 077
openssl rand -hex 32 > ~/.parano1d/mining.key

parano1d --mode extminer --mining-key-file ~/.parano1d/mining.key

В другом терминале:

sh
parano1d-miner \
  --rpc http://127.0.0.1:9601 \
  --key-file ~/.parano1d/mining.key

Локальные клиенты без Origin могут не передавать Authorization через loopback, чтобы GUI и CLI сохраняли полные локальные права без пароля. Передавайте --key-file внешнему майнеру, даже если он работает локально, тогда его запросы получат только mining-права. Нативный локальный процесс, который намеренно не передаёт ключ, считается доверенным локальным процессом владельца. Старые формы --mining-key TOKEN и --key TOKEN сохранены для совместимости, но их значения видны в аргументах процесса. На Unix файл ключа должен принадлежать текущему пользователю и быть недоступен группе и остальным.

При необходимости ограничьте число потоков:

sh
parano1d-miner --key-file ~/.parano1d/mining.key --threads 8

Удалённый вычислитель

Не передавайте незашифрованный токен доступа напрямую через интернет. RPC-сервер поддерживает только HTTP и отклоняет переключение на WebSocket.

Разместите вычислитель и ноду в аутентифицированной приватной сети либо используйте TLS-терминацию и ограничивайте доступ на обратном прокси. Открывайте RPC только после настройки защищённого транспорта:

sh
parano1d \
  --mode extminer \
  --rpc-listen 0.0.0.0:9601 \
  --mining-key-file /secure/parano1d-mining.key

Межсетевой экран должен пропускать порт только от нужных вычислителей или прокси.

Выплата

По умолчанию шаблоны используют адрес выплаты, настроенный на ноде. Для соло-майнинга это самый безопасный режим.

Чтобы разрешить вычислителю запрашивать собственную выплату, оператор должен явно включить эту возможность:

sh
parano1d \
  --mode extminer \
  --mining-key-file ~/.parano1d/mining.key \
  --allow-custom-coinbase

Тогда вычислитель может передать:

sh
parano1d-miner \
  --key-file ~/.parano1d/mining.key \
  --coinbase o1...

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

Mining-токен разрешает только getBlockTemplate и submitBlock. Он не может вызывать методы кошелька, управления нодой или общие информационные методы.

Отдельный хост оператора пула

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

sh
umask 077
openssl rand -hex 32 > /secure/parano1d-operator.key

parano1d \
  --mode node \
  --rpc-listen 0.0.0.0:9601 \
  --operator-key-file /secure/parano1d-operator.key

Operator-токен разрешает ограниченные запросы учёта, поиск и проверку транзакций и чеков, расчёт комиссии и выплаты, walletSend, точную консолидацию кошелька и отправку внешней авторизованной транзакции. Точный список приведён в разделе Аутентификация JSON-RPC. Токен не может получать или отправлять майнинговые шаблоны, останавливать ноду, сканировать кошелёк, обнаруживать или менять адреса, перечислять неограниченную историю или UTXO и вызывать методы вне списка. Mining-токен и operator-токен должны различаться.

Если один демон обслуживает майнинг и операции пула, запустите его в режиме extminer и передайте два разных файла. Отдельному демону кошелька нужен только operator-токен, а нодам доказательства нужен только mining-токен.

walletSend даёт право расходовать средства. Межсетевой экран должен разрешать доступ только хосту учёта, а соединение должно проходить через VPN либо аутентифицированный TLS или SSH-туннель. HTTP listener ноды не шифрует Bearer-токены.

Жизненный цикл шаблона

getBlockTemplate возвращает непрозрачный одноразовый ID, 16-полевое расписание PoW, индекс nonce и целевое значение. Вычислитель перебирает случайные независимые диапазоны nonce и вызывает submitBlock ровно с 16 байтами nonce в порядке от младшего байта к старшему (little-endian).

Срок действия шаблона — 30 секунд. Он также становится недействительным при смене канонической вершины, успешной отправке или отмене нодой. Устаревший результат нормален: после интервала опроса вычислитель запрашивает новый шаблон.

Диагностика

Выполните:

sh
parano1d-miner --check-hardware

Если запросы не проходят:

  • 401 Unauthorized означает отсутствие или несовпадение токена;
  • ошибка пользовательского адреса выплаты означает, что нода не разрешила этот адрес;
  • постоянное устаревание шаблонов обычно связано с новыми вершинами либо слишком долгим построением доказательства;
  • отсутствие шаблона означает, что нода не синхронизирована, не имеет кворума пиров или запущена не в режиме extminer.
Техническая документация ParanO(1)dПоведение консенсуса определяется исходным кодом.