Skip to content

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


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.