Кратко для операторов и майнеров: кто пишет блоки, как участвуют ПК, зачем P2P и как связаны награда за блок и выплаты пула. Детали API — docs/API.md, экономика — docs/ECONOMICS_DASHBOARD.md.
Да, для публичного пула такая схема обычно удобнее и предсказуемее:
- Майнеру проще: не нужно поднимать «полную» ноду и локальный PoH как вторую цепь — достаточно worker + URL координатора и канона (дашборд / скрипты из
README.md). Меньше шагов и меньше шанс ошибиться в конфиге. - Один источник правды по API: при
HACKME_PUBLIC_AUTHORITY_BASE/ каноническом URL у всех, кто так настроен, одинаковые ответы по высоте, tip, балансу, мемпулу с command node — не расходятся «мой локальный блок #102» vs «сеть на #10 000». Это уменьшает путаницу и споры о состоянии сети. - Безопасность проще держать в голове: граница яснее — публичный VPS и его TLS/nginx, токены admin/coordinator/P2P, а домашняя машина не обязана быть открытым сервером с полной цепью. Меньше поверхность атаки у «просто майнера», если он не биндит
0.0.0.0и не тянет лишнее.
Важная оговорка: «одна информация о блоках у всех» в смысле одинаковый JSON из канона — да, если все смотрят канонический GET /api/chain / GET /api/reports/blocks / GET /api/status. Файл data/hackme.db на диске у follower без P2P может отставать по высоте; это не ломает пул, но Explorer/локальная таблица блоков на ПК могут показывать не тот же хвост, пока не сделан sync — см. раздел 2 ниже.
Цена модели — доверие к оператору канона (VPS) и прозрачность политики пула (coordinator + settlement); это осознанный trade-off для управляемого публичного запуска.
| Слой | Что это | Типичный хост |
|---|---|---|
| Command node (нода с цепью) | SQLite-блокчейн, POST /api/genesis, при разрешённом локальном PoH — запись PoH-блоков (HACKME_CHAIN_LEADER_LOCAL_POH=1 только на лидере). Публичный «источник правды» для высоты/баланса/мемпула в сети. |
VPS (staging / prod) |
| Coordinator | Очередь work для воркеров: claim / submit / stats, учёт попыток и accrual выплат по политике пула. Сам по себе не заменяет запись блоков в цепи. |
Часто тот же VPS или отдельный процесс (go run ./cmd/coordinator) |
Майнер на домашнем ПК в worker-mode подключается к coordinator и к каноническому API ноды (через HACKME_POOL_COORDINATOR_URL, HACKME_CANONICAL_CHAIN_URL или вывод из HACKME_PUBLIC_AUTHORITY_BASE). Локальный WASM PoH на участнике выключен — это не «вторая цепь», а клиент пула.
P2P не обязателен, чтобы пользоваться пулом и смотреть канонический баланс/мемпул через HTTP.
- Задайте
HACKME_PUBLIC_AUTHORITY_BASE(или явноHACKME_CANONICAL_CHAIN_URL+HACKME_POOL_COORDINATOR_URL) — узел будет тянуть агрегаты и подсказки высоты с command node, даже безHACKME_P2P_PEERS(см. подсказки вGET /api/statusв кодеmain.go). - P2P (
HACKME_P2P_PEERS, …) нужен, если хотите, чтобы локальный SQLite на follower приближался к сети (sync блоков), а не только UI/API в «каноническом» режиме. GET /api/tasks(вкладка «Заказы» в дашборде): список подставляется с канона, если задан первый peer вHACKME_P2P_PEERSили настроен базовый URL канона (HACKME_CANONICAL_CHAIN_URL/ вывод из координатора /HACKME_PUBLIC_AUTHORITY_BASE), и запрос не уходит в loopback на тот же HTTP listener. Чтобы при этом смотреть только локальный SQLite (редкий dev-сценарий), задайтеHACKME_TASKS_LIST_LOCAL_ONLY=1.
Итого: майнить через пул можно без P2P; копия цепи на диске как у лидера — с P2P или one-shot скриптами (follower_bootstrap_from_vps.sh, prefinal_public_sync.sh и т.д., см. основной README.md).
- Блоки PoH в каноне пишет тот command node, который реально решает задачу и добавляет блок в свою цепь (на публичном стеке это ожидаемо VPS с включённым сценарием лидера / майнингом согласно вашему деплою).
- Скорость эмиссии сети ограничена целевым интервалом блоков (ретаргет
poh_target_modи т.д.) — тысячи воркеров не умножают эмиссию; они делят вероятность/долю в модели PoH и в учёте coordinator (см. раздел «Capacity» вECONOMICS_DASHBOARD.md). - Зачисление base/order награды за блок на стороне цепи идёт в primary wallet ноды-продюсера (не «автоматически на каждую GPU» удалённого рига). Участники пула получают долю через coordinator accrual → settlement/on-chain — это не то же самое, что прямой split каждого блока на каждый GPU (явно на сайте
web/site/index.htmlи вECONOMICS_DASHBOARD.md).
Заказы (POST /api/tasks) — отдельный слой: эскроу и привязка награды к задаче при открытом заказе.
- Публичный путь майнера:
README.md→ раздел Worker-mode (скриптыworker_mode_*, health, recover). - Экономика и ожидания от пула:
docs/ECONOMICS_DASHBOARD.md. - Чеклист перед широким запуском:
docs/PUBLIC_LAUNCH_VERDICT.md. - Краткий обзор функционала:
README.md+docs/API.md(таблица API и вкладок).
Скрипт scripts/ops/verify_chain_sync_snapshot.sh — один проход по GET /api/status, GET /api/metrics, при наличии GET /api/global/metrics: сравнение высот в standalone, подсказки при отставании SQLite от канона, сверка pool_target_mod с work.target_mod. Требуются curl и jq:
LOCAL_BASE=http://127.0.0.1:8080 bash scripts/ops/verify_chain_sync_snapshot.shЕсли формулировки в UI/сайте расходятся с этим файлом — источником правды для продукта считайте код (pool.go, main.go, internal/chain) и актуальный README.md; этот документ синхронизируйте при смене модели.