Robinball
One committed pot. One provable winner. Every 15 minutes.
Awaiting token launch
Total Burned Tokens
Total BALL burnedAwaiting token launch
Hold BALL.
Every full 10,000 counts.
At each published snapshot, every full 10,000 BALL held by an eligible address becomes one equal-odds ticket. No manual entry is required.
See the draw lifecycleYou are entered automatically by holding BALL — nothing to connect or sign. Address search opens after launch.
- Address balance
- —
- Tickets at next snapshot
- —
- Included in latest snapshot
- Available after launch
- Prizes received
- — ETH
The remaining 5,400 stays in your balance but does not add a third ticket.
A result you can replay, not just trust.
Robinball separates the participant commitment, external randomness, winner proof, and payout into observable steps.
-
01
Snapshot
Archive token balances at a known block and remove excluded system addresses.
Off-chain indexer -
02
Commit
Publish snapshotHash, ticketsRoot, ticket total, block, pot, and payout split.
Published commitment -
03
Randomize
Draw public drand randomness, produced only after the participant commitment exists.
drand beacon -
04
Settle
Publish the winning ticket range and Merkle proof. Anyone can re-verify it.
Publicly verifiable -
05
Distribute
An automated operator bot sends the winner's ETH prize and records the transaction in the round receipt.
Operator payout
Every round, one readable record.
Live receipts will appear here once the BALL token launches and the first draw settles.
| Round | Status | Snapshot block | Tickets | Winner | Prize | Inspect |
|---|---|---|---|---|---|---|
| Local fixture Not a live draw | Committed demo | 1,000 | 21 | Pending randomness | — |
Robinball receipts will populate this view after the first live draw.
Move the index.
Find its owner.
This fixture uses the same 21-ticket Merkle commitment tested by the Solidity suite and the Node indexer. It is local test data, not a settled Robinball round.
{
"mode": "local fixture",
"snapshotBlock": 1000,
"totalTickets": "21",
"snapshotHash":
"0xb9e39bdb...a1cce5dc",
"ticketsRoot":
"0x094711e5...a0c2f64"
}
- Artifact headers agree
- Ticket ranges are continuous
- Index maps to exactly one range
- Merkle proof matches the tickets root
Publicly auditable.
Precisely scoped.
What anyone can verify
- The tickets root is published before the drand round.
- Randomness is public drand, timestamped after the commit.
- A valid Merkle range must contain the winning index.
- Published snapshot and tickets match their committed hashes.
What the operator is trusted for
- The snapshot honestly reflects balances at the block.
- Excluding vault, treasury, LP, and operator addresses.
- Paying each winner from the 2% sell-tax prize pot (buys burn BALL instead).
The short version.
Launch, entry, settlement, and verification details in plain language.
Is Robinball live?
Not yet. The interface is a design preview. Draws begin once the BALL token launches on Robinhood Chain with its official Uniswap v4 pool; from then on an automated operator bot runs a draw every 15 minutes and publishes a verifiable receipt for every round. Token and explorer links stay disabled until launch.
How are tickets calculated?
The indexer floors each eligible balance by the 10,000-token ticket unit. System addresses and configured treasury or liquidity addresses must be excluded before the Merkle commitment is published.
Where does randomness come from?
From drand, a public verifiable randomness beacon (the quicknet chain). Each draw commits its tickets root before the chosen drand round is produced, so the outcome cannot be known or ground at commit time. The round's signature lets anyone reproduce and verify the number.
Where does the prize pot come from?
Every swap of BALL through the official Uniswap v4 pool pays a 2% tax on its output side: on sells the tax is taken in ETH and fills the prize pot; on buys it is taken in BALL and burned to the dead address, permanently shrinking the supply. Both flows happen inside an on-chain v4 hook that anyone can inspect (every burn and every pot deposit emits an event). The pot is denominated in ETH and the hook address is published at launch.
How does a winner receive ETH?
The operator sends the ETH prize directly to the winner on Robinhood Chain and publishes the transaction hash in the round receipt, so anyone can confirm the payout on the explorer.
What does publicly auditable mean?
Anyone can compare published artifacts with the on-chain hashes, replay the range lookup, and verify a submitted Merkle proof. Snapshot integrity remains an operator trust boundary that must be checked against archived balances.
Is the 15-minute schedule enforced on-chain?
No. The 15-minute cadence is the intended product schedule, run by an automated operator bot, not a contract invariant. That scheduler and its monitoring service still need to be implemented and tested before launch.