cryptofunks

CryptoFunks — Litepaper

A bonded generative NFT, backed by a token, drawn from future-block randomness.

A sheet of CryptoFunks


TL;DR

CryptoFunks is a 24×24 generative pixel-art NFT collection where every funk is backed by 10 $FUNKS. You don't buy a funk — you redeem one: lock 10 $FUNKS as a permanent bond and pay a small ETH fee, and a commit-reveal draws your funk's art from future-block randomness. Burn the funk anytime to release its 10 $FUNKS.

Two assets and a fee, one loop:

$FUNKSERC-20, fixed 100,000 supplythe bond — 10 locked per funk
CryptoFunkERC-721, max 10,000the art — generated on redeem
Mint feea small flat fee in native ETH (0.00069420 ETH)paid to the protocol on each redeem, reroll, and burn

Every funk locks exactly 10 $FUNKS, so 10,000 is the hard cap (100,000 ÷ 10). The claimable number is lower, though: any $FUNKS sitting in amounts below 10 — dust, partial holdings, fragments left in the LP — can't redeem a funk, so it's stranded. The live collection approaches 10,000 asymptotically but only reaches it if every $FUNKS is consolidated into clean multiples of 10. Expect a long tail short of the cap.


1. The bonded-NFT model

Most NFTs are sold; the proceeds leave. CryptoFunks are minted against collateral that stays.

This makes the NFT a wrapper around a bonded position in $FUNKS. Its hard floor is the token: a funk is always worth at least the 10 $FUNKS locked inside it. And the two sides breathe against each other:

At theoretical full mint-out, all 100,000 $FUNKS are bonded inside 10,000 funks — the collection is the token, re-shaped as art. In practice fragmentation strands a residue of sub-10 dust (in wallets and the LP) that can never be redeemed, so the effective supply settles just under the cap — a soft scarcity the hard number alone doesn't capture.


2. How a funk is born

Funk #5

Nothing is pre-drawn. There's no hidden folder of 10,000 finished images waiting to be handed out — no funk exists until it's claimed. Each one is generated at the moment you claim it, computed from randomness that didn't exist when you committed. Nobody — not even us — can see it coming or cherry-pick a good one.

The generation runs as a commit-reveal, so neither the minter nor a block proposer can grind for rares:

  1. Commitredeem() locks your 10 $FUNKS, takes a small ETH fee, and records a commit at the current block.
  2. Wait ~2 blocks (~30s).
  3. Reveal — anyone can finalize; the seed is hashed from blockhash(commitBlock+1) — the hash of the block right after your commit, which did not exist when you committed and is identical no matter when, or by whom, it's finalized.

The window is 256 blocks (~1 hour) — the chain's blockhash horizon. Reveal in time and the art is yours forever; miss it and the bond is refundable (your 10 $FUNKS come back). Don't like your roll? Reroll the seed for a small ETH fee.

Why future-block randomness? Generative mints that read their seed from values already known when the mint transaction lands — most commonly block.prevrandao, as in uPeg — can be computed ahead of time. That lets minters grail-snipe (only complete a mint when the predicted roll is rare) and game duplicates. EIP-4399, which defines prevrandao, explicitly warns it is proposer-biasable and unfit for high-value randomness. CryptoFunks draws its seed after you commit, from a block that does not exist yet — so no one, not even the block proposer, can see your funk before it's locked in.

The seed lives on-chain and is immutable. The image is deterministically derived from it by an open, reproducible renderer — same seed, same funk, anywhere.


3. The art

24×24 sprites in the CryptoPunks lineage — types (Human male/female tones, and rare Aliens), plus hats, hair, eyewear, facial hair, mouth props, and accessories. A vanishing ~0.5% roll a rare skin tint.

Crazy Hair + VR Cowboy + Eye Patch Tassle Hat Rare skin tint

Left to right: Human 3 + Crazy Hair + VR · Human 1 + Cowboy Hat + Eye Patch · Human Female 1 + Tassle Hat · a rare-skin-tint roll (~0.5%).

No gender lock. In the original CryptoPunks, trait pools were split by type — some hair, eyewear, and accessories appeared only on male punks, others only on female, and the two pools never crossed. CryptoFunks deliberately breaks that. Male and female faces have different proportions (the male face spans more rows than the female), so every attribute sprite is resampled and resized to land correctly on whichever face it's drawn over. The effect: combinations the source never produced — long hair and pink eyeshadow on a male, hoodies and hats on a female, female zombies and aliens — which roughly doubles the effective trait space and makes the cross-gender rolls some of the most distinctive funks in the set.

Cross-gender funks

Traits the originals kept apart, now freely mixed: a female in a bandana · a bearded, lipsticked female · a male in green eye shadow · a male with a blonde bob. The type pool goes further still, adding Zombie, Ape, Alien, and Female Zombie.


4. Rarity — relative and live

Rarity is relative to the live collection, not a fixed pre-baked table. Every trait — including the type itself (e.g. Human 3 Male) — is scored by how much of the live set shares it. Lower share = rarer.

Each funk also gets a rarity rank: the rarest live funk is ★1, recomputed on every load.

It cuts both ways. Because rarity is measured against the live set, every mint and every burn re-weights it. Mint more of a trait and it dilutes — you might hold the only Zombie today, but ten more minted tomorrow changes that. Burn copies and the survivors concentrate — one fewer Zombie in circulation lifts every remaining Zombie's score. A rank isn't a permanent stamp; it breathes with the collection.

Representative frequencies over a 1,000-funk sample:

RarestCommonest
Alien (type)0.1%Earring28.2%
Clown Hair (Yellow/White/Pink…)0.1%Human 4 Male (type)15.8%
Hoodie (Red/Purple)0.1%Human 3 Male (type)15.6%

5. The mint fee

Every claim, every reroll, and every burn pays a small flat fee in native ETH (0.00069420 ETH), straight to the protocol. It isn't there to gate supply — it's the cost of drawing new art:


6. The market

$FUNKS is a fixed-supply ERC-20 — 100,000 minted once at deploy, no minter, no admin — traded on a Uniswap v3 pool, the primary and only market. At launch 99,000 $FUNKS (99% of supply) were seeded single-sided into the pool and the LP position was burned, so the liquidity is locked forever and can never be pulled — no rug, no team-controlled liquidity. Price is set purely by the market; there is no bonding curve.

The remaining 1,000 $FUNKS (1%) are held by the team to cover operational costs — protocol/network fees, DEXScreener listing & boosts, and community giveaways. That is the entire team allocation: no other premint, no reserve, no vesting.

Since each funk's floor is 10 bonded $FUNKS, a rising $FUNKS price lifts the floor of every CryptoFunk together — upside that accrues to all holders, not just early buyers.


7. Contracts

ContractRole
FunksERC-20, fixed 100,000 supply — minted once at deploy, no minter, no admin (99% to the burned Uniswap LP, 1% team bag)
Uniswap v3 poolthe $FUNKS/ETH market (0.01% fee) — 99% of supply seeded single-sided, LP position burned so liquidity is locked forever
CryptoFunksERC-721 — commit-reveal mint, bonded redemption, reroll; flat ETH fee on mint, reroll + burn

Plain OpenZeppelin ERC-721 — no transfer restrictions, so contract wallets, Safes, smart wallets, and 7702 EOAs can all hold and move funks freely (escrow, packs, vaults, games all work).


8. Status


9. Lineage & references

CryptoFunks stands on a specific genealogy:

Sources: CryptoPunks · CryptoPhunks (Not Larva Labs) · Slonks · uPeg / Unipeg · UPEG price — CoinGecko · EIP-4399 (prevrandao)


CryptoFunks is experimental software on testnet. Nothing here is financial advice. CryptoPunks, CryptoPhunks, Slonks, and uPeg are independent projects referenced for lineage and comparison; CryptoFunks is not affiliated with or endorsed by them.