XPcollect
← Buy back test

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.

  1. #1xpjon
  2. #2skysaint
  3. #3infamousinc
  4. #4pokefan1138
  5. #5bloodvein
  6. #6ynavojca
  7. #7pokegarage
  8. #8joeyb715
  1. Bracket drawn
  2. 1pokefan1138
  3. 2pokegarage
  4. 3ynavojca
  5. 4joeyb715
  6. 5bloodvein
  7. 6infamousinc
  8. 7skysaint
  9. 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

    pokegarage

    Oricorio ex · NM · $0.51

    vs
  • ynavojca

    Oricorio ex · NM · $0.51

    joeyb715 · advances

    Oricorio ex · NM · $0.51

    TIE · coin → second
  • bloodvein · advances

    Oricorio ex · NM · $0.51

    infamousinc

    Veluza ex · NM · $0.48

    vs
  • skysaint · advances

    Oricorio ex · NM · $0.51

    xpjon

    Oricorio ex · NM · $0.51

    TIE · coin → first

Semi-final

  • pokefan1138 · advances

    Alcremie ex · NM · $0.79

    joeyb715

    Cornerstone Mask Ogerpon ex · NM · $0.75

    vs
  • bloodvein

    Serperior ex · NM · $0.72

    skysaint · advances

    Wellspring Mask Ogerpon ex · NM · $0.73

    vs

Final

  • pokefan1138

    Iono's Kilowattrel · NM · $3.70

    skysaint · champion

    Zamazenta · NM · $3.78

    vs

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

  1. 0Veluza ex · NM$0.48
  2. 1Oricorio ex · NM$0.51
  3. 2Oricorio ex · NM$0.51
  4. 3Oricorio ex · NM$0.51
  5. 4Oricorio ex · NM$0.51
  6. 5Oricorio ex · NM$0.51
  7. 6Oricorio ex · NM$0.51
  8. 7Whimsicott ex · NM$0.52

Semi-final

  1. 0Serperior ex · NM$0.72
  2. 1Wellspring Mask Ogerpon ex · NM$0.73
  3. 2Cornerstone Mask Ogerpon ex · NM$0.75
  4. 3Alcremie ex · NM$0.79

Final

  1. 0Iono's Kilowattrel · NM$3.70
  2. 1Zamazenta · NM$3.78

Check it yourself

  1. SHA-256 the secret (as text) and compare it with the fingerprint.
  2. Open the drand link and confirm the round's randomness, and that it was published after the last seat sold.
  3. Battle seed = HMAC-SHA256 with the secret's bytes as key over xp-pack-battle:v1:<battle id>:<round>:<randomness>.
  4. 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.
  5. Shuffle with Fisher–Yates from the last position down: seats with "seating", each round's cards with "round-N-deal".
  6. Pair bracket positions 1&2, 3&4…; higher value advances; on a tie draw from "round-N-tiebreak" (0 = first player).
Download the audit (JSON)