Provably fair · recipe v1
Fairness audit
Everything that decided 151 BATTLE!! — 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-15T22:20:31.899Z; drand round 33099823 was published at 2026-10-15T22:20:33.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. 30 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 15, 2026, 4:56:09 PM ET
- SHA-256 of the secret, shown on the battle page before any seat sold.
- d99beee2461453c42d882b5c9ebd953410985b23acbe268d48b6469df0245174
- 2 · The secret, revealed after the battle ran
- ba4ab85b9e046b5a48596b6787ae05c5dcf107e35834ac8eb3a14197ce1ad6c9
- 3 · The public random number
- The last seat sold at Oct 15, 2026, 6:20:31 PM ET. The first drand quicknet round published after that was round 33099823 ↗ at Oct 15, 2026, 6:20:33 PM ET. drand is run by an independent group of organisations; check the number at that link.
- 0e28e445b0aa5df226460f689c0f7994b685e23f51533e5cdd4c1c9e7c13d930
- 4 · The battle seed
- HMAC-SHA256, key = the secret's 32 bytes, message =
xp-pack-battle:v1:cmva0qooz0001l006mvroy5eg:33099823:<public random number> - 3025b16b740047f9ea54b0022f301f2c49d6b5ef41ead9039bba6ac69cbbebcf
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.
- #1jstuhmer1109
- #2kfactor89
- #3ravenclawchris
- #4jman3310
- #5gummyy444
- #6miyakoordori
- #7kingkrabby
- #8ipho3nix
- #9ogaogre
- #10atmc
- #11vrock
- #12hidden87
- #13bloodvein
- #14tyguy
- #15shortbubble
- #16jbueno26
- Bracket drawn
- 1jman3310
- 2ipho3nix
- 3atmc
- 4miyakoordori
- 5jstuhmer1109
- 6vrock
- 7ravenclawchris
- 8bloodvein
- 9gummyy444
- 10jbueno26
- 11tyguy
- 12ogaogre
- 13shortbubble
- 14kfactor89
- 15hidden87
- 16kingkrabby
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
jman3310 · advances
Bill's Transfer · NM · $2.38
vsipho3nix
Jynx ex · NM · $1.31
atmc · advances
Arbok ex · NM · $1.58
vsmiyakoordori
Kangaskhan ex · NM · $1.09
jstuhmer1109
Blastoise ex · NM · $2.13
vsvrock · advances
Daisy's Help · NM · $2.81
ravenclawchris
Ninetales ex · NM · $2.15
vsbloodvein · advances
Giovanni's Charisma · NM · $4.02
gummyy444 · advances
Jynx ex · NM · $5.37
vsjbueno26
Venusaur ex · NM · $1.25
tyguy
Zapdos ex · NM · $1.59
vsogaogre · advances
Basic Psychic Energy · NM · $4
shortbubble · advances
Wigglytuff ex · NM · $1.56
vskfactor89
Golem ex · NM · $1.21
hidden87
Alakazam ex · NM · $1.93
vskingkrabby · advances
Switch · NM · $2.31
Round 2
jman3310 · advances
Giovanni's Charisma · NM · $14.42
vsatmc
Mr. Mime · NM · $13.01
vrock · advances
Kangaskhan ex · NM · $6.02
vsbloodvein
Erika's Invitation · NM · $5.55
gummyy444
Wigglytuff ex · NM · $7.19
vsogaogre · advances
Charizard ex · NM · $8.02
shortbubble
Mew ex · NM · $6.67
vskingkrabby · advances
Erika's Invitation · NM · $16.64
Semi-final
jman3310
Machoke · NM · $20.43
vsvrock · advances
Poliwhirl · NM · $33.62
ogaogre
Mew ex - 205/165 (151 Metal Card) · NM · $24.67
vskingkrabby · advances
Alakazam ex · NM · $58.08
Final
vrock · champion
Zapdos ex · NM · $82.64
vskingkrabby
Psyduck · NM · $59.12
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
- 0Kangaskhan ex · NM$1.09
- 1Golem ex · NM$1.21
- 2Venusaur ex · NM$1.25
- 3Jynx ex · NM$1.31
- 4Wigglytuff ex · NM$1.56
- 5Arbok ex · NM$1.58
- 6Zapdos ex · NM$1.59
- 7Alakazam ex · NM$1.93
- 8Blastoise ex · NM$2.13
- 9Ninetales ex · NM$2.15
- 10Switch · NM$2.31
- 11Bill's Transfer · NM$2.38
- 12Daisy's Help · NM$2.81
- 13Basic Psychic Energy · NM$4
- 14Giovanni's Charisma · NM$4.02
- 15Jynx ex · NM$5.37
Round 2
- 0Erika's Invitation · NM$5.55
- 1Kangaskhan ex · NM$6.02
- 2Mew ex · NM$6.67
- 3Wigglytuff ex · NM$7.19
- 4Charizard ex · NM$8.02
- 5Mr. Mime · NM$13.01
- 6Giovanni's Charisma · NM$14.42
- 7Erika's Invitation · NM$16.64
Semi-final
- 0Machoke · NM$20.43
- 1Mew ex - 205/165 (151 Metal Card) · NM$24.67
- 2Poliwhirl · NM$33.62
- 3Alakazam ex · NM$58.08
Final
- 0Psyduck · NM$59.12
- 1Zapdos ex · NM$82.64
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).
