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.
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.
Cheap, expendable. Synthesis fodder.
Solid mid-tier. Decent fish encounter.
Long-lasting. Bigger fish bias.
Never breaks. Top fish encounter rate.
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.
| Tier | Token IDs | Price | Common | Silver | Gold | Legendary |
|---|---|---|---|---|---|---|
| T1 | #1–10,000 | 0.001 ETH | 75% | 20% | 4% | 1% |
| T2 | #10,001–15,000 | 0.002 ETH | 60% | 27% | 10% | 3% |
| T3 | #15,001–19,000 | 0.004 ETH | 45% | 32% | 17% | 6% |
| T4 | #19,001–20,000 | 0.009 ETH | 30% | 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)
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
- ① Before mint opens, the team commits a hash
keccak256(secret)on-chain - ② Anyone can verify on Etherscan that the commitment came before any mint
- ③ After sellout, the team submits the original
secret - ④ Contract verifies
keccak256(secret) == commitment— only the original works - ⑤ 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.
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.
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:
- 01Every 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.
- 02You cast
select a rod, enter the pond. Higher tier = better odds at hooking a bigger fish (current pool sample-weighted).
- 03Stardew-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.
- 04Cash out
successful catch → claim the fish's $FISH value. Failed catch → fish back into pond, your rod loses 1 durability.
roadmap
- ✓Contract written + tested (22/22)FishingRod.sol on Ethereum mainnet, Foundry tests passing
- →Sepolia testnet deployEnd-to-end run before mainnet
- →Audit (Code4rena public contest)$5-10k, 1-2 weeks
- →Mainnet deploy + commitSeed + open mint20,000 rods, 4 tiers, ~45 ETH raise
- →Reveal (after sellout)All qualities revealed atomically
- →$FISH launch + V4 pool deployHook with 3% tax, fishing minigame goes live
faq
Check the home page banner. Mint opens after the team commits the reveal seed and flips the on-chain mint switch.
Yes. ERC-721 transfers work normally; reveal just changes the on-chain quality lookup. Pre-reveal trading is essentially blind speculation.
After 30 days post-mint-complete, anyone can call forceReveal() to use a blockhash-derived seed. NFTs never get stuck unrevealed forever.
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.
100% to a multi-sig treasury. Allocation between team / LP / marketing / reserve will be published before mint opens.
No. Fully public mint, first-come-first-served. Tiered pricing replaces whitelist.