Verifiable raffle

PLA+ Marble – spring batch

Drawn on May 16, 2026 8:00 pm from 26 entries. Anyone can re-run the draw below – no personal data is published, only entry numbers.

Published record

Algorithm
fld-draw-v1
Commitment (SHA-256 of the seed, published before entries opened)
0527ccd176897fcefc55f371ac82f8e0129de86079c96a4219b25488d7b98186
Seed (revealed after the draw)
21cd2aa5a75451ed74c28cc56a8c204c487e6c8a8eae10549d2758b53e07b28e
Entry list fingerprint (SHA-256 of the sorted numbers joined by commas)
66f396c11f7d352910573cbc62ff9d62516c36d9103520f74c56e287f6d5dc27

How the draw works

  1. Before entries opened we generated a secret 32-byte seed and published its SHA-256 fingerprint (the commitment). Nobody can change the seed afterwards without the fingerprint changing.
  2. When entries closed, the list of entry numbers was frozen and sorted ascending.
  3. A random stream is produced with HMAC-SHA256: key = the seed bytes, message = "fld-draw-v1:" followed by a counter 0, 1, 2, … Each 32-byte block gives eight unsigned 32-bit big-endian numbers.
  4. Numbers in a range 0…n−1 are taken by rejection sampling (values at or above the largest multiple of n below 2³² are skipped), so there is no bias.
  5. The entry list is shuffled with Fisher–Yates from the last position down to the second: for each position i a random j between 0 and i is drawn and the two entries are swapped.
  6. Winners are taken in the resulting order until the allocation is used up; each entry receives at most the quantity it asked for.

Draw order

  1. #0024 drawn – did not buy in time
  2. #0021 drawn – bought
  3. #0018 drawn – did not buy in time
  4. #0012 drawn – bought
  5. #0002 drawn – bought
  6. #0014 drawn – bought
  7. #0025 drawn – bought
  8. #0023 drawn – bought
  9. #0001 drawn – bought
  10. #0005 drawn – bought
  11. #0019 drawn – bought
  12. #0026 drawn – bought
  13. #0011 drawn – bought
  14. #0004 drawn – bought
  15. #0017 drawn – did not buy in time
  16. #0015 drawn – bought
  17. #0006 drawn – bought
  18. #0020 drawn – bought
  19. #0008 drawn – bought
  20. #0009 drawn – bought
  21. #0003 drawn – bought
  22. #0022 drawn – bought
  23. #0010 drawn – bought
  24. #0016 drawn – bought
  25. #0007 drawn – bought
  26. #0013 drawn – bought

Verify the draw

This check runs entirely in your browser with an independent JavaScript implementation of the algorithm. You can also change a value to see that any manipulation is detected.

    Machine-readable record: GET /wp-json/filalab-drops/v1/drops/1/draw