Uptimeby GenLayer
Coming Soon

Auto-payable SLAs. Trustlessly enforced.

Combine on-chain uptime evidence with Internet Court to create service level agreements that enforce themselves. No lawyers, no screenshots, no trust required.

Who's Involved

Provider

Matter Labs

Provides ZKSync bridge infrastructure. GenLayer Labs pays them for maintaining bridge uptime.

Services covered

ZKSync Bridge

Provider + Customer

GenLayer Labs

Operates the Asimov, Bradbury, and Studionet networks. Pays Matter Labs. Gets paid by GenLayer Foundation.

Services covered

Asimov RPC, Bradbury RPC, Studionet Node

Customer

GenLayer Foundation

Pays GenLayer Labs for infrastructure uptime across all RPC endpoints and block explorers.

Services covered

All RPCs + Explorers

Deployed Contracts

SLA Verifier and two agreements on Studionet

Agreement Details

Terms for each SLA contract

SLA-001

Active

GenLayer Labs pays Matter Labs

5,000 USDC/month

Target: 99.50%

zksync_bridge

GenLayer Labs pays Matter Labs for ZKSync bridge availability. Tiered penalties: 10% for minor breach (< 0.5% shortfall), 25% for major (0.5-2%), 50% for critical (2-5%), 100% for severe (> 5%).

Penalty model: Tiered

SLA-002

Active

GenLayer Foundation pays GenLayer Labs

20,000 USDC/month

Target: 99.90%

studionet_rpcasimov_rpcbradbury_rpcexplorer_studioexplorer_asimovexplorer_bradbury

GenLayer Foundation pays GenLayer Labs for all RPC and Explorer infrastructure. Linear penalty: payment reduced proportionally to the shortfall of the worst-performing service.

Penalty model: Linear

How Settlement Works

1.

Period ends

At the end of each billing period, either party can call settle_period() on the SLA Agreement contract. The contract reads uptime data directly from the UptimeMonitor.

2.

Penalty calculated

The SLA Verifier calculates the penalty based on the agreed model (linear, tiered, or full). A 10% protocol fee is taken from any penalty amount.

3.

Dispute or accept

If either party disagrees, they open a case in Internet Court. The court reads internet_court_summary() from the SLA contract and evaluates the on-chain evidence.

Penalty Models

Each agreement chooses one model at creation

ModelHow it worksExample
LinearPenalty scales proportionally to the shortfallTarget 99.50%, measured 99.00% = 0.50% shortfall. Penalty = payment x 50/9950 = ~0.5%
TieredFixed penalty brackets based on severity< 0.50% shortfall: 10% penalty
0.50-2.00%: 25% penalty
2.00-5.00%: 50% penalty
> 5.00%: 100% penalty
FullAny breach = full payment withheldTarget 99.50%, measured 99.49% = full refund

Dispute Example

What happens when GenLayer Foundation disputes SLA-002

Statement

"GenLayer Labs failed to maintain 99.90% uptime on Asimov RPC during March 2026, as defined in SLA Agreement SLA-002 deployed at 0x90287aec...D5d548 on Studionet."

Guidelines

  • Call check_compliance(720) on the SLA Agreement contract (720 checks = 30 days at 1/hour)
  • Read internet_court_summary() for full terms and settlement history
  • Verdict is TRUE (breach occurred) if any covered service measured below 9990 bps

Evidence

Foundation submits

SLA Contract: 0x90287aec...D5d548

Method: check_compliance(720)

Asimov RPC uptime: 98.75%

Target: 99.90%

Shortfall: 1.15%

GenLayer Labs responds

Same contract, same data.

Both parties read identical

immutable on-chain records.

No conflicting evidence.

Verdict

True

Breach occurred

False

SLA met

Undetermined

Insufficient data

Linear penalty applied: $20,000 x (115/9990) = $230.23 penalty. 10% protocol fee: $23.02. Net payout to GenLayer Labs: $19,769.77.

Contract Architecture

Two contracts work together

┌──────────────────┐
│  UptimeMonitor   │  Source of truth for all health checks
│  (existing)      │  get_uptime_stats(service_id, last_n)
└────────┬─────────┘
         │ reads
         v
┌──────────────────┐
│  SLA Verifier    │  Base contract that verifies uptime claims
│  (new)           │  calculate_penalty(payment, measured, target, model)
│                  │  Takes 10% protocol fee on penalties
└────────┬─────────┘
         │ used by
         v
┌──────────────────┐     ┌──────────────────┐
│  SLA Agreement   │     │  SLA Agreement   │
│  SLA-001         │     │  SLA-002         │
│  GL Labs -> ML   │     │  GL Found -> Labs│
│  ZKSync bridge   │     │  All RPCs + Expl │
│  Tiered penalty  │     │  Linear penalty  │
└──────────────────┘     └──────────────────┘
         │                        │
         └───── settleable by ────┘
                     │
              ┌──────v──────────┐
              │ Internet Court  │  Reads internet_court_summary()
              │ (dispute res.)  │  AI jury verifies on-chain data
              └─────────────────┘

Future Work

Planned features for the SLA system

SLA Templates

Standardized SLA templates, similar to software licenses (MIT, BSD, Apache). Pick a template for your use case: Public API, Infrastructure, Data Pipeline, Bridge. Each comes with reasonable defaults for target uptime, penalty model, and payment curves.

Composable verification

The SLA Verifier is the base layer. Any contract can call it to verify uptime claims. Build custom SLA logic on top: multi-party agreements, escrow with auto-release, insurance pools. The verifier takes a 10% fee, creating a sustainable revenue model for developers.

Payment curves

Beyond linear and tiered: exponential penalties, grace periods, bonus payments for exceeding SLA targets, time-weighted penalties (downtime during peak hours costs more), and rolling window calculations.

Auto-settlement

Automatic period settlement via cron. At the end of each billing cycle, the contract settles itself: reads uptime, calculates penalties, and triggers payment. Disputes go to Internet Court automatically if the penalty exceeds a configurable threshold.

Create Your Own SLA

Deploy an SLA Agreement contract with your terms. You need:

// Constructor arguments

agreement_id: "MY-SLA-001"

customer_name: "Your Company"

provider_name: "Service Provider"

customer_address: 0x...

provider_address: 0x...

sla_verifier_address: 0x8D926888...66D85

uptime_monitor_address: 0x1AE5Eb9a...f2573

service_ids_json: '["studionet_rpc", "asimov_rpc"]'

target_uptime_bps: 9950 // 99.50%

penalty_model: "tiered"

payment_schedule: "monthly"

base_payment_monthly: 10000 // in smallest unit

base_payment_yearly: 100000

effective_from: 1711929600 // Unix timestamp

effective_until: 0 // 0 = no end date

Once deployed, both parties can call settle_period() at the end of each billing cycle. If there is a dispute, either party opens a case in Internet Court pointing to the contract address.

Are You An Agent?

Deploy your own SLA contract programmatically

If you are an AI agent or developer tool, read the full deployment guide with step-by-step CLI commands, constructor arguments, and examples.

Read SKILL.md

# Quick start: deploy an SLA agreement on Studionet (free, no tokens needed)

genlayer network set studionet

genlayer account create --name sla-deployer --password ""

genlayer deploy --contract contracts/sla_agreement.py \

--args "MY-SLA-001" "Customer" "Provider" 0xCUST 0xPROV \

0x8D926888B6781d9C987dB89693E771D702366D85 \

0x1AE5Eb9a7A1ece2E873689e0ED33b818dd2f2573 \

'["studionet_rpc"]' 9950 "tiered" "monthly" 5000 55000 1711929600 0