Decision
Clients pay nodes per MB over off-chain payment channels settled on-chain. On a cache miss, nodes pay peers per MB for initial content pulls, then amortize that cost across many client deliveries. Origin-backed nodes set the effective price ceiling (their backend egress costs). Rates are fully market-driven within governance-set bounds.Channel lifecycle
Voucher format
Voucher cadence
Default 1 MB per voucher. Negotiable per-stream for large blob transfers — a 10 GiB file over 1 MB cadence produces 10,240 signatures; 10 MB cadence reduces that to ~1,024 with negligible risk increase (worst-case loss if the node cheats is 10 MB of unpaid delivery). Cadence is set by the client inStreamRequest.
Rate discovery and bounds
- Per-node rate advertised in
NodeAnnounceandProbeResponse. - Governance-set bounds per token. A node advertising a rate outside
[MIN_RATE, MAX_RATE]is clamped locally; gossip-propagated reports penalize the node’s reputation. - Rate changes are gossip-announced via
RateChangemessages.RateChangecarries aslash_sigso the message can serve as on-chain counter-evidence in rate-manipulation disputes (slashing).
Node bindings
Nodes join viaStakingRegistry.registerNode() (network), which atomically establishes:
- EIP-712 NodeId ↔ Ethereum address binding — for slashability and payment attribution
- ed25519 ownership proof — to prevent NodeId squatting
bindNodeId() remains available for post-registration key rotation.
Client bindings are ephemeral (per-session). Clients register no on-chain identity for payments; each channel-open carries the client’s Ethereum address, and closes return unspent deposit to that same address.
Dispute window
Default: 48 hours (within the governance-bounded range of 12h–72h). Chosen to provide ≥24 h of effective response time even if Arbitrum’s sequencer censors the dispute transaction — Arbitrum’s forced-inclusion path has a ~24 h upper bound.Token semantics
ThePaymentChannel contract maintains a governance-managed ERC-20 allowlist with per-token rate bounds — see multi-token.
Source ADR: 003-payments.md