Expand description
Implementations of the user-facing decdn CLI subcommands.
node talks to a running daemon over the loopback admin RPC surface
(appendix-local-admin-http.md). The other modules are one-shot publisher/operator
operations: generate a key, render or validate a config file, probe
a remote node.
Modules§
- appeal
decdn appeal slash— file a slash appeal and post the appeal bond (ADR 028 § Slashing Appeals).- bond
decdn node bond— stake to a capacity tier (ADR 019 § Step 2.1–2.2).- bundle
decdn bundle— thepullsubcommand group. Issue #391.- bundle_
cache - The local bundle-manifest cache
decdn bundle pull --hashkeeps under an output directory. It stores each fetched bundle manifest blob verbatim, keyed by its BLAKE3 content address, so a repeat pull of the same bundle into the same directory reads the manifest from disk instead of paying to fetch the blob again overcdn/client/v1. - bundle_
manifest - The local, advisory
.decdn-manifest.jsonskip-cachedecdn bundle pullwrites into an output directory. It indexes every file the bundle(s) have placed there — keyed by bundle-relative POSIX path, merged across runs — so a later pull skips unchanged files without re-hashing and splices unchanged byte ranges from bytes already on disk. - bundle_
pull decdn bundle pull— fetch every blob a bundle manifest references into an output directory over the paidcdn/client/v1path (issue #391).- chain_
ctx - Shared plumbing for the on-chain
nodesubcommands (register,bond). - chunker
- Content-defined chunking for
origin import --optimize(fastcdc v2020). Pure CDC + hashing: it produces the manifest’s range-dedup chunk hints. No chunk is ever written as its own blob —origin.rsstores each file as one whole-file blob and calls this only to compute the hints over its bytes. - config
decdn config initanddecdn config validate— manage the deCDN node TOML config file from the operator side.- deregister
decdn node deregister— leave the active set (ADR 003 § Node Registry).- doctor
decdn node doctor— read-only diagnosis of node config, on-disk state, disk-vs-budget, and network reachability. Runs pre-boot and against a live daemon; mutates nothing.- fetch
decdn fetch— standalone client-side paid pull of a single content-addressed blob overcdn/client/v1(issues #391, #940).- interrupt
- Graceful Ctrl-C for
decdn fetchanddecdn bundle pull. - key_gen
decdn key-gen— write or refresh the persistent Ed25519 node key and the Ethereum keystore.- manifest
- Shared bundle-manifest machinery: the directory walk, path-safety rules,
canonical JSON serialization, and atomic manifest write used by
decdn origin import(issues #391, #1904). - node
decdn node ...— operator-local admin commands that talk to a running node over its loopback JSON-RPC admin surface (appendix-local-admin-http).- node_
top decdn node top— live view of node activity scraped from the daemon’s loopback/metricsHTTP endpoint (issue #275).- origin
decdn origin import— seed a cache origin store with local content (issue #1904).- pool
decdn pool— client-side payment-pool lifecycle.- probe
decdn probe— send acdn/probe/v1content-availability query to a running node and print the signed response.- publish
decdn publish— origin-publisher control plane (issues #1029 / #1491).- pull_
progress - Multi-bar progress for
decdn bundle pull. - register
decdn node register— on-chain node registration (ADR 019).- rotate_
key decdn node rotate-key— the operator key-rotation runbook (adr/appendix-operator-key-rotation.md) as a command (#1034).- setup
decdn setup— guided node onboarding wizard (ADR 019, #933).- terms
- Operator-terms acceptance at registration (ADR 019 § Terms Acceptance).
- unbond
decdn node unbond— lower the bond (ADR 026 § Capacity-bond curve).- update_
multiaddrs decdn node update-multiaddrs— (re)publish the operator’s dialable QUIC addresses on-chain (ADR 019 § Multiaddr encoding, #1908).- update_
region decdn node update-region— (re)attest the operator’s region on-chain (ADR 030).- whoami
decdn whoami— print the local identity read-only.