Разработка админ-панели крипто-казино
Админ-панель крипто-казино — это не просто CRUD для контента. Это операционный центр, где ошибка в конфигурации означает либо финансовые потери (некорректный RTP), либо регуляторные риски (неверный учёт выплат), либо уязвимости ликвидности (неправильно выставленные лимиты). Сложность в том, что система работает в реальном времени с реальными деньгами и требует надёжности, как у финансовой системы.
Архитектура: разделение on-chain и off-chain логики
Что управляется on-chain
Казино-контракты хранят критические параметры непосредственно в blockchain:
- House edge и RTP (Return to Player) — закреплены в контракте, изменение требует admin транзакции
- Min/max bet лимиты на уровне контракта
- Ликвидность пула — балансы нативных токенов и ERC-20
- Verifiable Random Function (VRF) — Chainlink VRF subscription и callback контракт
- Treasury addresses — куда идут house profits
Изменение любого из этих параметров через admin панель = подписание on-chain транзакции с multisig (Safe{Wallet}). Никаких single-key admin операций для финансово критичных параметров.
Что управляется off-chain
- Игровой контент (описания, изображения, метаданные)
- Промо-акции, бонусные программы (если не on-chain)
- KYC/AML данные пользователей
- Аналитика и отчётность
- Конфигурация фронтенда (доступные игры, лимиты UI)
Эти данные хранятся в PostgreSQL с audit log на каждое изменение. Полная история изменений — требование compliance.
Ключевые модули admin панели
Dashboard в реальном времени
Ключевые метрики, которые операторы мониторят постоянно:
GGR (Gross Gaming Revenue) = Total Bets - Total Payouts
NGR (Net Gaming Revenue) = GGR - Bonuses - Fees
House Edge actual vs. theoretical (расхождение > 2σ = алерт)
Ликвидность пула: текущий баланс / max single bet ratio
VRF fulfillment rate: % запросов выполненных в срок
Active sessions / concurrent bets
Данные агрегируются из двух источников: on-chain events (через WebSocket подписку на ноду или The Graph) и off-chain база данных ставок. Расхождение между ними — красный флаг.
Технически: WebSocket соединение к ноде (eth_subscribe logs) для real-time событий + Redis для агрегации метрик + Chart.js или Recharts для визуализации. Обновление каждые несколько секунд без полной перезагрузки страницы.
Управление ликвидностью
Liquidity management — критичный модуль. Недостаточная ликвидность = невозможность выплатить крупный выигрыш (insolvency risk). Избыточная = неэффективность капитала.
Панель показывает:
| Параметр | Текущее | Предел | Статус |
|---|---|---|---|
| Pool balance (ETH) | 50.3 | min 20 | OK |
| Pool balance (USDC) | 120,000 | min 50,000 | OK |
| Max single bet (ETH) | 1.0 | 5% of pool | OK |
| Pending payouts | 3.2 ETH | — | — |
| VRF pending requests | 2 | max 10 | OK |
Когда pool balance приближается к минимальному порогу — автоматический алерт в Telegram/Slack через webhook. Deposit/withdraw ликвидности через кнопки в UI, каждая операция — это multisig транзакция.
Управление играми и лимитами
Для каждой игры:
- Enable/disable (off-chain флаг для UI, не меняет контракт)
- Min/max bet overrides на уровне игры (если контракт это поддерживает)
- RTP настройки (только через on-chain транзакцию с multisig подтверждением)
- Максимальный multiplier (для crash/dice игр — критичный параметр exposure)
- Геолокационные ограничения (off-chain, на уровне API)
Управление VRF
Chainlink VRF subscription мониторинг — отдельный критический блок. Если LINK на subscription заканчивается — VRF запросы не выполняются, незакрытые ставки зависают. Пользователи не могут получить результат.
Панель VRF показывает:
- Текущий баланс LINK на subscription
- Pending requests count + время ожидания
- Fulfillment history (success rate за 24h/7d)
- Alerting threshold для низкого баланса
- Кнопка «Fund Subscription» — прямой вызов Chainlink Subscription Manager
Пользователи и AML
Поиск пользователей по address. Профиль пользователя:
- История ставок (последние N, с фильтрами)
- Aggregate statistics: total wagered, total won, P&L
- Withdrawal history с tx hashes
- KYC статус (если реализован)
- Risk flags: подозрительно частые максимальные ставки, unusual win rate
Блокировка пользователя — off-chain флаг, который проверяется на API уровне до отправки транзакции в блокчейн. On-chain блокировка обычно не нужна и дороже.
Финансовая отчётность
Автоматическая генерация отчётов:
- Daily P&L по каждой игре и по протоколу в целом
- GGR reconciliation: сумма всех bet events - сумма всех payout events из блокчейна должна совпадать с off-chain учётом
- Провайдер выплаты: отчёт для налоговых органов (если требуется юрисдикцией)
- XLSX/CSV экспорт любого отчёта
Reconciliation — автоматический процесс. Если off-chain база не совпадает с on-chain событиями — немедленный алерт и пауза операций до выяснения причины.
Безопасность и доступ
Role-based access control
| Роль | Права |
|---|---|
| Super Admin | Все операции + управление ролями |
| Finance Manager | Ликвидность, отчёты, VRF funding |
| Game Manager | Конфигурация игр, лимиты (off-chain) |
| Support | Просмотр пользователей, readonly |
| Auditor | Readonly все модули |
Каждое действие логируется: кто, что, когда, IP. Логи иммутабельны (append-only), хранятся отдельно от основной БД.
Multisig для on-chain операций
Любое изменение параметров контракта через admin панель — это предложение транзакции в Safe{Wallet}. Требуется M-of-N подпись (минимум 2-of-3 для production). Admin панель показывает pending proposals, каждый авторизованный ключ подписывает через MetaMask/hardware wallet.
Аварийный pause — единственная операция, которая может быть single-key. Emergency pause контракт (паттерн OpenZeppelin Pausable) должен выполняться немедленно без ожидания multisig.
Технический стек
Frontend: React + Next.js (App Router), TypeScript, Tailwind CSS + shadcn/ui, Recharts для графиков, TanStack Table для таблиц с данными. wagmi + viem для взаимодействия с блокчейном и Safe SDK для multisig.
Backend: Node.js + TypeScript (NestJS или Fastify), PostgreSQL для off-chain данных, Redis для real-time агрегации и кэша, WebSocket для live данных. The Graph subgraph или direct event indexer для on-chain данных.
Infrastructure: Docker + docker-compose, Nginx reverse proxy, alerting через Grafana + PagerDuty или Telegram bot.
Ориентиры по срокам
MVP admin панели с dashboard, управлением лимитами (off-chain) и базовой отчётностью — 1-2 недели. Production-ready с multisig интеграцией, VRF мониторингом, AML модулем, reconciliation и полным audit log — 4-6 недель.







