下周核心开发者会议 - 本周比特币核心 #41

INSIDER 发布于 2026-05-01 阅读 59

本周比特币核心开发周报第41期,介绍了下周核心开发者会议安排、11个合并的PR(包括类型修改、签名操作重构、崩溃修复等)以及当前待审查的PR(如并行化区块输入获取以加速IBD)。同时记录了本周IRC会议中关于模糊测试、内核、基准测试、QML GUI、libevent移除等工作组的进展。

bitcoin++ 是一个国际性的比特币开发者会议系列。“Insider Edition”是我们的新闻编辑室,报道 bitcoin++ 领域内外正在发生的事情。

上周比特币动态

下周核心开发者会议 - 本周比特币核心 #41

本周比特币核心内部...

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

下周将没有 IRC 会议,因为 Bitcoin Core 开发者们将在下周开会。他们会在哪里开会?除了他们没人知道。

已合并的 PR
每周都会有多个变更正式添加到 Bitcoin Core 中。本周合并了11个变更。以下是我本周发现的一些有趣的变更。
  • util: 从 MiB 和 GiB 操作符返回 uint64_tmaflcko
    Marco Falke 开启了此 PR,试图将 _MiB_GiB 使用的 C++ 类型从 size_t 修改为 uint64_t。Falke 提到了几个原因:目前使用 size_t 无法表示更大的数值,但如果改用 uint64_t,则可以。

还有其他原因,例如没有必要使用 size_t,而且使用 size_t 会鼓励在其他地方也使用它,这可能导致未来出现 bug 和 CVE。

Provoost 提到这样做的动机是,未来可能需要添加另一个参数,与其造成大量代码变动,不如将其添加到这个结构体中,这样会更清晰,也少了很多麻烦。

在此 PR 中,他修复了创建新钱包和加载现有钱包两种情况下的问题。

变更一直在实时更新和审查中。以下是一些仍在等待审查的值得关注的 PR。
此 PR 在区块连接期间并行获取区块的所有输入 prevouts,在某些场景下实现了超过 3 倍的 IBD 性能提升[^1][^2][^3][^4][^5]。

### 问题

目前,在 `ConnectBlock` 中获取输入时,每个输入都从缓存中顺序获取。缓存未命中需要一次到磁盘数据库的往返来获取 outpoint 并将其插入缓存。由于在 `ConnectBlock` 期间数据库是只读的,我们可以在连接区块的同时,在多个线程上并行获取一个区块的所有输入。

### 解决方案

我们向 CoinsViewOverlay 添加了一个线程池来并行获取区块输入。在进入 `ConnectBlock` 之前,区块被传递给 `CoinsViewOverlay` 视图,该视图启动工作线程开始获取输入。缓存通过重写的 `FetchCoinFromBase` 方法在可用时返回已获取的 Coin。如果尚未可用,主线程也会在等待时获取 Coin。

IRC 会议记录
每周四都会举行一次 IRC 会议。以下是该会议的一些简短记录。
abubakarsadiq: #topic 模糊测试工作组更新 (dergoegge)
dergoegge: 没有更新
abubakarsadiq: #topic 内核工作组更新 (sedited)
dergoegge: 在核心开发者会议上会展示一些内容
sedited: 我们正在将 rust-bitcoinkernel 从绑定生成器迁移到手写绑定。这减少了一些必要的依赖项。
sedited: 另外,欢迎审查项目面板上的开放 PR:https://github.com/orgs/bitcoin/projects/3/views/1
abubakarsadiq: dergoegge: 👍 期待。
sedited: 我就说这么多。
abubakarsadiq: #topic 基准测试工作组更新 (l0rinc, andrewtoth)
无
abubakarsadiq: #topic 基准测试工作组更新 (l0rinc, andrewtoth_)
andrewtoth_: 嗨
sedited: ^^
andrewtoth_: 从 l0rinc 那里得到了关于 https://github.com/bitcoin/bitcoin/pull/31132 的一些很好的审查意见。欢迎更多审查。我就说这么多。
abubakarsadiq: 很好
abubakarsadiq: #topic QML GUI 工作组更新 (johnny9dev)
johnny9dev: 我们有了新贡献者 pseudoramdom 的首批 PR:bitcoin-core/gui-qml#561, bitcoin-core/gui-qml#556, bitcoin-core/gui-qml#554
johnny9dev: 我对活动页面、区块时钟和 PSBT 支持提交了一些改进 PR:bitcoin-core/gui-qml#559, bitcoin-core/gui-qml#558, bitcoin-core/gui-qml#557
johnny9dev: epicleafies 现在有一个实现功能对等的接收功能 PR:bitcoin-core/gui-qml#553,并且正在处理其他剩余的对等功能。
johnny9dev: 我目前专注于一些规划和文档,以便在核心开发者会议上分享
abubakarsadiq: johnny9dev: 是否更容易在面板上跟踪这些?
abubakarsadiq: 类似于 https://github.com/orgs/bitcoin/projects/3/views/1
johnny9dev: 这是个有趣的想法。我会考虑一下。
johnny9dev: 但这正是我目前试图解决的问题
johnny9dev: 因为我希望在会议上分享我们目前的状态和计划
abubakarsadiq: 是的,PR 很多,所以你可以用面板加上更新摘要来引用,有些人也使用跟踪问题来做这个
johnny9dev: 好的,谢谢
johnny9dev: epicleafies: 有什么要补充的吗?
abubakarsadiq: #topic 移除 Libevent (pinheadmz, fjahr)
epicleafies: 没有太多别的,但我还创建了一个 PR 来修复 Gmock 的一些问题
pinheadmz: 本周 #32061 取得了很大进展。在预重构提交合并后,重新基于 master 分支。已回应 vasild、janb84、hodlinator 和 b-l-u-e 的反馈。Claude 发现了一些崩溃错误和 HTTP 违规问题,这些已被修复。我还让 Claude 添加了功能测试,覆盖最常见和知名的 HTTP 漏洞以及格式错误的请求。Libevent 实际上未能通过其中一项测试,但并非以危险的方式。那个 PR
pinheadmz: 今天早上刚通过(Windows)CI,因此我将其关闭(有 400 多条评论)并开启了一个新的 PR:#35182 PR 已死!新 PR 万岁!
pinheadmz: 接下来是模糊测试和集成测试……尤其是现在 lnd 已经解决了他们与 v31 的 CI 不兼容问题
vasild: 嗨
pinheadmz: fjahr 没有新消息
pinheadmz: 就这样
abubakarsadiq: #topic 网络分裂工作组更新 (cfields)
yancy: 嗨
abubakarsadiq: 像往常一样,下周因为核心开发者会议,不会有 IRC 会议。
abubakarsadiq: 还有其他要讨论的吗?

发布版本
  • 本周无发布版本

感谢阅读。请务必在下周再次收听关于 Bitcoin Core 的最新消息!

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

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

相关文章

0 条评论