Stake Engine wallet API flow
Зачем это важно
Даже если RGS не Stake, сама последовательность round lifecycle типовая для индустрии:
authenticateсессии,play(дебет ставки + результат раунда),eventдля восстановления in-progress состояния,end-roundдля финализации payout.
Этот порядок снижает риски рассинхрона между фронтом и кошельком и напрямую связан с result determination / interrupted gambling.
Базовый flow
sequenceDiagram participant FE as Frontend participant RGS as Wallet/RGS FE->>RGS: POST /wallet/authenticate (sessionID) RGS-->>FE: balance + config + round? FE->>RGS: POST /wallet/play (sessionID, amount, mode) RGS-->>FE: balance(after debit) + round(state, multipliers) loop during round animation / user actions FE->>RGS: POST /bet/event (sessionID, event) RGS-->>FE: event ack end alt payout > 0 FE->>RGS: POST /wallet/end-round (sessionID) RGS-->>FE: balance(after payout) else payout = 0 Note over RGS: round auto-completed end
Ключевые operational правила
- Все wallet-endpoints требуют валидный
sessionID; без этого типичная ошибка уровняinvalid session. play.amountобязан лежать в диапазоне и шаге, возвращенных вauthenticate.config.play.modeдолжен соответствовать допустимому mode для конкретной game config.eventиспользуем для восстановления mid-round состояния после disconnect.end-roundвызываем только когда payout ненулевой; zero-payout раунды auto-complete на стороне RGS.
Семантика round при повторной аутентификации
Если в authenticate возвращается round, это сигнал незавершенного payout-процесса:
- фронт сначала отображает результат игроку,
- затем вызывает
end-roundдля финального credit.
Если round = null после недавнего spin, это часто означает, что раунд был zero-payout и уже закрыт автоматически.
Что переносим в нашу архитектуру
- Связка
[[kb/05-rgs/state-recovery|state recovery]]+event-лог как минимальный контракт interruption handling. - Явное разделение debit (
play) и credit (end-round) с idempotent-guard на стороне кошелька. - В UX/telemetry отмечаем ветки:
AUTO_COMPLETED_ZERO_PAYOUTPENDING_PAYOUT_REQUIRES_END_ROUND
Риски интеграции
- Пропуск
end-roundдля payout > 0 ведет к подвисшим выигрышам. - Жестко захардкоженный bet-step ломает часть валютных/юрисдикционных сессий.
- Отсутствие
event-фиксации усложняет доказуемое восстановление раунда.