节点中继

代没有地址的机器持有一个公网地址,使 NAT 之后的节点无需开放任何端口即可被拨通。

节点中继为贡献者的机器提供一个网络可以拨通的地址。p4 通过*向*节点打开连接来派发工作,而 NAT 之后的家用机器没有可供打开连接的地址。中继代为持有一个公网地址,节点只维持一条通往中继的向外连接,拨到该公网地址的工作便沿着节点早已持有的连接流下来。

p4 的两端都不知道中继的存在。拨号方看到的是一个普通地址;节点的代理仍然只绑定 127.0.0.1,此外什么都不监听。

为什么用隧道而非端口转发

p4 没有任何认证 —— 任何能触及代理端口的主机都可以发送 NODE_LOAD、NODE_UNLOAD 或 INSPECT。把家用路由器的端口转发进去,等于把机器暴露给任何找到它的人。在中继之后,节点什么都不监听,并在连接承载任何内容之前,用结算网关同样的签名方式证明运营者钱包。可达性与认证由同一套机制一并解决。

它不做的事

  • 不读取流量。 载荷逐字节通过、从不解析,因此中继无法区分命令 —— 也不应当能够区分,因为理解流量就意味着有能力改动它。
  • 不做调度。 编排仍归运营者的计划所有;对中继而言,节点只是一个地址。
  • 不是工作的凭证。 经由中继传输的字节不说明任何已完成的推理,也从不计入贡献度。

相关条目

另见 p4 代理(贡献者机器所运行的进程)与 节点运营者(中继在发放地址前所认证的钱包)。