v31.1rc1现已发布 - 本周Bitcoin Core第49期

INSIDER 发布于 2026-07-04 阅读 128

本周Bitcoin Core进展:v31.1rc1发布,新增exportwatchonlywallet RPC简化离线钱包设置,添加IPC fuzz测试提升代码健壮性,IRC会议讨论fuzzing、kernel、benchmarking等工作组更新。

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

上周《比特币要闻》

v31.1rc1 现已可用 - 本周 Bitcoin Core 动态 #49

版本 31.1 rc1 发布...

大家好 👋 朋友们,我是 kevkevin。我是一名开源开发者,也是 Insider Edition 的记者。上周,我审阅了 Bitcoin Core 仓库中的几个拉取请求。

本周,Bitcoin Core 推出了几个新的候选发布版本。大家可以去测试一下!

已合并的拉取请求
每周,都有若干变更正式添加到 Bitcoin Core。本周,多个更改被合并。以下是我本周觉得有趣的一些。

在这个拉取请求中,Ava Chow 添加了一个新的 RPC 命令 exportwatchonlywallet。这有助于希望进行气隙设置的用户。该 RPC 将创建一个包含公开描述符的钱包文件,以避免向用户暴露具体的内部细节。

在此之前,创建对应的在线只读钱包是一个手动且容易出错的过程,而现在通过 exportwatchonlywallet RPC 变得更加简化。

本周添加了更多模糊测试,Enoch Azariah 的拉取请求已合并,增加了对 IPC 的测试覆盖。该模糊测试添加了一个 IPC 模糊测试目标,通过进程内双向管道和反射测试接口来锻炼 Cap'n Proto/libmultiprocess 序列化桥接。

一如既往,Bitcoin Core 项目欢迎更多的测试和模糊测试,说不定这个模糊测试将来会发现一个 bug。

总有一些变更在实时更新和审查中。以下是一些值得注意的、仍在等待审查的拉取请求。

重构: 添加 util::Result 失败类型及合并结果值的能力ryanofsky

为 `util::Result` 添加支持,以返回更多错误信息,并在 [LoadChainstate 方法](https://github.com/bitcoin/bitcoin/pull/25665/commits/753b8678ac98c8753f9db17cc92d56d4d58d9e7e) 中作为初步应用使用。后续的拉取请求 [#25722](https://github.com/bitcoin/bitcoin/pull/25722) 和 [#29700](https://github.com/bitcoin/bitcoin/pull/29700) 更广泛地使用它,以从钱包和内核函数中返回错误和警告。

此变更为结果类增加了两个主要功能:

- 为了更好的错误处理,增加了在失败时返回值的能力,而不仅仅是在成功时返回值。这是结果类缺失的一个关键特性,使得它对像 `LoadChainstate()` 这样产生不同错误且需要不同处理的函数来说并不适用 [^1]。

- 为了更好的错误报告,增加了返回警告消息和多个错误的能力,而不仅仅是单个错误字符串。这为函数提供了一种以标准方式报告错误和警告的方法,并简化了接口。

IRC 会议记录
每周四都会举行 IRC 会议。以下是该会议的一些简短记录。
--- 议题 1 ---
stickies-v: #topic 模糊测试工作组更新 (dergoegge, marcofleon)
marcofleon: 没有更新
marcofleon: 开玩笑的
sedited: :D
marcofleon: 关于仓库内的内容,我们最近合并了三个与 LevelDB 和我们的 CDBWrapper 相关的测试框架,即 #34866 和 #34887。这些应该有助于为 #35295(以前称为 #31132)中的更改增加信心。
marcofleon: 我认为 #35118 基本可以了,所以现在我们有了 IPC 模糊测试。然后关于模糊测试的拉取请求,我接下来可能会关注 #34651 和 #34895,如果有人感兴趣的话。
marcofleon: dergoegge 写了这篇关于 Bedrock 和虚拟机管理器中确定性的优秀博客文章:https://brink.dev/blog/2026/06/25/bedrock-deterministic-hypervisor/。使用 Bedrock 进行模糊测试在我们的新 HTTP 服务器中发现了一个小 bug,非常酷。
marcofleon: nkaretnikov 正在帮助 Bedrock,特别是 https://github.com/oss-garage/bedrock/issues/20。很好,谢谢。
marcofleon: 还有 eugenesiegel 也在 Bedrock 中有所动作,参见 https://github.com/oss-garage/bedrock/pull/54。
marcofleon: 如果他们愿意,可以进一步详细说明这些工作。我想目前就这些了。从现在开始我可以做半定期的更新。
dergoegge: 开搞
andrewtoth: 太棒了!
eugenesiegel: 股票涨了
stickies-v: 大更新,已送达
brunoerg: 很好!
dzxzg: 牛逼
l0rinc: 嗨

--- 议题 2 ---
stickies-v: #topic 内核工作组更新 (sedited)
sedited: #32427 进行了大量审查,现在它支持外部读取器。
cfields: 非常酷,模糊测试人员干得好 :)
sedited: 在 #35569 中有更多讨论。我想鼓励审阅者继续评论,因为这可能会为后续一系列工作指明方向。
sedited: 我打开了 #35641,用于引入回调Hook,以在脚本验证期间暴露脚本解释器状态的踪迹。这对调试脚本和测试都很有用。这个功能开发起来很有趣,因为它允许可视化脚本解释器的操作。
marcofleon: 开搞
sedited: 在项目板上还有一些拉取请求在等待一两个 ACK 才能合并:https://github.com/orgs/bitcoin/projects/3
yancy: 嗨
sedited: 就这些

--- 议题 3 ---
stickies-v: #topic 基准测试工作组更新 (l0rinc, andrewtoth)
l0rinc: 推送了 #35634,以向后兼容的方式在每个 txospenderindex 条目中节省一个字节。这个技巧也应用到了新的 txindex 格式中。
l0rinc: 即 #35531——我认为我们应该把在这里学到的知识应用到新索引上。
l0rinc: 我就说这些。
andrewtoth: 感谢大家审阅 #35295。我也没别的了。
stickies-v: 我们已经有一段时间没有收到静默支付工作组的更新了,所以我暂时将其移至存档。如果有人想重新启动,请 ping 我,我会将其重新加入轮换。
stickies-v: johnny9dev 在会议前写了 QML GUI 工作组的更新,你可以在这里阅读:https://www.erisian.com.au/bitcoin-core-dev/log-2026-07-02.html#l-218

--- 议题 4 ---
stickies-v: #topic QA 工作组更新 (brunoerg)
brunoerg: 大家好,关于拉取请求的变异测试,我正在尝试一种新的设置,使用 LLM 基于变异分析结果生成人类可读的报告。第一个实验是在 Erlay 实现的 PR 上——你可以在这里看到报告:https://github.com/bitcoin/bitcoin/pull/35591#pullrequestreview-4593554791。
brunoerg: 欢迎反馈,就这些。
stickies-v: 看起来相当冗长,也许使用超链接或者放在 details 里会更有用?
brunoerg: 是的,我打算使用超链接。
stickies-v: 如果所有建议都很重要那就没问题,但我发现 LLM 往往不擅长评估优先级/影响等,所以我通常对这些评估不太感兴趣。
dergoegge: 如果它们不仅仅依赖自己的推理,而是基于结果支持(例如变异测试),那么它们可能会更好。
stickies-v: 还有其他要讨论的吗?
sedited: 忘了提,我们现在有一个 CI 作业(在 #31425 中引入),用于跟踪脚本验证代码是否可以在裸机 riscv 目标上编译和链接。这之前已经发现过错误,也是朝着为该目标提供共识库迈出的第一步,因为它可以防止未来的可移植性回归。
brunoerg: 是的,为了更简洁,我打算不报告“当前测试做得好的地方”,而是专注于可以/应该改进的地方。
stickies-v: 好的,今天似乎就这些了。下周见,各位。

在此阅读 完整会议记录


版本发布

感谢阅读。请务必在下周继续关注 Bitcoin Core 的最新动态!

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

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

相关文章

0 条评论