Splat Self-Asserting Fractal Network Protocol

Introduction

There are many systems today which require self-assembling networks of cooperating computer units: Signal, Telegram, WhatsApp, Jami communications applications, or BitTorrent file-sharing service, or Ethereum distributed crpytocurrency ledger, or Mastodon and Bluesky social networks, are examples. These depend more or less on centralized resources. Of efforts to produce completely free open-source, open-protocol, fully federated systems, two efforts which stand out leverage much of the development that has gone into the other systems: GNUnet and Jami.

These stand at opposite ends of a spectrum with respect to the underlying autonomous network topology: Jami uses a fundamentally linear network, while GNUnet uses a completely ad-hoc network. Typically a distributed hash table is implemented on top of these networks to provide logarithmic-time look-up, e.g. a Kademlia protocol variant.

Here we develop an intermediate type of network: using a global fractal topology the network demands small and constant resource from each node, and has intrinsic logarithmic look-up time without need for another network layer. The upshot is a low-level network layer (sits on top of TCP in the network stack) which makes implementation of modern higher layers, functions and applications such as those mentioned above much simpler.

The animation on the right shows a simulation of identical and independent nodes (each node independently implements the Splat protocol) introducing themselves one at a time to a network with splat size 4 (each node only has knowledge of 4 neighbours that it is introduced to). 64 nodes are introduced, filling the network out to 3 fractal levels (this is not an upper limit!)

Points to note:

In general, a network of splat size S (a hard, pre-defined network parameter) containing N nodes (variable, unbounded) will have a fractal depth D=⎡lnSN⎤, longest path (time for discovery) 2D-1 = ⎣(N-1)lnS2⎦, and every node in the network would need resources to track exactly S other nodes (independent of N).

For example,

Use cases

The main selling-point for the new protocol is that higher-level protocols are much easier to implement directly on top of Splat, without adding more layers of complexity. For example

State of the project

The project is destined to produce three outcomes

IETF-style specification document

This has not been started. Work will begin when the developments outlined below are in a much more advanced state.

Reference implementation; dynamic library with C linkage

A version which can build-out (but not collapse-in) a splat network is available (soon in the GIT repository). It is implemented in Rust.

The next stages are

Demonstration program, with visual insight, for research purposes

The animation above is the result of the current effort. It is implemented in Rust, but not currently in a state suitable for general release.

The next stages are

Specification document

This will appear here once work commences on this part of the project.

GIT code repository

This is currently work in progress.

Contact us

This page is https://rdmp.org/splat; last updated October 2023
Copyright © 2023 DM Bespoke Computer Solutions Ltd;

this work is licensed under CC BY-SA 4.0


Back-end server version 2