ЕГНМП — АРХИТЕКТУРА← Панель управления
Общая
Протокол
Ядро
API
Выплаты
Комплаенс
Гос.
Инфра
Энергетика
Тесты

Схема 0 · Общий вид OVERVIEW

Общая карта всего пула — как план здания с видом сверху. Сверху — майнеры (клиенты), в середине — наша система, снизу — государство и электросети. Каждый блок — это отдельная вкладка с подробностями.

ASIC-майнерыПОЛЬЗОВАТЕЛИ ПУЛА Antminer · WhatsMiner · Avalon
Десятки тысяч подключений
🔗Stratum V2 ServerПРОТОКОЛ МАЙНИНГА Noise Protocol · Job Negotiation · E2E шифрование
SRIBinary
ЕГНМП ЯдроEGNMP-CORE Бизнес-логика · Модели данных · Event Bus
RustTokioSQLx
🌐API + ДашбордEGNMP-API REST API · WebSocket · nginx · JWT
AxumWS
💎Учёт шар и выплатыEGNMP-SHARE / PAYOUT FPPS · Coinbase TX · Non-custodial
FPPS
🗄Хранилище данныхPOSTGRESQL / REDIS / CLICKHOUSE ACID · In-memory кеш · Аналитика · Репликация
🛡КомплаенсБЕЗОПАСНОСТЬ KYC/AML · ЕСИА · 115-ФЗ · Geo-blocking
KYCAML
ЭнергетикаРЕГИОНАЛЬНАЯ ПОЛИТИКА Demand Response · МРСК · 6000 кВт·ч · Тарифы
🏢ИнфраструктураЦОД И МОНИТОРИНГ Tier III+ · HA кластер · DR · Prometheus
HADR
🏛Гос. интеграцияФНС / РОСФИНМОНИТОРИНГ Реестр майнеров · Налоговый агент · ЕСИА · Минэнерго
🗺Регионы РФКРАСНОЯРСК · МУРМАНСК · ТЮМЕНЬ Профицит ГЭС/АЭС · Утилизация тепла
📊МониторингPROMETHEUS + GRAFANA Метрики · Алерты · SLA 99.9%
📋Наблюдательный советМИНФИН · ЦБ · ФНС · МИНЦИФРЫ Контроль · Ежегодный доклад Правительству

Схема 0 · Общий вид навигатор по системе

Аналогия: завод. Сверху — сырьё (хешрейт). По три цеха в ряд: левый = деньги, центр = данные, правый = контроль. Внизу — внешний мир (регионы, госорганы, мониторинг).

Читайте сверху вниз, по три колонки. Стрелки = направление данных. Цвет стрелки = домен-источник.

  • ASIC-майнеры — железки (Antminer, WhatsMiner). У пула их десятки тысяч. Каждая шлёт ~1 шару/сек.
  • Stratum V2 — «приёмная» пула. Язык, на котором ASIC общается с сервером. → вкладка «Протокол»
  • Ядро (egnmp-core) — мозг. Бизнес-логика: кто сколько намайнил, кому платить. → вкладка «Ядро»
  • API + Дашборд — лицо пула. Веб-интерфейс для людей. → вкладка «API»
  • Учёт шар и выплаты — бухгалтерия. Кто сколько заработал → биткоины на кошельки. → вкладка «Выплаты»
  • Хранилище — три базы: PostgreSQL (надёжная), Redis (быстрая), ClickHouse (аналитика).
  • Комплаенс — служба безопасности: проверка «не мошенник ли». → вкладка «Комплаенс»
  • Энергетика — лимиты потребления, запрет регионов. → вкладка «Энергетика»
  • Инфраструктура — серверы, ЦОДы, мониторинг. → вкладка «Инфра»
  • Гос. интеграция — ФНС, Росфинмониторинг, ЕСИА. → вкладка «Гос.»

Рекомендуемый порядок чтения вкладок

Протокол → Ядро → API → Выплаты (основной поток), затем Комплаенс → Гос. (контроль), затем Инфра → Энергетика (обеспечение).

Схема 1 · Протокол STRATUM V2

Как майнинговое оборудование «разговаривает» с пулом. Как почта: устройство отправляет «письма» с результатами работы, пул проверяет их и отправляет найденный блок в сеть Биткоина. Всё зашифровано.

ASIC-майнерыANTMINER S21 · WHATSMINER M60 · AVALON A15Braiins OS · CGMiner · NiceHash firmware
🔐Noise ProtocolE2E ШИФРОВАНИЕАутентификация · Защита от MITM · Перехват хешрейта
🔗Stratum V2 ServerEGNMP-POOL · ПОРТ 3333Приём шар · Валидация PoW · Распределение заданий
TCP/TLSBinary
📋Job NegotiationTEMPLATE PROVIDERМайнеры предлагают шаблоны блока · Защита от цензуры TX
📦Share QueueОЧЕРЕДЬ ШАРKafka / RabbitMQ · At-least-once · Буфер перед БД
KafkaTokio
🧱Block AssemblerСБОРКА БЛОКАCoinbase TX · Merkle root · Block header
🔍Mempool MonitorFEE OPTIMIZATIONОтслеживание TX fees · Приоритет транзакций
Share ValidatorПРОВЕРКА PoWhash(header+nonce) < target · Difficulty · Rejection rate
📤Block SubmitterОТПРАВКА В СЕТЬsubmitblock RPC · Retry logic · Orphan detection
Bitcoin CoreПОЛНАЯ НОДА + PRUNED BACKUPgetblocktemplate · submitblock · Failover
RPCRegtest

Схема 1 · Протокол как ASIC разговаривает с пулом

Аналогия: почта. ASIC отправляет «письма» (шары) серверу по зашифрованному каналу. Сервер выдаёт «задания» обратно.

  • ASIC-майнеры — ~200 TH/s каждый, ~3 кВт. Порт 3333 (TCP). MVP
  • Noise Protocol — шифрованный туннель (E2E). Без него злоумышленник перехватит ваш хешрейт. упрощён (рукопожатие реализовано, полный NX — план)
  • Stratum V2 Server — принимает шары, проверяет PoW, выдаёт задания. Бинарный: экономия vs V1. MVP
  • Job Negotiation — майнер сам выбирает транзакции. Анти-цензура. план
  • Share QueueKafka очередь шар (высокий throughput, at-least-once). Отдельно: RabbitMQ для очереди выплат (exactly-once). план
  • Block Assembler — собирает блок: coinbase TX + merkle root + block header. упрощён
  • Mempool Monitor — следит за fee в мемпуле, выбирает самые прибыльные TX для блока. план
  • Share Validator — проверяет PoW: hash(header+nonce) < target. Отсеивает невалидные. упрощён
  • Block Submitter — submitblock RPC + retry + orphan detection. симулятор
  • Bitcoin Core — полная нода + pruned backup (failover). Merged mining LTC/DOGE — план. Мультивалютность: архитектура egnmp-core поддерживает trait CoinProtocol — новая криптовалюта = новая реализация trait. симулятор

Поток: ASIC → Блокчейн

ASIC → Noise → Stratum V2 → Share Queue → Share Validator → Block Assembler → Block Submitter → Bitcoin Core → блокчейн.

⚠ Если Bitcoin Core недоступен — шары копятся в Share Queue. Block Submitter переключается на pruned backup. При восстановлении — блок отправляется с задержкой, шары не теряются.

Почему Stratum V2, а не V1 или GBT?
Главная причина: безопасность + децентрализация. V1 — текст, без шифрования, пул диктует блок. GBT — не держит тысячи подключений. V2 решает всё: бинарный (3× экономия), зашифрован (Noise), майнер выбирает транзакции (анти-цензура). Реализация — SRI от Braiins (открытый код).
Почему Rust, а не C++?
C++ присутствует в системе — но это не наш код.

Где C++ уже работает (мы не трогаем):
Bitcoin Core — эталонная нода, 10+ лет разработки, C++. Мы используем как чёрный ящик через JSON-RPC (submitblock, getblocktemplate). Переписывать — бессмысленно.
libsecp256k1 — криптография эллиптических кривых (подписи, ключи). Написана на C. Rust использует её же через FFI-обёртку rust-secp256k1 — та же скорость, безопасный интерфейс.
LevelDB — БД для UTXO-сета Bitcoin Core. C++, внутри ноды.

Почему наш код — Rust, а не C++:
Безопасность памяти: пул управляет деньгами. В C++ один buffer overflow = хакер получает приватные ключи = все средства украдены. 70% CVE в C++ проектах (данные Microsoft, Google) — ошибки памяти. В Rust они невозможны без явного unsafe.
Потокобезопасность: 10 000+ одновременных соединений. В C++ data race = крах или утечка данных. В Rust data race невозможен на уровне системы типов (Send/Sync).
Скорость = одинаковая: оба языка — zero-cost abstractions, LLVM backend. Разница <0.01 мс на операцию — при сетевой задержке 5–50 мс это шум.
Экосистема биткоина на Rust (2025): rust-bitcoin (транзакции, скрипты), rust-secp256k1 (криптография), BDK (кошелёк), LDK (Lightning), SRI (Stratum V2). Экосистема сопоставима с C++.

Почему не Go: Go = сборщик мусора = непредсказуемые паузы 1–5 мс. Для Stratum-сервера с 15 000 шар/сек — неприемлемо. Go подходит для API (public-pool на Go работает), но не для ядра пула.

Итого — гибридная архитектура:
• C++ → Bitcoin Core (нода), libsecp256k1 (криптография) — используем, не пишем
• Rust → egnmp-pool, egnmp-core, egnmp-api, egnmp-payout — весь наш код
• HTML/JS → дашборд

Формулировка для встречи: «C++ — фундамент биткоина (нода, криптография). Мы его используем, а не переписываем. Наш код — Rust, потому что для финансовой системы безопасность памяти важнее мнимого преимущества C++ в скорости, которого нет».
Тестирование
Подробная стратегия тестирования (8 типов, ползунки, хаос-инжиниринг) — → Схема 9 «Тесты»
Совместимость с оборудованием и прошивками
Поддерживаемые ASIC: Bitmain Antminer (S19, S21, T21), MicroBT WhatsMiner (M50, M56, M60), Canaan Avalon (A14, A15). Любое устройство с поддержкой Stratum V1 или V2.

Прошивки: Braiins OS+ (нативный SV2), стоковая Bitmain/MicroBT (через SV1→SV2 Translator Proxy), CGMiner, BFGMiner, NiceHash (через прокси).

Translator Proxy (SV1→SV2): встроенный модуль в egnmp-pool. Старый ASIC подключается на порт :3334, прокси транслирует протокол. Шифрование на участке proxy→сервер, но не на участке ASIC→proxy (ограничение SV1).

Импортозамещение ASIC: на 2026 год в РФ нет производства ASIC-чипов (<7 нм). Направление: партнёрство с Китаем, сборка в РФ (BitRiver, Intelion), разработка отечественных прошивок. ТЗ §21, §40.

Схема 2 · Ядро и данные CORE + STORAGE

«Мозг» пула и его «память». Мозг — это правила (кто сколько намайнил, кому платить). Память — 5 разных хранилищ: сейф для денег, быстрый блокнот, архив за 10 лет, склад документов, несгораемый сейф для ключей.

🔗Stratum V2ВХОДЯЩИЙ ПОТОКШары · Воркеры · Телеметрия
egnmp-coreБИЗНЕС-ЛОГИКАМодели данных · Конфигурация · Валидация · Event bus
RustTokioSerde
📦ORM / Data Access LayerSQLX + REDIS CLIENT + CLICKHOUSE CLIENTМиграции · Connection pooling · Prepared statements · Кеширование
🗄PostgreSQLОСНОВНАЯ БДМайнеры · Блоки · KYC · Налоги
Master → Replica
RedisКЕШ И ОЧЕРЕДИВоркеры · Хешрейт · Сессии · Pub/Sub
📊ClickHouseАНАЛИТИКАИсторические шары · Метрики · Графики
🗃MinIO / S3АРХИВ ЛОГОВ5+ лет хранения · Бэкапы БД · Отчёты ФСБ
S35 лет
🔐HSMHARDWARE SECURITY MODULEПриватные ключи пула · Подпись coinbase TX · ГОСТ шифрование
HSMГОСТ

Схема 2 · Ядро и данные мозг + память

Аналогия: бухгалтерия с пятью шкафами. egnmp-core — главбух (правила). PostgreSQL — сейф (надёжно). Redis — стикер (быстро). ClickHouse — архив (много). S3 — склад документов (5+ лет). HSM — несгораемый сейф (ключи).

  • Stratum V2 (вход) — поток шар + телеметрия воркеров. ← из Схемы 1
  • egnmp-core — Rust-библиотека. Модели: Miner, Worker, Share, Block, Payout.
  • ORM (SQLx) — проверяет SQL при компиляции. Ошибка → код не соберётся.
  • PostgreSQL — ACID. Master→Replica. ~50 ГБ/год.
    ⚠ MVP использует SQLite (один файл, нулевая настройка). PostgreSQL — при переходе к продакшну (>1000 майнеров).
  • Redis — кеш, <0.5 мс. Хешрейт, сессии, pub/sub. конфиг есть
  • ClickHouse — миллиарды шар, агрегаты за секунды. план
  • MinIO / S3 — долгосрочный архив логов (5+ лет, требование ФСБ). Бэкапы БД. план
  • HSM — аппаратный модуль безопасности. Приватные ключи пула для подписи coinbase-транзакций. ГОСТ шифрование. план

Поток: шара → пять хранилищ

Шара → egnmp-core → PostgreSQL (надёжно) + ClickHouse (аналитика) + Redis (кеш). Логи → S3 (архив 5+ лет). Ключи → HSM (никогда не покидают модуль).

⚠ Если Redis упал — кеш пересоберётся из PostgreSQL за ~30 сек. Если HSM недоступен — новые блоки не подписываются (fail-safe, средства в безопасности).

Почему PostgreSQL + Redis + ClickHouse?
Три задачи — три инструмента. PostgreSQL — ACID для денег (MySQL хуже с UUID; MongoDB — нет ACID). Redis — pub/sub для real-time. ClickHouse — агрегаты миллиардов строк за <1 сек. SQLx — compile-time проверка SQL.

Зачем HSM? Приватные ключи в обычном файле — одна атака и все средства украдены. HSM — физическая защита: ключи подписывают внутри модуля, не извлекаются.
Стратегия бэкапов БД
RPO (Recovery Point Objective): потеря не более 5 мин данных (благодаря WAL-репликации).
RTO (Recovery Time Objective): восстановление за ≤30 мин.

Типы бэкапов:
Ежечасно: WAL-based incremental (pg_basebackup + WAL shipping на S3)
Ежедневно: full dump (pg_dump) → S3, шифрование AES-256
Еженедельно: холодный bak на отдельный сервер в DR-площадке
Retention: ежечасные = 24ч, ежедневные = 30 дней, еженедельные = 1 год.
Тестирование: ежемесячно — восстановление на тестовый сервер из случайного бэкапа + проверка целостности (checksum).

Схема 3 · Интерфейсы WEB INTERFACE

«Лицо» пула — через что люди общаются с системой. Майнер смотрит свою статистику и выводит деньги. Администратор управляет пулом. Госорганы получают отчёты по защищённому каналу. У каждого — свой «вход».

🖥Оператор / МайнерПОЛЬЗОВАТЕЛЬБраузер · Мобильное приложение · CLI
🔀nginx / HAProxyREVERSE PROXY + WAFTLS · Rate limiting · CORS · gzip · WAF
🌐egnmp-apiPUBLIC REST + WEBSOCKETAxum HTTP · JWT auth · RBAC · Real-time
AxumTowerJWT
📊ДашбордWEB UI / SPAГрафики · Таблицы · Real-time WS
👤Личный кабинетЛК МАЙНЕРАСтатистика · Настройки · Вывод средств · 2FA
🛠Admin APIУПРАВЛЕНИЕ ПУЛОМКонфигурация · Мониторинг · Блокировка · MFA
AxumRBAC
🏛Government APIФНС · ФСБ · РОСФИНГОСТ TLS · VipNet · СМЭВ · Защищённый канал
ГОСТСМЭВ
egnmp-core + Data LayerPOSTGRESQL / REDISБизнес-логика · Данные майнеров · Хешрейт · Выплаты

Схема 3 · API и Дашборд лицо пула

Аналогия: ресторан. nginx = охранник+вышибала. Public API = официант. Admin API = менеджер зала. Government API = проверяющий из Роспотребнадзора (отдельный вход).

  • Пользователь — майнер: «мои воркеры работают?» Оператор: «общий хешрейт?» Аудитор ФНС: «покажите отчёт».
  • nginx + WAF — «вышибала». TLS, rate limit (100/мин), gzip, WAF (защита от инъекций/XSS).
  • Public API — Axum (Rust). REST + WebSocket. JWT = ID + роль + срок. Роли: майнер, оператор, аудитор.
  • Дашборд — HTML/JS, 62 КБ. Графики + WebSocket.
  • Личный кабинет — для каждого майнера: статистика, настройки, вывод BTC, 2FA. базовый
  • Admin API — управление пулом: конфигурация, мониторинг, блокировка майнеров, MFA. план
  • Government API — для ФНС/ФСБ/Росфинмониторинга. Отдельный защищённый канал (ГОСТ TLS, VipNet, СМЭВ). план
  • egnmp-core + БД — все API берут данные из одного ядра. ← Схема 2

Поток: браузер → данные

Браузер → nginx (TLS, rate limit) → egnmp-api (JWT-проверка) → PostgreSQL/Redis → JSON в браузер. + WebSocket для real-time: новые блоки, хешрейт, статус воркеров — моментально.

⚠ При сбое egnmp-api nginx возвращает 502. Решение: несколько инстансов за балансировщиком. → Схема 7

Почему Axum (Rust), а не Django (Python) / Express (Node)?
Главное: 10 000+ одновременных соединений. Python — GIL (один поток). Node — один поток + event loop. Rust + Tokio — тысячи задач параллельно, ~2 МБ RAM на соединение. Axum vs Actix: оба Rust, но Axum = стандартный Tower (код переиспользуется), Actix = +5% скорости, но unsafe.
ЕСИА → JWT: мост авторизации
Два этапа авторизации:
1. Регистрация — через ЕСИА (OAuth 2.0). Пул получает ИНН, ФИО, статус.
2. Дальнейшие запросы — пул выдаёт свой JWT-токен (содержит: miner_id, inn, role, exp).

Майнер логинится через Госуслуги → ЕСИА возвращает OAuth-токен → пул верифицирует через ЕСИА userinfo → создаёт внутренний JWT → все дальнейшие API-запросы идут с этим JWT.

Зачем два токена? ЕСИА OAuth-токен обновляется через redirect — неудобно для API. JWT = stateless, проверяется за 0.01 мс без запроса к ЕСИА. Срок жизни JWT: 1 час.
Rate limiting по ролям
Разные лимиты для разных ролей:
Майнер (ЛК): 100 req/мин — просмотр статистики, настройки
API-интеграция: 1000 req/мин — автоматические системы мониторинга
Admin API: 500 req/мин + MFA (ГОСТ TOTP или КС2 токен)
Government API: без лимита — ФНС/ФСБ не должны ждать
Stratum V2 (TCP): rate limit не применим — вместо него share difficulty + ban при >5% rejected shares

MFA для Admin API: по умолчанию TOTP (Google Authenticator). Для доступа к KYC-данным (152-ФЗ) — обязательно ГОСТ-токен (Рутокен ЭЦП 2.0) или ВипНет-клиент (КС2/КС3).
Мобильное приложение (план)
MVP мобильного — PWA (Progressive Web App). Дашборд уже адаптивный — добавить manifest.json + service worker.

Push-уведомления:
• Воркер офлайн >15 мин → push
• Найден блок → push
• Выплата отправлена → push
• AML-алерт → push администратору

Нативное приложение (этап 3): React Native / Flutter. API уже готов (REST + WebSocket). Биометрия для входа + ЕСИА deep link.

Схема 4 · Выплаты FPPS PAYOUTS

Как майнер получает деньги. Пул считает, кто сколько работал, вычитает комиссию и отправляет биткоины напрямую на кошелёк майнера. Пул не хранит чужие деньги ни секунды. Также описано, как платить майнерам каждый день, пока пул ещё маленький.

🔗Stratum V2 — ШарыВХОДЯЩИЙ ПОТОКProof-of-work · Difficulty · Timestamp
📝Share AccountingEGNMP-SHAREПодсчёт шар · Difficulty tracking · Окно расчёта
🧮FPPS CalculatorFULL PAY PER SHAREBlock reward 3.125 BTC + TX fees
Пропорционально хешрейту
📊Комиссия пула1–2%Удержание · Фонд развития (0.1–0.2 п.п.)
💎Payout Engine — НекостодиальныйEGNMP-PAYOUTCoinbase TX с множественными выходами → верифицированные KYC-адреса
Non-custodialCoinbase TX
👛Кошельки майнеровBITCOIN АДРЕСАВерифицированные BTC-адреса · Автоматическая выплата из каждого блока

Схема 4 · Выплаты зарплатная ведомость

Аналогия: зарплата. Share Accounting = табель (кто сколько отработал). FPPS = формула расчёта. Payout Engine = бухгалтер, который переводит на карты. Некостодиальный = зарплата идёт напрямую, минуя кассу.

  • Шары (вход) — ~1 шара/сек с каждого ASIC. Содержит: proof-of-work + difficulty + timestamp.
  • Share Accounting (учёт шар) — записывает: кто, когда, какой сложности.
  • FPPS Calculator — (твои_шары / все_шары) × (3.125 BTC + TX fees − комиссия). Блок ≈ 3.125 + ~0.5 BTC в fees.
  • Комиссия — 1–2% (по умолчанию 1.5%, настраивается в конфиге). Из них 0.1–0.2 п.п. → фонд развития.
  • Налоговый агент (НДФЛ) — пул автоматически удерживает налог: 13% (до 2.4М₽), 15% (2.4–5М₽), 18% (5–20М₽), 20% (20–50М₽), 22% (>50М₽) — прогрессивная шкала НК РФ 2025. Механизм: coinbase TX формируется с доп. выходом на кошелёк пула (доля НДФЛ). Пул конвертирует BTC→RUB и перечисляет в ФНС ежеквартально. план
  • Payout Engine (движок выплат) — формирует coinbase TX: выходы на кошельки майнеров + 1 выход на кошелёк пула (НДФЛ + комиссия). Квази-некостодиальный: пул хранит только налоговую долю (до конвертации), основные средства майнера идут напрямую. MVP
  • Кошельки — BTC-адреса, прошедшие KYC. Автоматическая выплата из каждого блока.

Поток: шара → BTC на кошельке

Шары → учёт → каждые ~10 мин (найден блок) → FPPS считает доли → Payout Engine → coinbase TX → BTC напрямую на кошельки. Минимальный порог: 0.001 BTC. Интервал обработки: 1 час, 100 подтверждений.

⚠ Если блок-сирота (orphan) — 100 подтверждений защищают: выплата только после 100 блоков. Если Bitcoin Core недоступен при выплате — pending очередь, отправится при восстановлении.

Почему FPPS, а не PPS / PPLNS / PROP?
Главное: стабильность дохода для гос. пула.
• PPS — без TX fees, майнер теряет ~15%. ✗
• PPLNS — зависит от удачи. Неделя без блока = 0. ✗
• PROP — только при найденном блоке. Риск. ✗
FPPS — блок + TX fees, стабильный доход. ✓

Некостодиальность: хранение чужой крипты в РФ = лицензионные проблемы. Coinbase TX → напрямую на кошельки = пул не «владеет» средствами юридически.
Проблема: как платить майнерам каждый день, если хешрейта ещё мало?
Это главная проблема периода набора (ramp-up).

При хешрейте пула <1 EH/s (~0.15% сети) пул находит блок раз в несколько дней или недель. Майнеры не будут ждать — уйдут к конкурентам.

Решение: Proxy Mining (проксирование через крупный пул).
Этап 1 (0–500 PH/s): ЕГНМП работает как прокси. Шары майнеров принимаются нашим Stratum-сервером, но пересылаются в Foundry/AntPool/Braiins. Выплаты от крупного пула приходят ЕГНМП, ЕГНМП распределяет майнерам по FPPS. Майнеры видят стабильный ежедневный доход. Разница: комиссия крупного пула ~2% + наша ~1% = ~3% итого.

Этап 2 (500 PH – 5 EH/s): Гибридный режим. Часть хешрейта (достаточная для ≥1 блока/день в среднем) работает напрямую, остаток через прокси. По мере роста — доля прокси уменьшается.

Этап 3 (>5 EH/s): Полностью автономный. ~1 блок каждые ~2 часа = ежедневные выплаты гарантированы статистически. Прокси отключен.

Кто платит комиссию крупному пулу? Государственный фонд развития (заложен в бизнес-модель). По мере набора хешрейта расходы на прокси → 0.

Техническая реализация: Модуль ProxyBridge в egnmp-pool. Stratum V2 вход (наш) → Stratum V1/V2 выход (Foundry). Шары логируются в нашу БД для учёта долей. Переключение proxy↔solo — один флаг в конфиге.
FPPS при proxy mining: модифицированная формула
В solo-режиме: FPPS = (мои_шары / все_шары) × (3.125 BTC + TX fees − комиссия)

В proxy-режиме: формула другая:
FPPS_proxy = (мои_шары / все_шары_пула) × (выплата_от_Foundry − комиссия)

Разница: вместо block reward пул использует фактическую выплату от вышестоящего пула (Foundry, AntPool и т.д.). Эта выплата = block reward − комиссия Foundry (~2%).

Итого для майнера: solo = ~1.5% комиссия, proxy = ~3% (наша 1% + Foundry 2%). По мере роста хешрейта доля proxy уменьшается → комиссия снижается до целевых 1.5%.

Схема 5 · Проверки KYC / AML / GEO

«Паспортный контроль» пула. Прежде чем начать майнить, каждый проходит проверку: подтверждение личности через Госуслуги, проверка кошелька на связь с мошенниками, и проверка — не из запрещённого ли региона.

Новый майнерЗАПРОС ПОДКЛЮЧЕНИЯЗаявка через ЕСИА · Документы · Адрес кошелька
🪪KYC / ЕСИАВЕРИФИКАЦИЯРеестр ФНС · ПДн · 152-ФЗ (КС2/КС3)
🔍AML-проверкаBLOCKCHAIN ANALYTICSChainalysis / Crystal · Чёрные списки · Рейтинг риска
🌍Geo-blockingПП 1869Блокировка IP из запрещённых регионов
🛡Комплаенс-офицерВНУТРЕННИЙ КОНТРОЛЬМониторинг операций · Travel Rule ФАТФ
📋Росфинмониторинг115-ФЗ ОТЧЁТНОСТЬЕжемесячные отчёты · Перечни экстремистов

Схема 5 · Комплаенс служба безопасности

Аналогия: паспортный контроль в аэропорту. KYC = проверка паспорта. AML = проверка багажа на запрещённое. Geo-blocking = виза (разрешён ли регион). Комплаенс-офицер = служба безопасности аэропорта.

  • Новый майнер — заявка: документы + BTC-адрес.
  • KYC/ЕСИА (идентификация) — Госуслуги подтверждают личность + реестр ФНС (ИП/ЮЛ с 01.11.2024). план
  • AML (противодействие отмыванию) — Chainalysis/Crystal проверяют BTC-адрес: связь с даркнетом, санкциями. план
  • Geo-blocking (блокировка регионов) — ПП 1869: запрет в 10 регионах до 2031. По IP + адрес регистрации. план
  • Рейтинг риска — каждому майнеру присваивается: низкий (зелёный — стандартный доступ), средний (жёлтый — усиленный мониторинг), высокий (красный — ручная проверка + ограничение выплат). Обновляется при каждой AML-проверке. план
  • Комплаенс-офицер (внутренний контроль) — мониторинг аномалий, Travel Rule ФАТФ, принцип «четырёх глаз» (критические решения подтверждает 2 человека). план
  • Росфинмониторинг — ежемесячные отчёты по 115-ФЗ. Чёрные списки. → Схема 6

Поток: заявка → допуск

Заявка → ЕСИА → KYC (документы + реестр ФНС) → AML (BTC-адрес через Chainalysis) → Geo-blocking (регион OK?) → допуск. Далее мониторинг 24/7.

⚠ Если Chainalysis недоступен — новые регистрации приостанавливаются (fail-closed). Существующие майнеры продолжают работать. Ложный positive AML → ручная проверка комплаенс-офицером.

Почему Chainalysis, а не свои проверки?
Главное: карта всех адресов блокчейна = годы данных. Свой аналог невозможен без тысяч источников. Elliptic — дороже, хуже покрытие РФ бирж. CipherTrace — менее специализирован.
ЕСИА: как работает интеграция с Госуслугами?
ЕСИА (Единая система идентификации и аутентификации) — это за Госуслугами. То же, что «Войти через Госуслуги» на любом госсайте.

Процесс регистрации майнера:
1. Майнер нажимает «Регистрация через Госуслуги» → редирект на esia.gosuslugi.ru
2. ЕСИА проверяет личность (паспорт, СНИЛС, ИНН) → возвращает OAuth-токен
3. Пул получает ИНН + ФИО + статус (физлицо/ИП/ЮЛ)
4. Пул проверяет ИНН в реестре ФНС (есть ли в реестре майнеров?)
5. Если нет — пул отправляет заявку на включение через API ФНС (ПП 1466)

Технически: OAuth 2.0 + OpenID Connect. Скоупы: openid, fullname, inn, snils. Токен обновляется каждые 24ч. Для подключения нужна регистрация ИС в Минцифры + сертификат ГОСТ TLS. Требование ТЗ §17, §23.
Жизненный цикл майнера: от заявки до отключения
7 этапов:
1. Заявка → регистрация через ЕСИА (Госуслуги)
2. KYC → проверка ИНН в реестре ФНС + AML проверка кошелька
3. Активация → получение stratum-url и username, подключение ASIC
4. Мониторинг → ежедневная проверка статуса ФНС (Redis-кеш TTL 24ч), периодическая AML-проверка, рейтинг риска
5. Выплаты → FPPS каждый блок, НДФЛ автоудержание, ежеквартальный отчёт
6. Приостановка → по решению комплаенс-офицера (высокий риск), при исключении из реестра ФНС, при превышении лимита энергии. Шары не принимаются, накопленное выплачивается
7. Удаление → по заявке майнера или решению набл. совета. Архивация данных (5 лет, требование ФСБ). BTC-адрес в стоп-лист AML

Схема 6 · Государство ФНС · ФСБ · РОСФИН

Как пул отчитывается перед государством. Налоговая получает отчёты о доходах, ФСБ — доступ к логам, Росфинмониторинг присылает «чёрные списки» террористов. Всё по защищённому каналу.

ЕГНМП — ЯдроОПЕРАТОР ПУЛАДанные: майнеры · выплаты · энергопотребление
🏛API ФНСДВУСТОРОННИЙ ОБМЕНРеестр майнеров · Налог. агент · НДФЛ
Real-time
📋Росфинмониторинг115-ФЗОтчёты · Подозрительные операции · Чёрные списки
🪪ЕСИАГОСУСЛУГИВерификация · OAuth · Документы
💰Налоговый агентНДФЛ 13–22%Автоудержание для физлиц → ФНС
МинэнергоЭНЕРГОДАННЫЕЛимиты · Demand response · Запреты
🏢Наблюдательный советКОНТРОЛЬМинфин · ЦБ · ФНС · Минцифры
🛡ФСБ / ФСТЭКДОСТУП К ЛОГАМ/api/v1/fsb/logs · ВипНет КС2 · ГОСТ TLS · 149-ФЗ / 374-ФЗ
ТЗ §12, §40

Схема 6 · Гос. интеграция госучреждение

Аналогия: бухгалтерия предприятия. Пул = работодатель. ФНС = налоговая. Росфинмониторинг = финразведка. ЕСИА = паспортный стол. Пул обязан отчитываться, как любое юрлицо.

  • Ядро ЕГНМП — все данные о майнерах, выплатах, потреблении.
  • API ФНС — real-time обмен через СМЭВ. Пул → «вот список майнеров». ФНС → «этот зарегистрирован, этот нет». план
  • Росфинмониторинг — ежемесячные отчёты (115-ФЗ). Чёрные списки. план
  • ЕСИА (Госуслуги) — OAuth авторизация. Личность = подтверждена государством. план
  • Налоговый агент — НДФЛ: 13% (до 2.4М₽), 15% (2.4–5М₽), 18% (5–20М₽), 20% (20–50М₽), 22% (>50М₽). Прогрессивная шкала НК РФ 2025. Автоудержание через доп. выход в coinbase TX. план
  • Минэнерго — лимиты, demand response, сезонные ограничения. → Схема 8
  • Набл. совет — Минфин, ЦБ, ФНС, Минцифры. Ежегодный доклад Правительству.
  • ФСБ / ФСТЭК — доступ к логам (149-ФЗ, 374-ФЗ). Endpoint: /api/v1/fsb/logs. Аутентификация: ВипНет КС2 + ГОСТ TLS R 34.12-2015. Данные: подключения (3 года), транзакции (5 лет), KYC (5 лет). Каждый запрос ФСБ логируется (аудит). план ТЗ §12, §40

Поток: подключение → налог → отчёт

Подключение: ядро → ФНС (ИНН в реестре?) → да/нет. Выплата: ядро → НДФЛ → BTC на кошелёк → данные в ФНС. Параллельно: Минэнерго → «снизить на 30%» → demand response.

⚠ Если ФНС API недоступен — регистрация новых майнеров приостанавливается. Выплаты существующим продолжаются (данные кешируются). Отчёты Росфинмониторинга буферизуются до восстановления.

Почему API (СМЭВ), а не ручные отчёты?
Главное: закон требует real-time обмен. Тысячи операций/день — email не справится. СМЭВ — стандарт госсистем РФ. Формат: XML + ГОСТ TLS (обязательный стандарт для гос. API).
API ФНС: проверка при каждом подключении майнера
Не только при регистрации, а при каждом подключении ASIC:
1. ASIC подключается → логин = username
2. Пул проверяет Redis-кеш: свежий статус ФНС? (TTL 24ч)
3. Если нет — запрос API ФНС (СМЭВ): «ИНН в реестре?»
4. ФНС → «да» → кешируем → разрешаем
5. ФНС → «нет» → отклоняем с сообщением

Исходящие данные в ФНС: ежеквартально — ИНН, доход в рублях, удержанный НДФЛ, энергопотребление. ТЗ §18.
Протокол доступа ФСБ к логам
ФСБ имеет доступ к логам по 149-ФЗ («Об информации») и 374-ФЗ (пакет Яровой).

Интерфейс доступа: отдельный Government API endpoint (/api/v1/fsb/logs), авторизация через ВипНет-клиент (КС2), сертификат ГОСТ TLS R 34.12-2015.

Что доступно:
• Логи подключений (IP, время, username, geo) — 3 года
• Логи транзакций (coinbase TX, суммы, адреса) — 5 лет
• Логи KYC (ИНН, ФИО, статус, AML-рейтинг) — 5 лет

Что НЕ доступно: приватные ключи HSM, исходный код.
Аудит: каждый запрос ФСБ логируется (кто, когда, к каким данным) — принцип прозрачности.
Наблюдательный совет: процедуры управления
Состав: Минфин, Минэнерго, Минцифры, ЦБ, ФНС (по 1 представителю). Председатель ротируется ежегодно.

Процедуры:
Ежегодный доклад Правительству — оператор готовит отчёт: хешрейт, выручка, налоги, инциденты. Набл. совет утверждает.
Инициация проверки — любой член совета. Решение: голосование, простое большинство (3 из 5).
Смена оператора (ТЗ §14) — решение набл. совета + одобрение Правительства. Техпроцедура: передача HSM-ключей, миграция БД, DNS-переключение. Срок: 90 дней.
Экстренная остановка — блокировка пула по решению 2+ членов совета. Шары перестают приниматься, выплаты замораживаются, данные сохраняются.

Схема 7 · Инфраструктура SERVERS + SECURITY

«Серверная комната» пула. Сколько серверов, как они защищены от атак и сбоев, кто распределяет нагрузку, и как система сама сообщает о проблемах. На старте — 10 серверов, при росте — до 200+.

🛡DDoS ProtectionQRATOR / CLOUDFLAREL3/L4/L7 защита · Scrubbing
Трафик майнеровSTRATUM V2 / APIДесятки тысяч TCP/WS соединений
🔀Load BalancerL4 / HAPROXYTCP-балансировка · Health checks · Failover · Anycast DNS
🖥Кластер серверовЦОД TIER III+ · 2+ ПЛОЩАДКИ РФHot standby · VPN · ИБП · Дизель-генератор
HATier III+
🔄DR-площадкаDISASTER RECOVERYРезервный ЦОД · Бэкапы · <15 мин
🔥Firewall + WAFПЕРИМЕТР ЗАЩИТЫUFW · iptables · Rate limiter · XSS/SQL injection
🌐Anycast DNSМАРШРУТИЗАЦИЯБлижайший сервер для майнера · Geo-балансировка
🔐VPN / VipNetЗАЩИЩЁННЫЙ КАНАЛГОСТ шифрование · ФСБ/ФНС канал
📊Prometheus + GrafanaМЕТРИКИ И ДАШБОРДЫCPU · RAM · Хешрейт · Латентность · 15 сек
📋ELK Stack / LokiЛОГИ И АУДИТCentralized logs · Полнотекстовый поиск · 5+ лет
🚨AlertmanagerОПОВЕЩЕНИЯTelegram · Email · PagerDuty · SLA 99.9%

Схема 7 · Инфраструктура серверная комната

Аналогия: военная база. DDoS Protection = ПВО. Firewall = КПП. HAProxy = диспетчер. Кластер = гарнизон. DR = запасная позиция. VPN = защищённая связь. Мониторинг = штаб.

  • DDoS Protection (Qrator/Cloudflare) — первый рубеж. Фильтрация L3/L4/L7 атак до сервера. план
  • Load Balancer (HAProxy) — L4-балансировка + Anycast DNS (майнер → ближайший сервер). Health check каждые 5 сек. план
  • Кластер серверов — 2+ площадки ЦОД РФ (152-ФЗ). Tier III+ = uptime ≥99.982%. ИБП + дизель-генератор + охлаждение. план
  • DR-площадка — полная копия, hot standby. RPO <1 мин, RTO <15 мин. план
  • Firewall + WAF — UFW/iptables (порты 22/80/443/3333). WAF: защита от XSS, SQL injection. Rate limiter per IP/кошелёк. UFW есть
  • Anycast DNS — Geo-маршрутизация: майнер в Красноярске → сервер в Красноярске, не в Москве. план
  • VPN / VipNet — защищённый канал ГОСТ для ФСБ/ФНС. план
  • Prometheus + Grafana — метрики каждые 15 сек + красивые дашборды. план
  • ELK Stack / Loki — центральные логи, полнотекстовый поиск, хранение 5+ лет (ФСБ). план
  • Alertmanager — SLA <99.9%, CPU >90%, хешрейт упал → Telegram, email, PagerDuty. план

Поток: трафик → защита → обработка → мониторинг

Интернет → DDoS Protection (фильтрация) → HAProxy (балансировка) → Firewall/WAF → серверы кластера → Prometheus (метрики) → ELK (логи) → Alertmanager (если проблема). Параллельно: WAL-репликация на DR, VPN-канал для ФСБ/ФНС.

⚠ При DDoS-атаке Qrator/Cloudflare поглощают трафик. При отказе ЦОД — DNS failover на DR за <15 мин. Физическая инфра: ИБП (30 мин) → дизель-генератор (48 ч) → перевод нагрузки.

Почему HAProxy, а не nginx/Envoy?
nginx — для HTTP (L7), HAProxy — для TCP Stratum (L4): нет overhead парсинга.
Envoy — Service Mesh, overkill для нашей топологии.
HAProxy — золотой стандарт L4.

Prometheus vs Datadog/New Relic: облачные = дорого + данные за рубеж (152-ФЗ). Prometheus — бесплатный, локальный.
SLA 99.9%: что входит и как считаем
Состав SLA 99.9% (≤ 8.76ч downtime/год):
Stratum uptime: пул принимает шары. Downtime = ни один Stratum-сервер не доступен.
Share latency: ответ на шару <5 мс (P95). >50 мс = деградация.
Payout delay: выплата в течение 2ч после 100 подтверждений.
API uptime: дашборд доступен.

Что НЕ входит в SLA: плановые обновления (до 15 мин, уведомление за 24ч), DDoS-атаки >100 Gbps, форс-мажоры (отключение интернета в регионе).
Мониторинг: Prometheus считает uptime каждую минуту. Алерт при SLA < 99.95%.
Журналирование и аудит
Что логируется:
• Подключения: IP, время, username, geo, результат KYC/FNS
• Шары: hash, difficulty, worker_id, timestamp, valid/rejected
• Выплаты: txid, сумма, адрес, НДФЛ
• Admin-действия: кто, что, когда (принцип четырёх глаз)
• Доступ ФСБ/ФНС: запрос, ответ, оператор

Куда: ELK Stack (Elasticsearch + Logstash + Kibana). Hot: 30 дней (SSD). Warm: 1 год (HDD). Cold: 5+ лет (S3/MinIO).
Доступ: Админ — все логи. Майнер — только свои. ФСБ — все через защищённый API. ТЗ §20.
DR-тестирование: план учений
Периодичность: ежеквартально.

Сценарии:
Потеря ЦОД: DNS failover на DR-площадку. Цель: RTO <15 мин, RPO <5 мин.
Потеря БД: восстановление из WAL-бэкапа на реплику. Цель: <30 мин.
Потеря Bitcoin Core: переключение на pruned backup. Шары копятся в Share Queue.
Компрометация HSM: экстренная ротация ключей. Выплаты заморожены до подтверждения.

Отчёт: по итогам каждого учения — документ с фактическими RTO/RPO + план улучшений.
Zero-downtime deploy: обновление без отключения
Стратегия: Rolling Update.
1. Новая версия деплоится на 1 из N серверов
2. HAProxy выводит старый инстанс из балансировки (drain connections, ~30 сек)
3. ASIC переподключаются к оставшимся серверам (встроенный reconnect)
4. Обновлённый сервер проходит health check → возвращается в балансировку
5. Повторяется для следующего сервера

Для ASIC: Stratum V2 имеет встроенный reconnect. При разрыве TCP — ASIC подключается к следующему серверу за 2–5 сек. Потеря шар: 0 (шары в Share Queue).
Для API: аналогично, nginx upstream health check.
Сколько серверов, балансировщиков, каналов? (Capacity Plan)
Конкретные цифры по этапам масштабирования:

Этап 1 — Запуск (до 1000 майнеров / 5000 воркеров):
• Stratum-серверы: 2 шт (active-active) — 16 vCPU, 32 ГБ RAM, 1 Гбит/с
• Load Balancer: 1 шт HAProxy (primary) + 1 шт keepalived (VIP failover)
• API-серверы: 2 шт (egnmp-api за nginx, 4 vCPU, 8 ГБ)
• PostgreSQL: 1 мастер + 1 реплика (8 vCPU, 32 ГБ, SSD 500 ГБ)
• Redis: 1 шт (4 ГБ RAM) — Sentinel для автофейловера
• Bitcoin Core: 1 полная нода + 1 pruned (8 vCPU, 16 ГБ, SSD 1 ТБ)
• Мониторинг: 1 шт (Prometheus + Grafana + Loki, 8 vCPU, 16 ГБ)
Итого: 10 серверов, 1 ЦОД + 1 VPS резервная площадка
⚠ ТЗ §20 требует ≥2 ЦОД. Допустимое отклонение в пилотном режиме (ЭПР): VPS backup в другом дата-центре, DR-переключение <15 мин. Полные ≥2 ЦОД — с Этапа 2.

Этап 2 — Рост (до 10 000 майнеров / 50 000 воркеров):
• Stratum: 4 шт (32 vCPU каждый)
• Load Balancer: 2 шт HAProxy (active-passive)
• API: 3 шт
• PostgreSQL: 1 мастер + 2 реплики + ClickHouse 1 шт
• Redis: 3 шт (кластер с Sentinel)
• Bitcoin Core: 2 полные ноды + 1 pruned
• Мониторинг: 2 шт
• DR-площадка: минимальная копия (5 серверов)
Итого: ~20 серверов, 2 ЦОД

Этап 3 — Масштаб (>50 000 воркеров, целевой):
• Stratum: 8–12 шт за Anycast DNS по 3 регионам
• Load Balancer: 3×2 шт (пара на каждый PoP)
• API: 6 шт (по 2 на PoP)
• PostgreSQL: 1 мастер + 3 реплики + ClickHouse кластер (3 шт)
• Redis: 6 шт (Cluster mode)
• HSM: 2 шт (primary + backup)
• ELK/Loki: 3 шт
• DR: полная копия (15 серверов)
Итого: ~50 серверов, 3+ ЦОД (Москва, Красноярск, Мурманск)

Этап 4 — Стратегический (20% мирового хешрейта, ~130 EH/s, >500K воркеров):
• Stratum: 50+ шт за Anycast DNS по 5+ регионам РФ
• Load Balancer: 10+ пар
• API: 20+ шт
• PostgreSQL: кластер Citus (горизонтальное шардирование) или YDB
• Kafka: кластер 10+ брокеров
• DR: полная копия в каждом регионе
Итого: 200+ серверов, 5+ ЦОД (Москва, Красноярск, Мурманск, Тюмень, Хабаровск)

Пропускная способность 1 Stratum-сервера: ~15 000 одновременных TCP-соединений, ~15 000 шар/сек (Rust + Tokio + epoll). Bottleneck — PostgreSQL write (решается батчингом + Write-Ahead Queue).
IDS/IPS, CI/CD, устойчивость при отключении от интернета
IDS/IPS (обнаружение и предотвращение вторжений):
Suricata — open-source IDS/IPS на каждом ЦОД. Анализ трафика в реальном времени. Сигнатуры атак + ML-аномалии. Интеграция с SIEM (ELK). Блокировка подозрительного трафика до HAProxy. Требование ТЗ §20.

CI/CD:
GitLab CI → сборка Rust → тесты → Docker-образ → registry → деплой по тегу. Этапы: lint (clippy) → test → build (cross-compile linux) → docker push → deploy (ansible/k8s). Время pipeline: ~5 мин. Требование ТЗ §10.

Суверенный рунет (устойчивость при отключении от глобального интернета):
Майнинг продолжит работать — Bitcoin-ноды внутри РФ синхронизируются друг с другом. Проблема: нет новых блоков из мира = наш блокчейн отстанет. Решение: спутниковый канал Blockstream Satellite (приём блоков через спутник, без интернета). Резерв: VPN через дружественные страны (Китай, ОАЭ). Шары принимаются и учитываются локально, выплаты — при восстановлении связи. Требование ТЗ §20.
Монолит → Микросервисы: план перехода
Сейчас (MVP): все модули собраны в один бинарник egnmp-demo (~8 МБ). Запускается одной командой. SQLite внутри. Это сознательное решение для скорости разработки и демонстрации.

Код уже готов к разделению: 6 крейтов (egnmp-core, egnmp-pool, egnmp-api, egnmp-share-accounting, egnmp-payout, egnmp-demo) — каждый со своей зоной ответственности.

Переход к микросервисам (~4 часа работы):
• Каждому крейту добавить свой main.rs — отдельный бинарник
• Прямые вызовы функций → Kafka producer/consumer
• Docker Compose для оркестрации
• Если один модуль упал — остальные продолжают работать

Когда переходить: при появлении первых реальных майнеров (>100 подключений). До этого монолит = быстрее, дешевле, проще.
ЭПР: конвертация BTC → рубли, госкриптобиржа, ЦФА
Экспериментальный правовой режим (ЭПР) — законодательная песочница для операций с криптовалютой (ФЗ «О ЭПР в сфере цифровых инноваций»).

3 направления использования BTC, добытого пулом:
Продажа за рубли — через оператора обмена (госкриптобиржа). Майнер получает рубли на банковский счёт. Курс: биржевой, без спреда. НДФЛ удерживается автоматически.
Оплата импорта — BTC для внешнеторговых контрактов через банк-агент. Обход долларовых ограничений. Контрагент в дружественной стране получает BTC напрямую.
ЦФА и токены — производные активы, обеспеченные хешрейтом или электроэнергией. Инвестор покупает «токен мощности» = право на долю добычи.

Техническая интеграция: API-модуль exchange-gateway в egnmp-api. Маршрут: выплата FPPS → опционально → exchange-gateway → госкриптобиржа API → рубли на счёт. Требование ТЗ §32.

Схема 8 · Энергетика ENERGY MODULE

Как пул управляет электричеством. Где можно майнить, а где запрещено. Сколько электричества может потреблять каждый майнер. Как снижать нагрузку на сеть в пиковые часы и куда девать тепло.

ЕГНМП — ЯдроЭНЕРГОМОДУЛЬТелеметрия · Интеграция МРСК
Demand ResponseАГРЕГАТОР СПРОСАСнижение хешрейта по команде МРСК при пиках
МРСКAPI
📏Лимиты потребленияПП 14696000 кВт·ч/мес для физлиц без ИП · Автоконтроль
🚫Запрет регионовПП 1869Дагестан · Чечня · Ингушетия · Иркутск (зима)
🕐Тарифная сеткаДИФФЕРЕНЦИАЦИЯНочные/дневные тарифы · Оптимизация
🌡Утилизация теплаТЕПЛОСНАБЖЕНИЕОтопление теплиц · Жилые кварталы
🗺Приоритетные регионыПРОФИЦИТ ЭНЕРГИИКрасноярск ГЭС · Мурманск АЭС · Магадан

Схема 8 · Энергетика электростанция

Аналогия: умный дом. Demand Response = термостат (снижает нагрузку по команде). Лимиты = автомат в щитке. Тарифы = дневной/ночной счётчик. Утилизация тепла = батарея отопления от майнера.

  • Энергомодуль — подсистема ядра: мониторинг потребления каждого майнера + интеграция с МРСК.
  • Demand Response — при пиковой нагрузке МРСК → сигнал → пул снижает хешрейт → пик погашен → восстановление. Майнеры получают скидку. план
  • Лимиты (ПП 1469) — физлица без ИП: до 6000 кВт·ч/мес (~2 Antminer S21). Превышение → автоблокировка. план
  • Запрет регионов (ПП 1869) — 10 регионов РФ до 2031: Дагестан, Чечня, Ингушетия, КБР, КЧР, С. Осетия, ДНР, ЛНР, Запорожская, Херсонская. план
  • Тарифная сетка — ночной тариф в 2–3× дешевле. Авто-увеличение хешрейта ночью → экономия 30–40%. план
  • Утилизация тепла — ASIC → отопление теплиц, жилых кварталов. В Скандинавии работает, в РФ — пилоты. план
  • Приоритетные регионы — профицит: Красноярск ГЭС (~7 ГВт), Мурманск АЭС, Тюмень, Магадан. Дешёвая энергия без потребителя.

Поток: МРСК → лимиты → контроль

МРСК → лимиты в ядро → рассылка майнерам → мониторинг в реальном времени → превышение → предупреждение → блокировка. При пике: сигнал МРСК → снижение difficulty → потребление падает → восстановление.

⚠ Если связь с МРСК потеряна — ядро применяет последние известные лимиты. Если майнер превысил лимит и не среагировал на предупреждение за 15 мин — автоматическое отключение от пула.

Зачем energy management в пуле?
Без него пул — просто нагрузка на сеть, которую государство ограничит. С Demand Response пул = полезный элемент инфраструктуры: балансирует сеть, утилизирует избыточную генерацию, отапливает здания. Стратегическое преимущество при лицензировании.
Сезонные ограничения и подробности утилизации тепла
Сезонные ограничения (зима):
Иркутская обл., Бурятия, Забайкалье — зимой майнинг ограничен или запрещён (дефицит мощности в отопительный сезон). Пул автоматически блокирует подключения из этих регионов с 1 ноября по 31 марта (конфигурируемые даты). ТЗ §36.

Утилизация тепла — как это работает:
ASIC выделяет ~3.5 кВт тепла = 1 радиатор отопления. Ферма из 100 устройств = 350 кВт = отопление 10-этажного дома.
Теплицы — уже работает в Норвегии (Genesis Mining + теплицы). В РФ — пилот в Красноярске.
Жилые кварталы — иммерсионное охлаждение (ASIC в жидкости) → теплообменник → горячая вода в батареи. Пилот: Мурманск и Норильск.
Сушильные камеры — сушка древесины, зерна. В Канаде уже применяется (MintGreen → отопление 63 000 домов в Ванкувере).

В пуле: энергомодуль собирает телеметрию температуры и мощности каждого майнера. Фермы с утилизацией тепла получают скидку на комиссию (0.5% вместо 1.5%) — стимул к ESG-майнингу. ТЗ §40.

Схема 9 · Тестирование QA + CHAOS

«Контроль качества» пула. 8 типов тестов — от проверки каждой функции до хаос-инжиниринга (убиваем серверы намеренно). Нагрузочное тестирование — не фиксированные уровни, а ползунки с плавной регулировкой.

CI/CD PipelineGITLAB CI + CARGO TESTcargo test → clippy → audit → build → deploy
CIAuto
ФункциональноеUNIT + INTEGRATIONcargo test · >80% покрытие · FPPS · НДФЛ · KYC
📈НагрузочноеLOAD + STRESSПолзунки: 1→50K воркеров · Spike ×10
🔒БезопасностьPENTEST + SASTOWASP · cargo audit · фаззинг · Bug Bounty
📋API-контрактOPENAPI 3.0REST · WebSocket · Schema · Backward compat
🧪КроссплатформенноеASIC + БРАУЗЕРЫ24 комбинации: 3×4×SV1/SV2
👥ЮзабилитиUX TESTING5 бета-майнеров · Метрики · Клики
💥Хаос-инжинирингCHAOS ENGINEERINGУбиваем PostgreSQL · Redis · ЦОД
Комплаенс-тестыKYC / AML / НДФЛФНС mock · Чёрные списки · 5 ступеней
🔍Мониторинг тестовОТЧЁТЫПокрытие · Регрессия · Тренды

Схема 9 · Тестирование контроль качества

Аналогия: ОТК на заводе. Перед тем как продукт попадёт на полку, он проходит 8 проверок: от работоспособности до краш-теста. CI/CD — конвейер, который гоняет тесты автоматически.

  • CI/CD Pipeline — GitLab CI. Каждый коммит: cargo test → clippy → cargo audit → build → deploy. Если тест упал — код не деплоится. базовый
  • Функциональное — unit + integration. Покрытие >80%. Тесты: валидация шар, FPPS-расчёт, coinbase TX, НДФЛ, geo-blocking. MVP
  • Нагрузочное — ползунки: 1→50K воркеров, 1→100K шар/сек, Spike ×10. Цель: найти точку перелома. MVP
  • Безопасность — внешний аудит кода, SAST (cargo audit), фаззинг Stratum-порта, Bug Bounty. план
  • API-контракт — OpenAPI 3.0 + автотесты (запрос → ожидаемый JSON). Backward compat: /v1/ не ломается при /v2/. план
  • Кроссплатформенное — матрица: 3 производителя ASIC × 4 прошивки × SV1/SV2 = 24 комбинации. + браузеры: Chrome, Firefox, Safari, Edge. план
  • Юзабилити — 5 реальных майнеров: «зарегистрируйся», «подключи ASIC», «проверь выплату». Метрики: время, клики, отказы. план
  • Комплаенс-тесты — KYC: валидный/невалидный/чёрный список. AML: чистый/миксер/санкции. НДФЛ: 5 ступеней + курс ЦБ. план
  • Хаос-инжиниринг — намеренно ломаем: PostgreSQL, Redis, Bitcoin Core, ЦОД. Проверяем: failover, reconnect, DR. план
  • Отчёты — покрытие кода (tarpaulin), регрессионные тренды, история прогонов в Grafana. план

Поток: код → продакшн

git push → GitLab CI → unit-тесты (60 сек) → clippy + audit → build → нагрузочный (5 мин, ползунок до 10K) → API-контракт → staging → продакшн (rolling update).

⚠ Если любой тест падает — пайплайн останавливается, код не попадает в продакшн. Уведомление в Telegram + email.

Нагрузочное: ползунки вместо уровней
Не 3 фиксированных уровня, а плавная регулировка:
Параметры, регулируемые в реальном времени через дашборд:
Воркеры: ползунок 1 → 50 000
Шары/сек: ползунок 1 → 100 000
Difficulty / Latency / Rejection rate: ползунки
Spike mode: кнопка «×10 на 30 сек»

Это позволяет найти точку перелома — не угадывая, а плавно поднимая нагрузку до деградации.
Хаос-инжиниринг: что ломаем и зачем
Сценарии (ежеквартально):
kill PostgreSQL → шары в буфере, failover на реплику <30 сек
kill Bitcoin Core → переключение на pruned backup
kill Redis → кеш пересобирается из PostgreSQL за 30 сек
Обрыв сети → ASIC reconnect 2–5 сек, 0 потерянных шар
Отключение ЦОД → DR-переключение <15 мин

Netflix: «Если система сломается — пусть это будет в понедельник днём, а не в пятницу ночью».
Метрики качества
Целевые показатели:
Покрытие кода: >80% бизнес-логики, >60% общее
Время прогона CI: <5 мин (без нагрузочного)
Регрессия: 0 новых падений после каждого релиза
MTTR (Mean Time To Recovery): <30 мин при любом сбое
Bug density: <0.5 баг/1000 строк кода (норма для fintech)