比特币节点的连接分层:八条中继线、两条区块暗线与探针 图 1
比特币节点的连接分层:八条中继线、两条区块暗线与探针 · 图 1

你的节点在主动找谁

Bitcoin Core 节点的网络模型常被简化成“多连几个节点就更快”,但真实的连接拓扑按用途分层。启动一个默认配置的节点,它大约会向外建立三组不同角色的连接,每一组的设计目标都不同。

八条交易与区块通道

默认情况下,节点主动向公网发起八条全功能连接:交易和区块都从这些对等端收发。这些连接是“可替换的雇员”,质量不佳时节点会逐步开新连接换人。它们的存在保证了任何节点——哪怕从不监听端口——都能找到同步对象。监听与可达性影响的只是“别人主动连你”的概率,与交易传播的对称性有关:连接池越大、拓扑越对称,一笔交易到达全网的方差越小。

两条只送区块的暗线

除了八条全功能连接,节点还会另开两条只传区块的 block-relay-only 连接(Bitcoin Core v0.21 起引入)。它们不参与交易中继、不响应内存池查询,唯一的工作是递送新区块头与区块。这个设计的巧妙之处在于隐蔽:若没有专门的区块通道,攻击者只需连入你的全部交易连接,就能通过“谁先给我看某个交易”来推断你是谁、或者你从哪里收到它;有了独立区块线,攻击者必须额外占满你的交易连接池才可能观测到区块时间差,成本显著上升。对普通用户,这层连接解释了为什么日志里能看到数量少于预期的对端类型。

探针、锚点与上限

节点还做两类小事:用 feeler 连接低频试探新地址(日志里短暂出现的陌生 IP 多半是它,通常每两分钟左右试一条,成功后立刻断开),并在正常关闭时把最后已知的可靠对端写入 anchors.dat 作为重启后的暗桩——这类锚定对端刻意选择走区块通道的连接,重启瞬间即使地址种子服务不可用,节点也能找回几条活线。总连接数受 -maxconnections 约束,默认一百二十五条——注意这个数字包含入站,绝大多数家用节点的活跃对外连接远小于上限,把上限调大并不提升性能,只改变入站接待规模,可能带来资源与隐私权衡。

可达性、传输层与观测

入站能力(公网、UPnP、端口映射)影响节点被连接的均衡度,但不影响你是否能同步或验证;家用网络做到“能出去”就已经是一个合格的验证者。传输层层面,默认的中继交易路径与区块路径分离、以及连接加密等新特性,都以降低“从连接行为反推流量来源”的能力为目标。观察工具上,getpeerinfo 列出当前对端及其角色标志,help 文档中对 block-relay-only 有标注;getnettotals 看进出流量,两者结合能大致判断你的区块是“推来的”还是“拉来的”。值得强调的是,这层拓扑不改变任何共识判断:无论连接是多是少,你的节点都在独立执行同一套验证规则,网络结构只影响信息到达的速度与你的隐私暴露面,绝不影响账本结论的正确性。这听上是老生常谈,但它决定了你观察连接层问题的正确心态:连接问题值得优化,不值得恐慌。

常见误区

“连接越多越安全”——同步正确性靠验证,不靠连接数;连接管理目标是均衡与隐私,不是数量竞赛。“没有入站就不是合格节点”——只要独立验证规则,你就是网络中的一票。“看到陌生入站 IP 是被扫描”——公网监听被探测本就是常态,按协议处理即可,无需恐慌关停。

风险提示

暴露 RPC 与暴露 P2P 端口是完全不同的事,前者必须留在本机或受信网段。本文不构成对节点收益(如有激励性服务)的任何预期。