Skip to content

Latest commit

 

History

History
73 lines (45 loc) · 3.4 KB

File metadata and controls

73 lines (45 loc) · 3.4 KB
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

Abstract

This proposal introduces a mechanism for content-addressable networking on top of the previous directed messaging proposal (UIP-0113).

Specification

Message Structure

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.

Routing

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.

Motivation

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

Anonymous Data

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.

Deduplication of Data

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

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.

Backwards Compatibility

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.

Security Considerations

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

Copyright and related rights waived via CC0.