Spore Protocol
The Spore Protocol is an on-chain protocol designed to empower the ownership, distribution, and value capture of unique digital objects (DOBs) known as Spores.
How Spore Protocol Works
Spore Protocol embeds value into on-chain digital objects (DOBs) using two Cell types: Spore Cell and Spore Cluster Cell. Spore Cells are fundamental, while Spore Cluster Cells are optional extensions providing extra information.
Spore
A Spore is an on-chain DOB backed by CKBytes. Unlike traditional NFTs that rely on external market demand for their value, Spores offer intrinsic value at minting and potential for value growth. Holders can "melt" their Spores at any time to retrieve the underlying CKBytes.
Data Structure
data:
content-type: Bytes # String Bytes
content: Bytes
# OPTIONAL
cluster_id: Bytes
type:
hash_type: "data1"
code_hash: SPORE_TYPE_DATA_HASH
args: SPORE_ID
lock:
<user_defined>
content-type
: Specifies the content format (e.g., image/png) following MIME standards. It can include parameters (e.g., immortal=true for indestructible Spore).content
: Main content of the Spore.cluster_id
: Optional field for categorizing the Spore into a series or collection.type
: Type Script set toSPORE_TYPE_DATA_HASH
withSPORE_ID
as an argument following the rules of Type ID ScriptSPORE_ID
= hash(this_transaction.inputs[0]) | Output_Index_Of_This_Cell
All fields in a Spore Cell are immutable once created.
Cluster
A Cluster organizes multiple valuable digital objects (DOBs). Each Spore can be linked to only one Cluster, while each Cluster can associate with many Spores.
- Cluster Types: Clusters can be Public or Private. Public Clusters allow anyone to tag a Spore, while Private Clusters restrict tagging to the owner during minting.
- Permanent Storage: Clusters are designed to be indestructible once created, ensuring permanent on-chain presence.
Data Structure
data:
name: Bytes # String Bytes
description: Bytes # String Bytes
type:
hash_type: "data1"
code_hash: CLUSTER_TYPE_DATA_HASH
args: CLUSTER_ID
lock:
<user_defined>
name
: Name of the Spore Cluster.description
: Textual description of the Cluster.type
: Type Script set toCLUSTER_TYPE_DATA_HASH
withCLUSTER_ID
as an argument following the rules of Type ID Script- CLUSTER_ID = hash(this_transaction.inputs[0]) | Grouputput_index_of_this_cell
All fields in a Spore Cluster Cell are immutable once created.
Deployed Info
The Spore Protocol has been deployed to CKB's Mainnet Mirana. The following are the deployment details:
Spore
parameter | value |
---|---|
code_hash | 0x4a4dce1df3dffff7f8b2cd7dff7303df3b6150c9788cb75dcf6747247132b9f5 |
hash_type | type |
tx_hash | 0x96b198fb5ddbd1eed57ed667068f1f1e55d07907b4c0dbd38675a69ea1b69824 |
index | 0x0 |
dep_type | code |
Cluster
parameter | value |
---|---|
code_hash | 0x7366a61534fa7c7e6225ecc0d828ea3b5366adec2b58206f2ee84995fe030075 |
hash_type | type |
tx_hash | 0xe464b7fb9311c5e2820e61c99afc615d6b98bdefbe318c34868c010cbd0dc938 |
index | 0x0 |
dep_type | code |
Examples
- DApp tutorial: Create a DOB
- Other examples: Spore Protocol tutorials