Skip to main content

BasePeg (bPeg)

ClankerCats invented this. We brought it to Base.

Bitcoin has Ordinals. Uniswap built Unipeg. ClankerCats introduced BasePeg — the on-chain peg protocol for Base chain, where every CCAT token permanently anchors a unique pixel cat identity directly on-chain.


What is a BasePeg?

A BasePeg (shortened to bPeg) is an on-chain record tied to a CCAT token. It consists of two immutable values stored in the CCAT contract:

  • id — the unique peg identifier
  • seed — a large integer that deterministically generates the pixel cat's appearance

When you hold CCAT, you hold a bPeg. When you swap CLKCAT for CCAT, a bPeg is yours. It lives on Base forever — no metadata server, no IPFS, no off-chain dependency.

To mint from the first collection, follow the direct Mint bPegs tutorial: buy CCAT on Base, then verify the wallet in the ClankerCats gallery.


How it's different

Most NFT projects store art off-chain (IPFS, Arweave, centralized CDN) and only reference it on-chain. A BasePeg is not a pointer.

The RENDERER contract takes your (id, seed) pair and computes the entire pixel cat SVG on-chain at call time. The seed IS the art. The art IS the bPeg.

Typical NFTBasePeg
Metadata on IPFSNo external storage
Art can disappear if server goes downArt is derived from chain state
Contract stores a URLContract stores a seed
Art is fixed at mintArt is computed live every time

The lineage

BasePeg didn't appear in a vacuum. It follows a lineage of on-chain inscription protocols:

ProtocolChainWhat it does
OrdinalsBitcoinInscribes data into individual satoshis, anchoring digital artifacts on Bitcoin permanently
UnipegEthereumUniswap's variant — on-chain peg tied to liquidity positions
BasePegBaseClankerCats' original contribution — pixel cat identity pegged on-chain on Base

We are the Base chapter of this lineage. ClankerCats pioneered BasePegs on Base chain.


Technical spec

Every bPeg is defined by its entry in the CCAT contract's peg storage:

struct Peg {
uint256 id;
uint256 seed;
}

The RENDERER contract exposes:

function tokenURI(uint256 upegId, uint256 seed) external view returns (string memory)

This returns a full data:image/svg+xml;base64,... URI — the pixel cat — computed entirely from seed. No external calls. No IPFS. No servers.

The app calls this via the OwnerUpegsPage(address owner, uint256 page, uint256 pageSize) function on the CCAT contract, which returns an array of (id, seed) pairs for a given wallet.

Contract addresses are in the Contract Reference.


Why it matters

  • Permanent — as long as Base exists, your bPeg exists
  • Immutable — the seed cannot change after mint
  • Censorship-resistant — no company can take it down
  • Fully on-chain — the art is computed from chain state, not retrieved from a server
  • Composable — any contract or app can read the RENDERER and render your cat

Your bPeg is not a JPEG. It's a program. It's math. It's yours.

Want to make your own bPeg collection? Start at mirage.garden.