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
How the winner is pickedExample with 16 entered wallets in seats 0 to 15. ORAO’s random bytes end in 0x3b; for 16 wallets only the last byte matters, and 59 mod 16 is 11, so the wallet in seat 11 wins. 0123456789101112131415 ORAO · 64 random bytes … 9c 4e 3b 59 mod 16 = 11
Example Example with 16 wallets: ORAO’s random number lands on wallet 11. Nobody can choose it.

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.

Wallet
The sponsor’s wallet to fund, any wallet to request the draw, or the winner’s wallet to claim. Connecting signs nothing.
What to do
After the draw

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.

Giveaway

Your own counter. Example: 1 for your first giveaway, 2 for the next. Why: your wallet and this number make the giveaway’s address, so each giveaway from the same wallet needs a new one.

Prize

The coin the winner receives: classic SPL or a metadata-only Pump (Token-2022 Solana’s newer token program. Pump coins use it with metadata only, which giveaways accept. Coins with transfer fees or hooks are refused.) token. Example: your Pump coin’s mint address, which usually ends in “pump”.

Whole smallest units, without commas. Example: Pump coins have 6 decimal places, so 1000000 is 1 token and 1000000000 is 1,000 tokens. Why: the program counts raw units; the review shows the amount in whole tokens before you approve.

Sponsor account
Optional

Leave empty to pay from your usual (associated) token account.

Who can win
0 / 16

One address per line, 1 to 16, entry is free. Why it matters: the list is locked with the prize and can’t change later, so check every address before you fund. Duplicates are refused.

Deadlines

Deadlines are Solana Slot Solana’s clock tick, about 0.4 seconds. 9,000 slots is about an hour; 216,000 is about a day., not dates. Each window is limited to 216,000 slots (about a day); both fill in with about an hour each. The result deadline must follow the request deadline. ORAO usually answers within a minute or two; if it has not answered by the result deadline, you can recover the prize.

Giveaway accounts

Step 1 fills in this public address. Save it: you, an entrant or anyone else pastes it here to request the draw, check who won or claim, on any device. The draw, claim and recovery read everything else from the giveaway account and its ORAO request.

Connect a wallet to review.No wallet connected.

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
Example

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.

  1. Fold the bytesn = 0; for each of the 64 bytes: n = (n × 256 + byte) mod NN is the number of entered wallets.
  2. That is the whole number mod Nwinner 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.
  3. The wallet at that index winswinner = entrants sorted by bytes [index]Only that wallet’s signature can claim.

Example

  1. 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.

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.