Arc Daily LottoPick 5 digits. Win the daily USDC jackpot.
A polished Arc Testnet demo for contract-based 5-digit lotto rounds. Testnet USDC has no real-world value, and this is not real-money gambling.

Current jackpot
0 USDC
Round closes
Loading...
Ticket price: 0.1 USDC
Live round
Read-only data stays visible before wallet connection.
Current round
Loading...
Round status
Loading...
Time remaining
Loading...
Tickets sold
Loading...
Current jackpot
Loading...
Last winner
Loading...
Tier winners
Loading...

Bulk ticket total
Loading
1 testnet ticket paid through one ERC-20 approval and one buyTickets call.
Bulk ticket builder
Choose ticket numbers
Selected
1 ticket
Total price
0 USDC
Remaining
10
Tickets this purchase
Up to 10 tickets per wallet per round. Testnet USDC has no real-world value.
Connect a wallet to buy tickets.
Wallet dashboard
Arc account
Connected address
Not connected
USDC balance
0 USDC
Allowance
0 USDC
Estimated ticket gas
Estimating
Native gas accounting uses 18 decimals; app ticket accounting uses ERC-20 decimals.
Lotto contract
0x04B4...Db13
Ticket price
Loading
Arc Testnet
Chain ID 5042002, RPC-backed read/write flow through wagmi and viem.
USDC-aware
Balances and tickets use the ERC-20 decimals returned by the USDC interface.
My tickets
Current round entries
Tickets are read from the lotto contract. Transaction hashes are shown when this browser created the ticket.

No tickets yet
Connect on Arc Testnet, pick a valid 5-digit number, approve testnet USDC, and buy a contract-backed ticket. Testnet USDC has no real-world value.
Pick numbers above to enter this round
Jackpot and prize logic
V3 tiered pool mechanics
The contract holds the prize pool in testnet USDC. No real-world value, no investment promise, no real-money gambling.
0.1 testnet USDC per ticket
The contract ticketPrice is 0.1 USDC and bulk purchases use ERC-20 allowance plus buyTickets.
Four position-match tiers
Tickets win by the count of digits matching the winning number in the exact same positions: 2, 3, 4, or all 5 digits.
Tier pool split
The 5-digit tier receives 50% of the round pool, 4 digits 25%, 3 digits 15%, and 2 digits 10%.
Empty tiers roll over
If a tier has no winners, that tier's allocation rolls into the next round instead of being paid elsewhere.
Automatic payout
When the owner or keeper reveals the winning number, V3 calculates tier rewards and pays winning tickets automatically.
10 tickets per wallet
Each wallet can buy at most 10 tickets per round, and each bulk purchase is capped at 10 custom numbers.
Daily round schedule
The testnet contract starts one-day rounds and requires close plus reveal before the next committed round begins.
Round history
Daily V3 reveals and payouts
Past rounds show the committed reveal, tier winner counts, tier pools, rollover, and connected-wallet ticket outcomes when available.

Recent rounds
Newest first from getRecentRounds(limit).
How it works
Four clean steps
The flow is built for clarity: wallet, ticket, contract payment, reveal.
Step 1
Connect wallet on Arc Testnet
RainbowKit opens the wallet flow and the app can request Arc Testnet if it is missing.
Step 2
Pick or generate 5 digits
Choose one to ten numbers from 10000 to 99999. Every ticket can be customized.
Step 3
Buy ticket with testnet USDC
Approve the selected ticket total, then call buyTickets(numbers) once on the lotto contract.
Step 4
Daily reveal and payout
After close, the keeper reveals the committed winner and matching tickets are paid automatically.

Transparency and fairness
Commit before reveal
V3 uses a commitment hash before each round starts. After the round closes, the keeper or owner reveals the winning number and salt, and the contract verifies them against the commitment.
Current commitment
No active commitment yet
Contract: 0x04B4...Db13
Explorer: ArcScan Testnet
Keeper: local commitment storage is testnet-only. It helps automate close, reveal, automatic payout, and next-round start, but production should not rely on a local unrevealed salt file.
App Kit note: Buying lotto tickets requires ERC-20 allowance reads/writes and an arbitrary buyTickets(uint32[]) contract call. The current official Arc/Circle App Kit docs focus on App Kit payment/liquidity primitives, so this DApp uses wagmi + viem for the core contract purchase flow.
This is a testnet demo. Production randomness should use a verified oracle, VRF, or decentralized reveal protocol where available, plus operational controls around reveal custody.
Revealed rounds
FAQ
Straight answers
No hype, no real-money promises. Just the mechanics.
What is Arc Testnet?
Arc Testnet is the public test network for building and experimenting with Arc applications before production use.
Why USDC?
Arc uses USDC as the native gas symbol, and the app-level ticket purchase uses the Arc Testnet USDC ERC-20 interface and its decimals result.
Is this real money?
No. This demo uses testnet USDC only. Testnet tokens have no real-world value, and Arc Daily Lotto is not real-money gambling.
How do I get testnet USDC?
Use the official Arc documentation and any current faucet instructions published there. The README links to the official docs so the steps stay source-aligned.
What happens if nobody wins?
V3 allocates the pool by tier. If a tier has no winners, that tier allocation rolls into the next round.
How are winners selected?
The testnet MVP uses commit-reveal: a hash is committed before the round, then the winning number and salt are revealed after close. The contract verifies the hash before settling.
Why can I buy max 10 tickets?
The V3 demo caps each wallet at 10 tickets per round and each bulk purchase at 10 tickets so reveal-time automatic payouts stay practical on testnet.
Why are numbers from 10000 to 99999 only?
V3 uses true 5-digit ticket numbers. The range keeps every entry visually and contractually five digits, with no leading-zero edge cases.
How do tier prizes work?
A ticket wins only its highest position-match tier: 2, 3, 4, or all 5 digits in the exact same slots. The pool split is 10%, 15%, 25%, and 50% respectively.
What happens if no one wins a tier?
That tier's allocation rolls into the next round. It is not reassigned to another tier.
Are rewards paid automatically?
Yes. In V3, reveal calculates matches, pays tier winners from the contract, stores ticket reward data, and finalizes the round.
What happens when the round ends?
Ticket buying stops locally when the countdown reaches zero. The keeper then closes the round, reveals the committed result, and starts the next round after finalization.
Why do I need approval?
USDC is an ERC-20 token. The contract needs an allowance for the selected ticket total before buyTickets can transfer testnet USDC into the prize pool.
Why is this testnet-only?
The app uses Arc Testnet USDC, local testnet keeper commitments, and demo randomness operations. Testnet tokens have no real-world value.