Skip to main content

Stellar / Soroban

Back an uptime promise with funds a contract actually holds.

A provider locks a bond in the sla_vault contract. Registered watchers check the service each round and vote Up or Down. When a round reaches quorum on Down, anyone can trigger settlement and the configured penalty is paid to the beneficiary.

Have an SLA ID? Look up its public status:

What v1 actually enforces

  • Settlement is decided per round, not as a monthly uptime average.
  • The configured uptime target is display-only in v1. The contracts do not calculate monthly uptime against it.
  • All SLAs currently share one watcher set. A provider cannot choose watchers for an SLA.
  • Anyone can call settlement once quorum is reached. It is not limited to the provider.

How a round moves from bond to settlement

Each step is a call or rule in the contracts. Nothing here is live network data. Open a status page to see a real SLA.

  1. Provider creates the SLA

    The provider sets the token, bond, penalty per breach, quorum threshold and beneficiary, and funds the bond.

    sla_vault.create_sla
  2. Bond is held

    The bond stays in the vault. The provider can top it up while the SLA is active.

    sla_vault.top_up_bond
  3. Watchers vote each round

    Every 60 seconds each registered watcher checks the service once and votes Up or Down.

    watcher_registry.submit_check
  4. Votes are tallied

    The registry counts the Up and Down votes for the round. It does not decide anything.

    watcher_registry.get_round_tally
  5. Quorum is checked

    A round qualifies when its Down votes reach the SLA's quorum threshold. Up votes do not count toward it.

    votes_down ≥ quorum_threshold
  6. Anyone settles

    Once a round qualifies, any wallet can trigger settlement. The penalty is paid from the bond to the beneficiary.

    sla_vault.trigger_settlement