Lightning Network的开发者在10月19日收紧了BOLT11标准,要求软件必须拒绝模糊的支付哈希和支付秘密字段。这一改变源于开发者对一个攻击事件的报告,该事件使得已完成的比特币提款看似未支付。
此次更新针对对同一签名支付请求读取不同的支付哈希的情况。支付哈希是识别组件跟踪支付的关键。比特币Optech在10月23日强调了这一规则的变化。
开发者Roasbeef在9月10日的声明中提到,最近一次针对Telegram点对点机器人(P2P bot)的攻击利用了选择不同哈希的库:一些库选择发票中的第一个支付哈希字段,而另一些则选择最后一个。他未披露事件日期或损失金额。
实际上,一个服务可能在一个哈希下追踪提款,而其节点用另一个哈希执行支付。这样,服务可能会错误地将已完成的提款视为未支付,为进一步付款创造了机会。这一失败存在于支付执行与服务会计之间的联系。
必须拒绝的内容
当前的BOLT11规范要求恰好有一个支付哈希字段和一个支付秘密字段。缺少字段或重复出现的情况都将导致支付失败。此规则不仅覆盖两种歧义,也涵盖了前述的提款攻击中的冲突哈希。
读者必须确认字段出现次数。提案的无效测试案例包括发票中重复相同哈希和包含不同哈希的发票。因此,将相同值合并为单个值将错失规则要求读者拒绝的发票。
实施时间线同样重要。Lightning节点软件lnd在9月23日合并了重复哈希拒绝规则,此修复已包含在可用的v0.20.5-beta和v0.21.4-beta版本中。
更广泛的支付秘密检查正通过另一个lnd提案进行,该提案截止于10月27日,计划将支付秘密及其他解码器检查进行加强,包括拒绝第二个支付秘密字段。提案作者还指出,一些被解码器接受的发票已经在支付处理后期面临检验,因此仅凭解码的成功并不能确保支付一定会通过。
对于支付运营商而言,记录的失败指向两个检查点:拒绝模糊的发票,并确保提款会计与节点使用相同的支付哈希。
了解最新动态,请关注加密货币资讯网,获取深入报道和即时更新。
common problems
BOLT11标准的主要变化是什么?
BOLT11标准的新规定要求支付请求必须有且仅有一个支付哈希字段和一个支付秘密字段,任何变更都将导致支付失败。
为何此更改如此重要?
这一更改旨在防止因不同组件对同一支付请求读取不同哈希而导致的攻击,确保付款交付的准确性。
如何避免支付失败?
支付运营商应确保拒绝模糊发票,并确认提款会计与节点所用的支付哈希一致,从而减少支付失败的风险。
何时实施了这项规范?
这一规范更新于2023年10月19日实施,所有相关修复在当日或之前的版本中生效。









