Tenzro
Network roles

Decentralized storage.

A node with spare disk holds data for the network. The consumer opens a deal for an object, the provider proves each epoch that it can still return the data, and TNZO moves one byte-epoch slice at a time.
STATUS
Testnet
CRATE
tenzro-storage-market
STABILITY
Stable
TYPE
Reference
01

Content-addressed objects

Objects are stored as shards on the iroh data plane and referenced by content address. A storage provider resolves an object's descriptor — its shards and their references — through an iroh resolver.

02

Open a deal

A consumer opens a deal for an object. The exposure is the per-epoch price (a function of object size and the provider's rate_per_byte_epoch) times the term. Opening fails if the provider's stake cannot cover the new obligation on top of everything else it owes — compute rentals included.

03

Charge an epoch

Each epoch the provider settles by answering a retrievability challenge. The outcome is one of three: Charged (the challenge passed; one byte-epoch slice moved), Missed (no value moved), or Closed (term reached or coverage lost).

charge_epoch(deal_id, challenge_passed) -> ChargeOutcome
04

Proof of retrievability

A challenge samples a subset of an object's shards. The provider answers by fetching those shards and returning a digest keyed to a per-challenge nonce, so a stale or fabricated answer does not pass. Sampling means the provider must actually hold the data to answer, without the network re-downloading the whole object.

05

Pricing and redundancy

Storage is priced per byte-epoch — a fixed rate, or network-dynamic with denominator 16 (per-step move bounded ±6.25%, a gentler curve than compute because storage commitments are longer-lived). Objects can be stored with redundancy so the loss of one provider does not lose the data.

06

One stake, shared with compute

Storage obligations register against the same coverage tracker that compute rental uses. A node's stake covers everything it owes across both services at once; over-commit and it sheds deals until the rest fits. The consumer pays from their TNZO balance; the provider earns into theirs. A missed retrievability proof moves nothing.

07

Prepaid balance

Per-byte-epoch charges draw from the same prepaid TNZO ledger that compute rental uses — the consumer funds a prepaid balance once with a real on-chain debit, and each epoch streams a slice out of it (or refunds on a miss). Deposits, streams, and refunds persist to CF_SETTLEMENTS and hydrate on restart, so an open deal survives a node restart mid-term. Fund and query it with tenzro_prepaidDeposit, tenzro_prepaidWithdraw, tenzro_prepaidBalance.

Related
← All docs