本周Bitcoin Core开发周报:因CoreDev线下会议,IRC会议暂停一周。合并了11个PR,包括实现BIP 370 PSBTv2(支持交易输入输出动态修改)、新增compact block模糊测试harness、通过libbitcoinkernel C API暴露CheckTransaction共识验证函数。此外,一个在审查的PR尝试并行化区块输入获取以提升性能。
kevkevin • 2026年5月8日
大家好👋,我是 kevkevin。我是一名开源开发者,也是 Insider Edition 的记者。上周,我审查了 Bitcoin Core 代码库中的几个 pull request。
Bitcoin Core 开发者们本周缺席了每周的 IRC 会议,因为他们正在 CoreDev 进行线下聚会。这是一个每半年举办一次的活动,Bitcoin Core 贡献者们聚在一起讨论想法。每周的 IRC 会议将于下周四恢复。
每周,会有若干更改被正式添加到 Bitcoin Core 中。本周合并了 11 个更改。以下是我认为本周有趣的几个。
Ava Chow 的 pull request,即实现 BIP 370(也就是 PSBTv2),本周被合并了。这意味着什么呢?
在 v1 版本中处理 PSBT 的问题是,已签名的交易无法被更改。这意味着无法添加输入和输出。PSBTv2 解决了这个问题。PSBTv2 还有其他好处,比如现在大部分信息都被放置在输入映射和输出映射中的单一位置。
要完全理解它,我建议你阅读完整规范。
你熟悉 Bitcoin Core 中的模糊测试吗?那你知道 compact blocks 是如何工作的吗?好吧,你很幸运,因为这个更改同时涉及这两者。
本周,Crypt-iQ 的 PR 被合并了,该 PR 在 Bitcoin Core 中添加了一个新的模糊测试工具 cmpctblock。类似于 process_message,它会生成有效和无效的区块,利用内存池中的交易重建区块等。
这是让 Bitcoin Core 获得更多模糊测试覆盖率的又一步,谁知道呢,也许这会在 Core 中发现 compact blocks 工作方式中的漏洞。
此更改通过 libbitcoinkernel C API 暴露了共识级别的函数 CheckTransaction,并添加了一个对应的 C++ 包装器。在此更改之前,无法对交易结构进行无上下文的验证检查,而这次更改提供了这种能力。
这引入了一个新的 API btck_check_transaction,在 C++ 包装器中它看起来像这样:btck::CheckTransaction。
Bitcoin 内核项目已经进行了一段时间,这只是添加到其中的又一个 API。这带来了更多的功能和测试,这总是受欢迎的。
总有一些更改在实时更新和审查中。以下是一些仍在等待审查的值得注意的 PR。
问题 目前,在 `ConnectBlock` 中获取输入时,每个输入都是从缓存中顺序获取的。缓存未命中需要访问磁盘数据库来获取 outpoint 并将其插入缓存。由于 `ConnectBlock` 期间数据库是只读的,我们可以在连接的同时,在多个线程上并行获取一个区块的所有输入。 解决方案 我们在 CoinsViewOverlay 中添加了一个线程池来并行获取区块输入。在进入 `ConnectBlock` 之前,区块被传递给 `CoinsViewOverlay` 视图,这会启动工作线程开始获取输入。缓存通过重写的 `FetchCoinFromBase` 方法返回已获取的 coins(一旦可用)。如果尚不可用,主线程也会在等待时获取 coins。
每周四有一次 IRC 会议。以下是该会议的一些简短记录。
本周没有,因为 coredev 正在进行,因此 IRC 会议推迟到了下周。
感谢阅读。请务必在下周再次关注 Bitcoin Core 的最新动态!
如果有任何评论、建议或错误,请随时联系或留言
- 原文链接: insider.btcpp.dev/p/core...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!
作者暂未设置收款二维码