Change
The library Change, unchanged in layout, with deps widened so a Change may build on a Snapshot; identity, ops and the CRDT are as documented today.
Fetching schema…

Part of Stem. This page defines what Stem changes about the Change blob, which is almost nothing.

A Change is exactly the library change; Stem only allows a Snapshot CID among its deps.

Fields

The schema is an extension of change that restates one field.

field

type

required

meaning

deps

list of CID

no

The heads the author built on, sorted by CID: Change blobs, or a Snapshot when the author continued from a snapshot. Omitted on the genesis Change.

Every other field (genesis, depth, body with its ops) is as on change. The document model, the two CRDTs, op ids and the replay invariants are as in Documents.

Rules

The genesis Change is still the identity of a document's history; a Node ties that history to a node id, and every head a Node lists must share one genesis. A Change that depends on a Snapshot treats the Snapshot's value as the state it builds on; the Snapshot's schema must be the document attributes schema of the node's kind. Changes carry no authorization of their own, as today: authority is checked on the Node that points at them. Changes carry no visibility: their audience is derived from the nodes whose heads reach them.

Today (HM24)

Identical, minus the Snapshot dep. The custom CRDT the team plans for signed history will replace the op set later; the Node and Snapshot layers do not depend on that decision.

Example

See the examples on change. A Change continuing from a snapshot differs only in deps:

"deps": [{"/": "bafyreisnapshotofdocument00000000000000000000000000000000"}]

Do you like what you are reading? Subscribe to receive updates.

Unsubscribe anytime