Skip to main content
deCDN has two protocol roles (nodes and clients) plus one external component (origin backends). Only nodes and clients speak CDN protocols.

Nodes

A node is a bonded QUIC endpoint that caches and serves content-addressed blobs.
  • Identity. A network keypair bound on-chain to an Ethereum address at registration (network).
  • Bond. A capacity bond in TOKEN, scaled to declared bandwidth (bond = k × Mbps^α) — the only TOKEN-side requirement to join the mesh; the bond scales with declared capacity rather than a flat minimum.
  • Discovery. Registered on-chain with its addresses and region; publishes a DHT record for each blob it caches, and quotes its current rate in every signed probe response.
  • Delivery. Serves the paid-delivery protocol — the sole rail for both client→node and node→node traffic.
  • Earnings. Per-MB voucher revenue in USDC.
Two deployment shapes: “Origin-backed” is a deployment choice, not a protocol distinction — the network cannot tell them apart at runtime. It is also per-blob: for anything outside its own backend, an origin-backed node is a cache node and pays upstream like any other.

Clients

A client is a lightweight QUIC endpoint that consumes content and pays for it.
  • Identity. A network keypair generated at first startup and persistent across sessions, plus a per-connection binding to an Ethereum address that the node discards on disconnect — no stake, no on-chain registration.
  • Discovery. Reads the on-chain registry for its peer set and queries the DHT for holders. Publishes nothing and holds no network role.
  • Payment. Opens one on-chain USDC pool, reuses it for every node it buys from, and signs cumulative off-chain vouchers as bytes flow (payments).
  • Trust model. Verifies hashes on all bytes received. Trusts no node for content, and none for availability either — a node may decline to serve, and the client simply re-routes without paying for the attempt.
Clients can run a multi-source parallel download for large files, pulling disjoint segments from several holders at once, and resume crashed transfers from the last verified chunk-group boundary.

External components

These are not CDN protocol participants. A node reaches its backend over that backend’s own interface — HTTP, the S3 API, a filesystem — not over a CDN protocol. A backend never registers, probes, or bonds.

Origin backend

An S3 bucket, R2 bucket, MinIO instance, NFS mount, or local disk. Holds the canonical bytes. Origin-backed nodes query it on cache miss. Never exposed to the network — the hash→object-key mapping is a private catalog held by the operator.

Who bonds, who pays