Provably fair · recipe v1
Fairness audit
Everything that decided Buy back test — who sat where, every card dealt, every tie — came from two numbers: a secret we locked in before any seat sold, and a public random number nobody could know until after the last seat sold. Both are revealed below, and we re-ran the whole battle from them just now.
✓ Verified — 5 of 5 checks pass
- ✓ The secret matches the fingerprint published before any seat sold. SHA-256 of the revealed secret equals the fingerprint shown on the battle page since creation.
- ✓ The public random number is the first one drawn after the last seat sold. Last seat sold at 2026-10-26T02:33:38.903Z; drand round 33392885 was published at 2026-10-26T02:33:39.000Z.
- ✓ The battle seed comes from the secret and the public number. HMAC-SHA256 of the recipe message with the secret as key equals the seed recorded at the run.
- ✓ Replaying the recipe gives exactly the pulls we recorded. 14 pulls re-dealt from the inputs above and compared one by one.
- ✓ The champion is the same. The replay's final winner is the champion we announced.
The inputs
- 1 · Fingerprint, published Oct 25, 2026, 10:31:21 PM ET
- SHA-256 of the secret, shown on the battle page before any seat sold.
- 1c53d0a0ba9dec90c332f63ff3a7163a5b985d89e684d7cc9d81093a7c2f4d27
- 2 · The secret, revealed after the battle ran
- 83e0ac826cd4de6285bde7f19ad4ba99e1167e754cd5c82bc15b3c7a5ce76407
- 3 · The public random number
- The last seat sold at Oct 25, 2026, 10:33:38 PM ET. The first drand quicknet round published after that was round 33392885 ↗ at Oct 25, 2026, 10:33:39 PM ET. drand is run by an independent group of organisations; check the number at that link.
- 17ece97f29dbfcf701db71049ebab5ab600e83ec5a914d296ddd50eb6e69038f
- 4 · The battle seed
- HMAC-SHA256, key = the secret's 32 bytes, message =
xp-pack-battle:v1:cmvon4a8r0005l307tp579uax:33392885:<public random number> - 4dadadb4c844630e250dfbc47ffcb602d9c32c2d073bed327d796b7bc1f4618b
Players, in the order they took their seats
The engine is given the seats in this order. The seatingstream then shuffles them into the bracket: positions 1 & 2 meet in the first round, 3 & 4, and so on.
- #1xpjon
- #2skysaint
- #3infamousinc
- #4pokefan1138
- #5bloodvein
- #6ynavojca
- #7pokegarage
- #8joeyb715
- Bracket drawn
- 1pokefan1138
- 2pokegarage
- 3ynavojca
- 4joeyb715
- 5bloodvein
- 6infamousinc
- 7skysaint
- 8xpjon
Every pull
Each round, the round-N-dealstream shuffles that round's cards onto the players still in, in bracket order. Higher value goes through; a tie is settled by the round-N-tiebreak stream.
Round 1
pokefan1138 · advances
Whimsicott ex · NM · $0.52
vspokegarage
Oricorio ex · NM · $0.51
ynavojca
Oricorio ex · NM · $0.51
TIE · coin → secondjoeyb715 · advances
Oricorio ex · NM · $0.51
bloodvein · advances
Oricorio ex · NM · $0.51
vsinfamousinc
Veluza ex · NM · $0.48
skysaint · advances
Oricorio ex · NM · $0.51
TIE · coin → firstxpjon
Oricorio ex · NM · $0.51
Semi-final
pokefan1138 · advances
Alcremie ex · NM · $0.79
vsjoeyb715
Cornerstone Mask Ogerpon ex · NM · $0.75
bloodvein
Serperior ex · NM · $0.72
vsskysaint · advances
Wellspring Mask Ogerpon ex · NM · $0.73
Final
pokefan1138
Iono's Kilowattrel · NM · $3.70
vsskysaint · champion
Zamazenta · NM · $3.78
The pool, locked at creation
Values were frozen when the battle was created. Within each round, cards are listed in the order the engine shuffles them from.
Round 1
- 0Veluza ex · NM$0.48
- 1Oricorio ex · NM$0.51
- 2Oricorio ex · NM$0.51
- 3Oricorio ex · NM$0.51
- 4Oricorio ex · NM$0.51
- 5Oricorio ex · NM$0.51
- 6Oricorio ex · NM$0.51
- 7Whimsicott ex · NM$0.52
Semi-final
- 0Serperior ex · NM$0.72
- 1Wellspring Mask Ogerpon ex · NM$0.73
- 2Cornerstone Mask Ogerpon ex · NM$0.75
- 3Alcremie ex · NM$0.79
Final
- 0Iono's Kilowattrel · NM$3.70
- 1Zamazenta · NM$3.78
Check it yourself
- SHA-256 the secret (as text) and compare it with the fingerprint.
- Open the drand link and confirm the round's randomness, and that it was published after the last seat sold.
- Battle seed = HMAC-SHA256 with the secret's bytes as key over
xp-pack-battle:v1:<battle id>:<round>:<randomness>. - Each random stream is HMAC-SHA256(key = battle seed, message =
<label>:<counter>) for counter 0, 1, 2…, read as big-endian 32-bit numbers. Pick a number below n by rejecting draws at or above the largest multiple of n under 2³², then taking the remainder. - Shuffle with Fisher–Yates from the last position down: seats with "seating", each round's cards with "round-N-deal".
- Pair bracket positions 1&2, 3&4…; higher value advances; on a tie draw from "round-N-tiebreak" (0 = first player).
