本周的周报披露了一项负责任公开的漏洞:远程对等节点可利用它使 Core Lightning 节点崩溃;此外还链接到近期 Bitcoin Core 开发者会议的文字记录。此外还包括我们的常规栏目:新版本和候选版本的公告,以及流行比特币基础设施软件的重大变更介绍。

新闻

  • Core Lightning 断言型 DoS 漏洞披露: Chandra Pratap 在 Delving Bitcoin 上发帖,披露了一项在 Summer of Bitcoin 2025 实习期间发现的拒绝服务漏洞。该漏洞影响接受入站通道的 Core Lightning 节点。

    在通道开启握手期间,远程对等节点会发送一条消息,其中包含拟议注资交易的 txid。Core Lightning 会执行一个断言检查,要求该 txid 非零。当某个对等节点发送一个全零 txid 时,断言会失败并导致节点崩溃。由于任何对等节点都可以发起通道开启握手并发送这一恶意消息,这就允许远程攻击者可靠地使任何接受入站通道的脆弱节点崩溃。

    该漏洞通过模糊测试发现,并已进行负责任披露。在报告时,Rusty Russell 恰好正在独立处理另一个崩溃 bug,而他的修复也顺带解决了这个漏洞。该漏洞已在 Core Lightning 26.04 中修复。

  • Bitcoin Core 开发者会议文字记录: 多位 Bitcoin Core 开发者在 5 月线下会面,会议的文字记录现已发布。议题包括 SwiftSync后族群交易池Erlay 重新设计交易包中继静默支付TCP hole punching(见周报 #406)、私有广播现代密码学库变异测试等。

版本发布和候选版本

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

重大代码和文档变更

以下是来自 Bitcoin CoreCore LightningEclairLDKLNDlibsecp256k1硬件钱包接口 (HWI)Rust BitcoinBTCPay ServerBDK比特币改进提案 (BIPs)Lightning BOLTsLightning BLIPsBitcoin InquisitionBINANAs 的近期重大变更。

  • Bitcoin Core #33966 重构了 Mining IPC 接口对挖矿区块模板选项的处理方式(见周报 #310#323)。此前,启动时的挖矿选项(如 blockmaxweightblockreservedweightblockmintxfee)与 IPC 挖矿客户端在运行时传入的选项是分开处理的。现在,这些选项会被解析到一个共享的 BlockCreateOptions 对象中,并在创建或更新区块模板时进行合并。对于无效组合——例如保留区块权重大于最大区块权重——现在会直接拒绝,而不是悄悄调整到合法范围。

  • Bitcoin Core #34917 停止在钱包交易 RPC listtransactionslistsinceblockgettransaction 中返回已弃用的 bip125-replaceable 字段,不过用户仍可通过 -deprecatedrpc=bip125 选项请求该字段。该 PR 还弃用了 -walletrbf 启动选项;现在它会发出警告,并计划在下一个版本中移除。关于此前移除与 RBF 相关字段的工作,见周报 #403

  • Bitcoin Core #35017 更新了交易包提交流程,以防止在发生意外验证失败后,后续交易仍留在交易池中。在交易包提交期间,交易会按顺序处理,因此后面的交易可以花费先前已加入交易池的交易。此前,如果某笔交易在较晚阶段的验证检查(例如共识脚本检查)中失败,Bitcoin Core 只会移除该笔交易。现在,它还会移除该交易包中所有后续交易,从而防止父交易被移除后,其子交易仍留在交易池中。

  • BIPs #1944 添加了 BIP449,这是一个关于 OP_TWEAKADD 的软分叉草案提案。OP_TWEAKADD 是一个 tapscript 操作码,用于计算 tweak 后的 x-only 公钥(见周报 #370)。给定一个 32 字节的 x-only 公钥和一个 32 字节的标量 tweak,该操作码会把 P + tG 对应的 x-only 公钥压入栈中。这将允许脚本直接验证密钥 tweak 关系,从而实现诸如 tweak-reveal 脚本、签名顺序证明以及签名委托协议等构造。

  • BIPs #2108 添加了 BIP450,即 Formosa,这是一份将与 BIP39 兼容的钱包熵编码为故事式助记词短语的草案规范。Formosa 不再使用随机的 BIP39 单词,而是使用按主题定义的词表来编码熵,从而生成简短、结构化的句子。这些“故事”可以被解码回原始熵,并在派生种子之前转换为标准 BIP39 助记词,因此保持了与 BIP39 的兼容性。

  • Eclair #3192零手续费承诺(0FC)通道增加了实验性支持,跟进了周报 #404中介绍的规范。该特性默认关闭,可通过 eclair.features.zero_fee_commitments = optional 启用。

  • LDK #4584payment_metadata 映射添加到 BOLT12 的盲化消息和支付路径上下文中。这为通过盲化路径携带接收方元数据并在收到支付时恢复它们提供了基础设施,类似于 BOLT11payment_metadata。目前仍不支持构建带有 metadata 的要约。这些 metadata 被存储为从数值键到字节数组的映射,从而允许将多个彼此独立的数据项附加到同一笔支付上。

  • LDK #4628 开始在创建入站支付时加密 BOLT11 payment_metadata,建立在周报 #405介绍的 metadata 承诺机制之上。在验证支付之后,LDK 会解密 metadata,使应用能够在不将其暴露给付款人、也无需自行实现加密的情况下访问发票元数据。

  • LND #10552 为基于 Neutrino 的 LND 节点增加了快速初始同步功能:在恢复正常 P2P 同步之前,允许它们先从本地文件或 HTTP(S) 来源导入预构建的比特币区块头和致密区块过滤器。新的 neutrino.blockheaderssourceneutrino.filterheaderssource 选项必须一同配置。导入的区块头会在本地验证,之后 Neutrino 再从网络对等节点获取导入链尖之后的区块头。

  • LND #10820 防止 LND 在开启公开通道时隐式选择简单 taproot 通道,因为 taproot 通道公告 目前尚未得到支持。此前,如果双方对等节点都广告支持该通道类型,LND 可能会选中它,随后又拒绝开启。现在,简单 taproot 通道必须被显式请求;而隐式协商仍可选择 legacy、static remote key 或锚点通道类型。该 PR 还更新了 lncli openchannel --channel_type=taproot,使其选择生产用的简单 taproot 通道类型。