Skip to main content

What you charge

You advertise one rate per allowlisted token you accept. Rate is per MB, denominated in the smallest unit of the payment token. For USDC:
advertise_rate = 1000000   # 0.000001 USDC ≈ $0.001 per MB ≈ $1/GB
Rates must fall within the governance-set [MIN_RATE, MAX_RATE] for the token.

What determines selection

Clients and peers select candidates by the unified score:
score = rate_per_mb × rtt_ms × (1 / max(reputation, 0.1)²)
Lower is better. Three levers, two you control:
LeverYour controlStrategy
RateFullPrice at cost + margin; track competitive rates
RTTVia region choice and peeringLocate near your market; invest in low-latency connectivity
ReputationIndirect, via behaviorDon’t phantom-announce, don’t corrupt, sync blacklist, hit your advertised rate
A 2× rate reduction improves score linearly — halving rate halves score. A 2× reputation improvement improves score quadratically — doubling reputation cuts score 4×. Don’t cut rates if your reputation is already the bottleneck.

How you earn

Per-MB voucher revenue for every byte streamed:
  • Client → node — client pays you directly.
  • Node → node (cache miss) — the requesting node pays you per MB of upstream pull.
All payments flow through on-chain payment channels. Vouchers are off-chain EIP-712 signatures; settlement happens at channel close or via dispute.

What you pay

  • Outgoing per-MB for cache-miss pulls from other nodes (if pull_through: true).
  • Origin backend egress (if origin-backed) — your S3 / R2 / B2 bill.
  • Gas for occasional on-chain operations (channel close, stake adjustments, takedown polls).
  • Stake opportunity cost — TOKEN locked in StakingRegistry is not earning elsewhere.

Egress cost framing for origin-backed nodes

Origin-backed nodes set the effective price ceiling. If your S3 bucket charges $0.09/GB egress, you must charge at least that per MB pulled from you or lose money on origin pulls.
BackendEgressBreak-even rate
AWS S3 Standard$0.09/GB~90/TB90/TB ≈ 0.00009/MB
Cloudflare R2$0/GB (to Workers)Near zero
Backblaze B2$0.01/GB~$0.00001/MB
Self-hosted MinIOYour bandwidth billVaries
The protocol doesn’t force you to price at cost — rates are market-driven — but systematic under-pricing leads to capital loss.

Effective revenue model

For a given blob:
  • First serve per cache node: cache node pays origin-backed node (once). Origin-backed earns on the pull.
  • Subsequent serves per cache node: cache node serves from local cache, keeping 100% of the per-MB client revenue.
  • Amortization: if a cache node pays 0.001/MBtopulloncebutthenservesthesameblob10×at0.001/MB to pull once but then serves the same blob 10× at 0.002/MB to clients, it nets $0.019/MB amortized.
Cache nodes live or die on amortization — cache hit rate is the key operational metric.

Rate manipulation risk

You must not charge more per MB than you advertised. slash_sig on RateChange gossip messages creates on-chain counter-evidence. Charging 1.1× your advertised rate is a rate-manipulation offense — slashable 5% / 10% / 20% in escalating 90-day windows. If you need to change rates mid-stream, close the current session cleanly and let the client open a new session at the new rate. Never silently raise charged rate above advertised.

No rewards emissions

Revenue is 100% delivery-based. No ongoing emissions subsidize nodes. The filter is: operators who can’t earn on delivery economics aren’t running sustainable nodes.

Break-even napkin math

For a pure-cache node priced at 0.002/MBwitha900.002/MB with a 90% cache hit rate and 0.001/MB upstream pull cost:
  • Revenue per MB served: $0.002
  • Cost per MB served: 0.1 × 0.001=0.001 = 0.0001
  • Gross margin: $0.0019/MB
At 100 TB/month throughput:
  • Revenue: ~$200,000
  • Pull cost: ~$10,000
  • Less hosting + bandwidth bill (varies), stake opportunity cost, and gas.
Rough-order numbers only — actual economics depend heavily on hit rate, which depends on what content you cache. See node onboarding for the actual registration flow and reputation for score maintenance.