Anoma 的 P2P 层简介
全面介绍 Anoma 的点对点网络层设计,包括协议选择、优化策略和安全考虑。
目录
介绍
本博客介绍了 Anoma 的 P2P 覆盖架构,该架构旨在通过主权域的概念来适应节点异构性,同时保留当前覆盖层的优势。
每个分布式系统的核心是一个通信网络。这个通信网络用于在各个组件之间交换数据和协调任务。它的架构取决于分布式系统的需求。
区块链系统是一个分布式系统:多个组件交换数据并协调任务,以维护拜占庭容错的复制状态机。但与其他分布式系统(如传统的客户端-服务器架构)不同,去中心化是区块链系统的核心原则:每条链都不应有中心权威或单一控制点。因此,它也需要一个去中心化的通信网络。这正是点对点(P2P)覆盖层提供的。
一个 P2P 覆盖网络是在互联网之上构建的虚拟网络。它之所以“虚拟”,是因为它创建了一个逻辑上相互连接的节点网络,这些节点不一定在物理上相邻或直接连接。覆盖网络的构建方式是没有任何中心方来促进协调。相反,各方依赖于覆盖网络中的邻居(也称为对等方 )。节点在访问信息时可以作为客户端,在向其他节点提供数据或服务时可以作为服务器。由于覆盖网络缺乏中心权威,其节点负责管理虚拟连接,并确保其服务的应用程序(在我们的案例中是区块链)的需求得到满足。
P2P 覆盖网络到底是什么?
不同的分布式系统需要不同的通信网络。由于各种区块链系统的架构各不相同,很难对其 P2P 覆盖网络要求做出一般性概括。尽管如此,存在某些共同要求,我们将它们分为功能和非功能 。
功能要求
功能需求描述了 P2P 覆盖层应执行的具体功能和特性。区块链依赖于其 P2P 覆盖层来实现:
- •数据传播 :区块链系统依赖其 P2P 覆盖层向相关方传播数据。例如,验证节点需要在网络上分发交易区块以进行本地验证,这对于状态复制至关重要。
- •数据存储 :P2P 覆盖层在安全数据存储中发挥着关键作用。重要数据必须安全存储以确保其可用性,即使某些节点不可用。例如,新接收的交易必须安全存储以供未来执行。
- •数据检索 :P2P 覆盖层也促进了从区块链检索数据。当节点想要从区块链访问特定数据时,它会向拥有所需信息的相关节点发送请求。例如,如果节点发现一个提议的区块中引用了缺失的交易,它可以向其同行请求缺失的交易。
非功能性需求
非功能性需求描述了 P2P 覆盖层必须具备的品质和属性。区块链系统需要 P2P 覆盖层来提供:
- •去中心化 :点对点覆盖层必须避免单一控制点,与区块链系统的去中心化特性保持一致。
- •性能 :为确保区块链的平稳运行,P2P 覆盖层必须提供低延迟的数据传播和检索。数据传播缓慢可能导致共识延迟,进而可能引发区块同步问题,并为分叉和双重支付等攻击打开大门。
- •安全性 :覆盖层必须抵抗对节点及其(虚拟)连接的覆盖层攻击,并为数据传播、存储和检索提供安全环境。覆盖层攻击利用 P2P 覆盖层的去中心化、分布式特性来破坏其安全性和可用性。常见的覆盖层攻击包括 Sybil 攻击、eclipse 攻击、路由攻击和拒绝服务(DoS)攻击。
- •鲁棒性 :即使在节点或连接出现故障的情况下,覆盖网络也必须能够快速恢复并继续向区块链提供服务。例如,在区块链系统中,节点的更替率(加入和离开)可能很高,覆盖网络必须确保与数据传播、存储和检索相关的协议足够鲁棒,能够应对这种动态环境。
- •可扩展性 :覆盖网络必须允许大量节点参与,而不会显著降低其他非功能性需求。
区块链对其 P2P 覆盖网络有什么要求?
显然,现有的 P2P 覆盖层能满足其功能需求,因为现有的区块链是有效的。然而,现有的覆盖层给区块链系统带来了非功能性挑战。例如, 研究已经表明 ,比特币的 P2P 覆盖层中数据传播缓慢会导致区块链分叉。类似地,以太坊的 P2P 覆盖层数据传播设计容易受到日蚀攻击,这可能会分割以太坊 P2P 网络。显然,存在一些问题,但在我们回答所提出的问题之前,我们需要更好地理解当前 P2P 覆盖层的架构。
当前区块链系统中的 P2P 覆盖层
绝大多数区块链系统依赖于非结构化的 P2P 覆盖层。在非结构化的 P2P 覆盖层中,节点以随机方式连接其他节点,导致随机图拓扑 。接收交易和区块的节点将其转发给其邻居的一个子集(传播),或转发给所有邻居(洪泛)。非结构化覆盖层因其固有的鲁棒性而流行,因为它们在节点或连接故障时不需要额外的工作来恢复特定的拓扑结构。然而,在信息传播方面,非结构化覆盖层表现出次优的性能和可扩展性。在洪泛方案中,每个对等体的负载随着覆盖层中广播消息总数的增加而线性增长,而广播消息总数又随着覆盖层的大小而增长。Gossip 协议的负载较小,但通常引入额外的传播延迟。
在努力缓解现有 P2P 覆盖层问题时,经常需要在不同的非功能性需求之间进行权衡。例如,Kadcast 使用一个结构化的(基于 Kademlia 的)覆盖层作为随机图拓扑的更高效替代方案,但在节点频繁加入或离开网络的环境中,它的鲁棒性较差。BloXroute 和 Fibre 在其传播协议中减少了延迟,但并非完全去中心化:它们在网络中引入了可信中继器。
这些 P2P 覆盖层的实际问题
虽然我们当然鼓励增强现有的覆盖层,但重要的是要承认它们专注于症状而非根本原因,因此不适合可持续的长期部署。这些问题的根本原因更为深层:当前部署的 P2P 覆盖层与区块链网络之间存在根本性的不匹配。这些覆盖层,无论是结构化的还是非结构化的,最初都是为不考虑节点之间固有差异的应用设计的,导致例如在异构环境中性能缺陷等问题。
区块链的本质决定了其异构性:节点子集具有不同的能力和对延迟、带宽以及容错性权衡的偏好。例如,轻客户端相比验证者需要更少的带宽,因为它们经常进行点对点通信,而验证者节点在整个覆盖网络中参与一对多广播,如果能够实现低延迟,它们可能愿意使用大量带宽。这些多样化的需求需要一个能够容纳节点异构性的覆盖架构。
当前的 P2P 覆盖网络能满足这些要求吗?
在这里添加关于现有 P2P 网络局限性的评估...
我们能为此做些什么?
现有关于能够适应节点异质性的 P2P 覆盖层的研究通常将节点分组到需要与其他子网络进行较少通信的独立子网络中,每个子网络拥有自己的独立 P2P 覆盖层。较小的 P2P 覆盖层通常能更有效地传播信息,因此区块链系统中的多覆盖层架构相比单一大型覆盖层能够促进更快的信信息传播。此外,这种方法提供了根据每个子网络中节点的特性和需求来定制数据传播、存储和检索协议的灵活性。
例如,Ethereum 有一个专门用于共识节点(用于区块传播)的 P2P 覆盖层,以及一个用于执行节点(用于交易传播)的 P2P 覆盖层。这两个覆盖层具有不同的规范和不同的协议。在 Polkadot 中,异构的平行链各自拥有独立的 P2P 覆盖层。这两种架构的主要区别在于规模:每个 Ethereum 节点都参与两个覆盖层,而 Polkadot 节点每个只参与一个平行链或中继链。本质上,Ethereum 的架构类似于两个覆盖整个网络的并行覆盖层,而 Polkadot 的 P2P 网络由几个较小的联邦覆盖层组成,这些覆盖层专门用于子网络。
尽管这些点对点覆盖架构能够提供灵活性以适应节点异构性,但它们也带来了其他挑战。由于以太坊要求节点同时运行点对点网络,这意味着每个点对点覆盖都是整个网络的大小。这消除了拥有较小尺寸点对点覆盖的性能优势。另一方面,Polkadot 的架构虽然促进了更快的数据传播和检索,但由于将网络分割成更小、独立的子网络,暴露了安全漏洞。较小的点对点覆盖更容易受到覆盖攻击,因为攻击者可以用更少的资源破坏覆盖的大部分部分。
我们该怎么办?
理想的解决方案是拥有一个能够适应节点异构性同时保留现有覆盖优势的覆盖架构。这正是 Anoma 的点对点覆盖架构旨在提供的。
Anoma 的方法涉及将覆盖层分割成更小的自治域 ,每个域独立运行,拥有自己的内部拓扑和数据传播、存储和检索协议。这些协议可以根据域中节点的特性、需求和功能进行定制。
领域
节点可以为了特定目的发起域。例如,节点可以创建域用于区块链特定服务(如解决意图)或网络特定服务(如匿名路由)。节点可以同时参与任意多个域,仅受其自身能力和每个域的成员资格协议的限制。例如,Anoma 中的意图解决域可能只接受来自可信解决者的加入请求,而域可以移除表现出搭便车行为的节点。
域内和域间协议
节点参与域内和域间协议。参与某个域的节点负责该域的管理。这意味着所有节点都参与域内协议,例如节点发现,以维持与该域中可达对等节点的连接。与联邦多覆盖层架构不同,Anoma 架构中的节点还可以与来自其他域的小部分节点保持连接,从而实现域间路由。例如,特定求解器域中的求解器可能需要与验证器域中的节点建立域间连接,以发送用于区块执行的解决意图。这种方法允许跨域通信和协作。
基于节点的声誉和基于组的声誉
Anoma 的架构还支持基于节点和基于组的声誉模型的信任机制。在这些声誉系统中,节点维护其他节点和节点组的统计信息,并使用这些统计信息来推断这些节点和节点组在未来可能的行为。
基于节点的声誉系统允许节点发现和考虑其同伴的可靠性、偏好和能力。例如,节点本地测量消息到达的延迟。根据这些信息,一个节点可以选择通过更长的路径(更多的跳数)在覆盖网络中发送消息,但这条路径可能更快,因为它避免了具有高带宽限制的节点。然而,仅依赖基于节点的声誉系统可能不足,因为它在动态网络中可能不可靠。
为解决这一限制,Anoma 的架构还引入了基于组的声誉机制,该机制会随着时间的推移聚合节点的历史行为,从而减少临时节点的影响。基于组的声誉机制促进了协作和问责制,在节点之间培养合作精神,并激励它们共同维护良好的声誉。值得注意的是,我们的架构本质上便于维护组声誉,因为覆盖层自然地划分为不同的组(域)。这种划分奠定了可靠声誉管理的基础,确保域满足性能和安全等要求。例如,组声誉可用于检测一个小域是否被对手攻破,而诚实节点可以利用这些信息加入被攻击的域以恢复功能。
结论
Anoma 的 P2P 覆盖架构为区块链系统中现有 P2P 覆盖所面临的根本性挑战提供了解决方案。通过引入主权域的概念,并支持域内和域间协议,它为适应节点异构性提供了优雅的方法。此外,节点级和组级声誉模型的引入增强了覆盖的性能、安全性和可靠性。Anoma 的方法为能够更好地满足区块链网络多样化需求的 P2P 覆盖铺平了道路