Store Structure
The normative identity model is Protocol · Identity & naming (store / capsule / generation; store_id = the CHIP-0035 launcher id).
A store has an identity, a history of generations, and a compiled module. This page covers each.
Store identity
A store is identified by a 64-hex store id, which is the store's on-chain Chia singleton launcher id — minted on mainnet by digs init (see On-chain anchoring). The id is the store's permanent on-chain identity: the singleton's current root is the store's authoritative latest root, and every commit advances it on-chain.
The id is curried into every URN that references the store and is the only mandatory addressing component. A separate publisher BLS signing key (embedded in the module) signs the store's published roots and push heads — but the store id is the chain singleton, not a hash of that key.
Generations and root hashes
Every commit seals the current content into a new generation, identified by a root hash — the Merkle root over the generation's per-resource leaves.
| Term | Meaning |
|---|---|
| Generation | A store state identified by a root hash, with a monotonic ordinal id |
| Root hash | Merkle root over the generation's per-resource leaves |
| Root history | Append-only list of every root hash the store has produced |
Each commit produces exactly one new generation, one new module file, and one new root hash. History grows monotonically — like Git. Any past root hash can be quoted in a URN to address the store at that generation; omit it to address the current one.
Each commit creates a new generation — an immutable (storeId, rootHash) pair anchored on-chain as a CHIP-0035 singleton update. That pair is a capsule: the network's unit of retrieval, caching, and pricing (a uniform per-capsule price in $DIG). So a store is a sequence of capsules, one per commit. (See the capsule for the ecosystem-wide definition.)
digs log # list generations (each root hash is a commit)
digs diff <a> <b> # what changed between two roots