Marbles$MARBLES
Fair

Nobody knows the seed when the field is sealed

Each race is decided by a Solana blockhash that does not exist yet when the entries are locked. Every marble has the same size and weight. Anyone can re-run any race from its record and get the same finish.

  1. 1Entries

    Buys of at least 0.02 SOL since the last race. One marble per wallet. A wallet must still hold its tokens at the seal.

  2. 2Seal at slot C

    The entry list is fixed and published with its hash: wallet, tokens, SOL bought.

  3. 3Seed slot C + 25

    About ten seconds later. Its blockhash is unknown to everyone, us included, until that block is produced.

  4. 4seed = sha256(blockhash ‖ entries hash ‖ race)

    The seed shuffles the start order and the launch jitter. Nothing else is random.

  5. 5Physics

    Rapier, deterministic build, fixed 60 Hz steps, on one baked track file. Same seed, same entries: same frames, bit for bit.

Check it yourself

Re-run any race

Download the verifier, run it with Node 20 or newer. It fetches the race record, reads the blockhash from any public Solana RPC, re-runs the race and prints the finish order and the frame hash. Every race page has the same check in the browser.

$ curl -O /shared/verify.mjs
$ node verify.mjs <race number>
Physics engine
—
Track
—
Tick
60 Hz fixed
Marble
—
The numbers

Rules in force