Общая карта всего пула — как план здания с видом сверху. Сверху — майнеры (клиенты), в середине — наша система, снизу — государство и электросети. Каждый блок — это отдельная вкладка с подробностями.
Читайте сверху вниз, по три колонки. Стрелки = направление данных. Цвет стрелки = домен-источник.
Протокол → Ядро → API → Выплаты (основной поток), затем Комплаенс → Гос. (контроль), затем Инфра → Энергетика (обеспечение).
Как майнинговое оборудование «разговаривает» с пулом. Как почта: устройство отправляет «письма» с результатами работы, пул проверяет их и отправляет найденный блок в сеть Биткоина. Всё зашифровано.
ASIC → Noise → Stratum V2 → Share Queue → Share Validator → Block Assembler → Block Submitter → Bitcoin Core → блокчейн.
⚠ Если Bitcoin Core недоступен — шары копятся в Share Queue. Block Submitter переключается на pruned backup. При восстановлении — блок отправляется с задержкой, шары не теряются.
«Мозг» пула и его «память». Мозг — это правила (кто сколько намайнил, кому платить). Память — 5 разных хранилищ: сейф для денег, быстрый блокнот, архив за 10 лет, склад документов, несгораемый сейф для ключей.
Шара → egnmp-core → PostgreSQL (надёжно) + ClickHouse (аналитика) + Redis (кеш). Логи → S3 (архив 5+ лет). Ключи → HSM (никогда не покидают модуль).
⚠ Если Redis упал — кеш пересоберётся из PostgreSQL за ~30 сек. Если HSM недоступен — новые блоки не подписываются (fail-safe, средства в безопасности).
«Лицо» пула — через что люди общаются с системой. Майнер смотрит свою статистику и выводит деньги. Администратор управляет пулом. Госорганы получают отчёты по защищённому каналу. У каждого — свой «вход».
Браузер → nginx (TLS, rate limit) → egnmp-api (JWT-проверка) → PostgreSQL/Redis → JSON в браузер. + WebSocket для real-time: новые блоки, хешрейт, статус воркеров — моментально.
⚠ При сбое egnmp-api nginx возвращает 502. Решение: несколько инстансов за балансировщиком. → Схема 7
Как майнер получает деньги. Пул считает, кто сколько работал, вычитает комиссию и отправляет биткоины напрямую на кошелёк майнера. Пул не хранит чужие деньги ни секунды. Также описано, как платить майнерам каждый день, пока пул ещё маленький.
Шары → учёт → каждые ~10 мин (найден блок) → FPPS считает доли → Payout Engine → coinbase TX → BTC напрямую на кошельки. Минимальный порог: 0.001 BTC. Интервал обработки: 1 час, 100 подтверждений.
⚠ Если блок-сирота (orphan) — 100 подтверждений защищают: выплата только после 100 блоков. Если Bitcoin Core недоступен при выплате — pending очередь, отправится при восстановлении.
«Паспортный контроль» пула. Прежде чем начать майнить, каждый проходит проверку: подтверждение личности через Госуслуги, проверка кошелька на связь с мошенниками, и проверка — не из запрещённого ли региона.
Заявка → ЕСИА → KYC (документы + реестр ФНС) → AML (BTC-адрес через Chainalysis) → Geo-blocking (регион OK?) → допуск. Далее мониторинг 24/7.
⚠ Если Chainalysis недоступен — новые регистрации приостанавливаются (fail-closed). Существующие майнеры продолжают работать. Ложный positive AML → ручная проверка комплаенс-офицером.
Как пул отчитывается перед государством. Налоговая получает отчёты о доходах, ФСБ — доступ к логам, Росфинмониторинг присылает «чёрные списки» террористов. Всё по защищённому каналу.
Подключение: ядро → ФНС (ИНН в реестре?) → да/нет. Выплата: ядро → НДФЛ → BTC на кошелёк → данные в ФНС. Параллельно: Минэнерго → «снизить на 30%» → demand response.
⚠ Если ФНС API недоступен — регистрация новых майнеров приостанавливается. Выплаты существующим продолжаются (данные кешируются). Отчёты Росфинмониторинга буферизуются до восстановления.
«Серверная комната» пула. Сколько серверов, как они защищены от атак и сбоев, кто распределяет нагрузку, и как система сама сообщает о проблемах. На старте — 10 серверов, при росте — до 200+.
Интернет → DDoS Protection (фильтрация) → HAProxy (балансировка) → Firewall/WAF → серверы кластера → Prometheus (метрики) → ELK (логи) → Alertmanager (если проблема). Параллельно: WAL-репликация на DR, VPN-канал для ФСБ/ФНС.
⚠ При DDoS-атаке Qrator/Cloudflare поглощают трафик. При отказе ЦОД — DNS failover на DR за <15 мин. Физическая инфра: ИБП (30 мин) → дизель-генератор (48 ч) → перевод нагрузки.
Как пул управляет электричеством. Где можно майнить, а где запрещено. Сколько электричества может потреблять каждый майнер. Как снижать нагрузку на сеть в пиковые часы и куда девать тепло.
МРСК → лимиты в ядро → рассылка майнерам → мониторинг в реальном времени → превышение → предупреждение → блокировка. При пике: сигнал МРСК → снижение difficulty → потребление падает → восстановление.
⚠ Если связь с МРСК потеряна — ядро применяет последние известные лимиты. Если майнер превысил лимит и не среагировал на предупреждение за 15 мин — автоматическое отключение от пула.
«Контроль качества» пула. 8 типов тестов — от проверки каждой функции до хаос-инжиниринга (убиваем серверы намеренно). Нагрузочное тестирование — не фиксированные уровни, а ползунки с плавной регулировкой.
git push → GitLab CI → unit-тесты (60 сек) → clippy + audit → build → нагрузочный (5 мин, ползунок до 10K) → API-контракт → staging → продакшн (rolling update).
⚠ Если любой тест падает — пайплайн останавливается, код не попадает в продакшн. Уведомление в Telegram + email.