the delivery layeranyone can serve
A 14-gigabyte file posted in Berlin streams to a client in Tokyo from several nodes at once, every chunk verified with BLAKE3, paid for per megabyte in USDC. The code is open. The network is open. The price is posted.
information scaled.supply didn't.
The pattern repeats whenever something big ships: mirrors fork, CDNs rate-limit, small teams burn tens of thousands hosting bytes they don't own. deCDN inverts every axis — supply forms around demand instead of being allocated to it.
| axis | traditional cdn | decdn/ decentralized |
|---|---|---|
| price | $0.01 | |
| delivery | fixed provisioning | demand-shaped mesh |
| billing | monthly minimums, annual contracts | per megabyte, in USDC |
| operators | three hyperscalers | home labs to datacenters |
| integrity | trust the origin | BLAKE3, verify every chunk |
| failure | PoP dies, region 503s | node drops, stream continues |
| scaling | gets more expensive | gets cheaper |
How it works
probe
The client draws candidate nodes from the on-chain CapacityBond registry, or from its own peer store of nodes it has measured before — if that store is fresh, it skips the probe entirely. Otherwise it probes a shortlist of candidates in parallel for who holds the file and how fast they answer. It ranks holders by measured round-trip time alone. Price is not a rank key: the client pays the rate the node signs, and can cap it with a ceiling of its own. No reputation score is kept.
swarm
Bytes stream directly from the chosen node. For files over 64 MiB with at least two holders, the client splits the fetch across several nodes — one per operator — and fills its downlink from all of them at once. Every chunk is verified against the BLAKE3 tree hash as it lands. Bytes that fail verification never get a voucher, so the node that sent them is paid nothing for that range, and the client refetches it from another node. Trust no node — verify every byte.
settle
You pay per megabyte in USDC, automatically, as the bytes arrive — no monthly invoice, no subscription, no whole-file minimum. Pay for what you pulled, nothing more.
- Rust
- BLAKE3
- QUIC
- iroh
- USDC
- EVM
try it: download something real.
pick something we seeded on the testnet and paste the line into a terminal on macos or linux, or into powershell on windows. it installs deCDN, opens one captcha in your browser, then downloads it from the network and checks every byte against its blake3 hash. the testnet sponsor pays for the transfer, so there is no wallet, no token, and no sign-up.
$ curl -fsSL https://up.decdn.org/decdn.sh | sh -s -- pull b3:9194000d7b356650e6924a7746ec4afb0b705838b65913c0e46cba6b15af69e5 --namespace 1- # files land in the current directory. add --select to preview.
- # interrupted? run the same line again to resume.
frequently asked.
Onboarding is permissionless: anyone can bond, register and serve on the Arbitrum Sepolia testnet. It runs in four steps. First, prepare a server and keep its clock within 10 seconds of UTC. Second, bond TOKEN and register the node on-chain with its declared capacity, region and addresses; the same signature records your acceptance of the operator terms. Third, start the node, which loads the content blacklist and the node registry before it accepts any connection. From then on it is discoverable and earns USDC for what it delivers. The decdn setup command signs and submits the on-chain steps for you.
The recommended starting server is 4 vCPU, 8 GB of RAM, a 1 TB SSD and 5 TB a month of egress. The protocol sets no hardware minimum. What it checks is the capacity you declare, from 10 Mbps up to 200 Gbps, which sets your bond. A 250 Mbps home or server node fits that profile comfortably. The disk is your cache, so more of it means more requests served from bytes you already hold.
The node supports Linux, macOS and Windows. It is a single program, decdn-node. On Linux you can run it directly under systemd or in the official container image, which carries the exact same binary. Linux builds cover x86_64 and ARM64 and run on Debian 11, Ubuntu 20.04 or anything newer. A separate decdn command-line tool handles setup, registration and day-to-day admin.
Every node bonds TOKEN in proportion to the bandwidth it declares, following 12.6 × Mbps^1.2. There is also a network minimum that governance sets and never lowers below 10,000 TOKEN, and you bond whichever is larger. That is about 50,000 TOKEN at 1 Gbps. At 250 Mbps the curve gives about 9,500, below the minimum, so a 250 Mbps node bonds the minimum. The bond locks at registration and can be slashed for only two offenses: quoting a rate other than the one you signed, and serving blacklisted content after its compliance window. A bad delivery isn't slashed; it simply isn't paid. Withdrawing takes a 14-day unbonding period. Besides the bond, you hold a little ETH for gas. USDC is optional.
Registering is enough to make a node discoverable. Clients shortlist nodes in their own region and then rank them by measured round-trip time alone; price and reputation are not part of their ranking. A node fetching a cache miss from another node weighs price, latency and reputation together, and a newcomer starts at a neutral reputation. A region with no copies yet is where a first node counts most. A client whose only holders are far away routes its request through the nearest bonded node. That node pulls the content, serves it and keeps a copy, so it becomes the region's first local source and later clients find it directly. This applies to cache-only nodes; a node set to serve only its own origin declines these requests.
Operators are paid per byte actually delivered, in USDC. Clients sign vouchers only for bytes that verify. Your node redeems those vouchers on-chain, and your share arrives in the same transaction. Each operator sets its own per-MB rate, and the target client price is about $0.01/GB. At mainnet launch the split is 90% operator, 0% buyback and 10% treasury. Once governance confirms the activation criteria, it moves to the long-term 60/30/10, with 30% going to a TOKEN buyback-and-burn. Governance can never set the operator share below 40% or above 90%.
Yes. You don't need a static IP or a datacenter connection. At home the node usually sits behind a router, and it reaches peers by punching through NAT, with a relay as fallback, so no port forwarding is required. If you forward the node's UDP port, 4433 by default, and register that address, peers get a direct path to you. If your public address changes, run decdn node update-multiaddrs to update the registry. As on any node, keep the machine's clock in sync.
the network is open.so is our inbox.
Write to us with questions, partnerships, or anything you'd run on a fleet of idle machines. We read everything.