Network 命令
rotifer network 命令运行一个实验性的点对点基因网络。从 v0.9.0 起,已发布的 CLI 内置真实的 libp2p 节点,以后台守护进程方式运行:同一局域网内的节点通过手动提供的 --bootstrap 地址互连,并经 GossipSub 传播基因公告。
rotifer network status
Section titled “rotifer network status”显示 P2P 守护进程状态。
rotifer network status示例(守护进程运行中):
$ rotifer network status
── P2P Network Status ──
Status: ● Running PeerId: 12D3KooWA1b2c3d4e5f6... Listening: /ip4/192.168.0.103/tcp/9878/p2p/12D3KooWA1b2c3d4e5f6... Discovered peers: 2守护进程未运行时,命令会显示配置的监听端口和 bootstrap 节点数量,并提示如何启动。
rotifer network start
Section titled “rotifer network start”将 P2P 节点作为后台守护进程启动。需要原生 libp2p 插件。
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;覆盖配置文件 |
示例:
$ 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。
rotifer network stop
Section titled “rotifer network stop”停止运行中的 P2P 守护进程。
rotifer network stoprotifer network peers
Section titled “rotifer network peers”列出运行中的守护进程已发现的节点。需要守护进程处于运行状态。
rotifer network peers示例:
$ 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 里程碑。
rotifer network received
Section titled “rotifer network received”显示本节点从已连接节点收到的基因公告。需要守护进程处于运行状态。
rotifer network received示例:
$ rotifer network received
── Received Gene Announcements ──
grammar-checker@1.0.0 writing.grammar · Native · from 12D3KooWB7c8d9…
1 announcement(s) received只有当某个节点在本节点连接且已订阅时公告基因,公告才会出现在这里。
rotifer network announce <gene-name>
Section titled “rotifer network announce <gene-name>”通过运行中的守护进程公告本地基因的元数据。会读取当前项目下的 genes/<gene-name>/phenotype.json。需要守护进程处于运行状态。
rotifer network announce <gene-name>示例:
$ rotifer network announce grammar-checker
── Gene Announcement ──
✓ Announced 'grammar-checker' to the network已连接且已订阅的节点会在 rotifer network received 下列出该公告。
rotifer network search <query>
Section titled “rotifer network search <query>”rotifer network search <query>基于 DHT 的 P2P 元数据搜索尚未可用——它属于 v0.9.1 里程碑。该命令会引导你使用 Cloud 发现:
$ 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.观察一个基因在同一网络的多台机器间传播:
- 在种子机器上绑定可达接口:
rotifer network start --host 0.0.0.0。从rotifer network status记下 multiaddr。 - 在每台其他机器上加入种子:
rotifer network start --bootstrap /ip4/<种子-ip>/tcp/9878/p2p/<种子-PeerId>。 - 在任意机器上公告基因:
rotifer network announce <gene-name>。 - 在其他机器上,
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 中使用的标识。
尚未实现 —— v0.9.1 里程碑
Section titled “尚未实现 —— v0.9.1 里程碑”| 能力 | 状态 |
|---|---|
| 自动节点发现(mDNS,局域网) | v0.9.1 |
| 经 Kademlia DHT 的广域发现 + 搜索 | v0.9.1 |
| 跨公网连接(NAT 穿透、relay) | v0.9.1 |
在此之前,基因发现与共享通过 Cloud Registry(rotifer search、rotifer publish)进行。