| uip | 0130 |
|---|---|
| title | Content Addressable Networking |
| description | Enabling content-addressable networking in the Urbit ecosystem |
| author | ~hastuc-dibtux |
| status | Stagnant |
| type | Standards Track |
| category | Kernel |
| created | ~2024.8.10 |
| requires | UIP-0113 |
This proposal introduces a mechanism for content-addressable networking on top of the previous directed messaging proposal (UIP-0113).
Building on the structure of UIP-0113, we define an overlay namespace atop the existing directed messaging protocol. Content addressable %peeks are used to request data from this namespace, and are structured as follows:
- The ship is always
~zod - The path is the content-addressable hash of the data, prefixed by the hash algorithm used, e.g.
/blake3/0xdead.beef.1234.5678
Content addressable %pages are used to respond to these requests, and are structured as follows:
- The ship is always
~zod - The path is the content-addressable hash of the data, prefixed by the hash algorithm used, e.g.
/blake3/0xdead.beef.1234.5678 - The authenticator is empty
- All other fields are as defined in UIP-0113
Because content-addressing does not allow for data to retain names across versions, we disallow the sending of content-addressed %pokes.
Ships participating in the content-addressable overlay network MUST be reachable via the directed messaging protocol. The directed message protocol MUST be used to co-ordinate the distributed hash table that underpins the content-addressable overlay network.
Content-addressable networking enables a variety of new use cases, including:
- Anonymous data
- Deduplication of data that is bound across multiple paths
- Bittorrent-style swarms
Referencing data by hash allows for the creation of anonymous data structures, where the creator can remain anonymous. This is useful for a variety of use cases, including:
- Overlaying other hash addressed networks, such as IPFS
- Most applications of Byzantine-fault-tolerant networks (i.e. blockchains), require some form of hash addressing that the urbit network now gives you for free.
By allowing for the creation of content-addressed data structures, we can globally deduplicate data that is bound across multiple paths. This improves scale for hosting providers.
Bittorrent-style swarms are very easy to implement on top of content-addressable networking. This has the potential to further improve network scaling, by allowing for the distribution of data across multiple peers. Moreover, once the spine and signature are fetched from a specific peer, the rest of the content can be retrieved from other peers in the swarm. This is akin to fetching a torrent file, and then fetching the actual content from other peers. This gives you the benefits of content-addressable networking, without abandoning named data.
This proposal does not introduce any backwards compatibility issues, so long as UIP-130-aware clients have sponsors that are also UIP-130-aware. In fact, this proposal could be soft-forked in without co-operation.
Needs discussion, however content addressed data has less security considerations than named data, as it is impossible to rename a piece of content-addressed data.
Copyright and related rights waived via CC0.