Как работают смарт-контракты в децентрализованных казино
Зачем смарт-контракты казино
Смарт-контракты превращают «доверие к оператору» в доверие к коду:- Неизменяемые правила: house edge, лимиты, порядок выплат — в коде и в цепочке.
- Проверяемость исходов: через commit/reveal или VRF.
- Прозрачные деньги: депозиты, банкролл, джекпоты и выплаты — событиями on-chain.
- Композиционность: пулы ликвидности, DAO, NFT, реферальные и кросс-игровые механики.
Базовая архитектура децентрализованного казино
Компоненты:1. Game контракт(ы) — логика ставок и расчётов (слоты/рулетка/косты/краш и т. п.).
2. Bankroll/Трезори — контракт пула ликвидности, из которого финансируются выплаты (LP-пайщики получают долю профита).
3. RNG модуль — VRF-адаптер или commit/reveal с верификацией.
4. Accounting — учёт фи, джекпотов, реферальных, лимитов ставок.
5. Access/Guard — роли (OWNER, PAUSER, UPGRADER), timelock, мультисиг.
6. DAO/Гавернанс (опционально) — изменения параметров и апгрейды.
7. Оракулы/Интеграции — курсы, спорт-исходы, лимиты газ/сетей.
8. Фронт/релейер — абстракция аккаунтов, meta-tx, подписания EIP-712.
Поток денег (упрощённо):- `deposit()` → токены/стейблкоины поступают в кошелёк игрока/контракта.
- `placeBet()` → ставка уходит в Game, фиксируется событием; часть — в hold/пул.
- `settleRound()` → приходят случайность/исход; контракт рассчитывает payout; `payout()` перечисляет выигрыш.
- Фи/edge → на трезори/LP/реф-пулы по установленной формуле.
Случайность: VRF и commit/reveal
VRF (Verifiable Random Function)
`requestRandomness(seed)` → провайдер возвращает `(random, proof)`.
Контракт проверяет доказательство и использует `random` в расчёте.
Плюсы: прозрачность без доверия оператору; минусы: стоимость, зависимость от поставщика.
Commit/Reveal
Маппинг без смещения: rejection sampling вместо `rng % N`.
Как считается раунд на смарт-контракте
1. Приём ставки
Проверки: лимиты (`min/max`), баланс пула (`maxPayout ≤ bankroll k`), пауза/maintenance, K-фактор волатильности.
Фиксация параметров: `betId, player, amount, roundId, odds/table, timestamp`.
2. Получение случайности
VRF callback или `reveal`. Внутри — нормализация RNG и маппинг в исход.
3. Расчёт выигрыша
Формула выплат (таблица коэффициентов, house edge).
Обновление трезори/джекпота, события `RoundSettled(betId, outcome, payout)`.
4. Выплата
`payout(player, amount)` — напрямую из контракта.
Лимиты/таймлоки для крупных сумм, анти-MEV защита (см. ниже).
Банкролл и ликвидность
LP-пул: участники добавляют ликвидность, получают LP-токены; профит/убыток — пропорционально доле.
Риск-менеджмент: `maxExposure` на игру/раунд, анти-вэйл лимиты, динамический `house edge` при низкой ликвидности.
Джекпоты: отдельный суб-пул с прозрачной формулой пополнения и триггерами выдачи.
Комиссии, токеномика и реферальные
Edge/fee split: часть идёт в трезори, часть — LP, часть — DAO/стейкинг/реф-пул.
Вестинг и выкуп: профит может выкупать токен, сжигать или распределять стейкерам.
Реферальные: on-chain реестры/промокоды, событийная прозрачность.
Управление (DAO) и параметры
Параметры: edge, лимиты ставок, whitelists токенов, включение/выключение игр.
Механизм: timelock + мультисиг + голосование токенхолдеров.
Апгрейды: UUPS/Proxy с ограждениями (timelock, пауза, план миграции).
Безопасность: на что смотреть в первую очередь
1. Аудит/баг-баунти: сторонние аудиты, открытый исходный код, покрытие тестами инвариантов.
2. Upgradability-риски: кому доступен `upgrade`? есть ли timelock и «пауза»?
3. MEV и фронт-ран:- Коммит-ставки (скрытые), приватные мемпулы/релееры, минимизация информации до settle.
- Отложенные выплаты крупным траншем, random delay/каскад.
- 4. RNG-целостность: проверка VRF-доказательств, политика при таймауте VRF, невозможность «подбирать» сид.
- 5. Лимиты экспозиции: защита пула от банкротства, `maxPayout`, лимиты per tx / per block / per address.
- 6. Fail-safe: `PAUSER`, аварийное замораживание пулов, планы возврата средств.
- 7. Роли и ключи: мультисиг, ротация, off-chain хранение в HSM/серемониях.
UX и производительность
L2 и комиссионные: развертывание на rollup (Optimistic/ZK), батчинг, использование blob/DA для дешёвых логов.
Абстракция аккаунтов (AA): meta-tx, paymaster оплачивает газ; соц-восстановление кошелька.
Кросс-чейны: мосты/агрегаторы; безопасность мостов критична.
Кнопка «Проверить честность»: генерация отчёта (inputs → RNG → outcome) и ссылка на блок-эксплорер.
Оракулы и внешние данные
Спорт/реал-мир: m-из-n подписи, финализация через таймлок; анти-rollback логи (блок-якоря).
FX/курсы: источники верифицируются; отравленные цены → стоп/пауза.
Статус сети: переключение параметров при высыхании ликвидности/росте газа.
Комплаенс и ответственность
KYC/KYT: селективные доказательства/якоря; санкционные списки — вне цепи, но решения и политики — прозрачно логируются.
RG (Responsible Gaming): лимиты депозитов/ставок/сессий в смарт-контрактах или политиках фронта; журналы отказов и пауз.
Гео-ограничения: на фронте + списки разрешённых токенов/сетей.
Примеры событий и интерфейсов (схема)
События:
event BetPlaced(betId, player, amount, roundId, table);
event RandomRequested(roundId, requestId);
event RoundSettled(betId, outcome, payout, houseEdge, rngProof);
event Payout(player, amount, betId);
event Jackpotted(roundId, amount, winner);
Критичные view-функции:
getRules(table) -> odds/limits/edge getRound(roundId) -> status, commitHash/vrfProof, deadline getBankroll() -> liquidity, maxPayout, utilization getPlayerBets(player) -> history, pending
Анти-паттерны
RNG через `blockhash/timestamp` — предсказуемо/манипулируемо.
`rng % N` без rejection sampling — смещение вероятностей.
Upgradable прокси без timelock/мультисигов — «тумблер в одних руках».
Отсутствие лимитов экспозиции — риск обнулить пул одной ставкой.
Выплаты «в лоб» без анти-MEV — фронт-ран/сендвич.
Хранение PII on-chain — необратимая утечка.
Единый оператор VRF/оракула без резервов — SPOF.
Смешивание игровых логов и финансовой OLTP вне контрактов — расхождения/споры.
Чек-лист внедрения смарт-контрактов казино
Архитектура и деньги
- Разделены Game, Bankroll, RNG, DAO; понятные интерфейсы и события.
- Лимиты `maxPayout`, экспозиции по играм/адресам, джекпоты изолированы.
RNG и честность
- VRF с верификацией/таймаут-политикой или commit/reveal с меркли-батчами.
- Rejection sampling, фиксированная `mappingVer`, публичный скрипт проверки.
Безопасность
- Аудит(ы), баг-баунти, инвариант-тесты.
- Timelock+мультисиг+pauser, план DR/возврата средств.
- Анти-MEV (commit-bets/приватные релееры), защита от реентранси/манипуляций.
Гавернанс/апгрейды
- Прозрачные процедуры изменения параметров, миграции с голосованием.
- Документированные версии (`contractVer`, `rngAlgo`, `mappingVer`).
UX/стоимость
- L2/батчинг, AA/meta-tx, «Verify fairness» в UI.
- Гид по комиссиям/сетям, мостам и рискам.
Комплаенс
- Политики RG/KYC/KYT, журналы решений, гео-ограничения.
- Отчётность и экспорт событий для аудита.
Смарт-контракты делают казино прозрачным и предсказуемым: правила и деньги живут в коде, случайность проверяется, а выплаты следуют запрограммированным процедурам. Успех — в грамотной архитектуре (Game/Bankroll/RNG/DAO), строгой безопасности (аудит, timelock, анти-MEV), работающем UX (L2, AA) и уважении к комплаенсу. Тогда «игра по честным правилам» — не лозунг, а неизменяемая реальность, которую любой может проверить.