LIVE · evolving every 6 hours on-chain ▌ MINT CONSOLE

The first NFT that grows on its own.

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.

Open · 0.01 ETH

Mint a fresh punk

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.

▌ what's at stake · 3 rarest bases +8 more · 11 bases in pool
LEGENDARY
Alien base
Alien
0.09%
9 in 10,000
EPIC
Ape base
Ape
0.24%
24 in 10,000
RARE
Zombie base
Zombie
0.88%
88 in 10,000
SUPPLY / 10,000 minted
Ethereum mainnet · ~90,000 gas / mint
TOTAL COST 1 × 0.01 ETH
0.01 ETH

One signature mints the whole batch · v2 contract mints all qty atomically. Every punk still evolves with its own gene, independently.

▌ AFTER YOU MINT
Contract loading… · Reroll every 6 hours · Per-slot unlock set by your gene

Your collection

Connect a wallet to see your punks evolve in real time.

View full collection
After you mint

What happens to your punk next

Base locks in instantly

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.

Slots unlock on a schedule from your gene

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.

Open slots reroll every 6 hours

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.)

Freeze to commit (or to harvest)

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.

Burn, hold, or wait for buyback

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.