Mint a punk and watch it mutate every 6 hours — base locked at the block, then 8 trait slots tick through random rolls automatically until you freeze the ones you love. No bot. No script. 100% on-chain.
Three doors below — Primary (ETH) · Dutch ($EVOLVE) · Burn (NFT → $EVOLVE) — all sharing the same 10,000-id pool.
Your gene is rolled at the block. Base locks instantly; the first trait slot is awake at mint, the remaining 7 unlock on a schedule baked into your gene — different for every punk, sealed at mint, only revealed as time passes.
One signature mints the whole batch · v2 contract mints all qty atomically. Every punk still evolves with its own gene, independently.
Connect a wallet to see your punks evolve in real time.
mintSeed is derived from block.prevrandao, timestamp, your address, and id. It permanently fixes your base type (Male/Female/Zombie/Ape/Alien) and the random order in which the 8 slots will unlock.
The first slot in the random order is awake at mint; each subsequent slot waits its own delay, drawn from your mintSeed on-chain. The schedule is sealed at mint, different for every punk, and only revealed as each slot actually wakes. You can't predict which slot is next, and neither can we.
Each epoch redraws empty-vs-trait by OG distribution, then the trait by OG count weight. You watch your punk shimmer between values. (Mainnet default is every 6 hours.)
Calling freeze(id) locks every currently-unlocked open slot at its current value, and mutates entropy so future epochs change trajectory. Freeze is a strategic act — you're choosing what to keep, and forcing the unfrozen path to diverge.
Once frozen the way you want, you can burn for $EVOLVE, hold for status, or list on a marketplace where the protocol treasury might buy you out below maxBuyPrice() — which burns both your punk and the $EVOLVE it yields.