contents16 The jackpot
16, rewards & progression
The jackpot
A daily prize pool drawn at 00:00 UTC from a committed seed and a future Ethereum block hash, claimed on-chain within 24 hours.
on this page
Every day at 00:00 UTC one wallet wins the jackpot. The pool sits in its own contract, entries come from playing or from holding $RHR, and the whole draw is published so you can re-run it in your browser.
Where the pool comes from
Two sources feed it: 30% of everything the fee splitter receives, which means creator fees and hood mint proceeds, and 10% of net rake. The pool lives in a jackpot contract of its own. It keeps its own USDG, carries no player balances, and has no way to reach the vault. A day that nobody wins rolls into the next pool.
How you get in
By playing
Your volume for the day turns into tickets. Playing more earns more tickets, but on a curve that flattens out, so a hundred times the volume is nowhere near a hundred times the tickets.
tickets = min(100, floor(sqrt(volume in USDG that day)))
plus 1 for each dare you survive (at most 20 a day)
times your hood multiplierYou need at least 5 USDG of volume that day to enter by playing.
| Volume that day (USDG) | Tickets from volume |
|---|---|
| 5 | 2 |
| 25 | 5 |
| 100 | 10 |
| 400 | 20 |
| 2,500 | 50 |
| 10,000 | 100 |
| 40,000 | 100 |
Your best hood multiplies the result. Here is what it does to 10 tickets:
| Best hood you own | Multiplier | Tickets from 10 |
|---|---|---|
| common | 1.1 | 11 |
| rare | 1.25 | 12.5 |
| epic | 1.5 | 15 |
| legendary | 2 | 20 |
Each dare you survive adds one ticket, up to 20 a day. That is the one jackpot upside of a dare, and the dare itself still costs real extra risk and pays nothing. Do not take dares to chase tickets.
By holding $RHR
A wallet that holds at least 0.1% of the $RHR supply is entered into the same draw, no games needed. Tokens in the wallet count once and staked tokens count 1.5 times. All holders together can take at most 18% of the total draw weight, and a holder's chance is capped at the chance of the best-placed player. Contracts and house wallets are never drawn.
How a day's winner is picked
- The day opens with a commit. It pins the draw's secret seed:
commit = SHA256("rhr/draw/v1" || seed || day). Changing the seed later would change the hash, and everyone would see. - Entries freeze at 00:00 UTC.
- The randomness is built from two things: the seed, and the hash of an Ethereum block that nobody could know in advance. That block is the first finalised Ethereum L1 block at or after the close:
random = first 7 bytes of SHA256("rhr/draw/v1" || seed || day || l1BlockHash) / 2^56. - Walk the entries in their published order, subtracting each entry's chance from
random * total. The entry where the running figure reaches zero wins. - The seed is revealed, and the game server publishes the full record (
GET /jackpot/draw?day=YYYY-MM-DD). It lists the seed, the Ethereum block number and hash, and every entry's weight and kind (player or holder), with entries shown under a per-day hash of the address rather than the address itself.
Ethereum needs about 15 minutes to finalise a block, so the winner appears a little after midnight UTC, not at the stroke. Because the rule names the block, nobody gets to pick one: re-running the draw hours later uses the same block and gives the same winner.
Check the draw yourself
The draw verifier re-runs a day's draw in your browser from the published record, with the same engine code the server draws with. It checks, in order: the seed hashes to the commit, and to the commitment you saw on the jackpot tab while the day was open (your browser keeps the ones it saw); the entries are in their published order and their weights add up to the total; the random number really comes from that seed and that block; and the walk through the entries ends on the announced winner. Give it your address and it finds your own entry and its weight. You can look up the block on any Ethereum explorer and confirm it is the first one at or after midnight UTC. Recent draws are listed on the jackpot tab of the leaderboard, each with a verify link that opens that day's draw, next to your tickets and your chance for today. In the play-money demo there is no game server and no published draw, so the verifier runs a sample record built from the engine's test vectors.
Claim a prize
The prize is paid on-chain, to your wallet. If you win, open the jackpot tab of the leaderboard and press claim. The server then signs a voucher that names you, the day and the exact amount. You submit it to the jackpot contract within 24 hours, and the USDG lands in your wallet. There is one claim per day.
If a prize is not claimed in time, or a day closes with no entries, the money stays in the contract and rolls into a later pool. The contract pays what the voucher says, once, and nothing more. It cannot reach player balances in the vault.