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 identifierseed— 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 NFT | BasePeg |
|---|---|
| Metadata on IPFS | No external storage |
| Art can disappear if server goes down | Art is derived from chain state |
| Contract stores a URL | Contract stores a seed |
| Art is fixed at mint | Art is computed live every time |
The lineage
BasePeg didn't appear in a vacuum. It follows a lineage of on-chain inscription protocols:
| Protocol | Chain | What it does |
|---|---|---|
| Ordinals | Bitcoin | Inscribes data into individual satoshis, anchoring digital artifacts on Bitcoin permanently |
| Unipeg | Ethereum | Uniswap's variant — on-chain peg tied to liquidity positions |
| BasePeg | Base | ClankerCats' 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.