Nodes

Abstractly, a node is a structure that holds some data and references to other nodes. From a graph theory perspective, a node represents a vertex in a directed graph and a set of outgoing edges. Any properties of that vertex or labels on those edges (including quantity in a multigraph) are contained in the data attached to the node.

A reference to a node forms the capability to fetch it from a remote location. The references held by a node may be read by anyone with the node. Thus, if you can fetch a node you can (in theory) transitively fetch the whole graph reachable from that node. These references typically take the form of a hash or cryptographic signature, which allows the integrity of the node to be verified.

Reading the data on a node requires the read capability for that node. This typically takes the form of an encryption key, so even if you hold a node, its data is inaccessible without the key.

Some nodes come in versions. Creating a new version of a node requires a write capability for that node. This typically takes the form of a signing key, and is shared between all potential writers of a node.

Some data may be additionally restricted from reading by non-writers of a node, in particular the write-capabilities of referenced nodes.

Nodes may hold up to 1 megabyte of data, plus cryptographic overhead. They may list up to 256 references.