Yantra Gaming¶
Multi-tenant B2B iGaming Remote Gaming Server (RGS) with a plugin-based
game layer. The engine is game-agnostic; each game ships as a
games/<code>/ workspace implementing the shared GamePlugin contract.
Two plugins in this distribution:
- Ketapola Dice: Sri Lankan LOW/HIGH weighted dice, 2× symmetric payout.
- Crash Minimal: provably-fair crash (pre-cert, validates the plugin seam against a continuous-outcome game).
How the docs are organized¶
Split by certification scope: matching how GLI / BMM / iTech Labs submission packets are actually structured in the industry.
-
Platform (GLI-19 scope)
One copy for the whole RGS. Wallet wire contract, session auth, commit-reveal scheme, operational runbooks.
docs/ -
Per-game cert packets (GLI-11 scope)
One set per plugin, co-located with the plugin source. Game rules, PAR sheet, RNG spec, test vectors.
games/<code>/docs/
Start here¶
- New to the system? Read the Integration guide, 30 minutes to a working session.
- Implementing the wallet callback? Wallet API, Webhook signature, Error codes. Pin your tests against integration test vectors. Machine-readable OpenAPI 3.1 spec.
- Trying it out first? Sandbox environment guide, three ways to exercise the RGS without a production operator wallet.
- Multi-currency or crypto wallet? Currency + FX covers session currency, FX at bet time, stablecoin handling, Brazil SPA constraints.
- Verifying a round offline? Provably fair has a 20-line JS snippet.
- Reviewing the math of a specific game? Jump to that game's PAR sheet, Ketapola, Crash.
- Thinking about production? Architecture, Security, Threat model, Runbook, Observability.
- Submitting for certification? Cert submission checklist enumerates what goes in GLI-11 / GLI-19 packets.
- Writing a new game plugin? See the full engineering plan in B2B_ROADMAP.md.
Principles¶
| Principle | Why |
|---|---|
| Seamless wallet, operator owns balance | RGS never mutates money locally; every bet/win/rollback is a signed call. |
| Idempotency at two levels | requestUuid (HTTP dedupe) + transactionUuid (ledger dedupe). |
Append-only WalletCall audit ledger |
Every outbound call journalled before the HTTP request, updated after. |
| Plugin seam between engine and games | packages/game-contract defines GamePlugin; engine is game-agnostic. |
| Commit-reveal provably fair | Shared primitives in packages/rng-core; per-game outcome mapping. |
| Per-scope RNG change-gate | CERT-ATTEST-CORE for rng-core, CERT-ATTEST-<GAMECODE> per game. |
| Integer money throughout | BigInt micro-units (×100,000). No floats in money code. |
Full narrative in B2B_ROADMAP.md §3.