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:[MIN_RATE, MAX_RATE] for the token.
What determines selection
Clients and peers select candidates by the unified score:| Lever | Your control | Strategy |
|---|---|---|
| Rate | Full | Price at cost + margin; track competitive rates |
| RTT | Via region choice and peering | Locate near your market; invest in low-latency connectivity |
| Reputation | Indirect, via behavior | Don’t phantom-announce, don’t corrupt, sync blacklist, hit your advertised rate |
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.
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
StakingRegistryis 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.| Backend | Egress | Break-even rate |
|---|---|---|
| AWS S3 Standard | $0.09/GB | ~0.00009/MB |
| Cloudflare R2 | $0/GB (to Workers) | Near zero |
| Backblaze B2 | $0.01/GB | ~$0.00001/MB |
| Self-hosted MinIO | Your bandwidth bill | Varies |
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.002/MB to clients, it nets $0.019/MB amortized.
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.001/MB upstream pull cost:- Revenue per MB served: $0.002
- Cost per MB served: 0.1 × 0.0001
- Gross margin: $0.0019/MB
- Revenue: ~$200,000
- Pull cost: ~$10,000
- Less hosting + bandwidth bill (varies), stake opportunity cost, and gas.