Onchain Fishing
Mainnet beta · unaudited 中文 Beta
On chain · Live

Who each shot hits,
and whether it kills,
is decided on chain.

You submit only a firing direction. The contract computes the collision against the ~225 fish on the field, and randomness is drawn only at the moment of settlement. RTP is fixed at 95%, no matter how you play.

§ 01 · One shot

Three steps, all on chain

A fire transaction carries only a direction. Which fish it hits, when it settles and whether it kills are all computed by the contract according to the rules, and anyone can recompute them.

STEP 01TX · FIRE

Aim and fire

Pick a bet tier, pick a direction, sign one transaction. The transaction has no "which fish to hit" parameter.

STEP 02SEARCH · EARLIEST

The chain finds the first fish it meets

The contract traces the trajectory (bouncing off walls) and computes the first fish it will hit and the moment of contact. A fish in front does block the ones behind it.

STEP 03RESOLVE · RANDOM

Settled at the moment of the hit

Bullets queue by the moment they reach their fish and are settled along the way by later transactions. Randomness is drawn only at settlement; a kill pays out at the fish's multiplier.

§ 02 · Guarantees

Three things written into the contract

RTPRULE
95%

Fixed RTP

Whatever fish you shoot, however you aim, however fast you are, every shot is expected to return 95% of the bet. The other 1% is the tech fee and 4% is the house edge.

How it's computed
SEARCH · RNGON-CHAIN
≤ 9,200

Collision and randomness, both on chain

A transaction's execution cap is 9,200 gas, and the contract searches the whole field within it. Randomness comes from Aptos on-chain randomness, drawn at settlement; once drawn, it can't be taken back.

Where randomness comes from
SOLVENCYLOCKED
×100

Payouts are locked

The moment a shot leaves the barrel, the most it could possibly win (100× the bet) is locked, so it can always be paid at settlement. Winnings go to your room balance, and only you can withdraw them.

Who can move the money

§ 03 · Fish

8 fish, the same expectation

The bigger the fish, the harder to kill and the higher the multiplier. Hit probability × multiplier is 0.95 for every one of them: big fish are no better value; they only make the swings bigger.

Little Yellow
2×
Little Yellow
47.5%
Butterflyfish
3×
Butterflyfish
31.67%
Clownfish
5×
Clownfish
19%
Bluetail
8×
Bluetail
11.875%
Pufferfish
15×
Pufferfish
6.33%
Parrotfish
25×
Parrotfish
3.8%
Golden Shark
50×
Golden Shark
1.9%
Golden Turtle
100×
Golden Turtle
0.95%

Hit probability × multiplier = 0.95 · the same for every fish

§ 04 · Live readings

The room's books, read live from chain

Every number below is read directly from the contract's view functions and refreshed every 5 seconds. Room

—
In-flight shots
ROOM_STATE · PENDING
—APT
Vault balance
BANK_STATE · VAULT
—APT
House available
BANK_STATE · HOUSE_FREE
—APT
Locked max payout
BANK_STATE · LOCKED
—APT
Total player room balances
BANK_STATE · PLAYERS
Connecting…Network: Mainnet beta · unaudited
VERIFYREPLAY IN BROWSER

Don't trust us? Compute it yourself

Paste the hash of a fire transaction. In your browser, the page recomputes the school of fish and the trajectory from the room seed, checks that the fish recorded on chain really is the first one this bullet touched, then finds its settlement.

⌖
ENGINEERINGMEASURED
Execution cap
9,200 gas / tx
Fire gas
median 812 · p95 1,861
Per-room throughput
93 shots / s
Contract tests
127
Brute-force cross-check
300/300 match

Read how it works

§ 05 · FAQ

A few answers first

All questions
Are big fish better value?
No. For every fish, hit probability × multiplier is 0.95, so the expectation is the same. Big fish only make the swings bigger.
Why did someone else take the fish I was aiming at?
Bullets are settled in the order they reach their fish. Whoever's bullet touches it first, and settles first, gets the chance to take that fish. This doesn't change anyone's expectation.
Why is a bullet's bet sometimes refunded?
The fish your bullet was headed for was killed by someone else before your bullet arrived, so the chain looks for the next fish along the original trajectory; if nothing is hit across the entire range, the bet is refunded in full.
How much APT do I need?
Keep about 0.03 APT in your wallet as a storage deposit and gas reserve (the per-shot deposit of 0.0047 APT is returned after settlement); when betting from the wallet, add the bet on top.
Can the contract be changed?
Code upgrade rights currently sit with a multisig; the plan is to lock it as non-upgradeable once it has passed an audit and run stably. See Security & governance.

OPERATORS

Want to host a room?

House edge 4%, with payout locking guaranteed by the contract. See revenue, bankroll requirements and the process.

About hosting a room