每个区块链系统都将创建块硬编码到节点软件中。你可能会认为共享历史 (即账本)是一种社会契约 – 一旦一个区块的历史足够长,网络中的所有参与者都会达成共识,认为这个区块永远不会回滚。当开发人员选择早期挖掘的区块并用它来创建检查点时,它更多的是作为公认的完整性检查,而不是对历史的客观描述。
除了检查点,如何实现节点的自我引导也是一个问题。目前,比特币节点的自我引导过程是检查节点是否存储在本地等级节点之前了解到的数据。如果没有,节点将在软件中查询一组硬编码 DNS 种子
正如我们可以从代码中看到的,Bitcoin Core 0.目前由 使用的13 Pieter Wuille、Matt Corallo、Luke Dashjr、Christian Decker、Jeff Garzik 和 Jonas Schnelli 运行的 DNS 种子Pieter Wuille 比特币种子生成器软件或 Matt Corallo 运行软件DNS 种子。然而,他们必须说服开发者在整个节点实现他们的 DNS 将种子主机添加到对方的软件中。
新节点的引导过程仅依赖于 6 DNS 种子,这似乎是一个极端集中的单一问题。但别忘了,比特币的安全模型只需要你连接到一个诚实的平等节点来抵抗女巫的攻击。
因此,一个新的节点只能连接到一个没有攻击的 DNS 种子可以,这种种子会回到 的诚实节点IP 地址。但是,为了防止所有 DNS 节点因某种原因无法访问,还有一个备用方案 – 软件中硬编码的可靠节点 IP 地址列表将随着每个新版本的发布而更新。
全节点运营商不需要信任 X 个 DNS 种子或 Y 个 Bitcoin Core 软件开发者只需相信 1/X 的 DNS 节点未受攻击,或 1/Y 的 Bitcoin Core 软件开发者将诚实地审查硬编码对等节点变化的有效性。