本周的新闻部分总结了一段关于故障可归因机制对闪电网络隐私性的可能影响的讨论。此外是我们的常规栏目:来自 Bitcoin Stack Exchange 网站的精选问答、软件的新版本和候选版本发行公告,还有热门的比特币基础设施软件的近期变更的讲解。

新闻

  • 故障归因机制会削弱闪电网络的隐私性吗?Carla Kirk-Cohen 在 Delving Bitcoin 论坛发布了一份分析,讨论了如果闪电网络采用了故障归因机制(attributable failures)(尤其是告知发送者转发支付的每一跳花费了多少时间),对发送者和接收者的隐私性可能有什么样的影响。她引用了多份论文,介绍了两种去匿名化攻击:

    • 攻击者操作一个或多个转发节点,使用时机数据来确定一笔支付(HTLC)使用了多少跳;再结合对公开网络的拓扑的知识,就可以缩小可能的接收者的范围。

    • 攻击者使用一个 IP 网络流量转发器(自治系统,autonomous system)从而被动地监控流量,然后结合对节点之间 IP 网络时延知识(比如说它们的 ping 时间)以及对闪电网络公开拓扑(以及其它特征)的知识。

    然后,她介绍了可能的解决方案,包括:

    • 鼓励接收者以随机的短时间延迟来接受一个 HTLC,从而防止尝试定位接收者节点的时机攻击尝试。

    • 鼓励发送者以随机的短时间延迟来推迟重新发送失败的交易(或者 “多路径支付(MPP)” 的碎片)、并使用替代性路径,以防止尝试定位发送者节点的时机攻击和故障攻击。

    • 增加 MPP 中的支付碎片数量,让花费数额的猜测变得更困难。

    • 允许发送者选择性让自己的支付转发慢一些,如之前的提议(详见周报 #208)。这可以跟 HTLC 批处理相结合,后者在 LND 中已经实现了(虽然加入随机的时延依然能增强隐私性)。

    • 降低故障归因中的时间戳的精度,以避免惩罚添加了随机短时延的转发节点。

    来自多位参与者的讨论更细致地评估了担忧事项和作者所提议的解决方案,还考虑了其它可能的攻击和缓解措施。

来自 Bitcoin Stack Exchange 的精选问答

Bitcoin Stack Exchange 是 Optech 的贡献者们有困惑时寻找答案的首选之地,也是他们有闲暇时会帮助好奇和困惑用户的地方。在这个月度栏目中,我们会列出自上次出刊以来出现的一些高票的问题和回答。

软件的新版本和候选版本

热门的比特币基础设施项目的新版本和候选版本。请考虑升级到新版本或帮助测试候选版本。

  • Core Lightning 25.05rc1 是一个这个流行的闪电节点实现的下一个主要版本的候选发行。

  • LDK 0.1.30.1.4 是这个用于构建闪电网络赋能应用的热门库的新版本。0.1.3 版本的发布时间是上个月,但本周才在 GitHub 上标记发行,包含了漏洞修复。0.1.4 版本是最新版本,“修复了一个在极其罕见的情形中会导致资金被盗的漏洞”。两个版本都包含了其它 bug 修复。

显著的代码和说明书变更

本周出现重大变更的有:Bitcoin CoreCore LightningEclairLDKLNDlibsecp256k1Hardware Wallet Interface (HWI)Rust BitcoinBTCPay ServerBDKBitcoin Improvement Proposals (BIPs)Lightning BOLTsLightning BLIPsBitcoin InquisitionBINANAs

  • BINANAsPSBTs 添加了一种签名哈希模式(sighash)类型字段,用在 sighash 不是 SIGHASH_DEFAULTSIGHASH_ALL 的时候。MuSig2 要求每个签名人都使用相同的签名哈希模式,所以这个字段必须出现在 PSBT 中。此外,descriptorprocesspsbt RPC 命令更新成使用 SignPSBTInput 函数,这保证了 PSBT 的签名哈希类型与在命令行中提供的一致(如果有的话)。

  • Eclair #3065 添加了对故障归因机制(详见周报 #224)的支持,如 BOLTs #1044 所述。在默认设置中这是禁用的,因为其规范尚未敲定,但可以通过设定 eclair.features.option_attributable_failure = optional 来启用。与 LDK 的交叉兼容性已经测试成功;关于 LDK 的实现以及这个协议如何工作,详见周报 #349

  • LDK #3796 收紧了通道余额检查,从而让注资者拥有充分的资金来覆盖承诺交易的手续费以及两个价值 330 聪的锚点输出,以及通道保证金。以前,注资者可以动用通道保证金来生成两个锚点输出。

  • BIPs #1760 合并了 BIP53,该 BIP 详述了一种共识软分叉规则,会禁用 64 字节长的交易(以不含见证数据的形态度量),以禁止一种针对 SPV 客户端的可利用的默克尔树漏洞。这一 PR 提出了一种跟“共识清理” 软分叉所包含的一种修复措施类似的做法。

  • BIPs #1850 逆转了早前对 BIP48 的一项更新,该更新将 “脚本类型” 的数值 “3” 保留给 taproot(P2TR)的变种(详见周报 #353)。这是因为 tapscript 没有 OP_CHECKMULTISIG 操作码,所以 BIP67 中的参考输出脚本(也正是 BIP48 所依赖的)并不能用 P2TR 表达出来。这一 PR 也将 BIP48 的状态标记为 Final(定稿),反映出它的目的与引入它的时候保持不变 —— 定义 m/48’ HD 钱包派生路径的行业用法,而不是规定新的行为。

  • BIPs #1793 合并了 BIP443,该 BIP 提议了 OP_CHECKCONTRACTVERIFY(OP_CCV)操作码,以允许检查一个公钥(不论来自输出还是输入)承诺了一段任意的数据。回顾周报 #348 以了解这种限制条款 提议的更多信息。