cryptofunks

CryptoFunks — Litepaper

A bonded generative NFT, backed by a token, gated by a burn.

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 burn 10 $SLOP, and a commit-reveal draws your funk's art from future-block randomness. Burn the funk anytime to release its 10 $FUNKS.

Three assets, one loop:

$FUNKSERC-20, fixed 100,000 supplythe bond — 10 locked per funk
$SLOPthe consumable keythe fee — 10 burned per funk (15% to the protocol)
CryptoFunkERC-721, max 10,000the art — generated on redeem

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, burns your 10 $SLOP, and records a commit at the current block.
  2. Wait ~5 blocks.
  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 (~51 min) — the EVM'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 10 $SLOP.

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. $SLOP — the burn that feeds the ecosystem

Every claim and every reroll burns 10 $SLOP (15% to the protocol, 85% destroyed outright). It isn't there to gate supply — it's a sink:


6. The market

$FUNKS trades against ETH in a Uniswap v4 pool. Liquidity is seeded one-sided (all $FUNKS, no ETH), so the pool behaves like a bonding curve: buyers spend ETH, $FUNKS leaves the pool and price climbs the curve, and the ETH accumulates as protocol-owned liquidity backing the token.

Since each funk's floor is 10 bonded $FUNKS, a rising $FUNKS curve 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
CryptoFunksERC-721 — commit-reveal mint, bonded redemption, reroll
FunksHookthe redeem gate — locks $FUNKS, burns $SLOP, commits the mint
Uniswap v4 pool$FUNKS/ETH market + protocol-owned liquidity

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.