121 / 691IBD

初始区块下载

IBD是新节点首次与Bitcoin历史同步的过程,包括获取数据、验证区块和构建未花费输出状态,而不只是传输文件。

IBD不只是下载文件。Full Node根据历史构建经过验证的UTXO集合;旧脚本检查还取决于assumevalid设置。

节点发现对等节点地址并同步区块头。区块头连接历史并包含Proof of Work,但本身不能证明区块内所有交易都有效。 [Bitcoin Developer Guide — Initial Block Download] [Satoshi Nakamoto — Bitcoin whitepaper]

累计工作量确定待验证的候选分支。区块头数量最多或对等节点的声称,都不能代替工作量和完整区块检查。 [Bitcoin Developer Guide — Initial Block Download] [Bitcoin Core — validation] [Satoshi Nakamoto — Bitcoin whitepaper]

可从多个对等节点并行下载区块。将区块连接到有效链必须尊重先前状态:缺少所需历史就无法验证交易输出。 [Bitcoin Developer Guide — Initial Block Download] [Bitcoin Core — validation]

Full Node检查结构、Merkle root、花费规则和发行限制等。共识规则按高度与激活情况适用;区块头不等于完整验证。 [Bitcoin Core — validation] [Bitcoin Core — chainstate]

连接区块时删除已花费输出并加入新的UTXO。数据库表示当前可花费的输出,而不是所有历史交易或地址余额账本。 [Bitcoin Core — validation] [Bitcoin Core — chainstate]

在已知历史足够深等条件下,assumevalid可跳过旧脚本检查。这不表示无检查地接受任意历史;assumevalid=0关闭此优化。 [Bitcoin Core — validation]

修剪在处理完成后删除旧区块文件,保留UTXO集合和必要元数据。它节省长期磁盘空间,但普通IBD仍需获取并处理历史。 [Bitcoin Core — validation] [Bitcoin Core — chainstate]

Bitcoin Core v29.0使用链尖年龄、最低工作量和加载状态;标志结束后,在该进程中不再变回true。这是运行启发式条件,不是知道全球最新链尖的证明。 [Bitcoin Core — validation] [Bitcoin Core — getblockchaininfo]

耗时取决于处理器、内存、磁盘、网络和节点可用性。getblockchaininfo的verificationprogress估计验证工作量,不是保证完成时间,也不只是已下载字节比例。 [Bitcoin Developer Guide — Initial Block Download] [Bitcoin Core — getblockchaininfo]

AssumeUTXO可利用受支持的UTXO快照更早在链尖运行。历史在后台验证,结果与快照比较;更早可用并不代表历史验证已经完成。 [Bitcoin Core — validation] [Bitcoin Core — AssumeUTXO design]

要获得更完整的理解,请将本词条与以下词条结合阅读: 修剪节点, AssumeUTXO, 区块传播, 紧凑区块中继. 反向关联还来自: 修剪节点, AssumeUTXO.

DOC · 001Bitcoin Developer Guide — Initial Block Download文档DOC · 002Bitcoin Core — validation文档DOC · 003Bitcoin Core — chainstate文档DOC · 004Bitcoin Core — AssumeUTXO design文档DOC · 005Bitcoin Core — getblockchaininfo文档DOC · 006Satoshi Nakamoto — Bitcoin whitepaper一手来源
来源优先 · 非投资建议