[!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-uptimerepository, and will change before they ship.What is implemented for leases today is timekeeper attestation on
lease_acceptandlease_settleblocks (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.
| Threat | Severity | Status |
|---|---|---|
| Ghost Node Attack | Critical | Addressed in design (multi-layer) |
| Collusion | High | Addressed in design (economics) |
| Key Compromise | Critical | Open — must solve before production |
| Timestamp Manipulation | Medium | Open — must solve before production |