市场快照 · ↗比特币价格$77,735全网算力936 EH/s挖矿难度127.45 T

矿池与结算

Bitcoin Core 合并 RPC 客户端超时与空响应修复

来源发布日期: 2026-10-02 · 编辑分析发布日期: 2026-10-03

master 分支现可区分 Content-Length: 0 与缺少该响应头,并为每次套接字等待重新应用 rpcclienttimeout;这是已合并源码,并非已发布二进制版本。

计算机终端,命令行管理背景图片。
示意性历史照片,并非新闻中所述的具体产品或设施。 已转换为WebP,必要时缩小尺寸。 Jacek Rużyczka · CC BY-SA 3.0

分析与实际影响

本节为本站分析及示例计算,与来源报道分开呈现。

两个命令行客户端修复已到达 master

Bitcoin Core 维护者于 10 月 2 日将拉取请求 36299 合并到主分支中。该更改包含两次提交,并修改了 bitcoin-cli 等工具使用的命令行 HTTP 客户端。 一次提交正确处理显式空响应正文,另一次提交恢复 rpcclienttimeout 的预期空闲时间行为。 合并是一个源代码开发事件。 这并不意味着每个安装的比特币核心节点或二进制包都已经包含修复程序。 运营方还应保存原始公告、时间戳、合同或遥测记录,并把已经完成的事实与预测、目标和管理层表述分开。只有把容量、功耗、可用率、成本和交付日期放在同一口径下持续核验,才能判断该信息对矿场和数据中心经营的实际影响。

联网服务器,背景图片;并非补丁中提及的 Bitcoin Core 系统。
示意性历史照片,并非新闻中所述的具体产品或设施。 已转换为WebP,必要时缩小尺寸。 VGrigas (WMF) · CC BY-SA 3.0

空的主体与没有长度的标头混淆

客户端以相同的方式表示丢失的 Content-Length 标头和存在值为零的标头。 因此,显式声明 Content-Length: 0 的响应可以在没有已知长度的情况下输入响应的路径,并继续读取,直到对等方关闭连接。 Bitcoin Core RPC 服务器会因密码错误等错误而关闭连接,这限制了常见情况下的实际效果,但客户端仍应认识到空主体是完整的。 运营方还应保存原始公告、时间戳、合同或遥测记录,并把已经完成的事实与预测、目标和管理层表述分开。只有把容量、功耗、可用率、成本和交付日期放在同一口径下持续核验,才能判断该信息对矿场和数据中心经营的实际影响。

该补丁明确保留了区别

该更改使用可选的长度值,因此不存在和存在但为零的状态是不同的。 当服务器发送Content-Length:0时,客户端可以不依赖于连接关闭来完成。 这是协议正确性修复,而不是对 RPC 方法、钱包规则或挖掘共识的更改。 对于自动化来说,最重要的是当代理、测试服务器或异常端点返回有效的空响应时,期望命令完成可预测。 运营方还应保存原始公告、时间戳、合同或遥测记录,并把已经完成的事实与预测、目标和管理层表述分开。只有把容量、功耗、可用率、成本和交付日期放在同一口径下持续核验,才能判断该信息对矿场和数据中心经营的实际影响。

暂停已成为全阶段倒计时

删除以前的 libevent 客户端实现后,rpcclienttimeout 不再仅测量没有网络进度的时间段。 即使新数据到达,倒计时也可以在整个读取阶段持续进行。 因此,尽管有主动传输,但足够大或缓慢的响应可能会被切断。 合并的补丁将超时应用于每个套接字等待,恢复了早期的解释:客户端在空闲等待后放弃,而接收到的数据允许另一个定时等待。 运营方还应保存原始公告、时间戳、合同或遥测记录,并把已经完成的事实与预测、目标和管理层表述分开。只有把容量、功耗、可用率、成本和交付日期放在同一口径下持续核验,才能判断该信息对矿场和数据中心经营的实际影响。

池通常会自动执行 RPC 密集型工作流程

矿池、独立网关和监控系统调用 Bitcoin Core 来获取区块模板、链状态、内存池信息和交易提交。 忽略进度的超时可能会在大型响应或慢速链接上产生错误故障,而模糊的空体处理可能会延迟错误报告。 合并的更改改进了这些工作流程的客户端。 它不会改变 getblocktemplate 输出、Stratum 行为、共享验证、工作量证明或网络难度算法。 运营方还应保存原始公告、时间戳、合同或遥测记录,并把已经完成的事实与预测、目标和管理层表述分开。只有把容量、功耗、可用率、成本和交付日期放在同一口径下持续核验,才能判断该信息对矿场和数据中心经营的实际影响。

两次提交之间的测试覆盖率不同

拉取请求添加了针对空响应行为的测试。 作者表示,未包括针对进度敏感超时的可靠自动化测试,因为尝试的方法不稳定或过于复杂。 审稿人认可了该方法并测试了空响应案例。 缺乏专门的超时回归测试并不会使代码未经审查,但操作员应该认识到补丁的每个部分可用的不同证据。 运营方还应保存原始公告、时间戳、合同或遥测记录,并把已经完成的事实与预测、目标和管理层表述分开。只有把容量、功耗、可用率、成本和交付日期放在同一口径下持续核验,才能判断该信息对矿场和数据中心经营的实际影响。

生产系统应该等待发布

master 上的合并提交是 dd809d2c08a32d0775ddde771380f6f8eeae3a61 。 使用官方比特币核心二进制文件的管理员将仅在包含它的发布分支和签名版本中收到更改。 建筑大师立即增加对不相关开发变化的接触。 更安全的过程是在暂存中重现受影响的行为,跟踪向后移植或发行说明,验证签名的工件,然后在实际响应大小和网络延迟下确认脚本。 运营方还应保存原始公告、时间戳、合同或遥测记录,并把已经完成的事实与预测、目标和管理层表述分开。只有把容量、功耗、可用率、成本和交付日期放在同一口径下持续核验,才能判断该信息对矿场和数据中心经营的实际影响。

哪些内容已确认,哪些内容未改变

已确认的事实包括 10 月 2 日的合并、两次提交、显式的空体区别和每个套接字等待超时行为。 此次变更并未宣布最终的比特币核心版本、安全紧急情况、共识分叉或挖矿性能改进。 它的操作价值更窄:针对空且进展缓慢的响应的更可靠的命令行 RPC 行为。 矿池工程师也应该检查他们自己的超时包装器,因为外部监管者仍然可以独立于 Bitcoin Core 的设置而终止命令。 运营方还应保存原始公告、时间戳、合同或遥测记录,并把已经完成的事实与预测、目标和管理层表述分开。只有把容量、功耗、可用率、成本和交付日期放在同一口径下持续核验,才能判断该信息对矿场和数据中心经营的实际影响。

来源: Bitcoin Core ↗

挖矿计算器 ↗

本栏目更多内容