Ouroboros Genesis 设计更新

image
Ouroboros Genesis design update - IOHK Blog

Ouroboros Genesis 是对已经很强大的 Ouroboros 协议的一系列增强,具有保护新节点或缺席后返回的网络节点的对策。

Ouroboros 是 Cardano 区块链核心的共识协议。鉴于 Cardano 的持续发展和日益普及,Ouroboros 已沿着其计划的升级路径取得进展。Ouroboros Classic 是第一个可证明安全的权益证明协议。Ouroboros BFT 是一个支持 Byron 更新的临时解决方案。Ouroboros Praos 继续开发 Ouroboros Classic。随着 Ouroboros Genesis 的推出,Ouroboros 的演进将更进一步,目前计划于 2024 年第三季度交付。

本文介绍了 Ouroboros Genesis 协议的开发和实施的最新更新。

Ouroboros 迄今为止的故事
区块链是一种在称为节点的机器之间复制的分布式账本。由于没有单一的中央权威,因此必须存在一种机制来保证所有账本副本的一致性和不变性。该机制就是共识协议。该协议还为节点设置了激励措施,以验证新区块并将其添加到链中。

Ouroboros 将 Cardano 的时间划分为多个时期,每个时期又细分为多个时隙。时隙代表可以创建区块的短时间段。

当大多数节点都在线并且拥有账本的一致副本时,Ouroboros Classic 被证明是安全的。对手无法预测哪个节点将成为下一个时隙领导者(将区块添加到链中的节点),这使得攻击成本非常高昂。

Ouroboros Praos 增加了选择下一个时隙领导者的随机性,并增加了针对其他可能攻击的对策。

Ouroboros Genesis 将解决节点首次加入网络(从创世区块开始)或在长时间缺席后重新加入的情况。这样的节点在赶上之前处于脆弱的境地。例如,当对手试图重写链的历史时,就会发生远程攻击。对手积累了大量的股份,使他们能够秘密地以比主链更快的速度创建区块。然后,当替代历史链准备就绪时,对手会尝试将主链切换到对手的链。除非同步节点被遮蔽,否则 Genesis 实现将减轻远程攻击。当对手试图用恶意对等体包围受害节点,从而掩盖真实网络时,就会发生遮蔽攻击。

最新发展
Genesis 引入了以下新概念:

账本对等体
轻量级检查点(作为临时回退/覆盖)
渴望限制 (LoE)
创世纪密度断开连接 (GDD)
耐心限制 (LoP)
创世纪状态机。
账本对等体
与 Genesis 论文最深的分歧是早期的架构决策,以保留 Praos 节点的回滚限制。在 Praos 下,Cardano 节点不会在没有人工干预的情况下回滚超过 2,160 个区块。正如 Genesis 论文中所述,受到日蚀攻击的节点多年来只能选择敌对链的扩展,然后,当它最终连接到为诚实链服务的节点时,突然回滚任意数量的块。

因为在实践中节点没有必要具有无限的回滚能力,所以架构师优先考虑回滚限制,这是许多资源使用限制的关键。为 Genesis 放弃它将删除由先前工程工作的大部分调用的主要不变量。此外,只要同步的 Cardano Genesis 节点可以访问健康的诚实对等体,它就应该像 Praos 节点一样,不需要回滚超过 2,160 个块。

日蚀对 Genesis 节点的威胁可能比论文中表达的更大,论文没有直接解决它们。这些攻击危及了 Genesis 的安全属性,因为持续超过几秒钟的日蚀足以让同步的 Genesis 节点从对抗链中选择 2,161 个区块,尽管忠实地实现了 Genesis 密度比较。如果不知道诚实链,Genesis 规则将简单地选择当前可访问的最密集链。在日蚀情况下,这可能不一定是诚实链。这与 Genesis 论文形成了鲜明对比,在 Genesis 论文中,日蚀节点及其用户只是被延迟、混淆、误导等。这会带来相关风险,但不会损害安全性或活性属性,​​因为节点最终可以连接到诚实对等节点并因此恢复。

仅考虑 Praos 网络,其中节点理论上永远不会落后,日蚀仍然可能有害。与 Genesis 的主要区别在于,Praos 节点(固有赶上)可以承受更长的日蚀,然后才有很大的可能性承诺对抗链。然而,即使不考虑为了避免在同步过程中出现额外的漏洞,Praos 节点确实需要一些针对日蚀的防御措施。

一种防御措施是在对等节点选择逻辑中引入账本对等节点的概念,以充分限制日蚀的概率和持续时间。在同步时,Genesis 节点会调整其账本对等节点配置,以大幅降低日蚀的概率。如果没有日蚀,Genesis 节点将永远不会从敌对链中选择 2,161 个区块。

更改后的对等节点选择工作方式如下。通过检查最近的权益分布,Genesis 节点选择参与维护网络的样本对等节点,大大降低了选择恶意节点的概率。

后备方案:轻量级检查点
Genesis 论文确定,在两条链相交后立即出现的固定时隙窗口中,健康 Praos 网络中的最佳链将比任何其他链拥有更多的区块。唯一的例外是如果 Praos 网络不健康。

严重的网络中断将证明执行灾难恢复计划是合理的,该计划要求利益相关者之间的链下合作,在中断间隔内重写链以修复诚实链。发生这种情况后,创世规则将再次有利于诚实链。

然而,灾难恢复计划本质上是困难且昂贵的。至少在此期间,一个简单的检查点机制将让足够大的合作子集的警惕权益池运营商在区块生产中断期间或之后快速轻松地保持对网络的控制。

逻辑简单且与协议的其余部分一致:一个配置文件指定一个区块号和哈希对列表,每个哈希对都会导致任何其他具有相同区块号的区块被视为无效。该检查点的配置数据应谨慎使用,并仅从可信来源获取。理想情况下,恢复计划的最终执行将允许(甚至要求)对检查点列表的反应性添加是临时的。唯一永久的检查点将是确保拜伦时代的创世密钥不再与卡尔达诺链相关的集合。

渴望限制
由于账本对等点可以有效地防止日蚀,因此同步节点可以假设它至少有一个健康的对等点为某些诚实链的所有节点提供服务。因此,只需禁止同步 Genesis 节点选择超过其账本对等点链交集的 2,160 个区块,即可直接确保安全性。它只会选择所有账本对等点都同意的区块,这些区块几乎肯定包括诚实的对等点。此约束称为渴望限制 (LoE),因为同步节点不能急切地承诺迄今为止看到的最佳区块。敌对对等点可能能够比任何诚实对等点为历史区块提供服务的速度快得多地为其替代区块提供服务。

Genesis 密度断开
对于对手来说,滥用 LoE 导致受害者停止同步区块是微不足道的,这违反了同步节点的活跃性。有三种方法可以做到这一点:

• 攻击对等方声称它没有更多区块
• 攻击对等方提供替代链
• 攻击对等方声称它有替代区块,但也没有提供它们。

Genesis 论文中的基本规则直接缓解了前两个问题。如果两个对等方服务于不同的链,并且至少一条链在交集后拥有不少于 2,161 个区块,则 Genesis 青睐在两条链交集后的固定时隙窗口中拥有更多区块的链。(诚实链将始终赢得该比较。回想一下,共享前缀反映了链交集,即使其中一条链只是另一条链的延伸。)Genesis 节点将通过断开与另一个对等方的连接来支持诚实链。此操作称为 Genesis 密度断开 (GDD)。在足够多的 GDD 之后,剩余对等方的交集将在历史诚实链上更远。

耐心的限制
第三个攻击向量是最难分析的。由于对等方声称拥有更多区块,因此 GDD 被禁用。也就是说,它声称如果允许它有更多时间来提供更多块,则其在该固定窗口中的块数将会增加。诚实的对等体始终真诚地提出这一主张,直到同步节点确实拥有所有诚实的块。但攻击对等体可能会恶意提出这一主张。耐心极限 (LoP) 确保声称拥有更多块的对等体必须实际发送它们,并且要及时发送。关键的复杂之处在于,即使是诚实的对等体也无法连续数小时保持完美的响应能力,它们偶尔会出现延迟爆发等。因此,LoP 被实现为每个对等体的漏桶,其中泄漏是当对等体已认领块并正在提供块时处理块的速率比某个慷慨的最低速率慢,但每个诚实对等点的存储桶容量将足够高,以吸收通常预期来自健康账本对等点的延迟爆发。

Genesis 状态机
Genesis 节点一旦确定自己被追上,就会禁用 LoE、GDD 和 LoP,原因有两个。首先,Praos 网络中被追上节点从根本上必须在其当选的时间段内铸造出最好的块。例如,如果这样的节点仍在使用 Genesis 规则,强大的对手可能会滥用 LoE 暂时禁止受害者选择它刚刚铸造的块,从而阻止它传播到网络。很难限制这种向量的系统范围后果,因此 Genesis 节点在未同步时应该表现得与 Praos 节点完全一样。

其次,被追上节点不需要像同步节点那样多的对等点,因为它不太容易受到日蚀的影响。因此,由于所有节点都维持着虚高的账本对等节点计数,导致网络负载过大,这是不必要的,也是不可取的。Genesis 状态机管理节点在认为自己是否被追上之间的转换:

• 被追上后,节点将禁用 LoE、GDD 和 LoP。• 如果满足以下条件,节点将得出结论:

它有足够的账本对等节点
所有对等节点都声称没有额外的区块(经过良好调整的 LoP 确保很快就会发生这种情况)
节点已经选择了对等节点链中最好的。
这比信任本地选择的年龄等更为可靠,因为攻击对等节点可能能够触发此类阈值,导致受害者过早降低防御能力。
• 如果节点链的尖端太旧(例如,20 分钟左右),则节点将恢复同步。值得注意的是,如果机器休眠时间足够长(例如,用户关闭笔记本电脑盖一段时间),这将在节点操作系统进程的生命周期内发生。

下一步

上述设计在过去一年左右已经稳定下来。虽然它仍在略微发展,但并没有发生重大变化。IOG 在过去几个月中一直与 Tweag 合作实施和测试它。

第一个支持 Genesis 的实现计划于 2024 年第三季度发布。在这个阶段,最大的未知数是需要进行多少程度的优化才能补偿防止日食所需的对等点数量增加。

在此之前,即将到来的引导对等点设计是迈向 Genesis 的增量。引导状态机是 Genesis 状态机的更简单变体。在同步时,节点仅与引导对等点通信,每个对等点都是可信的,因此 LoE、GDD 和 LoP 是不必要的。相比之下,Genesis 将允许同步节点安全地包含不可信的对等节点,只要它没有被遮蔽(即,只要一个对等节点是诚实的),这将允许退出引导对等节点,从而分散同步节点的基础设施并实现 Ouroboros Genesis 的承诺。

Neil Burgess 为本文做出了贡献。