连接槽为什么会成为攻击面
比特币节点靠邻居网络传播交易和区块,而每个节点的入站连接位是有限的:一个普通配置能同时招待的入站对等数量有硬上限。这意味着一个不需要破解任何密码的打法——开一批假节点,单纯把全网每个好节点的入站位都占满。真实节点挤不进去,网络被切分成一堆互相看不见的孤岛,这正是女巫攻击的经典前置动作:不用算力,只用连接数就能压制诚实网络的连通性。
节点软件当然有驱逐和分组的防御,但都是「先到先得加随机淘汰」的逻辑,没有谁规定你要招待谁、也没有谁自证「我是真人」。BIP-154(2017 年 4 月,作者 Karl-Johan Alm)把问题变成一个经济学提问:能不能让多占一个连接位变得不那么免费——想插队,先交作业。

challenge 与 solution:先交卷再进门
提案在 P2P 层加了两种消息:challenge(挑战)与 solution(解答)。流程被嵌进连接握手的最前端:节点建立入站连接时,可以先附上 solution 再发 version;如果答案符合对方要求,连接放行;答案错了或过期,对方回一份新 challenge 并断开;如果你什么都不带、而对方又处于「需要作业」的状态,同样收到一份 challenge 后断开。换句话说,被要求做业的一方会被立刻踢下线,之后是自己把题解了再回来,还是换一家有免费位的节点,由你选。
连接的配额被切成两类:免费槽(free slot)不需要任何作业,保障普通家用节点的日常;作业槽(POW slot)必须验题通过才能占用。节点只在承受连接压力时才收紧作业槽门槛——平时正常连接,被洪水围攻时才开始收「门票」。由于不触碰共识规则,提案还预留了将来增加其他作业算法的空间。
为什么不能用出块的那道题
最容易想到的出题方式,是让新连接做一遍挖矿同款的 double SHA-256。提案明确反对:那种题的解题速度被专用硬件碾压,矿机集群能以极低单价批发答案,普通家用电脑反而被题难住——限速变成了「专款专用的 VIP 通道」,恰好违背防御初衷。所以 BIP-154 要求采用对专用硬件不敏感的题型,让普通 CPU 与加速设备之间的解题差距尽量小,把「攻击成本」真正摊到攻击者头上,而不是让专业军火商代打。题面本身也留了余地:以可插拔的 POW 规格描述,算法可以随攻防演化更换。
为什么它关掉了
BIP-154 的状态是 Closed,从未进入任何版本的默认实现。原因可以从三层看。其一,替代方案先行:Core 后来的地址管理、连接分槽(按网络与子网配额)、以及 BIP133 式的 feefilter 与驱逐策略,用更轻的手段压住了连接洪水的烈度。其二,作业题永远在赛跑:题目太易则攻击者照付不误,太难则正常节点重连时体验稀烂,而且出题方还需要维持一套「题目难度与时效」的账务状态,攻击者专攻这套状态的工程漏洞反而更划算。其三,生态的价值观取向:比特币的 P2P 层长期偏好在既有消息上打补丁,而不是引入有状态的新握手回合——一次提案失败,往往败在工程口味而非数学。
快速问答
问:现在比特币节点靠什么挡连接洪水? 答:主力是「不招待名单」思路:默认入站名额极少、出站长连接优先、按 /16 或子网限制同源连接数、地址库按网络分组轮换。BIP-154 是这条路走不通时的加强方案,至今留在纸面上。
问:家用节点开公网端口会被拿这个打吗? 答:被攻击的正确姿势是增加出站长连接与多线路冗余,而不是给 P2P 端口加付费题——那会把你的节点变成别人眼里的「会出题的傻瓜」,引来专门解题的扫描器。
风险提示
本文是协议机制科普,不构成投资建议。节点部署涉及网络暴露面,开放端口前请评估自身带宽与监控能力,防御建议以当期官方文档为准。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。