DUEL
DEMO

Provably fair

A DUEL fight is a deterministic simulation. Given the same rules, the same random seed and the same inputs, it produces the same result every time. Fairness comes down to one question: could anyone pick or peek at the seed? Here is why the answer is no.

1

The house commits first

Before you accept the stake screen the house generates a secret serverSeed and shows you only its fingerprint, sha256(serverSeed). It cannot change the seed later without the fingerprint changing.

2

You add your own entropy

Each player supplies a clientSeed (yours is editable on the stake screen). A per-wallet nonce increments every duel so the same seeds never produce the same fight twice.

3

One hash seeds the whole fight

The fight RNG is xoshiro128** seeded from sha256(serverSeed:clientA:clientB:nonce). Every accuracy roll and every damage roll is drawn from that stream in a fixed order. Both rolls are always consumed, hit or miss, so the stream never depends on the outcome.

4

Every input is logged, then replayed

Ticks are 600ms. Eating, switching weapons, arming a special and forfeiting are recorded as {tick, side, action}. Priority (who resolves first) is itself rolled from the seed and reshuffled every 100 ticks. After settlement the house reveals serverSeed; replaying the log against the derived RNG must reproduce the same winner and the same final HP, or the proof is rejected. Fights cap at 1000 ticks (10 minutes); equal HP at the bell is a draw and stakes are returned.

Verify a fight

What the proof bundle contains

  • serverSeed and serverSeedHash: the reveal and the commitment.
  • clientSeedA, clientSeedB, nonce: the other RNG inputs.
  • rules: weapons, start weapon, food, specials, forfeit.
  • log: every player input with its tick.
  • winner and finalHp: the claim being checked.

The verifier on this page runs entirely in your browser with the same engine the arena uses. No server is involved.