Verify a draw
Every draw can be reproduced from public data. You do not need to trust POMY's word for the winner; you can check.
What is published
Each draw has a public page at /draws/[number] showing:
| Field | Meaning |
|---|---|
| Snapshot root | A Merkle root fingerprinting every entrant and their ticket weight, committed before the seed existed |
| Seed slot | The Solana slot number chosen at commit time, ~50 slots in the future |
| Seed hash | That slot's blockhash, once the slot is finalised. The random seed |
| Total tickets | Sum of all entrant weights |
| Winning ticket | keccak256(seedHash ‖ snapshotRoot ‖ drawId) mod totalTickets |
| Winner | The address whose ticket range contains the winning ticket |
| Purchase tx | Solana transaction where the vault bought the prize |
| Transfer tx | Solana transaction where the prize moved to the winner |
The full entrant list (address and weight) is downloadable from the same page.
Quick check (no tools)
- Open the draw page and note the seed slot number.
- Look up that slot on a Solana explorer such as solscan.io. Confirm its blockhash matches the seed hash on the draw page.
- Confirm the draw's commit time (shown on the page) is earlier than the seed slot's timestamp. This proves the entrant list was fixed before the seed existed.
- Click the purchase and transfer transactions and confirm the card token moved to the winner's address.
Full check (command line)
POMY publishes an open-source verification script. With Node 20+ installed:
npx pomy-verify draw 48
The script downloads the entrant list, recomputes the Merkle root and compares it to the published one, fetches the seed slot's blockhash from a public Solana RPC (you can pass your own with --rpc), recomputes the winning ticket, walks the entrant list to find the winner, and prints PASS or FAIL with each intermediate value. Run it against any past draw.
Everything the script does is documented in its source; it is short enough to read in a few minutes.
What verification proves and does not prove
It proves the published winner follows from the published entrant list and a public blockhash that POMY could not have known in advance. It proves POMY did not change the entrant list after the seed. It does not by itself prove the entrant list was correct; that comes from reproducing the window the snapshot was taken from.