Skip to main content

Technical Design

Spore protocol is engineered to embed value into on-chain contents and non-fungible tokens.

Spore is built on the Cell model, an extension of of Bitcoin UTXO, providing enhanced asset ownership and proof-based verification capabilities.

There are two defined cell types: Spore Cell and Spore Cluster Cell, of which Spore cell is the fundamental and the only necessary unit in the protocol. Other cell types are optional and may serve as extension cells, providing extra information to a Spore.

spore-cluster.png

As illustrated above,

  • Multiple Spores cells (Spore #1, #2) can be assigned to one Cluster (Spore Cluster #1)
  • A single Spore cell (Spore #4) can be assigned to a cluster (Spore Cluster #2)
  • A standalone Spore cell, i.e., a Spore can exist without a Cluster (Spore #3)
  • A Spore cell cannot be assigned to multiple Clusters
  • Importantly, Cluster Cells don't contain Spore Cells

Spore Protocol is anchored around the following key functionalities:

  • Immutable digital asset issuance
  • Permanent on-chain storage
  • Minimized cell specification dedicated for content storage
  • Built-in extensibility on the protocol level

Data structure

Spore Protocol uses Molecule as its serialization format standard. Basic types used in this standard are described as bellow:

vector Bytes <byte>;
array Bool [byte; 1];
option BoolOpt (Bool);
option BytesOpt (Bytes);

Spore Cell

Every Spore must follow this data structure:

table SporeData {
content_type: Bytes,
content: Bytes,
cluster_id: BytesOpt,
}

Cluster Cell

Every Cluster must follow this data structure.

table ClusterData {
name: Bytes,
description: Bytes,
}
info

The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC 2119.