本周Bitcoin Core动态

INSIDER 发布于 2026-01-23 阅读 47

本文是Bitcoin Core的最新开发周报,由贡献者kevkevin撰写。内容涵盖本周合并的26个PR,重点包括修复listdescriptors RPC在描述符缺少私钥时的返回问题、优化ComputeMerkleRoot内存分配(峰值分配减少50%)、新增util::Expected方法。IRC会议讨论了分叉工作组进展、集群内存池优化、UTXO处理清理、基准测试修复(发现LSHIFT/RSHIFT缺失和SUBSTR为空的问题)及并行交易输入验证(IBD提速30%)。无新版本发布。

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

上周比特币动态

本周比特币核心动态

Bitcoin Core 贡献者 kevkevin 带来的一些最新更新……

大家好 👋,我是 kevkevin。我是一名开源开发者,也是 Insider Edition 的记者。上周,我审阅了 Bitcoin Core 仓库中的多个拉取请求。以下是我认为值得关注的。

已合并的 PR
每周都有若干变更正式合并到 Bitcoin Core 中。本周共有 26 项变更被合并。以下是我认为本周比较有意思的一些。

当前,listdescriptors [private=true] 在非只读钱包中,如果任意描述符缺失私钥(例如tr() multi() 等),将会失败。此 PR 更改了这一行为,同时确保listdescriptors [private=true] 在完全没有私钥时仍会失败。关闭 #32078

  • 这一变更可能超出了我的理解范围,但快速浏览来看,似乎 listdescriptors 在缺失任何密钥时会无法返回私钥信息。这仍然可能有用,因为用户在使用 tr()multi() 或其他时可能希望获取部分密钥。

如果所有密钥都缺失,此操作仍会失败。

l0rinc 再次对 Bitcoin Core 进行了优化,此次通过优化内存使用方式,使 ComputeMerkleRoot 更加高效。

实现方式是通过预分配向量容量以应对奇数数量产生的重复。仅在区块交易数量为奇数时发生,这大约占已创建区块的一半。

l0rinc 进行的内存分析显示峰值分配减少了 50%。这对于所有使用奇数交易数量构建区块的比特币节点运行者来说是个好消息。

Maflcko 之前提过一个 PR,添加了 util::Expected。这是对该变更的扩展,因为审阅者要求添加额外的成员函数。从我在这个 PR 中看到的情况来看,它只是添加了这些新函数,但目前尚未使用。

始终有变更在实时更新和审阅中。以下是一些仍开放并寻求审阅的 notable PR。

bitcoin-cli uptime 源自系统时钟时间,因此在 bitcoind 启动后系统时钟被校正时(例如在无 RTC 的系统上同步 NTP),可能发生大幅跳变。

这打破了 uptime 反映进程运行时间这一预期。

  • 为了解决这个问题,他建议

单调时钟 计算 uptime,使其不受系统时钟跳变影响,并将该单调 uptime 用于 RPC。

GUI 启动时间由系统时钟时间减去单调 uptime 得出,因此在时钟校正后仍保持合理。


IRC 会议纪要
每周四举行 IRC 会议。以下是本次会议的一些简要记录。
16:01:57 <fjahr> #主题 模糊测试工作组更新 (dergoegge)
16:02:03 <dergoegge> 我这边没什么更新
16:02:18 <fjahr> #主题 内核工作组更新 (sedited)
16:02:26 <sedited> stickies-v 提交了一个 PR,用于拆分较高级和较低级的日志记录功能,并在内核 API 中暴露更丰富的日志信息:https://github.com/bitcoin/bitcoin/pull/34374
16:04:10 <sedited> alexanderwiederin 展示了一项工作,使用写时复制 CChain 替换方案,以消除在多个小型 RPC 调用(例如 getblockcount)中锁定 cs_main 的需要。仍在进行中,可在此处查看:https://github.com/alexanderwiederin/bitcoin/commits/chain-concurrency/
16:05:29 <sedited> 我还重新启用了关于抽象区块存储的分支,但近期内不会提交 PR。
16:05:48 <fjahr> #主题 基准测试工作组更新 (l0rinc, andrewtoth)
16:05:50 <l0rinc> 开始测量不同节点基准测试套件中的 varop 预算,用于“伟大脚本恢复”提案。
16:06:00 <l0rinc> 我们在当前基准测试中发现了一些错误(例如 LSHIFT/RSHIFT 等操作缺失,以及 SUBSTR 始终为空),因此正在重新测量所有内容。
16:06:14 <l0rinc> 并开启了一个 Coins Cache Cleanup 跟踪问题,帮助审阅者理清 UTXO 处理 PR #34280 的结构。
16:06:15 <corebot`> https://github.com/bitcoin/bitcoin/issues/34280 | Coins Cache Cleanup 检查列表 · Issue #34280 · bitcoin/bitcoin · GitHub
16:06:30 <l0rinc> 我们终于获得了 https://github.com/bitcoin/bitcoin/pull/31132#issuecomment-3767758819 的原生 Windows 基准测试结果:在 GCC 上同样重现了约 30% 的速度提升。
16:06:40 <l0rinc> andrewtoth?
16:07:08 <andrewtoth> 我这边没有更新。欢迎更多对 #31132 的审阅。看起来它在每个平台上都更快。
16:07:12 <corebot`> https://github.com/bitcoin/bitcoin/issues/31132 | validation:在并行线程上获取区块输入,使 IBD 速度提升 3 倍 by andrewtoth · Pull Request #31132 · bitcoin/bitcoin · GitHub
16:07:24 <fjahr> #主题 集群内存池工作组更新 (sdaftuar, sipa)
16:08:07 <sipa> 优先级仍然是 #34257,我欢迎更多针对概念的意见,但我也认为它已准备好进行审阅。
16:08:09 <corebot`> https://github.com/bitcoin/bitcoin/issues/34257 | txgraph:由 sipa 确定的确定性最优交易顺序 · Pull Request #34257 · bitcoin/bitcoin · GitHub
16:08:21 <sipa> 我的部分就到这里。
16:08:51 <fjahr> #主题 网络分裂工作组更新 (cfields)
16:09:06 <cfields> 本周没有更新。
16:10:16 <fjahr> 还有其他需要讨论的吗?
16:11:11 <abubakarsadiq> 我做了一些涉及集群内存池的工作,主要是修改 GetMainStagingDiagram 以填充 refs https://github.com/bitcoin/bitcoin/compare/master...ismaelsadeeq:bitcoin:01-2026-detect-fee-increase-cleanup 这对于在内存池更新后计算区块 ID 很有用。我计划在包感知费用估算器和区块模板缓存中使用区块 ID,我有一个使用这些 refs 的 WIP 分支。我不确定是应该单独开启这个分支,还是将其与使用它的变更合并,cc sipa
16:12:35 <abubakarsadiq> 我认为这个分支已经准备好了,我已经用 fuzz 测试了一天。但另一个分支尚未准备就绪。

完整 IRC 会议记录请阅读 会议日志


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

感谢阅读。下周请继续关注 Bitcoin Core 的更新动态!

如有任何意见、建议或错误,欢迎随时联系或评论


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

相关文章

0 条评论