How Rafflor works
A creator locks a prize and opens a raffle. Participants buy tickets with USDC. After entries end, the raffle is closed and one winning ticket is selected.
1. A prize is locked
The creator deposits USDC, a supported token, or an NFT when the raffle is created. The prize remains escrowed while the raffle is active.
2. Tickets are sold in USDC
Every ticket in a raffle has the same price.
Entries stop when either all tickets are sold or the raffle reaches its deadline.
Reaching the deadline ends entries, but does not itself close the raffle. Closing is a separate onchain action that anyone can perform.
If a raffle has passed its deadline but has not yet been closed, it will appear as:
Waiting to be closed
3. The raffle is closed
Once entries have ended, anyone can close the raffle.
Closing fixes the information needed for the draw. No more tickets can be purchased after entries have ended.
4. A winner is drawn
After the raffle is closed, publicly verifiable randomness is used to select one of the tickets sold.
Neither the creator nor Rafflor chooses the winning ticket.
5. Prize and proceeds are claimed
The winner claims the prize.
The creator claims the ticket proceeds after protocol fees.
These are separate claims.
Raffles are locked once entries begin
After the first ticket is sold, the creator cannot change the prize, ticket price, ticket supply, or deadline.
Before any tickets are sold, the creator may cancel the raffle and reclaim the prize. The creation fee is not refunded.
Understanding your odds
Your displayed chance is based on the number of tickets sold so far.
Ticket limits apply per wallet, not per person.
Entry source labels
Some entries may include information about where the purchase originated.
That information is provided by the payer and is not independently verified by the contract. Treat it as a label, not proof of origin.
Origin identifiers are shown as plain text rather than explorer links, because they may refer to an address or account outside Arc.
[unavailable] above rather than as a number from memory:
- treasuryAddress — TREASURY_ADDRESS is not configured
- explorer — no block explorer is configured for this chain