Escrow a prize. Players buy tickets in USDC. One winner takes the prize; you take 95% of the tickets.
A count of tickets, not of people. One address can hold several and one person can use several addresses, so nothing here counts anybody.
Keep some USDC available for Arc network fees. Gas is USDC here and it comes out of the same balance as the prize and the creation fee, so a wallet holding exactly the escrow plus the fee cannot send the transaction that escrows it.
Immutable after first entry. The creator sets the prize, the ticket price, the maximum and the duration, and nothing else. There is no admin, no upgrade path and no setter; the only privileged function in the system pauses new raffles and cannot reach a live one.
One draw, drawn once. Every ticket has the same chance, the seed is drand's and the result is settled in the transaction that reads it. There is nothing to watch unfold, because there is nothing being decided while you watch.