Skip to content
⚠️ この翻訳は機械翻訳です。ネイティブによるレビューは保留中のため、訳文に誤りが含まれる場合があります。

アーキテクチャ

Raiznetは3つの層で構成されます。このページは、今日 動作するものと 設計段階 のものを区別します — 全体像は ロードマップ を参照してください。

エッジ層 — ESP32センサー

すべてのデバイスは同じベースファームウェアを実行します。モードはハードウェアではなく設定で決まります。

モード電源動作
sensor_mains商用電源常時稼働、Wi-Fiを有効に保つ。将来は近隣向けのESP-NOWリレー
sensor_batteryバッテリーほとんどの時間スリープし、スケジュールで起動
gateway商用電源リレーのみ — ESP-NOWデバイスをWi-Fiへ橋渡し(計画中)

すべてのデバイスは同じアイデンティティモデルを持ちます。プロビジョニング時に生まれる(ハードウェアTRNGによる)Ed25519鍵ペアで、フラッシュに保存され、すべてのテレメトリパケットの署名に使われます。リファレンスファームウェアはキャプティブポータルでBIP-39ニーモニックから所有者アイデンティティも生成します — デバイスのライフサイクル を参照してください。

メッシュ層 — サーバーノード

各サーバーはピアです。「メインサーバー」は存在しません。ノードが 今日 行うこと:

  • 署名されたテレメトリをHTTP(POST /v1/telemetry)で受け取り、すべての署名を検証します
  • 取り込み時にフィールドごとの プライバシーポリシー を適用します
  • 読み取りを 2つのローカルSQLiteデータベース(公開/プライベート)に保存します
  • HTTP APIを2つのポートで公開します。1つは公開、1つはローカル

設計段階 (ADR-004): ノードは公開データを署名付き追記専用イベントログとして永続化し、同じ ネットワーク 内の他のノードとピアツーピアで複製します — まず設定済みピア間でHTTP経由、次にコミュニティが運営するリレーを用いたpubkeyダイヤル方式のトランスポートで。複製はまだ実装されていません — 今日、ノードは独立しています。

サーバーはNode.jsが動く場所ならどこでも実行できます。VPS、Raspberry Pi、Mini PC、Termux経由のAndroid。静的バイナリで非常に小さなARMボードを狙うため、ノードのRust再実装(raiznetd)が進行中です — ロードマップ を参照してください。

1プロセスでのデュアルエンドポイント

単一のサーバープロセスが2つのHTTPインターフェースを公開します。

エンドポイント既定ポートバインドdevicesルートがアクセスする先認証
公開:30000.0.0.0raiznet_public.dbなし(公開データのみ)
ローカル:3001127.0.0.1raiznet_private.dbまだなし — 計画中: 所有者のチャレンジ・レスポンス

WARNING

所有者認証が入るまで、ローカルエンドポイントの唯一の保護はループバックバインドです。Tailscale/VPN経由でリモートアクセスしてください — 直接公開しないでください。

2つのデータベース

データベース供給元内容提供元
raiznet_public.db公開取り込み(複製は計画中)ネットワークに公開可能なデバイスと読み取り公開エンドポイント
raiznet_private.dbローカル取り込みのみlocal_only デバイス + 公開側から外したフィールドローカルエンドポイントのみ

分離によるセキュリティ: 公開エンドポイントのクエリはプライベートデータを返せません。プライベートデータベースへの接続がそもそも利用できないからです。分離はAPI層ではなくデータベース層で強制されます。

クライアント層

クライアント説明状態
CLI運用・デバッグツールリポジトリ内
Webダッシュボード可視化UIリポジトリ内
公開ゲートウェイインターネットに公開されたノード — 単なる別のピアで、特権データはなし計画中
デスクトップアプリ(Tauri)完全なノード + UIを同梱、オフライン動作将来フェーズ
モバイルアプリReact NativeまたはCapacitor将来フェーズ