Proof of Uptime

Design proposal for verifiable uptime proofs — not yet implemented.


[!WARNING] Design stage — not implemented Proof of uptime is a design, not shipped behaviour. Nothing on this page runs in an XE node today: the protocol implementation contains no heartbeat, epoch, or claim code, and no block type carries an uptime proof. The constructions described here were explored as standalone prototypes in the separate proof-of-uptime repository, and will change before they ship.

What is implemented for leases today is timekeeper attestation on lease_accept and lease_settle blocks (see Compute Leasing). It does not prove continuous uptime.

The proposal: verifiable uptime proofs for compute providers, using a three-layer architecture.

Layer 1: Heartbeat Chain

  • ~60 second interval, dual-signed (provider + consumer)
  • Each heartbeat would chain to the previous via SHA-256
  • ~250 bytes per heartbeat

Layer 2: Merkle Epochs

  • 60 heartbeats → merkle tree → 32-byte epoch root
  • Epochs would chain via prevEpochHash
  • Selective disclosure via merkle proofs

Layer 3: Chained Claims

  • 24 epoch roots → merkle tree → claim root
  • ~200 bytes on-chain per claim
  • ~1,800x compression vs raw heartbeat data (24h at ~250 bytes / ~60 s; a PoC-4 demo run in the prototype repo measured 3,681x)

Design Decision: No VDF

Economics would solve collusion: emission rate < lease cost, so collusion is a net loss.

Threat Analysis

Status reflects the design on paper — none of these mitigations are implemented.

ThreatSeverityStatus
Ghost Node AttackCriticalAddressed in design (multi-layer)
CollusionHighAddressed in design (economics)
Key CompromiseCriticalOpen — must solve before production
Timestamp ManipulationMediumOpen — must solve before production