★ Mechanics

how it
all works

Fishing Story is a two-phase on-chain game on Ethereum. Phase 1 is the rod NFT mint (live now). Phase 2 is the actual fishing, which goes live once all 20,000 rods are minted and the $FISH token launches.

01

the rod

Every rod is an ERC-721 NFT with three on-chain traits: quality, durability, and synthesis history. Quality determines what fish you can encounter; durability is how many fishing attempts you have; synthesis lets you trade up.

Common
20 uses

Cheap, expendable. Synthesis fodder.

Silver
50 uses

Solid mid-tier. Decent fish encounter.

Gold
100 uses

Long-lasting. Bigger fish bias.

Legendary
∞ uses

Never breaks. Top fish encounter rate.

02

mint

20,000 rods total, 4 pricing tiers. Cheaper early, rarer late. Buying late costs more but gives you a much higher chance at Gold / Legendary. Each rod minted in a tier has the same odds as every other rod in that tier — no whitelist tricks, no insider rolls.

TierToken IDsPriceCommonSilverGoldLegendary
T1#110,0000.001 ETH75%20%4%1%
T2#10,00115,0000.002 ETH60%27%10%3%
T3#15,00119,0000.004 ETH45%32%17%6%
T4#19,00120,0000.009 ETH30%30%30%10%
  • Per wallet: max 1,000 rods
  • Per transaction: max 100 rods
  • Cross-tier batches: auto-priced (e.g. 50 in T2 + 50 in T3 = 50×0.002 + 50×0.004)
  • Royalty: 3% on secondary (ERC-2981)
03

provably fair reveal

Quality is hidden during mint. After all 20,000 rods are minted, a single random seed is revealed and the contract maps every tokenId to its final quality.

commit-reveal

  1. Before mint opens, the team commits a hash keccak256(secret) on-chain
  2. Anyone can verify on Etherscan that the commitment came before any mint
  3. After sellout, the team submits the original secret
  4. Contract verifies keccak256(secret) == commitment — only the original works
  5. The seed is now public; qualityOf(tokenId) = hash(seed, tokenId) % 100

Because the commit happens before any mint, the team can't pick a seed that favors specific tokenIds. If the team refuses to reveal within 30 days, anyone can call forceReveal() using a blockhash fallback.

04

synthesis

Burn 2 rods of the same tier to attempt an upgrade to the next tier. Failure burns 1 rod and returns the other — so you never lose everything in a bad roll. Broken rods (durability 0) can still be used as synthesis fodder, so they always have floor value.

×2
30%
×2
20%
×2
10%
Expected cost to synthesize 1 Legendary from Commons: ~286 commons (failure-keeps-one math). Compare to: minting 50 rods averages 1 Legendary. Synthesis is the long-tail aspirational path, not a shortcut.
05

fishing & $fish · phase 2

Once all rods are minted, we deploy the $FISH meme token + a Uniswap V4 pool with a custom hook. From that moment on:

  1. 01
    Every 10 $FISH swaps

    the V4 hook drops a new fish into the pond. The fish's value equals the accumulated 3% tax of those 10 swaps.

  2. 02
    You cast

    select a rod, enter the pond. Higher tier = better odds at hooking a bigger fish (current pool sample-weighted).

  3. 03
    Stardew-style reel

    real-time minigame in the browser — keep the green bar over the fish for X seconds. Rod quality doesn't make the minigame easier, only encounter probability.

  4. 04
    Cash out

    successful catch → claim the fish's $FISH value. Failed catch → fish back into pond, your rod loses 1 durability.

Why it works: the $FISH tax → fish → claim loop creates real demand for rods. Every $FISH trader is funding the fishing pool. Every angler is creating sell pressure when they cash out. Rods with infinite durability (Legendary) become long-term yield assets.
06

roadmap

  • Contract written + tested (22/22)
    FishingRod.sol on Ethereum mainnet, Foundry tests passing
  • Sepolia testnet deploy
    End-to-end run before mainnet
  • Audit (Code4rena public contest)
    $5-10k, 1-2 weeks
  • Mainnet deploy + commitSeed + open mint
    20,000 rods, 4 tiers, ~45 ETH raise
  • Reveal (after sellout)
    All qualities revealed atomically
  • $FISH launch + V4 pool deploy
    Hook with 3% tax, fishing minigame goes live
?

faq

Is mint open right now?

Check the home page banner. Mint opens after the team commits the reveal seed and flips the on-chain mint switch.

Can I trade my rod before reveal?

Yes. ERC-721 transfers work normally; reveal just changes the on-chain quality lookup. Pre-reveal trading is essentially blind speculation.

What happens if the team disappears before reveal?

After 30 days post-mint-complete, anyone can call forceReveal() to use a blockhash-derived seed. NFTs never get stuck unrevealed forever.

What's the floor utility of a Common rod?

20 fishing uses + synthesis fodder forever (broken Commons can still synthesize). Even after the durability is gone, two of them can still go into a Silver synthesis attempt.

Where does the mint money go?

100% to a multi-sig treasury. Allocation between team / LP / marketing / reserve will be published before mint opens.

Is there a presale or whitelist?

No. Fully public mint, first-come-first-served. Tiered pricing replaces whitelist.