跳转到正文
buybitcoinsmart

术语表 /节点与软件

初始区块下载

又称 IBD。

初始区块下载是什么?
初始区块下载是新的比特币节点所经历的追赶阶段,在此阶段中,节点获取并验证从创世区块到当前链尖的每一个区块。

这是运行自己的节点时唯一真正缓慢的环节,而且只发生一次。截至2026年8月,节点需要收集并检查759 GB 的历史数据,在配备固态硬盘的高速机器上需要数小时,在配置较弱的机器上则需要数天。当链尖的时间距今不足24小时,且所持有的链带有足够的累计工作量时,Bitcoin Core 即判定同步已完成。

运作方式

初始区块下载有意将成本最低的证据放在最前面。

区块头优先。自2015年2月16日发布的0.10.0版本起,Bitcoin Core 会先向对等节点索取80字节区块头组成的链,然后才请求任何区块体。验证这些区块头很快,可以确定哪条链拥有最多的工作量证明,并且让软件事先知道要获取多少个区块。随后可以同时向多个对等节点并行请求区块,而不是逐个请求,这正是以小时计的同步与以周计的同步之间的差别。

签名检查是开销最大的部分,因此设有一条带开关的捷径。Bitcoin Core 0.14.0引入了一项设置,它指定一个特定的历史区块(经审查后硬编码在每个发行版中),并跳过对其下方所有内容的脚本签名验证。其他所有规则仍然适用:金额、双重支付、区块补贴、默克尔根、工作量证明。把该选项设为零,节点就会检查自2009年以来的每一个签名;如果您想做到完全不信任任何一方,这样做一次是值得的。

现在,在同步完成之前也有办法发挥作用。Bitcoin Core 28.0附带了一些参数,用于加载在区块高度840,000时生成的未花费输出集快照,使节点能在几分钟内为您的钱包提供服务,同时在后台悄悄重建更早的历史。当后台同步到达快照高度时,节点会将自己计算出的哈希值与发行版中的哈希值进行比较;不一致则节点关闭。

内存是大多数人从未调节过的杠杆。数据库缓存默认为450 MiB,在有富余容量的机器上将其提高到数 GB,可以把未花费输出集保留在内存中,而不是让磁盘反复读写,从而让总耗时减少数小时。

在哪里会遇到它

您第一次启动 Bitcoin Core 时会遇到初始区块下载,节点关闭数月后再次启动时也会遇到。

界面会提示正在同步区块头,然后显示落后了多少周。早期的估算并不可靠,因为2011年的区块非常小,而去年的区块则不然。进度并非线性,节点看起来停在60%时,通常是在处理区块链上数据量最大的那几年。

出现问题时,三条实用规则几乎涵盖了全部情况。使用固态硬盘,因为机械硬盘会把一天的工作变成一周的工作。为该进程提供带宽和稳定的连接,因为整份存档都必须下载下来。同步真正完成之前,不要连接钱包并因余额缺失而慌张,因为部分同步的节点对尚未到达的区块中的币没有任何结论。

初始区块下载 vs Blocks-first 同步

初始区块下载是目标;Blocks-first 同步是实现该目标的一种已过时的方式。阅读较早的文档时,这一区别很重要,因为那些文档常常把两者描述得好像是同一回事。任何正在追赶的节点都在执行初始区块下载,无论它是向单个对等节点按顺序请求区块,是先获取区块头再同时从多个对等节点拉取区块体,还是加载快照后回填。这一阶段之所以有专门的名称,是因为它的性能特征和攻击面都不同于稳态运行,而不是因为它规定了某种方法。

请勿混淆

常见问题

初始区块下载需要多长时间?

在配备固态硬盘且连接良好的现代机器上需要数小时,在较旧的硬件上需要数天,在机械硬盘上则可能需要数周。将数据库缓存提高到默认的450 MiB 以上,是可行的最大改进。

中断初始区块下载安全吗?

安全,前提是正确关闭节点。节点会记录进度,并从停止的位置继续。写入过程中断电才有可能损坏数据库,并导致从更早的检查点重新开始。

接着阅读

相关术语

节点与软件中的更多术语

阅读本页英文版