← Back to the giveaway
Provably fair

Verify a draw yourself

Every SkinFolio giveaway commits to a secret server seed before entries open and publishes its SHA-256 hash. After the draw, the seed is revealed. Paste the published values below and your browser will recompute the seed hash and the winner index — entirely client-side, no trust in us required. The numbers must match what was shown on the giveaway page.

The 64-char hex value published in the draw receipt.
Optional — leave blank to skip the commit check.
Only for re-drawn giveaways (forfeited prize etc., terms §9).
The winner indexes of ALL previous rounds, shown on the giveaway receipt.
Computed hash
Hash match
HMAC (first 8 bytes)
Winner index
Human entry no.

The exact algorithm

Identical to the server's giveaway-fair.ts. Reproduce it in any language:
  1. seed_hash = SHA256(server_seed) — must equal the committed hash.
  2. key = utf8_bytes(server_seed)  (the hex string's bytes, not decoded).
  3. msg = utf8_bytes(client_seed).
  4. mac = HMAC_SHA256(key, msg) → 32 bytes.
  5. h = first 8 bytes of mac as a big-endian unsigned integer.
  6. winner_index = h mod N  (0-based); human entry no. = winner_index + 1.

Re-draws (round ≥ 2)

When a prize is forfeited (terms §9) the re-draw derives from the SAME committed server seed — no new seed can be picked against the known entry list:
  1. For attempt = 0, 1, 2, …: msg = utf8_bytes(client_seed + ":reroll:" + round + ":" + attempt).
  2. candidate = first-8-bytes-BE( HMAC_SHA256(key, msg) ) mod N  (key as above).
  3. The winner is the FIRST candidate not in the voided-winner list (all previous rounds' indexes).