Skip to main content

Crate ringdrop

Crate ringdrop 

Source
Expand description

§ringdrop

P2P file transfer with ring-based access control, built on iroh (QUIC + hole-punching) and [iroh-blobs] (BLAKE3 chunked storage with bao encoding).

§Architecture

            ┌─────────────────────┐
            │     CLI (rdrop)     │
            │          ↕          │
            │    DaemonClient     │
            └──────────┼──────────┘
┌──────────────────────↕───────────────────────┐
│                 DaemonServer                 │
│               (owns the Node)                │
│  ┌───────────────────┴────────────────────┐  │
│  │                  Node                  │  │
│  │  ┌──────────────────────────────────┐  │  │
│  │  │ FsStore  Registry  Grants  Peers │  │  │
│  │  │    └───────────┬─────────────┘   │  │  │
│  │  │  ┌─────────────┴─────────────┐   │  │  │
│  │  │  │        RingGate           │   │  │  │
│  │  │  │    (/iroh-rings/2)        │   │  │  │
│  │  │  ├───────────────────────────┤   │  │  │
│  │  │  │     CatalogHandler        │   │  │  │
│  │  │  │  (/ringdrop/catalog/0)    │   │  │  │
│  │  │  └─────────────┬─────────────┘   │  │  │
│  │  │            Endpoint              │  │  │
│  │  │           (QUIC/iroh)            │  │  │
│  │  └───────────────┼┼┼────────────────┘  │  │
│  └──────────────────┼┼┼───────────────────┘  │
└─────────────────────┼┼┼──────────────────────┘
                   internet

A core::Node wraps an iroh QUIC endpoint, an iroh-blobs persistent blob store, a Registry that tracks ring membership and permission-typed resource associations, and two protocol handlers registered on the endpoint: a RingGate (/iroh-rings/2) that enforces access control — a blob is only served to a peer that holds Permission::Read on it — and a CatalogHandler (/ringdrop/catalog/0) that lets authorised peers query the local blob list.

The daemon module runs a Node as a background TCP server so that the CLI can talk to it over a local IPC connection.

Modules§

cli
rdrop — ringdrop CLI
config
Node configuration: identity key and daemon port.
core
Core P2P node: QUIC transport, blob storage, and ring-gated transfers.
daemon
Background daemon: TCP-based IPC server and client.
util
Shared CLI/daemon utilities: default paths, argument parsers, and display helpers.