V3 Fairness Engine
Provably Fair Randomness
ETH5050 V3 uses RandProof for verifiable randomness — drand Quicknet verified on-chain via EIP-2537 — and a decentralized keeper network to trigger eligible raffle finalization across Base, Optimism, and Arbitrum. The contract has no owner and no admin functions. Tickets and payouts remain ETH-native.
Cannot Be Manipulated
Winner selection comes from a drand Quicknet beacon anchor verified on-chain via EIP-2537, not generated by the raffle creator or ETH5050.
Publicly Verifiable
Every request, fulfillment, winner, and payout is recorded on-chain for anyone to inspect.
Automated Finalization
The RandProof keeper network checks for ended or sold-out raffles and calls the contract when finalization is ready.
How It Works
RandProof Verifiable Randomness
When a raffle is ready to close, the V3 smart contract requests a draw from the RandProof KeeperCoordinator. The seed derives from a drand Quicknet round verified on-chain via EIP-2537, then is used to select a winning ticket from the sold tickets — with a permanent on-chain proof.
1. Raffle Becomes Finalizable
A raffle is ready when the end time passes or every ticket is sold.
2. Keepers Trigger Finalization
RandProofAutomation performs upkeep checks and triggers finalization without manual operator control.
3. Randomness Is Requested
The contract requests a draw from the RandProof KeeperCoordinator, pinning the next drand Quicknet round.
4. Verified Seed Selects The Winning Ticket
The fulfilled seed — derived from the drand beacon verified on-chain — is reduced against tickets sold to identify the winning ticket number.
5. ETH Is Split 50/50
The contract pays or credits 50% of the pool to the winner and 50% to the raffle creator.
Trust Layer
Why This Is Provably Fair
Cannot Be Predicted
- Randomness derives from the drand Quicknet beacon, verified on-chain via EIP-2537
- The seed is unknown until the fulfillment transaction
- The winning ticket is selected from actual tickets sold
- Request and fulfillment data are publicly visible on-chain
Cannot Be Manipulated
- The keeper network can trigger finalization but cannot choose the winner
- The creator cannot supply or override the seed
- ETH5050 cannot manually set the winner
- No admin override functions exist — the contract has no owner
Verifiable On-Chain
- Every transaction is recorded on the blockchain
- Every draw produces a permanent RandProof artifact (seed, signatures, committee) queryable via getRandProof
- Raffle state, winner, and prize split are visible from the contract
- Smart contract code and deployed addresses are public
V3 Automation
- RandProofAutomation monitors finalizable raffles
- Draw fees are paid from the contract-funded finalization reserve
- Fallback finalization can be called by anyone after the grace period
- Ticket purchases and prize payouts use native ETH
Comparison
ETH5050 V3 vs Other Draw Models
| Feature | ETH5050 V3 | Manual Operator Draws | Basic Randomness |
|---|---|---|---|
| Cost | ETH ticket gas + contract-funded draw reserve | Manual processing overhead | Gas only |
| Token Required | ETH tickets and payouts | Varies by platform | ETH only |
| Security | RandProof (drand, EIP-2537 verified) | Depends on operator | Low |
| Manipulation Resistant | Yes | Requires trust | No |
| External Dependencies | RandProof RNG + keeper network | Human/operator process | None, but weak security |
| Speed | Keeper trigger + on-chain fulfillment | Manual timing | Instant but unsafe |
Verify
How to Verify a Winner
Every finalization path leaves public contract evidence: request events, fulfillment, winner address, completion state, and the 50/50 ETH accounting.
1. View the Transaction
After a raffle completes, open the raffle contract on BaseScan, Optimistic Etherscan, or Arbiscan.
2. Check the Draw Request
Find the RandomnessRequested event for the raffle ID and its RandProof eventId.
3. Confirm Fulfillment
Look up the eventId via getRandProof on the coordinator (or RandProofScan) — the seed updates the raffle winner and marks it completed on-chain.
4. Confirm Winner Selection
Verify that the completed raffle shows the winner address and 50/50 ETH prize split from contract state and events.
FAQ
Frequently Asked Questions
Does ETH5050 V3 use verifiable randomness?
Yes. ETH5050 V3 uses RandProof — draws are anchored to the drand Quicknet beacon and verified on-chain via the EIP-2537 precompile. Users buy tickets and receive payouts in ETH, while the contract maintains a finalization reserve for draw fees.
Can the contract owner manipulate results?
No. There is no owner at all — the V3 contract has zero admin functions. Once RandProof returns the seed, the smart contract uses it to select the winning ticket and finalize the payout path.
Can I verify the winner myself?
Yes. You can inspect the raffle contract, draw request event, the RandProof artifact (getRandProof), winner address, and prize accounting directly on the relevant block explorer or RandProofScan.
What if someone controls multiple wallets?
Each ticket has an equal chance regardless of who owns it. Multiple wallets do not affect randomness; they only represent more paid tickets.
Every Winner Is Selected Fairly
RandProof randomness. Decentralized keeper finalization. ETH-native raffles across Ethereum L2.