Versioned Nodes
Versioned nodes are a data model for building collaborative local applications.
It generalizes and merges the ideas underlying Tahoe-LAFS, git, freenet, and other projects, forming a new unit of data interchange better suited than files to providing provider-independent security for distributed collaboration with concurrent modification.
Overview
Versioned nodes are a data model for applications to encode data such that various protocols can synchronize nodes between applications. The applications are connected together to form a network, with data flowing through that network to each application that needs it.
Data flows differently in node exchange networks than traditional ones. In traditional networks, each host can send a message to any other host, by addressing it to that host. Here, applications communicate by publishing a new version of a node, and the change propagates through the network to other applications that subscribe to that node.
Priorities
-
Security:
- Like Tahoe-LAFS, data should be encrypted such that when it is stored on a node, it’s not readable without authorization, even by the node’s operator.
- Unlike Tahoe-LAFS, the presence or absence of even encrypted data must not be revealed across the network without authorization.
-
Liveness:
- Changes should be propagated quickly through the network.
- Without further updates, the network will eventually become consistent.
-
Safety:
- Storage/cache nodes should allow data to be marked to be retained even it’s not frequently requested.
- Concurrent updates will mean that application nodes will receive the same updates in different orders. The network must provide enough information for the application to resolve those updates to identical states.
-
Adaptability:
- The operator should be able to choose different reliability and security profiles for different sets of data.
- The network must support a wide variety of topologies and connectivity patterns.