20 pixel-art species. 5 rarities. Every fish animated and stored on Ethereum forever. No IPFS. No servers. No expiry.
MINT_PRICE = 0.0001 ETH each. Rarity rolled on-chain using block.prevrandao + nonce.uint256 per token. Nothing off-chain._castsSinceLastLegendary resets and one fish is forced to rarity 4 (Legendary). No exceptions.Mutated event is emitted.contributeToBoss(tokenId) to sacrifice a fish. Once 5 contributed, call catchBoss() to claim a free Legendary.evolveSet([ids], rarity). All 5 sent to dead address. You receive 1 fresh Legendary with Mutated trait.catchHistory. Updates automatically on every transfer.FishRenderer.sol. The tokenURI assembles a self-contained animated SVG. No IPFS, no CDN, no expiry.hasFreeCast. Your first catch_ call is free (minus gas). Every fish after costs 0.0001 ETH. Up to 10 per transaction.evolveSet([id1,id2,id3,id4,id5], rarity) with 5 fish of the same rarity you own. All 5 are burned to 0xdead and you receive 1 Legendary with the Mutated trait.block.prevrandao + timestamp + wallet + nonce + tokenId. Odds shift as supply decreases. One guaranteed legendary every 500 casts.TBA on launch day