Обзор архитектуры
Шестиуровневая топология
┌──────────────────────────────────────────────────────────┐
│ L0 — Telegram Bot API │
│ • Bot framework (Telegraf, Node) │
│ • WebApp UI (Next.js, TON Connect) │
│ • Inline-клавиатуры + запуск WebApp │
├──────────────────────────────────────────────────────────┤
│ L1 — Round Engine (движок раундов) │
│ • Детерминированный конечный автомат (Go) │
│ • Фазы: Announce → Commit → Reveal → Settle │
│ • Верификация Commit-Reveal │
│ • Построение Merkle Root │
├──────────────────────────────────────────────────────────┤
│ L2 — Oracle Aggregator (агрегатор оракулов) │
│ • Хранилище вопросов (Postgres + IPFS) │
│ • Конвейер ансамбля LLM (Claude + GPT + Gemini) │
│ • Адверсариальный дебиасер │
│ • Получатель маяка DRAND │
│ • Опрос TON-VRF │
├──────────────────────────────────────────────────────────┤
│ L3 — Identity Layer (уровень идентификации) │
│ • Конечный автомат Trust Ladder L0–L7 │
│ • Адаптеры Worldcoin / PoH / Gitcoin Passport │
│ • Интеграция KYC-провайдера (Sumsub) │
│ • Байесовский обновлятор Reputation Score │
├──────────────────────────────────────────────────────────┤
│ L4 — Ad-Revenue Settlement (расчёт рекламной выручки) │
│ • AdMob SDK (мобильное приложение + WebApp) │
│ • Telegram Ads SDK │
│ • Приёмник обратных вызовов AdMob SSV │
│ • zk-SNARK prover (SP1, Фаза 2) │
├──────────────────────────────────────────────────────────┤
│ L5 — TON Settlement (расчёт в сети TON) │
│ • Контракт $POP Jetton (FunC) │
│ • Контракт-обёртка Vesting │
│ • Контракт фиксации Merkle Root для Round │
│ • Контракт разрешения споров │
│ • Контракты управления DAO (Фаза 3) │
└──────────────────────────────────────────────────────────┘Поток данных
Пользователь нажимает «Играть» в Telegram
↓
L0: WebApp открывается, запрашивает вход в Round
↓
L4: Показ рекламы (AdMob), ожидание обратного вызова SSV
↓
L4: SSV подтверждён → начисление POP (баллов)
↓
L1: Пользователь получает вопрос Round (от L2)
↓
L1: Пользователь фиксирует c_i в фазе Commit
↓
L1: Пользователь раскрывает (s_i, b_i) в фазе Reveal
↓
L1: Round Engine вычисляет большинство, строит Merkle Root
↓
L3: Эффективный вес = α × r_i применяется
↓
L1: Prize Pool (призовой пул) распределяется среди выживших
↓
L5: Merkle Root фиксируется в TON (пакетно, каждые 24 часа)
↓
Пользователь видит начисление POP и результат Round в WebAppБюджет задержек
| Фаза | Цель | Факт (P50) | Факт (P95) |
|---|---|---|---|
| Announce | 5 с | 4,2 с | 4,8 с |
| Commit | 30 с | 29,5 с | 30 с |
| Reveal | 15 с | 14,7 с | 15 с |
| Settle | 10 с | 7,3 с | 9,8 с |
| Round всего | 60 с | 55,7 с | 59,6 с |
Фаза Settle включает построение и верификацию Merkle Root; ончейн-фиксация в TON выполняется пакетно с периодичностью 24 часа.
Инфраструктура
- Хостинг: Cloudflare Workers + R2 + KV (распределённые на границе сети, низкая задержка).
- Базы данных: Postgres (основная), Redis (состояние Round, эфемерные данные), R2 (артефакты Round, архив).
- Round Engine: бинарный файл Go без сохранения состояния; горизонтально масштабируется за счёт anycast Cloudflare.
- TON-клиент: ton-core SDK; подключения к полным узлам через TonAPI Cloud.
- Наблюдаемость: OpenTelemetry → Grafana Cloud; Sentry для ошибок на стороне клиента.
Компоненты с открытым исходным кодом
- Round Engine: MIT,
github.com/cashpop-protocol/round-engine - WebApp: MIT,
github.com/cashpop-protocol/webapp - Смарт-контракты (после TGE): MIT,
github.com/cashpop-protocol/contracts - Конвейер сборки хранилища вопросов: исходный код доступен,
github.com/cashpop-protocol/reservoir
Полный стек CashPop будет доступен для самостоятельного развёртывания после TGE: любой оператор сможет запустить форк-инстанс, однако выпускать $POP без одобрения DAO невозможно.