|
1 | | -# trios-mesh |
| 1 | +# tri-net |
2 | 2 |
|
3 | | -**TRI-NET drone-mesh daemon** — encrypted, self-routing IP-over-radio for the |
4 | | -P201/P203 **Zynq-7020 Mini** node. The mesh layer of "Starlink without satellites": |
5 | | -relay drones + fixed nodes sharing one internet uplink. Part of the Trinity Project. |
6 | | -Anchor: **φ² + φ⁻² = 3**. |
| 3 | +**TRI-NET drone-mesh + DePIN node** — encrypted, self-routing IP-over-radio on the |
| 4 | +P201/P203 **Zynq-7020 Mini**, doubling as a Helium-style DePIN-node with four |
| 5 | +supply-side arms (transport / compute / coverage / sensor). |
| 6 | +Part of the Trinity Project. Anchor: **φ² + φ⁻² = 3**. |
7 | 7 |
|
8 | | -> **Status (2026-07-01):** M1 crypto core is implemented and **host-tested** (`-sim`). |
9 | | -> It graduates to `hw` once it runs on the real Zynq Mini ARM-Linux node — whose |
10 | | -> FPGA/PS has never been flashed yet (see `gHashTag/tri-net`#8). Not on hardware = `-sim`. |
| 8 | +> Naming: this is the **drone-mesh internet-delivery** track plus the DePIN economic |
| 9 | +> layer on top. Distinct from the ternary-computing "TRI-NET" silicon-node work in |
| 10 | +> `gHashTag/trinity`, `gHashTag/tt-trinity-*`. |
11 | 11 |
|
12 | | -## What it is |
| 12 | +--- |
13 | 13 |
|
14 | | -A small, dependency-light Rust crate providing the mesh building blocks: |
| 14 | +## Status (2026-07-04) |
15 | 15 |
|
16 | | -| Module | Responsibility | Milestone | |
| 16 | +| Layer | State | Evidence | |
17 | 17 | |---|---|---| |
18 | | -| [`crypto`](src/crypto.rs) | X25519 handshake → HKDF-SHA256 session key → ChaCha20-Poly1305 AEAD, directional 96-bit nonce, 64-frame replay window | **M1** | |
19 | | -| [`routing`](src/routing.rs) | ETX metric (`1/(d_f·d_r)`) neighbor table, best next hop | M2 | |
20 | | -| [`discovery`](src/discovery.rs) | HELLO beacons (who-hears-whom → forward delivery ratio) | M2 | |
21 | | -| [`wire`](src/wire.rs) | datagram header, doubles as AEAD associated data | M1/M2 | |
22 | | -| [`daemon`](src/daemon.rs) | node skeleton wiring the above; `Transport` trait for UDP/TUN/radio | M2 | |
23 | | -| [`gf16`](src/gf16.rs) | GF16 (1-6-9, bias 31, no-subnormal) host DSP model of the OFDM FFT/equalizer; the win is multiplier **width/area** (≥2× taps per DSP48), **not** accuracy | M2 `-sim` | |
| 18 | +| M1 crypto on ARM (X25519 + ChaCha20-Poly1305) | **hw** ✅ | `smoke/M1_RESULTS.md` — armv7l static binary 534 604 B, sha256 `e5abc335…7290a`, RC=0, 2026-07-01 | |
| 19 | +| AD9361 5.8 GHz PHY digital loopback | **hw** ✅ | `radio/README.md` — LO 5.8 GHz, FFT peak +0.999 MHz, SNR 108.6 dB, 2026-07-01 | |
| 20 | +| Three P201/P203 Mini boards physically connected | **hw** ✅ | User confirmation 2026-07-04 | |
| 21 | +| M2 TUN/IP routing (ETX + discovery) | `-sim` | Rust unit tests, no on-device run | |
| 22 | +| M3 iperf3 over 2 hops (bench attenuators) | `-sim` | Not run | |
| 23 | +| M4 3-node triangle, shared uplink (P2 DEMO GATE) | `-sim` | Not run | |
| 24 | +| M5 self-healing convergence measured | undefined | B11 not landed | |
| 25 | +| trinity-contracts deployment (Base L2) | Sepolia only | Mainnet Genesis Day not reached | |
| 26 | +| TT SKY26b Trinity silicon (1 GOPS @ 50 MHz @ 1 W) | projected | Tape-out 2026-12-16 | |
| 27 | + |
| 28 | +Every unverified performance number keeps its `-sim` marker. On-device evidence |
| 29 | +lives under `smoke/` and `radio/`. All Trinity silicon-anchored DePIN claims |
| 30 | +are `[Open conjecture]` until the die comes back — falsification path: run the |
| 31 | +BitNet-ternary benchmark on returned silicon, publish the raw log. |
| 32 | + |
| 33 | +--- |
| 34 | + |
| 35 | +## Что делает Tri-Net |
| 36 | + |
| 37 | +Одна коробка (`P203 Mini` = Zynq-7020 + AD9361 SDR + GPS/PPS) выполняет две |
| 38 | +роли одновременно: |
| 39 | + |
| 40 | +1. **Drone-mesh internet-delivery** — "Starlink без спутников": сеть реле-дронов |
| 41 | + и наземных узлов, разделяющих один uplink через самомаршрутизируемый mesh. |
| 42 | +2. **DePIN-узел** (Helium-style + edge compute) — оператор получает TRI-токены |
| 43 | + за реальный вклад в четыре arm'а сети, каждый защищён криптографической |
| 44 | + подписью чипа Trinity. |
| 45 | + |
| 46 | +### Четыре плеча supply-side на одной P203 Mini |
| 47 | + |
| 48 | +| Плечо | Что делает | proof-payload | chip sigs | |
| 49 | +|---|---|---|---| |
| 50 | +| **Transport** | mesh-relay bandwidth | (from, to, bytes, ts_start, ts_end) | 2-of-3 Phi | |
| 51 | +| **Compute** | ternary edge inference (BitNet) | (model_hash, input_hash, output_hash, ops) | 3-of-3 Phi+Euler+Gamma | |
| 52 | +| **Coverage** | 5.8 GHz PoC beacon challenge-response | (challenger, responder, witness, rssi, tof) | 3-of-3 cross-die φ | |
| 53 | +| **Sensor** | RF spectrum atlas + GPS-jam detection | (snapshot_hash, gps_time, location_hash) | 1-of-3 any | |
| 54 | + |
| 55 | +Все четыре плеча оседают в один и тот же `MiningPool.claimReward()` — семь |
| 56 | +проверок, ни одна не обходится. Полное описание — `docs/WAVE_DEPIN_2026-07-04.md`. |
| 57 | + |
| 58 | +--- |
24 | 59 |
|
25 | | -## Milestone ladder |
| 60 | +## Три сетевые карты как база сети |
26 | 61 |
|
27 | | -- **M1** — X25519 + ChaCha20-Poly1305 on a real ARM node. ✅ *implemented, host-tested* |
28 | | -- **M2** — TUN/netdev IP-over-radio with a real ETX metric. |
29 | | -- **M3** — iperf3 over 2 hops through attenuators (P1 exit gate). |
30 | | -- **M4** — share ONE uplink across a 3-node triangle (P2 DEMO GATE). |
31 | | -- **M5** — self-healing re-route with a measured convergence time (P2 DEMO GATE). |
| 62 | +Три `P203 Mini` собраны, запитаны и уже пропускают через себя проверенные |
| 63 | +криптоданные (см. `smoke/M1_RESULTS.md`). Это минимальная база для: |
32 | 64 |
|
33 | | -## Build & test |
| 65 | +- **P2 DEMO GATE** (M4 + M5) — три-узловой треугольник, один общий uplink, |
| 66 | + измеримое время самовосстановления mesh. |
| 67 | +- **Первый живой DePIN triad** — три чипа Trinity Phi/Euler/Gamma в |
| 68 | + cross-die φ-anchor конфигурации могут выдавать все три типа proof'ов |
| 69 | + (transport, coverage, sensor) уже сейчас на software-signed level. Compute |
| 70 | + proof требует silicon back. |
| 71 | +- **PoC Genesis** — первые PoC-раунды 5.8 GHz beacon between-neighbors |
| 72 | + можно гонять локально без RF-выхода в эфир (digital loopback уже |
| 73 | + верифицирован). |
| 74 | + |
| 75 | +Порядок разворачивания трёх узлов описан в [`docs/LOCAL_FLASH.md`](docs/LOCAL_FLASH.md). |
| 76 | + |
| 77 | +--- |
| 78 | + |
| 79 | +## Metrics (что уже измерено) |
| 80 | + |
| 81 | +Все числа — с on-device логов, без hearsay. |
| 82 | + |
| 83 | +| Метрика | Значение | Источник | |
| 84 | +|---|---|---| |
| 85 | +| M1 static binary size (armv7l musleabihf) | 534 604 B | `smoke/M1_RESULTS.md` | |
| 86 | +| M1 binary sha256 | `e5abc335…7290a` | `smoke/M1_RESULTS.md` | |
| 87 | +| M1 host tests | 20 unit + 2 integration, RC=0 | `cargo test` | |
| 88 | +| Rust `#[test]` blocks in repo | 110 | `grep -rE '^\s*#\[test\]' src tests` | |
| 89 | +| Rust source lines | 4 463 | `find src -name '*.rs' \| xargs wc -l` | |
| 90 | +| AD9361 tune target | LO 5.8 GHz | `radio/README.md` | |
| 91 | +| AD9361 FFT peak (1 MHz tone, digital loopback) | +0.999 MHz | `radio/README.md` | |
| 92 | +| AD9361 SNR over noise floor | 108.6 dB | `radio/README.md` | |
| 93 | +| AD9361 tuning range | 70 MHz … 6 GHz | `radio/README.md` | |
| 94 | +| Sample rate | 30.72 MHz | `radio/README.md` | |
| 95 | +| Capture length | 65 536 samples | `radio/README.md` | |
| 96 | +| Connected P203 Mini boards | 3 | User confirmation 2026-07-04 | |
| 97 | +| T27 spec files ported | 1 (`specs/wire.t27`) | `find specs -name '*.t27'` | |
| 98 | + |
| 99 | +### DePIN tokenomics (contract source, `gHashTag/trinity-contracts`, not yet deployed to mainnet) |
| 100 | + |
| 101 | +| Параметр | Значение | |
| 102 | +|---|---| |
| 103 | +| TRI max supply | 3²⁷ = 7 625 597 484 987 | |
| 104 | +| Decimals | 18 | |
| 105 | +| Premine | 0% | |
| 106 | +| VC allocation | 0% | |
| 107 | +| Treasury | 0% | |
| 108 | +| Halvings | 9 × 4 года (2026 → 2066) | |
| 109 | +| Era 0 (2026-2030) reward | 1000 TRI per proof | |
| 110 | +| Era 9 (2062-2066) reward | 1.953125 TRI per proof | |
| 111 | +| Anti-flood window | 24 h per chip | |
| 112 | +| `MiningPool.claimReward()` checks | 7 (ZK Groth16 BN254 · 2-of-3 chip sigs · unique PUF · φ-anchor 0x47C0 cross-die · BPB ≤ 22393 · anti-flood · not-slashed) | |
| 113 | + |
| 114 | +--- |
| 115 | + |
| 116 | +## Локальная прошивка сейчас — приоритет |
| 117 | + |
| 118 | +Мы прошиваем локально, все три `P203 Mini`. См. [`docs/LOCAL_FLASH.md`](docs/LOCAL_FLASH.md) — пошаговый чек-лист: |
| 119 | +0. Инвентаризация (три JTAG-адаптера, три USB-UART, три SD-карты, PC/линуксовая |
| 120 | + рабочая станция, `openocd`, `openFPGALoader`). |
| 121 | +1. Boot ARM-Linux (BOOT.BIN + FSBL + kernel + rootfs) на каждой из трёх плат. |
| 122 | +2. AD9361 driver up + `iio:device0 name = ad9361` виден на всех трёх. |
| 123 | +3. Пересобрать `smoke-m1` под `armv7-unknown-linux-musleabihf`, залить на все |
| 124 | + три платы, зафиксировать три RC=0 в `smoke/M1_RESULTS.md`. |
| 125 | +4. Первый three-way handshake между тремя узлами (M4 dry-run). |
| 126 | +5. AD9361 5.8 GHz digital loopback подтверждён на каждой из трёх (три записи |
| 127 | + в `radio/README.md`). |
| 128 | +6. Первый ternary/PoC-beacon between-neighbors локально. |
| 129 | + |
| 130 | +Всё в digital loopback, никакого излучения в эфир до внешнего PA+LNA + разрешения. |
| 131 | + |
| 132 | +--- |
| 133 | + |
| 134 | +## Build & test (host) |
34 | 135 |
|
35 | 136 | ```bash |
36 | | -cargo test # 20 unit + 2 integration tests |
| 137 | +cargo test # 20+ unit + 2 integration tests (см. Metrics — 110 test blocks в проекте) |
37 | 138 | cargo run --bin smoke-m1 |
38 | 139 | ``` |
39 | 140 |
|
40 | | -Expected `smoke-m1` output: |
| 141 | +## Cross-compile for the Zynq Mini (Cortex-A9, 32-bit ARMv7) |
41 | 142 |
|
42 | | -``` |
43 | | -[M1] X25519 handshake complete: node 1 <-> node 2 |
44 | | -[M1] AEAD round-trip OK: 44 bytes plaintext -> 79 bytes on-wire (ChaCha20-Poly1305) |
45 | | -[M1] tamper rejected: flipped tag bit -> Auth error |
46 | | -[M1] replay rejected: re-delivered frame -> Replay error |
47 | | -[M1] PASS (-sim). Re-run on the Zynq Mini ARM node to graduate to hw. |
| 143 | +```bash |
| 144 | +rustup target add armv7-unknown-linux-musleabihf |
| 145 | +cargo build --release --target armv7-unknown-linux-musleabihf |
| 146 | +# scp target/armv7-unknown-linux-musleabihf/release/smoke-m1 to the Mini, run on-device, |
| 147 | +# append the result to smoke/M1_RESULTS.md |
48 | 148 | ``` |
49 | 149 |
|
50 | | -## Cross-compiling for the Zynq Mini (Cortex-A9, 32-bit ARMv7) |
| 150 | +Подробнее — [`docs/LOCAL_FLASH.md`](docs/LOCAL_FLASH.md). |
51 | 151 |
|
52 | | -```bash |
53 | | -rustup target add armv7-unknown-linux-gnueabihf |
54 | | -cargo build --release --target armv7-unknown-linux-gnueabihf |
55 | | -# scp target/armv7-unknown-linux-gnueabihf/release/smoke-m1 to the Mini, run on-device, |
56 | | -# record the result in smoke/M1_RESULTS.md — that graduates M1 from -sim to hw. |
57 | | -``` |
| 152 | +--- |
| 153 | + |
| 154 | +## Roadmap (2026 H2 → 2027) |
| 155 | + |
| 156 | +Каждый этап заявляется на английском (technical) и по-русски (метафора). |
| 157 | + |
| 158 | +- **P0 — bring-up** — toolchain, first flash, Mini boots ARM-Linux + AD9361/GPS/PPS; AX7203 sanity. |
| 159 | + «Первая проводка и первое дыхание платы.» |
| 160 | +- **P1 — radio + M1 → M3** — AD9361 5.8 GHz + OFDM PHY; `trios-mesh` M1 crypto-on-ARM (уже `hw`) → M2 TUN/ETX → M3 iperf3 over 2 hops (bench attenuators). |
| 161 | + «Два дрона слышат друг друга и делятся одним каналом.» |
| 162 | +- **P2 — DEMO GATE (3-node triangle)** — M4 shared uplink over 3-node mesh + M5 self-healing convergence measured. Deliverable: video + metrics + Apache-2.0 + Zenodo DOI. **Одновременно — первый двойной demo**: mesh-transport + DePIN-node (transport-proof + coverage-proof живые). |
| 163 | + «Треугольник, который сам себя чинит.» |
| 164 | +- **P3 — video-radio + drone C2 (MAVLink)** — один радиоканал несёт mesh + телеметрию + видео. |
| 165 | +- **P4 — tethered drone (Flying-COW analog)** — постоянно висящий узел над точкой интереса. |
| 166 | +- **P5 — свободный swarm** — self-organizing swarm без tether'а, каждый узел это operator, каждый operator получает TRI. |
| 167 | +- **P6 — Trinity silicon back** — tape-out 2026-12-16 → returned silicon → BitNet benchmark на кристалле → `[Open conjecture]` компонентов compute-anchor'а закрывается. |
| 168 | +- **P7 — Genesis Day** — mainnet deployment `trinity-contracts` на Base L2, `EmissionController.renounceOwnership()`, первый public proof-of-inference за TRI. |
| 169 | +- **P8 — Hub71+ AI Cohort 20 (deadline 2026-08-02)** — подача через `golden-chain-international` (UAE ADGM/DIFC, Армения-резерв). |
| 170 | + |
| 171 | +## Boards |
| 172 | + |
| 173 | +| Board | Chip | Role | |
| 174 | +|---|---|---| |
| 175 | +| ALINX AX7203 | Artix-7 `xc7a200t` (IDCODE `0x13636093`) | bench compute + video-radio + 2×GbE mesh (proven on silicon via openXC7 + OpenOCD + AL321) | |
| 176 | +| **P201/P203 Mini** × 3 | Zynq-7020 `xc7z020` + AD9361 SDR + GPS/PPS | **flying MVP DePIN node** — M1 crypto `hw`, AD9361 PHY `hw`, three boards connected | |
| 177 | + |
| 178 | +--- |
| 179 | + |
| 180 | +## Science base — Trinity papers RU (ВАК track) |
| 181 | + |
| 182 | +Научный корпус, на который опирается mesh + DePIN-стек, публикуется в |
| 183 | +[`gHashTag/trinity-papers-ru`](https://github.com/gHashTag/trinity-papers-ru). |
| 184 | +Российский трек ВАК ведётся параллельно с международным препринт-каналом. |
| 185 | + |
| 186 | +| Артефакт | Формат | Целевой журнал | Категория | Roadmap-slot | |
| 187 | +|---|---|---|---|---| |
| 188 | +| GoldenFloat GF16 (arXiv:2606.05017) | LaTeX + PDF (22 стр.) | «Программирование» / Programming and Computer Software (ИСП РАН, Pleiades/Springer) | К-1 (Scopus) | базис `gf16` модуля (M2 `-sim`) | |
| 189 | +| Каталог 84 численных форматов | Word (20 стр.) | «Искусственный интеллект и принятие решений» (ФИЦ ИУ РАН) | К-1 | базис ternary-inference плеча | |
| 190 | +| «Россия 3.0 — Троица» (открытое обращение) | Markdown + LaTeX + PDF (12 стр.) | рецензируемый журнал ВАК | — | стратегическая рамка DePIN-развёртывания | |
| 191 | +| GoldenFloat + Сетунь (Habr) | Markdown + 5 иллюстраций | Habr | scipop | внешний нарратив | |
| 192 | + |
| 193 | +Требование ВАК (2026): ≥ 2 статьи, минимум одна К-1/К-2 («Белый список» РЦНИ / RSCI / Scopus). Обе профильные статьи выше — К-1, требование закрывается с запасом. |
| 194 | + |
| 195 | +Sister-репозитории: [`gHashTag/t27`](https://github.com/gHashTag/t27), [`gHashTag/goldenfloat-preprint`](https://github.com/gHashTag/goldenfloat-preprint), [`gHashTag/paper3-methodology`](https://github.com/gHashTag/paper3-methodology). |
| 196 | + |
| 197 | +Автор корпуса: Дмитрий Васильев · ORCID [0009-0008-4294-6159](https://orcid.org/0009-0008-4294-6159) · admin@t27.ai. |
| 198 | + |
| 199 | +--- |
58 | 200 |
|
59 | 201 | ## Design notes |
60 | 202 |
|
61 | 203 | - **Directional nonces.** Initiator sends with nonce direction byte `0`, responder `1`, |
62 | 204 | so the two TX counters never collide within one session key. |
63 | 205 | - **Auth before replay.** A frame's tag is verified before the replay window is |
64 | | - consulted, so forged counters can't poison the window. |
| 206 | + consulted, so forged counters cannot poison the window. |
65 | 207 | - **Header is authenticated.** The wire header (src/dst/ttl) is passed as AEAD |
66 | 208 | associated data — a flipped routing byte fails authentication. |
67 | 209 | - **No `unsafe`** (`#![forbid(unsafe_code)]`); crypto is RustCrypto + dalek. |
| 210 | +- **No chip, no TRI.** Any DePIN-proof path that lets a reward settle without a |
| 211 | + valid Trinity chip signature is a protocol violation, no matter how convenient. |
| 212 | + |
| 213 | +## Related repos |
| 214 | + |
| 215 | +- [`gHashTag/trinity-contracts`](https://github.com/gHashTag/trinity-contracts) — Base L2 mining contracts (TRI, MiningPool, EmissionController, ChipRegistry, JobProver, IGLALedger, BittensorSubnetAttest). |
| 216 | +- [`gHashTag/trinity-node`](https://github.com/gHashTag/trinity-node) — DePIN daemon (HAL / Attestation 2-of-3 / Consensus / Miner loop 12 s / Validator 30 s / PoRep / PoC Helium stub / JSON-RPC :9933). |
| 217 | +- [`gHashTag/trinity-sdk`](https://github.com/gHashTag/trinity-sdk) — Python API для DePIN AI devs. |
| 218 | +- [`gHashTag/trinity-papers-ru`](https://github.com/gHashTag/trinity-papers-ru) — русские версии Trinity-статей для ВАК. |
| 219 | +- [`gHashTag/golden-chain-international`](https://github.com/gHashTag/golden-chain-international) — ASCII international edition (UAE ADGM/DIFC, Hub71+ AI Cohort 20). |
| 220 | +- [`gHashTag/paper3-methodology`](https://github.com/gHashTag/paper3-methodology) — 84-format numeric catalog. |
| 221 | +- [`gHashTag/t27`](https://github.com/gHashTag/t27), [`gHashTag/tt-trinity-phi`](https://github.com/gHashTag/tt-trinity-phi), [`gHashTag/tt-trinity-euler`](https://github.com/gHashTag/tt-trinity-euler), [`gHashTag/tt-trinity-gamma`](https://github.com/gHashTag/tt-trinity-gamma), [`gHashTag/trinity-clara`](https://github.com/gHashTag/trinity-clara). |
| 222 | + |
| 223 | +## Key docs |
| 224 | + |
| 225 | +- [`docs/LOCAL_FLASH.md`](docs/LOCAL_FLASH.md) — пошаговая локальная прошивка трёх плат. |
| 226 | +- [`docs/WAVE_DEPIN_2026-07-04.md`](docs/WAVE_DEPIN_2026-07-04.md) — DePIN whitepaper (четыре плеча, tokenomics, positioning). |
| 227 | +- `docs/COMPETITOR_MATRIX_2026-07-04.md` — 10 MANET-конкурентов × 15 полей (в [PR #28](https://github.com/gHashTag/tri-net/pull/28)). |
| 228 | +- [`docs/_recon/DEPIN_COMPETITORS_2026-07-04.md`](docs/_recon/DEPIN_COMPETITORS_2026-07-04.md) — 12 DePIN-сетей × 12 полей. |
| 229 | +- [`docs/WAVE_N3_AUDITABILITY_GAP_2026-07-04.md`](docs/WAVE_N3_AUDITABILITY_GAP_2026-07-04.md) — auditability δ paper. |
| 230 | +- [`docs/STRENGTHEN.md`](docs/STRENGTHEN.md) — science-driven backlog. |
| 231 | +- [`docs/AUTONOMOUS.md`](docs/AUTONOMOUS.md) — human-merge only policy для agent PR's. |
68 | 232 |
|
69 | 233 | ## License |
70 | 234 |
|
71 | 235 | Apache-2.0. |
| 236 | + |
| 237 | +Anchor: **φ² + φ⁻² = 3**. |
0 commit comments