Pre-launch · built and tested
Token giveaways
Give a fixed token prize to one of up to 16 wallets. ORAO’s verifiable randomness picks the winner on chain; nobody, not you or VEYDUCT, can choose.
- Entries1 to 16 wallets, free
- VEYDUCT fee0.01 SOL to fund a prize
- Drawabout 0.0018 SOL to ORAO
Practice run · simulated · nothing is sent
Practice run
The practice run loads with the page. It needs JavaScript; nothing is signed or sent.
With your wallet
Run a giveaway
Two steps, each one wallet approval: fund the prize, then request the draw. ORAO answers on chain, usually within a minute or two, and the winner claims.
Fill in and review a giveaway now. Wallet approval opens when this tool goes live.
Locks the prize in escrow and fixes the eligible wallets and both deadlines. None of these can change later. Includes the VEYDUCT fee of 0.01 SOL.
- Review
- Simulate
- Approve
- Submitted
Approval 1 of 2
Review this action
Approving first runs a mainnet simulation; if it fails, nothing is signed. Your wallet then shows the same transaction, and nothing is sent until you approve there.
Everything a giveaway does, and does not do
Checked against the program’s source and this page’s own code.
- Entries
- 1 to 16 wallets, free, fixed when you fund
- Randomness
- ORAO VRF, read on chain by the program
- VEYDUCT fee
- 0.01 SOL to fund a prize. Nothing else
- Draw cost
- About 0.0005 SOL to ORAO and a 0.0045 SOL deposit, 0.0031 back
Up to 16 entered wallets. Real draws use ORAO VRF randomness on chain; this animation picks locally.
Accounts involved
Each address is derived from fixed seeds (a PDA (program-derived address) An address computed from fixed words and other addresses. It has no private key, so only its program can sign for it.), so the page can find it and nobody can swap in a look-alike.
Giveaway
The sponsor, prize coin and amount, the entered wallets (sorted by their bytes), both deadlines, the status and, after the draw, the ORAO request it is bound to.
- Seeds
- "raffle-v2", sponsor, number
- Size
- 736 bytes
- Created by
- Fund the prize
Prize escrow
A token account owned by the giveaway address. It holds exactly the prize until the winner claims it or the sponsor recovers it.
- Seeds
- "raffle-token-v2", giveaway
- Size
- 165 bytes, 170 for Token-2022
- Created by
- Fund the prize
ORAO request
Owned by ORAO VRF. It records who asked and the seed, and ORAO writes 64 random bytes into it when it answers.
- Seeds
- "orao-vrf-randomness-request", draw seed
- Size
- 749 bytes, 137 once answered
- Created by
- Request the draw
The draw seed is sha256("veyduct-raffle-orao-v1" ‖ giveaway ‖ requester ‖ recent slot), with the recent slot at most 150 slots old. Because the seed depends on who asks and when, nobody can create the request account in advance.
Who can do what
- ActionWho signsRules the program enforces
- Fund the prizeAny wallet; it becomes the sponsorA prize above zero (not wrapped SOL), 1 to 16 distinct ordinary wallets, a request deadline within 216,000 slots and a result deadline after it within another 216,000.
- Request the drawAny wallet, onceAfter the funding slot and until the request deadline. It pays ORAO’s fee and deposit.
- ClaimThe drawn wallet onlyOnce ORAO has answered. The prize goes to that wallet’s own token account. There is no claim deadline.
- Recover the prizeThe sponsor onlyIf nobody requested the draw by the request deadline, or ORAO has not answered by the result deadline.
- Choose or change the winnerNobodyThe entrant list, prize and deadlines are fixed at funding, and the winner comes only from the ORAO-owned, answered request.
Once ORAO answers, the result is final. A won prize can never be refunded, not even by the sponsor and not even after the result deadline.
Draw math, with a worked example
ORAO (VRF (verifiable random function) Randomness that comes with a proof. ORAO’s answer is checked on chain, so nobody, including ORAO, can pick a result and pass it off as random.) answers with 64 random bytes. The program turns them into an index into the stored entrant list, one byte at a time, so the number never overflows.
- Fold the bytes
n = 0; for each of the 64 bytes: n = (n × 256 + byte) mod NN is the number of entered wallets. - That is the whole number mod N
winner index = (the 64 bytes read as one big number) mod NExact for 1, 2, 4, 8 or 16 wallets; for other counts the bias is below 16 ÷ 2⁵¹², far too small to matter. - The wallet at that index wins
winner = entrants sorted by bytes [index]Only that wallet’s signature can claim.
Example
- Three entered wallets, and the last two random bytes are 0x01 and 0x02 (the rest are zero).
n = (0 × 256 + 1) mod 3 = 1, then n = (1 × 256 + 2) mod 3 = 258 mod 3 = 0The same as 0x0102 = 258, and 258 mod 3 = 0: the wallet at index 0 wins.
- 00 … 00n = 0
- 01(0 × 256 + 1) mod 3 = 1
- 02(1 × 256 + 2) mod 3 = 0
- 0wins
- 1
- 2
The Practice tab shows its 64 bytes and both calculations for every draw. Its bytes are derived from the draw seed, so the same giveaway always draws the same winner; real bytes come from ORAO.
Costs
- VEYDUCT fee to fund a prizePaid once, in the same transaction, to VEYDUCT’s fee wallet. Shown in the review.
- 0.01 SOL
- Account rent for a giveawayGiveaway (736 bytes) and prize escrow, at mainnet rent of 5,080 lamports per byte plus 128 bytes per account.
- ≈ 0.0059 SOL (Token-2022) · 0.0059 SOL (classic)
- ORAO request feeSet by ORAO and read from its network state when you review the draw.
- 0.0005 SOL today
- ORAO request depositRent for the 749-byte request. When ORAO answers it shrinks to 137 bytes and the rest comes back to whoever requested the draw.
- 0.0045 SOL, 0.0031 back
- Network feePer transaction, one signature.
- 0.000005 SOL
- Percentage feesRequesting the draw, claiming and recovering carry no VEYDUCT fee, and the program takes no cut of the prize.
- None
Giveaway and Escrow A token account owned by the giveaway address, not by you. The prize sits there until the winner claims it or you recover it. Rent SOL that Solana requires every account to hold, sized by its bytes. It comes back only when an account is closed, and giveaway accounts are never closed. stays in those accounts: the program has no instruction that closes them. If the winner’s or sponsor’s token account for the prize coin was closed, the page re-creates it in the same transaction and shows that rent (about 0.0015 SOL) in the review.
Deadlines
A Solana slot is about 0.4 seconds; 9,000 slots is about an hour.
- Request deadline. The last slot anyone can request the draw. At most 216,000 slots (about a day) after funding; the page suggests about an hour.
- Result deadline. The last slot before the sponsor may recover an unanswered draw. At most 216,000 slots after the request deadline; the page suggests about an hour more.
- ORAO usually answers within a minute or two. An answer that arrives after the result deadline still counts, as long as the sponsor has not recovered the prize first.
- No claim deadline. The winner can claim whenever they like; the prize waits in escrow.
Edge cases and what can go wrong
Nobody requests the draw
After the request deadline the draw is closed and the sponsor can recover the prize.
ORAO stays silent
After the result deadline, while the request is still unanswered, the sponsor can recover the prize.
A loser tries to claim
Refused. Only the wallet at the drawn index can claim, and only to its own token account.
Draw refused
If someone tampered with the request address, or the slot you used is too old, nothing happens; request again and the next slot gives a new address.
Unsupported coins
Wrapped SOL, coins with a freeze authority and Token-2022 coins with transfer fees, hooks or other extensions are refused at funding.
Typos in the list
The entrant list cannot be edited later. Check every address before you fund. Duplicates are refused, and the page refuses addresses that are not ordinary wallets.
FAQ
Can the sponsor or VEYDUCT pick the winner?
No. The list and deadlines are fixed when the prize is funded, the request seed is bound to the giveaway, and the program reads the winner only from ORAO’s answered request.
Who should request the draw?
Anyone can: the sponsor, an entrant or a friend. Whoever sends it pays ORAO’s fee and deposit and gets the deposit’s refundable part back when ORAO answers.
Can the sponsor take the prize back after a draw?
Only if ORAO never answered by the result deadline. Once ORAO answers, the prize belongs to the winner.
Do entrants pay anything?
No. Entry is free and there are no tickets. Only the winner pays a network fee to claim.
Why only 16 wallets?
The whole list is stored in the giveaway account so the program can check the winner itself. 16 keeps that account small and the claim cheap.
Can the program be changed after launch?
The release only switches giveaways on for a program with no upgrade authority (nobody can change its code), and the page checks the exact program bytes before every wallet action.
How do entrants find out who won?
Nothing is sent to them. The winner is public on chain: share the giveaway account, and anyone can paste it into the Use it tab and press Check draw. The winning wallet then claims whenever it likes; there is no claim deadline.
Does it work with Pump coins?
Yes. Pump coins are Token-2022 with metadata only, which is supported. Classic SPL coins work too.
Tested in this release
Test results are published with each release
Every release build runs the giveaway program’s exact pinned bytes and this page’s own code in an isolated Solana runtime (LiteSVM), with the real ORAO VRF program, mainnet token programs and a real Pump coin captured read-only. This copy of the site has no build results attached; Release status lists the latest release.
- Funding with the exact 0.01 SOL VEYDUCT fee, a draw requested by a wallet that is not an entrant through ORAO’s genuine request instruction, ORAO’s signed answers, and the drawn wallet’s claim, with a classic SPL prize and a Pump (Token-2022) prize.
- Recovery when nobody requests the draw in time, and when ORAO does not answer by the result deadline; a fulfilled draw is never refundable.
- Losing wallets, forged or unbound ORAO answers, a second draw, early recoveries and non-sponsors refused by the page, the relay and the program.