Skip to content
Tenzro
Documentation menu
Machine Economy

SLA attestation and metering

How providers attest service levels, how inference, compute and storage are metered, and how bonded SLAs and disputes are enforced.

Every paid service on Tenzro Network is metered, and every provider is held to a service level it has attested. This page covers how a provider states its SLA, how the network checks it, how each kind of service is metered into a bill, and what happens when a provider falls short.

Metered, per-use settlement is the default

A buyer on Tenzro Network pays for what was delivered, in the unit it was delivered in. There is no flat subscription that bills whether or not the work happened.

ServiceMetered unitPaid when
InferenceInput and output tokens, images, audio or video seconds, embeddingsThe request completes and its receipt is signed
Compute rental and compute claimsEpochs of reserved capacityThe epoch's availability proof passes
StorageByte-epochsThe epoch's proof of retrievability passes
RPC accessCalls against a tenant keyThe provider meters the call

Metering produces records signed by the provider's hardware-rooted key, so a bill can be traced to the machine that did the work. Those metered records also feed the compute price index.

Attesting an SLA

A provider states what it offers in a signed operator policy: availability, response deadlines, whether work runs inside an attested TEE, and the jurisdiction the hardware sits in. The policy is signed by the operator's key and published, so every buyer sees the same terms. See Operator policies.

Two rules follow from this:

  • A provider is held to its own policy. The network checks delivery against the SLA the provider attested, not against a service level someone else chose for it.
  • A provider is slashed only for a provable breach. A penalty needs evidence the chain can verify: a missed proof, a probe that went unanswered past its deadline, or a signed receipt that contradicts the policy.

Where an SLA requires confidential execution, the provider's TEE attestation is verified per vendor (Intel TDX, AMD SEV-SNP, AWS Nitro, NVIDIA confidential GPUs). Attestation is evidence that the work ran where the provider said; it is checked, not taken on trust. See TEE.

How the network checks an SLA

Availability probes

Validators probe AI and TEE providers for liveness. Each probe is addressed by a VRF output over the provider, the epoch and the round, so a provider cannot predict when it will be probed or answer in advance. The probe carries a deadline. A provider that answers in time has met that probe; one that does not has recorded a miss. Misses past the threshold slash the provider's bond.

Read the parameters a validator is applying, and any probes still awaiting an answer:

bash
curl -s https://rpc.tenzro.com \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tenzro_slaGetParams","params":[]}'

curl -s https://rpc.tenzro.com \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tenzro_slaListOutstandingProbes","params":[]}'

tenzro_slaGetParams returns the miss threshold, the slash per threshold crossing and the validator's VRF public key.

Per-epoch proofs for rentals

A compute rental or compute claim settles one epoch at a time. In each epoch the provider submits an availability proof and the chain returns a verdict: settled, missed or closed. Billing follows that verdict. See Compute rental.

Proofs of retrievability for storage

Storage is held to a proof of possession every hour. A fresh nonce selects chunk positions across each object's shards, and the provider must return those chunks with Merkle paths to the roots committed when the object was stored, so a stale or fabricated answer fails. The provider is found available for the hour only if it proves every object it is paid to keep.

Bonded storage SLAs

Every storage claim is delivered by a provider's stake. The same stake covers the provider's compute rentals and claims, and a new claim is refused if the stake cannot cover it on top of everything else the provider owes.

  • An hour without a passing proof is an unavailable verdict: that hour's price returns to the holder, with a penalty from the claim's collateral.
  • Repeated unavailable verdicts carry the stake's SLA penalties, and the network re-replicates the object onto a healthy provider from its erasure-coded shards.

The claim only ever moves value between holder and provider. Penalties are a separate path, driven by the verdicts validators freeze. See Decentralised storage.

bash
# A provider's frozen verdict for one hour, and the claims a party holds
tenzro provider sla-verdict --provider-did <PROVIDER_DID> --epoch <EPOCH>
tenzro provider compute-claims --party 0xHOLDER

What a miss costs

EventBuyerProvider
One missed epoch or failed challengeKeeps that sliceEarns nothing for the epoch
Misses past the service thresholdRental, claim or deal closes; unearned remainder refundedObligation ends
Misses past the slashing thresholdUnaffectedBond is slashed; slashed stake is burned

Slashed stake is burned rather than paid to anyone, so no party profits from another's failure. A bond stays slashable while its withdrawal cools down, so a provider cannot leave ahead of a claim against work it already served. See Slashing.

Disputes

Most billing never needs a dispute, because the chain's verdict decides each epoch. Disputes cover the cases where two parties disagree about a signed record.

  • Payment channels. The highest cumulative voucher the payer signed decides what the payee is owed.
  • Settlement plans. A payer can dispute a leg with evidence (tenzro settle dispute --plan-id <PLAN_ID> --index <N> --evidence <FILE>); tenzro settle decision --plan-id <PLAN_ID> shows the outcome.
  • Escrows. An escrow releases only on its own condition. An application that needs a judgment between buyer and seller, such as a task market, runs it itself and settles through the escrow's release or refund.
  • Receipts. A signed receipt that contradicts the provider's own policy is evidence for a slash.
MethodClass
tenzro_slaGetParams, tenzro_slaListOutstandingProbes, tenzro_slaVerdictopen
tenzro_slaIssueProbevalidators only