ckb-ccc-spore
CKB CCC — Spore Protocol
Covers Spore (on-chain NFT/DOB) creation, transfer, and destruction. Assumes a connected Signer (see ckb-ccc-signer-setup) and the standard transaction pattern (see ckb-ccc-transactions) — this skill only adds the Spore-specific steps on top of that pattern.
Spore vs. DOB — how they relate
Spore is the base protocol: a cell holding arbitrary content + contentType, optionally belonging to a Cluster. Everything in "Creating and managing Spore NFTs" below works for any content type.
DOB (Digital Object) is a family of specialized contentType conventions built on top of Spore — DOB/0 and DOB/1 each define their own content encoding and a matching decoder, so wallets/explorers know how to render them consistently:
- DOB/0 (
contentType: "dob/0") — the content is a DNA string (raw hex bytes). The Cluster's description defines a pattern: a list of traits, each specifying which bytes of the DNA to read (dnaOffset,dnaLength) and how to interpret them (options→ pick from a list,range→ numeric range,rawNumber→ raw value). A decoder applies the pattern to the DNA to produce human-readable traits, which compatible platforms (JoyID, Omiga, CKB Explorer, Mobit, Dobby) render. - DOB/1 (
contentType: "dob/1") — takes DOB/0's decoded output as input and assembles it into an SVG image (backgrounds, icons, compositing). Per the official protocol spec, the DOB/0 decoder produces named traits as TEXT, and the DOB/1 decoder consumes those traits to produce the final SVG string — so a DOB/1 cluster registers both decoders (ver: 1,decoders: [dob0Entry, dob1Entry]), and the minted spore'scontentTypeis"dob/1".
If the user just says "NFT", "DOB" or "digital object" without specifying a format, a plain Spore (no DOB pattern) is usually the simpler starting point — reach for DOB/0 when they specifically want DNA-driven, generative/random traits (loot-style items, PFP traits, etc.).