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---
46 lines
2.2 KiB
Markdown
46 lines
2.2 KiB
Markdown
# Bearers
|
|
|
|
The **bearers** (REQ-019) are how a Nomad reaches the mesh. OpenYield ships
|
|
six bearers through a single **Unified Bearer Layer**: the mesh does not
|
|
care which bearer a Holder uses — first-to-deliver-wins, and a Nomad can
|
|
switch bearers without switching identity. The [Mirror](../shared/watchers-mirror.md)
|
|
mirrors the canonical state to every bearer so a Nomad can read the mesh's
|
|
real return on any of them.
|
|
|
|
## The six bearers
|
|
|
|
| Bearer | Live in v0.2 | What it is |
|
|
|---|---|---|
|
|
| **Internet** | yes | the default bearer; OY Chain over the open internet. |
|
|
| **OY-BLE** | yes | Bluetooth Low Energy; short-range, peer-to-peer, no phone plan. |
|
|
| **OY-WiFi-Direct** | yes | WiFi Direct; local mesh without an access point. |
|
|
| **OY-LR** | yes | Long Range radio (LoRa-class); long-distance, low-bandwidth, surveillance-resistant. |
|
|
| **OY-SAT** | coming (v0.3 P4) | satellite; offline coverage via a satellite constellation. |
|
|
| **OY-QR** | coming (v0.3 P4) | signed QR code; one-shot offline transfer scanned by a peer. |
|
|
|
|
## What this means for a Nomad
|
|
|
|
A Nomad does not pick "the right bearer". The four already-live bearers
|
|
(Internet, OY-BLE, OY-WiFi-Direct, OY-LR) cover the everyday situations:
|
|
on the open internet, in a room with another Holder, in a local group with
|
|
no router, or kilometers away with no infrastructure. OY-SAT and OY-QR
|
|
extend that to true-offline paths and are coming in the next phase.
|
|
|
|
## Surveillance resistance
|
|
|
|
OY-LR, OY-BLE, OY-WiFi-Direct, OY-SAT, and OY-QR are designed to be
|
|
surveillance-resistant: a Nomad can send or receive value without a
|
|
phone plan, a SIM, or a custodial on-ramp. The bearer is the transport; the
|
|
[Reach](reach.md) is the identity; the [Stash](stash.md) is the storage. None
|
|
of them depends on a custodial position.
|
|
|
|
## First-to-deliver-wins
|
|
|
|
The Unified Bearer Layer is first-to-deliver-wins: if a Nomad sends a
|
|
transfer over two bearers at once, the mesh accepts the first one that
|
|
arrives and drops the duplicate. This is why a Nomad can switch bearers
|
|
mid-transfer without double-spending.
|
|
|
|
See [Watchers & Mirror](../shared/watchers-mirror.md) for how the canonical
|
|
state is mirrored to every bearer, and [Maps & Pay](maps-pay.md) for how a
|
|
Nomad uses a bearer to find and pay for services. |