Skip to content

Latest commit

 

History

History
75 lines (45 loc) · 8.89 KB

File metadata and controls

75 lines (45 loc) · 8.89 KB

Модель сети HackMe: VPS, пул, P2P

HackMe Network · 0.1.0-rc11m · Pool · Telegram

Кратко для операторов и майнеров: кто пишет блоки, как участвуют ПК, зачем 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 для управляемого публичного запуска.


1. Два слоя: цепь и пул

Слой Что это Типичный хост
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 на участнике выключен — это не «вторая цепь», а клиент пула.


2. P2P — опционально

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).


3. Кто «генерирует блоки» и как делится эмиссия

  • Блоки 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) — отдельный слой: эскроу и привязка награды к задаче при открытом заказе.


4. Что прочитать по шагам

  1. Публичный путь майнера: README.md → раздел Worker-mode (скрипты worker_mode_*, health, recover).
  2. Экономика и ожидания от пула: docs/ECONOMICS_DASHBOARD.md.
  3. Чеклист перед широким запуском: docs/PUBLIC_LAUNCH_VERDICT.md.
  4. Краткий обзор функционала: 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; этот документ синхронизируйте при смене модели.