本周比特币核心动态

INSIDER 发布于 2026-01-09 阅读 38

本文是比特币核心(Bitcoin Core)的每周开发进展汇总,涵盖了合并的PR(如修复钱包迁移漏洞、警告不安全导入)、待审PR(如增强迁移鲁棒性)、IRC工作组更新(内核、基准测试、集群内存池、网络分离、模糊测试等)、维护者提名、费用估算改进以及新版本发布(v30.1和v30.2rc1)。文章以新闻简报形式呈现,适合关注比特币协议底层开发的读者。

bitcoin++ 是一个国际比特币开发者大会系列。“Insider Edition” 是我们的新闻编辑室,报道 bitcoin++ 宇宙内外的动态。

上周比特币动态

本周 Bitcoin Core 动态

Bitcoin Core 贡献者 kevkevin 带你了解一些最新更新...

大家好 👋,我是 kevkevin。我是 Insider Edition 的开源开发者和记者。上周,我审阅了 Bitcoin Core 仓库中的几个拉取请求。以下是我认为值得注意的内容。

已合并的 PR
每周都会有若干变更正式合并到 Bitcoin Core 中。本周有 16 个变更被合并。以下是我认为其中一些有趣的。

本周早些时候,有一条通知提醒不要在 v30.0 和 v30.1 版本上迁移任何 legacy(BDB)钱包。这是因为在迁移 Bitcoind 时,有极小的概率会删除节点上的所有钱包。

如果用户没有备份钱包,这将导致资金损失。

该 PR 修复了这个问题,并已回溯移植。发生此问题的原因是,原本修复其他问题的一个变更无意中导致了该问题。

这只是一个在使用了 miniscript older() 导入时的警告错误。因为它允许相对高度和时间锁,这些在 BIP 68 和 BIP 112 中没有共识意义。某些协议会使用它,但无意中使用时并不安全,因为 older(65536) 等同于 older(1)。这显然可能引发问题,因此通知用户,让他们知道正在使用可能无意中导致不期望行为的东西是合理的。

为什么你会希望一个本该返回布尔值的函数总是返回 true 呢?嗯,这正是这个变更的情况。如果从后端缓存调用,BatchWrite 总是返回 true。

所以 sedited 将其改为返回 void,从而实现了更多简化。比如简化了不再需要的错误处理代码。

正如标题所说,这是一个重构,所以它没有修改任何功能,而是让代码更清晰、更简单。

总有变更在实时更新和审阅中。以下是一些仍在开放并寻求审阅的值得关注的 PR。

该 PR 的目标是以可控的方式处理失败。这样过程可以自动恢复原始钱包,无需用户手动干预。

涵盖的情况包括:

  1. 在 DoMigration() 过程中:有些方法可能抛出异常并突然中止过程。现在,我们不再崩溃(GUI)或返回通用异常,而是妥善地捕获并返回错误。这让过程能够自动恢复原始钱包。

  2. 尝试在只读目录中迁移钱包会抛出文件系统异常并跳过清理。现在,过程将优雅地失败并给出清晰的错误消息,然后自动恢复原始钱包。

  3. MigrateToSQLite 过程中的任何失败都需要用户手动干预。现在,原始钱包数据库将保持不变,只有在 sqlite 数据库创建完全成功时才会更新。


IRC 会议纪要
每周四都会举行 IRC 会议。以下是该会议的一些简短笔记。
  • Kernel 工作组更新 (sedited)

    • sedited: 项目板上有一堆等待审阅的 PR:https://github.com/orgs/bitcoin/projects/3

      在实验写时复制数据结构方面取得了一些进展,janb84 一直在运行一些初步基准测试,以评估用这种结构替换当前 CChain 的效果。

  • Benchmarking 工作组更新 (l0rinc, andrewtoth)

    • l0rinc: # 33866 已合并,所以我们变基了相关的 PR:

      34132 - 额外的错误捕获器缓存层被内联为调用点的简单 try/catch

      34124 - CCoinsView 之前既是部分接口又是部分空实现——现将其拆分为纯接口和空实现。

      另外,一个 PR 从 # 33018 中分离出来:

      34207 - GetCoin() 是用于查询 UTXO 集合的接口,因此生产实现应仅返回未花费的币——调整了测试以使其更真实,并测试了实际可能发生的情况。

      现在还有一个 PR 用于 nanobench 的未计时设置阶段:# 34208

      两个 PR 从 # 31132 中分离出来,因为它们可以独立审阅和合并——我会让 andrewtoth 详细说明这些。

    • andrewtoth: 我们在具有网络连接存储的云环境中测量了 # 31132,其 reindex-chainstate 速度提升了 3 倍以上:https://github.com/bitcoin/bitcoin/pull/31132#issuecomment-3678847806

      在稳态下连接链尖区块时也更快。它已经过彻底模糊测试,我们从中分离出了另外两个 PR # 34164、# 34165,它们本身可能带来微小收益(并有助于使 # 31132 更容易审阅)。

      我们正在测量 Windows 环境,但结果有些不一致。

      欢迎审阅分离出的 PR 或主 PR。以上就是我要说的,谢谢。

  • Cluster Mempool 工作组更新 (sdaftuar, sipa)

    • sipa: 主要待审 PR 是 # 34023,它优化了集群线性化算法,该算法在 32545 中已被 SFL 替换。

      关于 # 33335 有一些正在进行的讨论,可能需要一些概念性输入。

      那个 PR 提出在排序等费率交易和区块时引入更多随机性,以修复一个隐私泄露问题(暴露交易接收顺序的信息)。

      但随机性也有缺点,如不可预测性、更差的区块传播能力以及监控网络行为的能力。

      所以我在考虑(并实现)一种替代方案,使排序变为确定性;PR 即将提交。

  • Net Split 工作组更新 (cfields)

    • cfields: 本周我花时间对网络代码中的一些假设(例如发送/接收缓冲区大小、corking 行为等)进行了性能分析和基准测试,以确保在 chacha20 加速后,网络拆分不会内嵌任何不良假设。幸运的是,情况相当平衡,所以我将其搁置,继续手动代码重构。目前还看不出什么。
  • Fuzzing 工作组更新 (dergoegge)

  • 维护者提名 (glozow)

    • glozow: 我提名 TheCharlatan(又名 sedited)担任维护者。他是一位可靠的审阅者,在代码库的关键领域有广泛的工作,仔细考虑我们交付给用户和开发者的内容,并且充分理解技术共识过程。

      我已经与他和其他维护者谈过,也希望你们其余人都认为他非常适合这个角色。请自由表达你们的担忧和/或支持。

    • 一堆 Ack

  • 费率估算改进

    • abubakarsadiq: 我提交了 # 34075,它试图修复古老的 # 27995 问题,采用一个基于 mempool 的费率估算器,该估算器仅降低区块政策估算器。

      通过实验,我观察到这种方法有 73% 的成功率,0% 的高估,以及 26% 的低估。我进行了一些重构以实现这些。详见 PR 描述。

      在这里提出请求,希望获取对方法和假设的反馈。

  • (ATT)ACKs

    • l0rinc: 我也想就另一个话题征求反馈,因为我们看到有虚假的 ACK 在传播——我们可以调整 DrahtBot 的 ACK 摘要,添加头像,也许对成员使用斜体,以避免冒充。另外,既然我们涉及这个,ryanofsky 建议我们为所有 ACK 添加链接,而不仅仅是最后一个。欢迎在 https://github.com/maflcko/DrahtBot/pull/72 提供你的反馈。

    • 一些关于如何缓解虚假 ACK 问题的讨论。

  • 完整讨论请查看 会议记录


发布版本

感谢阅读。请务必下周再来查看 Bitcoin Core 的最新动态!

如果有任何评论、建议或错误,请随时联系或评论


  • 原文链接: insider.btcpp.dev/p/this...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~

相关文章

0 条评论