链节点论坛(app下载)
每个区块链系统都将创世块硬编码到了节点软件中。你可能会觉得,“共享历史” (即,账本)是一种社会契约 —— 一旦某个区块的历史足够悠久,网络中的所有参与者之间都会达成共识,认为这个区块永远都不会被回滚。当开发者选定一个早期挖出的区块并用它来创建检查点时,更多是作为一种公认的完整性检查,而非对历史的客观描述。
除了检查点之外,节点如何实现自引导也是一个问题。目前,比特币节点的自引导流程是检查节点是否在本地存储了之前从对等节点那里了解到的数据。如果没有的话,节点将查询一组被硬编码到软件中的 “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 软件开发者会诚实地审查被硬编码的对等节点更改的有效性即可。