EVERY DRAW RECOMPUTABLE

Every draw.
All open.

Each raffled card gets its own draw, on its strategy's own clock. Open one for the snapshot, the blockhash, the seed and the winner, then recompute it in your browser.

--:--
Next draw
…
Raffles done
…
Unique winners
…
Card value won
Loading…
1
VERIFY ANY DRAW ↗
SNAPSHOT - COMMIT - RECOMPUTE
A draw, in 4 steps
READ THE FULL ALGORITHM ↗
Snapshot
The holders are frozen first
When the card's window ends, every holder of the strategy token is recorded at that Solana slot. The deployer, the dev-buy wallet, the card's seller, recent winners (the last 2 by default), the curve or pool and wallets under 10,000 tokens are dropped.
weight = min(balance, cap)
Commit
Then a future block is picked
The draw commits to the slot 32 ahead of the snapshot, about 13 seconds out. Holdings are already frozen and nobody, us included, knows that block's hash yet.
target_slot = snapshot_slot + 32
Seed
The block, the id and the root pick a ticket
The snapshot's Merkle root, the raffle id and the target block's hash make the seed. The seed modulo the total weight is the ticket; the holder whose range covers it wins.
seed = sha256(blockhash:raffle_id:root)
Pay
The winner is saved, then paid
The winner is written down before the card moves. If the transfer fails it is retried to the same wallet until it confirms. A draw is never run twice.
store(winner) → transfer → retry(same winner)