Back to raffle Cryptographic proof

Verify results

tirage au sort casquette s1000rr

This raffle uses a commit-reveal random selection process. A secret seed was locked in when the raffle was created — before anyone entered — by publishing its SHA-256 fingerprint (the commitment). Because the seed was fixed before any entrant existed and the final draw seed also depends on the full entrant pool, the organizer cannot have chosen a seed that favors a particular entrant. The checks below run entirely in your browser.

Seed commitment

Published when the raffle was created, before entries opened. The revealed seed for each draw below must hash to exactly this value.

27454f4426843bfba68434e15bf652a234e41724f15687123d6b74396ba4ad69

How it works

  1. 1 At creation, a secret server seed is generated and its SHA-256 commitment is published (above). The seed itself stays hidden until the draw.
  2. 2 At draw time the seed is revealed and combined with the full entrant pool to derive the draw seed: SHA256(server_seed + "|" + snapshot).
  3. 3 Each entrant gets virtual "slots" equal to their entry count, and the draw seed deterministically selects the winning slots.
  4. 4 Anyone can confirm the revealed seed matches the commitment and replay the selection to reproduce the same winners.
commitment = SHA256(server_seed)              // published before entries opened
snapshot   = "id:count,id:count,..."          // eligible entrants, sorted by id
draw_seed  = SHA256(server_seed + "|" + snapshot)
slots = expand entrants to slot pool based on entries_count
for N = 0, 1, 2... until all winners picked:
    // rejection sampling: redraw instead of biasing low slots
    for attempt = 0, 1, 2...:
        value = parseInt(SHA256(draw_seed + ":" + N + ":" + attempt).substring(0, 8), 16)
        if value < 2^32 - (2^32 mod slots.length): break
    index = value mod slots.length
    winner (position N+1) = entrant owning slot[index]
    slots.removeAll(winner's slots)

Draw details

Oct 29, 2026 at 11:06 PM

Winners selected (1)

wssz.340
Verifying in your browser… Verified — results are authentic Verification failed

Revealed server seed

97b2a3ffe2df7ecaadc70c34748e097d5e7f5942d566fc80164a6373bb088e17

Derived draw seed

62d9f5149c9e756bf4cd1f5e2de6f31573bf512fc779651ac040ab64ebd65538

Eligible entrants (100 entrants, 100 total slots)

[#6758(1), #6759(1), #6761(1), #6762(1), #6763(1), ...]
Entrant #6758: 1 entry
Entrant #6759: 1 entry
Entrant #6761: 1 entry
Entrant #6762: 1 entry
Entrant #6763: 1 entry
Entrant #6764: 1 entry
Entrant #6765: 1 entry
Entrant #6766: 1 entry
Entrant #6767: 1 entry
Entrant #6768: 1 entry
Entrant #6769: 1 entry
Entrant #6770: 1 entry
Entrant #6771: 1 entry
Entrant #6772: 1 entry
Entrant #6773: 1 entry
Entrant #6774: 1 entry
Entrant #6775: 1 entry
Entrant #6776: 1 entry
Entrant #6777: 1 entry
Entrant #6778: 1 entry
Entrant #6779: 1 entry
Entrant #6780: 1 entry
Entrant #6781: 1 entry
Entrant #6782: 1 entry
Entrant #6783: 1 entry
Entrant #6786: 1 entry
Entrant #6788: 1 entry
Entrant #6789: 1 entry
Entrant #6790: 1 entry
Entrant #6791: 1 entry
Entrant #6792: 1 entry
Entrant #6793: 1 entry
Entrant #6794: 1 entry
Entrant #6798: 1 entry
Entrant #6799: 1 entry
Entrant #6800: 1 entry
Entrant #6802: 1 entry
Entrant #6803: 1 entry
Entrant #6804: 1 entry
Entrant #6809: 1 entry
Entrant #6810: 1 entry
Entrant #6811: 1 entry
Entrant #6812: 1 entry
Entrant #6813: 1 entry
Entrant #6817: 1 entry
Entrant #6819: 1 entry
Entrant #6824: 1 entry
Entrant #6825: 1 entry
Entrant #6828: 1 entry
Entrant #6829: 1 entry
Entrant #6832: 1 entry
Entrant #6834: 1 entry
Entrant #6835: 1 entry
Entrant #6845: 1 entry
Entrant #6846: 1 entry
Entrant #6848: 1 entry
Entrant #6850: 1 entry
Entrant #6853: 1 entry
Entrant #6854: 1 entry
Entrant #6856: 1 entry
Entrant #6861: 1 entry
Entrant #6862: 1 entry
Entrant #6863: 1 entry
Entrant #6866: 1 entry
Entrant #6869: 1 entry
Entrant #6870: 1 entry
Entrant #6872: 1 entry
Entrant #6876: 1 entry
Entrant #6877: 1 entry
Entrant #6879: 1 entry
Entrant #6880: 1 entry
Entrant #6881: 1 entry
Entrant #6882: 1 entry
Entrant #6885: 1 entry
Entrant #6886: 1 entry
Entrant #6887: 1 entry
Entrant #6889: 1 entry
Entrant #6894: 1 entry
Entrant #6896: 1 entry
Entrant #6899: 1 entry
Entrant #6900: 1 entry
Entrant #6903: 1 entry
Entrant #6904: 1 entry
Entrant #6906: 1 entry
Entrant #6907: 1 entry
Entrant #6908: 1 entry
Entrant #6910: 1 entry
Entrant #6911: 1 entry
Entrant #6917: 1 entry
Entrant #6931: 1 entry
Entrant #6937: 1 entry
Entrant #6943: 1 entry
Entrant #6966: 1 entry
Entrant #6967: 1 entry
Entrant #6975: 1 entry
Entrant #7009: 1 entry
Entrant #7042: 1 entry
Entrant #7052: 1 entry
Entrant #7061: 1 entry
Entrant #7065: 1 entry