跳转到内容

Network 命令

rotifer network 命令运行一个实验性的点对点基因网络。从 v0.9.0 起,已发布的 CLI 内置真实的 libp2p 节点,以后台守护进程方式运行:同一局域网内的节点通过手动提供的 --bootstrap 地址互连,并经 GossipSub 传播基因公告。

显示 P2P 守护进程状态。

Terminal window
rotifer network status

示例(守护进程运行中):

Terminal window
$ rotifer network status
── P2P Network Status ──
Status: Running
PeerId: 12D3KooWA1b2c3d4e5f6...
Listening: /ip4/192.168.0.103/tcp/9878/p2p/12D3KooWA1b2c3d4e5f6...
Discovered peers: 2

守护进程未运行时,命令会显示配置的监听端口和 bootstrap 节点数量,并提示如何启动。


将 P2P 节点作为后台守护进程启动。需要原生 libp2p 插件。

Terminal window
rotifer network start [--port <port>] [--host <addr>] [--bootstrap <addr...>]

选项:

选项默认值描述
-p, --port <port>9878监听端口
-H, --host <addr>127.0.0.1监听接口——127.0.0.1(仅本机回环)或 0.0.0.0(可被其他机器访问)
-b, --bootstrap <addr...>取自配置启动时拨号的 bootstrap 节点 multiaddr;覆盖配置文件

示例:

Terminal window
$ rotifer network start --host 0.0.0.0 --port 9878
── Starting P2P Daemon ──
PeerId: 12D3KooWA1b2c3d4e5f6...
Listen host: 0.0.0.0
PID: 48213
Bootstrap peers: 0
P2P daemon running in the background.
'rotifer network status' shows the reachable multiaddr give it to other nodes as --bootstrap

守护进程在后台运行;用 rotifer network status 查看、用 rotifer network stop 关闭。配置保存在 ~/.rotifer/network.json


停止运行中的 P2P 守护进程。

Terminal window
rotifer network stop

列出运行中的守护进程已发现的节点。需要守护进程处于运行状态。

Terminal window
rotifer network peers

示例:

Terminal window
$ rotifer network peers
── Discovered Peers ──
#1 /ip4/192.168.0.107/tcp/9878/p2p/12D3KooWB7c8d9...
1 peer(s) discovered

若尚无节点连接,命令会报告 No peers discovered yet.。v0.9.0 中节点通过手动 --bootstrap 加入;自动发现是 v0.9.1 里程碑。


显示本节点从已连接节点收到的基因公告。需要守护进程处于运行状态。

Terminal window
rotifer network received

示例:

Terminal window
$ rotifer network received
── Received Gene Announcements ──
grammar-checker@1.0.0 writing.grammar · Native · from 12D3KooWB7c8d9…
1 announcement(s) received

只有当某个节点在本节点连接且已订阅时公告基因,公告才会出现在这里。


通过运行中的守护进程公告本地基因的元数据。会读取当前项目下的 genes/<gene-name>/phenotype.json。需要守护进程处于运行状态。

Terminal window
rotifer network announce <gene-name>

示例:

Terminal window
$ rotifer network announce grammar-checker
── Gene Announcement ──
Announced 'grammar-checker' to the network

已连接且已订阅的节点会在 rotifer network received 下列出该公告。


Terminal window
rotifer network search <query>

基于 DHT 的 P2P 元数据搜索尚未可用——它属于 v0.9.1 里程碑。该命令会引导你使用 Cloud 发现:

Terminal window
$ rotifer network search "code formatter"
── P2P Gene Search ──
Preparing P2P search for: "code formatter"
P2P metadata search (DHT) is not yet available.
Use 'rotifer search' for Cloud-based gene discovery.

观察一个基因在同一网络的多台机器间传播:

  1. 种子机器上绑定可达接口:rotifer network start --host 0.0.0.0。从 rotifer network status 记下 multiaddr。
  2. 在每台其他机器上加入种子:rotifer network start --bootstrap /ip4/<种子-ip>/tcp/9878/p2p/<种子-PeerId>
  3. 在任意机器上公告基因:rotifer network announce <gene-name>
  4. 在其他机器上,rotifer network received 会列出它。

局域网可达性依赖手动 --bootstrap。自动发现(mDNS)和跨公网连接(NAT 穿透、relay)是后续里程碑。


网络配置存储在 ~/.rotifer/network.json

{
"node_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"listen_port": 9878,
"bootstrap_peers": [
"/dns4/bootstrap.rotifer.dev/tcp/9878"
],
"enabled": false
}

node_id 是本地配置标识符;status / start 显示的 libp2p PeerId 在运行时派生,才是其他节点在 --bootstrap multiaddr 中使用的标识。


能力状态
自动节点发现(mDNS,局域网)v0.9.1
经 Kademlia DHT 的广域发现 + 搜索v0.9.1
跨公网连接(NAT 穿透、relay)v0.9.1

在此之前,基因发现与共享通过 Cloud Registry(rotifer searchrotifer publish)进行。