ADR 006: Storage Pact Risk Mitigations
Date: 2026-02-28 Status: Accepted
Context
The storage pact layer (ADR 005) introduces reciprocal storage commitments between WoT peers. Risk analysis identified 13 failure modes across security, availability, privacy, and incentive alignment. These need concrete mitigations before the design is production-ready.
Three risks are critical (P0):
- Completeness — signatures prove authenticity but not that all events are present
- Cold start — new users have no WoT peers to form pacts with
- Eclipse attack — attacker becomes majority of a user's storage peers
Bootstrap lifecycle
Cold start is addressed through two complementary mechanisms — bootstrap pacts and guardian pacts — that together carry a Seedling from zero peers to self-sustaining:
- Seedling joins (0 pacts)
- Guardian pact forms (1 peer) — a Guardian volunteers storage
- First follow → bootstrap pact (2 peers) — followed user stores Seedling's data
- WoT builds → reciprocal pacts form (3+ peers)
- At 5+ pacts (Hybrid phase): guardian pact expires
- At 10+ pacts: bootstrap pact expires
- Self-sustaining — all storage through reciprocal WoT pacts
Decision
Address all 13 risks. Only 4 require protocol changes; the remaining 9 are client-side logic.
Protocol changes
- Merkle root in checkpoint — add
merkle_roottag to kind 10051, enabling completeness verification - Pact type variants — add
typetag to kind 10053 (bootstrap,archival,guardian) andstatustag (standby) - Serve challenge mode — add
typetag to kind 10054 (hash,serve) for latency-based fraud detection - Blinded data requests — replace
ptag in kind 10057 withbp(blinded pubkey) using daily-rotating hash
Client-side mitigations (no protocol changes)
- WoT cluster diversity for peer selection (eclipse prevention)
- Peer reputation scoring (identity age, challenge success rate)
- Graduated reliability scoring (replace binary pass/fail)
- Popularity-scaled pact counts (serving asymmetry)
- Per-peer request rate limiting (serving asymmetry)
- Warm standby pact promotion (rebalancing window)
- Pact offer WoT/age/volume filtering (spam prevention)
- Independent checkpoint Merkle verification (checkpoint trust)
- Jittered response coordination (response flooding)
Consequences
- Completeness is now provable — requesters can verify they received all events
- New users can bootstrap via first-follow temporary pacts
- Eclipse attacks require penetrating multiple WoT clusters
- Data request privacy preserved via blinded identifiers
- 9 of 13 mitigations are client-side only — backward compatible, incrementally adoptable
- 4 schema additions are additive — old clients ignore new tags
- Guardian pacts provide a second cold-start mitigation path alongside bootstrap pacts — newcomers can receive storage from a volunteer Guardian before forming any WoT edges