82ae6cf5a2
Milestone v0.3 complete. Feature type, tags v0.2.x. Two work-streams shipped under one feature milestone: (A) Bearers skeleton + tests (D-020 pattern, 7 x/* packages, zero ext deps): - x/bridge (NEW): BridgeStatus enum (4), BridgeRoute by-ID-string refs - x/exit (NEW): ExitStatus enum (5), ExitRoute, DEXSwap (opaque venue) - x/bearers (EXT): OYSATLink surveillance-resistant LOCKED, OYQRCode idempotent - x/partner (EXT): AnchorCredential (custody-provider-id empty in skeleton) - x/hub (NEW): HubService enum (3), LendingCouponCapBps=800 LOCAL const (A-304) - x/services (NEW): ServiceKind enum (4), window-id by-ID-string ref (A-307) - x/bond (EXT): GrowthBond, ClampGrowth G-012 underflow guard, secondary market All packages >=93.3% coverage. Both lexicon firewalls green. G-003 intact. (B) Documentation deliverable (REQ-027 complete, 26-page MkDocs Material site): - README.md + mkdocs.yml + docs/index.md - docs/shared/ (7 pages): Six Principles, Bread Scale, Storage Pools, Watchers/Mirror, Lexicon, Vision - docs/nomads/ (8 pages): Reach, Stash, Bearers, Maps-Pay, Pacts, Standing, Window - docs/freeholders/ (8 pages): Signals, Standing, Stands-Guilds, Councils-Voice, Bonds, Partner Spectrum, Anchor Preview - docs/reference/ (2 pages): Architecture, Components - REQ-028: lexicon firewall extended to docs/ + README.md (lexicon_meta_docs_test.go, 5 tests incl G-013 walk-coverage + G-014 shared self-test) Phases: P0 -> v0.2.0, P1 -> v0.2.1, P2 -> v0.2.2, P3 -> v0.2.3, P4 -> v0.2.4, P5 -> v0.2.5, P6 -> v0.2.6 (milestone release). Requirements covered: REQ-010, REQ-022, REQ-023, REQ-024, REQ-025, REQ-026 (skeleton), REQ-027, REQ-028 (complete). IDEATE-01..08 ratified and delivered. ---ci--- project: oy phase: 6 milestone: v0.3 status: complete tag_base: v0.2.x phase_role: final milestone_complete: true requirements: covered: [REQ-010, REQ-022, REQ-023, REQ-024, REQ-025, REQ-026, REQ-027, REQ-028] partial: [] ---/ci---
42 lines
1.9 KiB
Markdown
42 lines
1.9 KiB
Markdown
# Watchers & Mirror
|
|
|
|
OpenYield is attested by **9 Watchers** with a **6-of-9 quorum** (REQ-004).
|
|
The Watchers make daily attestations to the canonical state, and each posts
|
|
a 100,000 Bread bond. The **Mirror** mirrors the canonical state to the
|
|
bearers so a Holder can verify the mesh's state without trusting a single
|
|
Watcher.
|
|
|
|
## The 9 Watchers
|
|
|
|
The Watchers are the attestation layer of the mesh. There are exactly 9, and
|
|
the quorum is 6-of-9: any 6 Watchers can attest to a state transition, but no
|
|
5 can. Each Watcher posts a 100,000 Bread bond, which is at risk if the
|
|
Watcher attests to a false state. The 9/6 split is a mission-locked
|
|
parameter — no Council can lower the quorum or the bond.
|
|
|
|
## Daily attestations
|
|
|
|
The Watchers attest to the state of the three [Storage Pools](storage-pools.md)
|
|
daily: the Stash totals, the Vault totals, and the Root-Pool. The
|
|
attestation is a signed statement that the canonical state recorded by OY
|
|
Chain matches the state the Watcher observed. A Holder who wants to verify
|
|
the mesh's real return can read the attestations and check that the
|
|
Watchers agree.
|
|
|
|
## The Mirror
|
|
|
|
The Mirror mirrors the canonical state to the bearers (OY-LR, OY-BLE,
|
|
OY-WiFi-Direct, OY-SAT, OY-QR). A Holder on a surveillance-resistant bearer
|
|
can read the mirrored state without an internet connection to OY Chain; the
|
|
Mirror is the read-side of the bearer layer. The Mirror is read-only: it
|
|
mirrors state, it does not author it. Authoritative state lives on OY Chain
|
|
and is attested by the Watchers.
|
|
|
|
## Why 6-of-9
|
|
|
|
The 9/6 split is a balance: 9 is large enough that no single adversary can
|
|
easily capture a quorum, and 6 is large enough that no small cabal can
|
|
attest to a false state. The 100,000 Bread bond per Watcher makes
|
|
capturing a quorum expensive. The split is locked by Mission Lock — no
|
|
Council can change it. See [Six Principles](six-principles.md) for the
|
|
mission-lock covenant. |