Blocksonly 模式是什么?只收区块、不帮转交易的节点 图 1
Blocksonly 模式是什么?只收区块、不帮转交易的节点 · 图 1

比特币全节点有两份工作:验证并存储区块(记账员),以及在内存池里接收、验证、转发未确认交易(邮政员)。blocksonly 模式让节点辞去第二份工作:只下载和验证区块本身,交易处理完全通过区块进行——不入池、不转发。这个开关看起来只是省带宽,实际重排了节点在隐私与网络义务之间的位置。

关掉邮局,得到什么

最直接的是带宽与注意力:一个活跃全节点的 mempool 转发流量常年可观,退出转发把这份成本清零。更微妙的是隐私面收窄:常规模式下,你的节点一收到交易就向邻居转发,邻居可以据此推断“这笔交易与你相关”(哪怕只是路过);块模式不主动发出任何交易消息,向网络泄露的“你在意什么交易”信号大幅减少(关联推断与聚类原理见 粉尘攻击是什么?收到小额转账该怎么处理邻域的链上聚类话题)。代价同样清楚:你的节点不再为网络传播出力;你自己的交易要靠别的节点或钱包后端进入内存池;你在交易确认前的可见性也降到最低——本地内存池没了(内存池的角色见 内存池政策是什么?为什么合规交易会被节点拒绝)。

它验证的东西没有打折

要点常被误传:blocksonly 不降低验证强度。区块到达后,其中每笔交易、每处脚本、UTXO 变更照常被完整验证(全节点的定义见 全节点、归档节点和轻客户端有何区别?),它是“闭嘴的记账员”,不是“抄作业的轻节点”。这也解释了为什么这个选项只存在于全节点软件里——轻客户端本就靠别人帮忙筛数据,块模式对它是伪命题。

快速问答

  • “区块数据里不还是含交易吗?隐私有何提升?“区块把所有交易打包后人人都在下载同一份,你的下载行为与全网一致、不再携带“单独请求某笔”的信号;增量泄漏主要在转发环节,块模式关掉的正是这条通道。
  • “这会伤害去中心化吗?“每节点是自愿的带宽选择,网络对转发节点数量有冗余设计;但如果大量节点同时退出转发,传播延迟上升会反噬所有人的未确认体验——个人运行量级内,这个外溢可忽略。
  • “开了它还能收付款吗?“完全可以;只是广播付款需借助外部渠道(钱包服务商、自建的第二节点、公共 RPC),到账的零确认信号则完全放弃。
  • “Pruning 和它的关系?“正交:prune 控制区块历史存多少(磁盘维度),blocksonly 控制参不参与交易转发(网络维度),两者可叠加(prune 的运维细节见 pruneblockchain裁剪前要查什么?)。
  • “开了它还会收到攻击流量吗?“会。只收区块不等于免疫带宽消耗——新区块广播、版本握手、addr 地址公告等协议消息照常进出;它省下的是 mempool 交易洪水那一块流量与处理成本,攻击面只是变形,不是消失。
  • “适合笔记本或树莓派吗?“带宽敏感、常断网的家用设备是典型受益场景:退出转发能明显压低上行流量与内存占用,代价是本地零确认信号消失,适合纯记账、监控与自持验证为主的用法。

常见误区

  • 误区一:把 blocksonly 读成“半节点”。验证强度不打折,它与归档与否(历史数据留存,见 EIP-4444 历史过期是什么?节点为什么可以不存全部历史的类比话题)是两条独立轴。
  • 误区二:以为这能隐身。网络层仍有邻居与 IP 暴露面,块模式只关掉“转发即表态”这一类信号,洋葱网络等传输层方案讨论的是另一半问题。
  • 误区三:担心它对共识有害。节点是否转发交易与出块权无关,历史上一致性从未因转发节点比例问题破坏——但“足够多的转发节点”是社区默认共同承担的基础设施,值得知情选择。

小结

Blocksonly 是一次角色声明:“我做验证,不做邮政”。它把节点从默认的双重义务里解绑,用放弃零确认可见性和转发贡献,换带宽与更干净的隐私面。选它的正确姿势是承认这三笔账再决定——因为最好的节点政策,从来都是运行者清楚自己放弃了什么的那种。

风险提示:本文不构成投资建议。节点参数以所用软件当前文档为准。