71e429da5f
---ci--- project: oy phase: 1 milestone: v0.1 status: execute ---/ci--- Phase 1 (Component 1: OY Chain & Mirror) skeleton: - x/watcher: Watcher bond, attestation quorum (6-of-9), slashing types - x/mirror: NAV per Bread, reserve ratio publication types - x/still: Still/Stir (pause/resume) with auto-still on quorum lost - 12 unit tests passing (all locked constants verified: §7) - Cosmos SDK app.go deferred to P1 continuation (dependency resolution) - No regulated finance terminology used (lexicon compliant)
55 lines
2.2 KiB
Markdown
55 lines
2.2 KiB
Markdown
# Component 1: OY Chain & Mirror — Phase 1 Skeleton
|
|
|
|
## Status
|
|
v0.0.1 — skeleton with type definitions and locked-constant tests
|
|
|
|
## Vision References
|
|
- §7: Architecture — Three Layers and the Mirror
|
|
- §3: Still/Stir (pause/resume)
|
|
|
|
## Modules
|
|
|
|
### x/watcher — Watcher Bond & Attestation Quorum
|
|
- `types.Watcher` — bonded Watcher (§7: 100,000 Bread minimum bond)
|
|
- `types.Attestation` — daily reserve snapshot signed by a Watcher
|
|
- `types.ReserveSnapshot` — off-chain reserve state (off-chain total, on-chain Bread, basket breakdown)
|
|
- `types.QuorumStatus` — QuorumMet / QuorumLost / StaleEpoch
|
|
- `types.SlashReason` — InsufficientBond / StaleAttestation / GeographicCollusion / Forgery
|
|
|
|
**Locked constants (§7):**
|
|
- `MinBond = 100000` (100,000 Bread)
|
|
- `Quorum = 6` (6-of-9)
|
|
- `MaxWatchers = 9`
|
|
- `AttestationEpochHours = 24` (daily)
|
|
|
|
### x/mirror — Reserve Ratio Publication
|
|
- `types.NavPerBread` — Net Asset Value per Bread (§4.2)
|
|
- `types.ReserveRatio` — real-time published ratio with quorum flag
|
|
|
|
### x/still — Pause/Resume (Still/Stir)
|
|
- `types.StillState` — StirActive / StillPaused (§3)
|
|
- `types.StillReason` — CouncilVote / QuorumLost / SecurityAlert
|
|
- `types.StillRecord` — tracks pause events
|
|
- Auto-still on quorum lost (§4.2: Forge/Fold blocked until quorum restored)
|
|
|
|
## Tests
|
|
12 tests, all passing:
|
|
- Watcher: MinBond, Quorum, MaxWatchers, AttestationEpoch, DefaultParams (5)
|
|
- Still: DefaultStillState, AutoStillOnQuorumLost, StillStates (3)
|
|
- Mirror: DefaultPublishInterval, ModuleName, NavPerBreadStruct, ReserveRatioQuorum (4)
|
|
|
|
## What's NOT in this skeleton (deferred to P1 completion)
|
|
- Cosmos SDK app.go full integration (requires SDK v0.50+ dependency resolution)
|
|
- Keeper implementations (BondWatcher, SubmitAttestation, VerifyQuorum, SlashWatcher)
|
|
- CLI commands (oyd tx watcher bond, oyd query watcher quorum)
|
|
- Proto definitions (Buf-generated types)
|
|
- CometBFT consensus setup
|
|
- Genesis import/export
|
|
|
|
## Next Steps (P1 continuation)
|
|
1. Resolve Cosmos SDK v0.50 dependency tree
|
|
2. Implement keeper logic with store operations
|
|
3. Add proto definitions and code generation
|
|
4. Wire modules into app.go
|
|
5. Build oyd daemon
|
|
6. Integration test: 9 Watchers bond, submit attestations, verify quorum |