PB1C
The holder list, split into chunks of about 700 bytes.
PB1C|round|chunk|chunks|wallet:balance,wallet:balance,…
Official contract
Don't trust — verify
There are no files to trust. Every draw writes its holder list, its commitment, and its payout to Solana as memos from one wallet, and the random number comes from ORAO VRF. Anyone can rebuild the result from the chain.
Coin contract
9KN6WS6fu8w7oAADY2AsFocH7D6uJCvM8ST6ZB9dpumpDraw wallet (posts every memo)
9ZSNVhh8yF3huSehBRpGkLx9dDiNpxKgsdBdbHbxpM1WDaily pot wallet
potN64k8PivSMix2hXpzAbVKBg5tYMV5HQVyJNutXLVPrize token ($PUMP)
pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9DfnThe holder list, split into chunks of about 700 bytes.
PB1C|round|chunk|chunks|wallet:balance,wallet:balance,…
The root. Seals the list hash and the ticket rule before randomness is requested.
PB1R|round|listHash|tickets|mint|ticketSize|maxTickets
The payout, sent in the same transaction as the prize transfer.
PB1P|round|winner|ticket|amount|randomness|rewardMint
The Winners page runs these checks for every round it can read. With the worker repo you can also check a saved receipt yourself:
npm run verify -- snapshots/<mint>/<round>.json
Committed before randomness
The list hash is inside the VRF seed. Changing a single holder after the fact changes the seed, and the randomness no longer matches.
Randomness nobody controls
ORAO VRF fulfils the request on-chain. The operator cannot pick or retry the number for the same seed.
Equal odds per ticket
Every ticket has 1 / (total tickets) chance. Holding more gives more tickets, up to 20 per wallet, so whales can't crowd out everyone else.
Same answer every time
Same memos, same hash, same modulo, same ranges. Anyone who reruns it gets the same winner.
The prize transfer and the PB1P memo go out in one transaction, so a payout can't exist without its proof. Daily pot payouts are sent from the daily pot wallet. If the draw wallet itself holds the winning ticket, the prize stays where it is and only the memo is posted.
Open the winners list