The guarantees
- Neither you nor kinematic chose the outcome. The VRF output is the only valid output for the player’s signed bet and seed under the key the acceptance named, and the engine computes the result from it.
- Your casino could not know the outcome before it accepted the bet. The seed stays in the browser until the signed acceptance arrives, and the acceptance fixes the key, the game rules, the engine build and the terms. A refusal after acceptance is itself signed: the bet then ends refunded, never lost.
- The player authorized the bet and each action. Every bet and action carries the player’s signature with a key kept in their browser.
Your VRF key
Your game server generates its VRF key the first time it needs one, and keeps the secret in its own storage in your Cloudflare account. No route returns it, nothing logs it, and nobody can set or read it, kinematic included. The game server publishes every key it has used, with its validity window, atGET <game server>/v1/catalog under vrf.keys and in every signed game manifest. A rotation lists the next key two minutes before it takes over, so every browser knows it in advance. Retired keys stay listed: each bet stays verifiable under the key its acceptance named.
What players check
The element’s Provably fair button opens a dialog in your theme with three tabs. Proofs checks each of the player’s bets in the browser, one row per check:- the player’s signature on the bet and on each action,
- your game server’s signatures on each record, and the links between records,
- the acceptance came before the reveal and names the bet, its seed hash and its key,
- the revealed seed matches the hash the player signed,
- the VRF proof verifies under your key, and the output derives from it,
- the engine build that settled the bet recomputes the same result,
- once recorded, the bet’s Solana transaction contains this bet.
Solana records
In sandbox, your game server records every bet whose proof is disclosed on Solana devnet, after the bet settles. Live game servers record nothing on Solana until the audited mainnet program is deployed. A record is a transaction of theog-vrf-record program, signed by your game server’s own Solana address. Before it records a bet, the program checks the VRF proof against the key your game server registered for that time. Anyone can then read from the chain that your key produced a valid proof for that bet, and which receipt your game server committed to, at the transaction’s time. The dialog’s Proofs tab links the transaction and checks that it matches the bet.
A record adds a public, timestamped commitment. It does not prove that every bet was recorded, that the record’s time is the bet’s time, or that a payout reached a wallet.
What the proofs do not prove
- That a winning round’s payout reached the player’s wallet. A credit can be late; your wallet’s ledger is the record of payment.
- That the operator is solvent, who the player is in the real world, or that the server’s clock is fair.
- That every bet the server received was accepted. A server can refuse a bet before it accepts it.
- That a server which stops answering after a reveal paid the win. Such a bet is abandoned after 24 hours and its stake refunded.