§ OPERATORS · HOUSE EDGE 4%
Public rooms
Rooms are opened and funded by operators. Revenue comes only from the 4% house edge; payouts are guaranteed by funds locked in the contract, and operators cannot touch players' money.
Revenue
bets / hour: a full 100-player room (93 shots / s × 4%), then multiplied by occupancy.
Capital
max bet: house bankroll for a full room (in-flight locks + ruin buffer + margin). Example: a 0.1 APT max bet needs about 2,000 APT.
Setup
APT, mostly a refundable storage deposit, returned when the room is closed.
Risk
| After opening | 1 min | 10 min | 1 hour |
|---|---|---|---|
| Probability the house is still at a loss (full room, simulated) | 24% | 1.4% | 4×10⁻⁸ |
Process
Leave your contact details and expected scale.
The governance multisig grants your account room-creation approval.
Create the room, deposit the house bankroll, set bet tiers and the idle threshold.
Run the sweep keeper (required); it settles expired shots when nobody is firing.
You can adjust
- Bet tiers
- Seat idle threshold
- Private rooms: invite passphrase, named invites, kick, rotate invite key (coming soon)
- Depositing and withdrawing house bankroll (the unlocked part)
- Closing the room
You cannot touch
- Players' room balances
- Funds already locked for in-flight shots
- The 95% RTP and fish multipliers
- Player withdrawals
§ PRIVATE ROOM · INVITE ONLY
Private rooms Coming soon
For people you know: the room owner decides who can sit. The contract is implemented and fully verified on localnet; when it opens to operators is not yet decided.
Capacity 1–100 players
Seats are spread evenly along the top and bottom edges. A 4-player room has one in each corner; a 1-player room sits at the center of the bottom edge. Fish schools, range, rate limit, bet tiers, payout locking are exactly the same as in a 100-player room, and the expectation is still 95%.
Invite required to sit
The room stores an invite public key. Newcomers join and take a seat with the room owner's invite signature; the contract rejects non-members trying to take a seat, fire or claim a seat.
Owner manages the list
Add people directly, kick (a seated player gives up the seat immediately), rotate the invite key (unused invites and the old passphrase are voided immediately), or switch back to a public room at any time.
Two kinds of invite
| Group passphrase | Named invite | |
|---|---|---|
| What the owner does | Generates a passphrase (can be made into a link or QR code) and sends it to friends | Signs an invite for a specific address, offchain, no gas |
| What the player does | The client uses the passphrase to sign for the player's own address, then submits | Submits the owner-signed invite directly |
| Transferable? | Anyone with the passphrase can join; if it leaks, rotating the key voids it | Valid only for the named address; fails verification for anyone else |
Contract guarantees
- Cannot be hijacked: the invite signature is bound to the player's address; someone who sees the transaction onchain and swaps in their own address fails verification
- Passphrase never goes onchain: only the signature is onchain, and it is also bound to the chain id, so a testnet invite is invalid on mainnet
- Kicked means locked out: a kicked player cannot get back in even with a valid invite or passphrase, until the owner adds them back
- Kicking cannot freeze funds: a kicked player's in-flight shots settle as usual, and their room balance can be withdrawn at any time
Not promised
- Private is not hidden: onchain data is readable by anyone, and anyone can see every shot in the room via Watch
- Group passphrase leaks: until the owner rotates the key, anyone with the passphrase can join; the owner can kick and rotate the key at any time
- No spectator permission: watching never required permission, so there is no "watch only, no seat" setting