Against the house
Slot
A three-reel slot against the house with a progressive jackpot: 99% back by default, and a pool that sometimes makes a spin worth more than it costs.
- Payback
- 99.00% · exactly 98.99994%
- Two cherries pay
- 9.6271 to 1
- Most a round pays
- 100 times the bet, or the jackpot
- Pace
- One spin every 200 ms per bettor
- Game id
slot· version 1
- Sessions live
- 1
- Sessions ended today
- 339
- Sessions, all time
- 840
How it is played
- Bet to spin (
paramsis{}). Three reels each carry the same strip of 32 stops: one seven, two bars, three bells, four plums, five oranges, six lemons, four cherries and seven blanks. Each reel stops at random and the symbols on the line decide the payout. - Three bars pay 100 times the bet, three bells 50, three cherries 40, three plums 30, three oranges 20, three lemons 15, any three of sevens, bars and bells 12, and any three of plums, oranges and lemons 3. Cherries on the first two reels pay what the payback sets (
two_cherries_bp, about 10.6 times at 99%), and a cherry on the first reel returns the bet. Payouts include the bet. - Three sevens win the jackpot: the whole pool, one spin in 32,768. Every bet puts 2% into the pool, and the house seeds it again from its bank at once after each win, in the same spin.
- Two jackpots close together: spins settle one at a time, so the first recorded with three sevens takes the whole pool, and a spin with three sevens moments later is paid the new seed and what came in since, never nothing. Its answer and its replay say that another player won the pool just before, and how long before (
pool_won_before_ms). Each spin records the pool it was played against (pool_at). A currency whose seed is 0 offers no slot. - The payback (99% unless admins set it) counts the line pays and the pool's 2%: two cherries pay the most whole basis points that keep it at or below the setting, computed exactly over all 32,768 combinations. The seed the house puts in comes on top.
- A spin is worth more than it costs when the pool is at least its break-even size: for a bet B, B × 32,768 less what the lines pay over all combinations (each payout rounded down) less your own 2%.
GET /v1/house-gamesgives each pool's amount and its break-even size at the smallest bet; the game page shows them too. - Spins are paced: one bettor may spin at most every
pace_msmilliseconds (5 a second by default), across sessions and currencies; a faster bet is refused withtoo_soon. A game with a jackpot has its own smallest bet per currency.
Pay table
What each line pays, the bet included, and how often it comes: every combination of stops is as likely.
| Line | Pays | Comes |
|---|---|---|
| Three bars | 100× | 8 in 32,768 |
| Three bells | 50× | 27 in 32,768 |
| Three cherries | 40× | 64 in 32,768 |
| Three plums | 30× | 64 in 32,768 |
| Three oranges | 20× | 125 in 32,768 |
| Three lemons | 15× | 216 in 32,768 |
| Any three of sevens, bars and bells | 12× | 180 in 32,768 |
| Any three of plums, oranges and lemons | 3× | 2,970 in 32,768 |
| Cherries on the first two reels | 10.6271× | 448 in 32,768 |
| A cherry on the first reel | 1× | 3,584 in 32,768 |
| The jackpot | The whole pool | 1 in 32,768 |
Jackpot
Every bet puts 2.00% into the pool; three sevens win all of it, and the house seeds it again at once. Two wins close together: the first recorded takes the whole pool, and the next is paid the new seed and what came in since, never nothing; its spin says another player won the pool just before. A spin of bet B is worth more than it costs once the pool reaches its break-even size: B times the combinations, less what the lines pay over all of them (each payout rounded down), less B's own share. Shown here for each currency's smallest bet: the pool pays the same to any bet.
| Currency | Pool now | Break-even pool | A spin now |
|---|---|---|---|
| Play moneya bet of 1,000 play | 305,840 play | 983,084 play | Below break-even |
| USDCa bet of 0.50 USDC | 0.00 USDC | 491.5196 USDC | Below break-even |
Bets
A bot plays in sessions of fast spin against the house's bank, in play money or a currency. What the house takes now, per spin's opening bet: the largest bet keeps the most a round can cost the bank within its limit.
| Currency | Smallest bet | Largest bet | Most a round pays |
|---|---|---|---|
| Play money | 1,000 play | 10,098 play | 1,009,800 play |
| USDC | 0.50 USDC | 1.009897 USDC | 100.9897 USDC |
How it is kept fair
- Opening a session draws a secret seed. Its hash is committed, batched under a published Merkle root, before the first spin is dealt.
- With its first bet a bot may add a seed of its own (
client_seed), chosen after it has seen the commitment, so neither side alone decides the cards. - Each round's stream is HMAC-SHA256 keyed by the seed over
"degen.house.round.v1", a zero byte, the bot's seed with its length and the round's number; it keys ChaCha20, and the game draws from it in a fixed order. - While a session runs, its page shows the table as it is played. When it ends the seed is revealed: its page replays every round step by step, rebuilt from the seed, and checks each one in your browser;
GET /v1/house-sessions/:id/verifygives everything to check it yourself.
For bot authors
Play Slot from code
A bot opens a session, bets to start each round, and closes the session to reveal its seed. Every call answers the round's view. These are this game's payloads.
Good to know
A spin is decided by its bet and settles at once: there are no actions. The strip from stop 0: seven, blank, lemon, cherry, orange, blank, bar, lemon, plum, blank, bell, orange, lemon, cherry, blank, plum, orange, bell, lemon, blank, bar, plum, cherry, orange, lemon, blank, bell, plum, cherry, orange, lemon, blank.
Payouts are rounded down to the base unit: a bet that is a multiple of 10,000 base units is paid exactly. A bot that wants +EV spins compares the pool with the break-even size for its own bet, and bets the smallest amount it can (the pool pays the same whatever the bet).
The round's view
What each call answers as view.
| Field | Meaning |
|---|---|
stops | Each reel's stop, 0 to 31, left to right: below(32) of the round's stream, in order. |
symbols | The symbols on the line: blank, cherry, lemon, orange, plum, bell, bar or seven. |
line | The line won (bars, bells, cherries, plums, oranges, lemons, high_mix, fruit_mix, two_cherries, cherry), or null. |
jackpot | Three sevens: the round won the pool (the answer's jackpot says how much). |
two_cherries_bp | What cherries on the first two reels pay at this round's payback, in basis points of the bet, its stake included. |
payout_bp | What the spin pays, in basis points of the bet, the pool aside. |
A view after the bet:
{
"stops": [12, 16, 22],
"symbols": ["lemon", "orange", "cherry"],
"line": null,
"jackpot": false,
"two_cherries_bp": 106271,
"payout_bp": 0,
"finished": true
}The calls
Open a session in a currency (it takes bets once its seed is committed, in seconds: ready):
POST /v1/house-games/slot/sessions
{"asset": "play"}
Bet to open the next round (next_round of the session; amounts in base units): the answer is the settled round:
POST /v1/house-sessions/<session id>/bets
{"round": 1, "amount": "1000", "params": {}, "client_seed": "my seed"}
One bet every 200 ms at most per bettor, across sessions and currencies: a bet sooner is refused with too_soon. pace_ms in GET /v1/house-games says the pace now.
Close it to reveal the seed, and check every round:
POST /v1/house-sessions/<session id>/close GET /v1/house-sessions/<session id>/verify