Versioned Nodes Prior ard Related Art
There are a variety of similar systems and designs to versioned nodes. However, they all are designed for narrower applications, and do not quite implement the paradigm.
Hyphanet (was Freenet)
Hyphanet is an encrypted content-addressed data sharing protocol, first released in 2000. They define four types of keys to access data, but the documentation is light on details. The source code for CHKBlocks and SSKBlocks seems to indicate that each block contains a fixed-size header and data, up to 1022 data bytes for a CHKBlock and four short of 32kB for a SSKBlock. Within these blocks are a number of built-in document types, which may include links to other blocks.
The reference implementation is a bit of a mess and there’s no clear specification, so take this with a grain of salt.
Hyphanet definitely lacks support for concurrent edits and explicit formats. Each version has a single (or no) parent. I’m pretty sure that capabilities are embedded directly into a binary body, but I’m not actually sure.
BitTorrent
BitTorrent is a communication protocol first, released in 2001. Torrent files contain hashes and metadata specifying a very simple file tree. A portion of the torrent file itself can be hashed to identify the entire tree. This forms a single-format read-only node type, as a map from text keys to bytes.
Git
git is a distributed version control system, released in 2005. Internally it contains four types of objects, each with their own format. In theory, git should be able to be shoe-horned into a read-write vernode exchange format, albeit with only a few formats accepted.
Tahoe-LAFS
Tahoe Least-Authority File Store is an encrypted file store with mutable files and directories, released in 2007. It, like Hyphanet/Freenet, has verification, read, and write keys. It has a few specific formats, for files and directories. It lacks support for concurrent edits, specifically warning not to do that.
InterPlanetary File System
The InterPlanetary File System, dispite its name, is a general purpose content-addressed object store, released in 2015. It can only store one format, the IPFS Object shown below:
data IPFSObject = IPFSObject
{ ipfsData :: Bytes
, ipfsLinks :: [IPFSLink]
}
data IPFSLink = IPFSLink
{ linkName :: Text
, linkHash :: Part
, linkSize :: Natural
}
IPFS lacks encryption, explicit formats, flexible values, write capabilities, and capabilites for anything other than IPFS objects.
It may be possible to recognize common IPFS formats and present them to programs in those specific formats, but that is likely to be fragile.
Encoding for Robust Immutable Storage
ERIS defines a format for encrypted read-only content-addressed piles of bytes, specified in 2022.
Its internal format contains a hierarchy of node types - leaf nodes (level 0) which contain data with no links and internal nodes (1 or greater) which contain no data with an ordered set of links to nodes of next level down:
struct Leaf {
/// Either 1 or 32kB of content.
content: Vec<u8>,
}
struct Internal {
links: Vec<Link>,
}
struct Link {
reference: [u8; 32],
key: [u8; 32],
}
Both the references and the keys are encrypted in intermediate nodes, requiring the nodes to be decrypted before child nodes can be fetched.
ERIS lacks explicit formats, any other value than a pile of bytes, write capabilities, and explicit capabilities generally.
Willow
Willow is a very different approach to a simalar goal, still undergoing refinement as of 2025. Like many of the other projects here, it looks something like a file system, giving names to bytes sequences, but it focuses on mutability much more than even versioned nodes, to the extent of having destructive updates. It is an abstract protocol, leaving various paramaters up to implementors, though it does not appear to have been designed for interoperability between paramaterizations.
There little hope for interoperability between a versioned nodes system and a Willow protocol implementation, given the divergent approaches.
Spritely Magenc & Crystal / Porta & Bella
The Spritely Institute has a bunch of interesting projects, including Porta & Bella. It has been prototyped, under the names Magenc and Crystal. Magenc combines magnet URLs from torrents with convergent encryption inpsired by Tahoe-LAFS and libchop. Crystal introduces mutability, with a very similar method to Tahoe-LAFS and Hyphanet, based on update count, and manual resolution of conflicts.