本文讨论了Pod协议,这是一种新型共识机制,通过消除副本间通信,实现了一轮往返的最佳延迟(约200毫秒)。尽管其属性弱于完全顺序广播,Pod仍然在拜占庭副本面前保持审查抵抗和责任性,并且实现了低延迟,适用于支付、拍卖和去中心化数据存储等多种应用。
简要概述: 本文讨论了 Pod,一种新的共识概念,通过消除副本间通信实现了约200毫秒的一轮延迟的最优表现。我们相信这篇论文以及 pod 网络的工作是开创性的,我们希望其他人能与我们分享对他们工作所产生的兴奋和热情,这就是我们撰写我们对他们所发现和创造的理解的原因。
该构造简单,可以用几百行 Rust 代码实现。尽管它的属性比全序广播较弱,但在拜占庭副本中仍具有抗审查能力,对安全违规行为有问责能力,并且实现了低延迟。简单来说,Pod 将区块链方程中的共识移除,使交易的速度可以与网络上的普通搜索一样快。这使得多种应用成为可能,例如支付、拍卖和去中心化数据存储。
区块链技术彻底改变了我们对去中心化信任和分布式账本的思考。在其核心是共识问题——一个不受信任的参与者网络就共享账本的状态达成一致的机制。共识协议负责确保每笔交易得到确认、排序,并被不可撤回地记录,同时保留关键属性,例如安全性(没有两个诚实节点在账本内容上产生分歧)和活跃性(由诚实参与者提交的交易最终会成为账本的一部分)。引入共识的原因之一是为了防止双重支付:某一方可以使用相同的资金签署两笔交易并试图使其获得账本的批准,从而有效地凭空制造出货币。必须先后序列化交易的事实防止了这一点,但我们将看到,实现这一点并不需要共识。
在经典分布式系统中,共识已经研究了几十年,产生了一些强大的算法,这些算法能够在一小组值得信赖的参与者中保证达成一致。然而,区块链必须在一个开放、无权限的环境中运行,其中节点可能地理上分散,某些节点可能表现不端。因此,区块链中的共识必须解决几个额外的挑战:
这些挑战促使研究者和实践者寻求新的设计,在不妥协安全性的情况下降低延迟和提高吞吐量。
传统的共识协议——如 Paxos、Raft 和拜占庭容错(BFT)算法——最初是为固定数量的节点设计的闭合系统。这些算法保证如果一个正确的节点接受了一条消息,那么它最终会被所有正确的节点接受(安全性),并且新消息最终会被传递(活跃性)。在经典意义上,共识是通过节点之间的多轮通信实现的。这通常涉及一个领导者或协调者提出一个数值,然后其他节点交换消息达到共识。
然而,当这些算法应用于区块链时,他们面临许多局限性:
由于这些固有的局限性,依赖于传统共识(或其直接改编)的区块链系统通常面临高交易确认时间,限制了其在需要近乎即时确认的应用程序中的效用。
比特币通过使用工作量证明(PoW)以概率方式选举领导者引入了一种革命性的共识方法。在比特币的协议中,节点(矿工)竞争解决一个加密难题,首先解决它的人获得提出下一个块的权利。虽然这种方法在开放、无信任的环境中具有鲁棒性,但也引入了显著的低效率性:
随后区块链的设计,如以太坊的权益证明(PoS)和各种拜占庭容错(BFT)协议,尝试降低延迟并提高吞吐量。然而,许多系统仍然依赖于多轮通信或基于领导者的架构,固有上限制了性能。
对于任何区块链共识机制而言,基本挑战是通信轮次数量(直接影响延迟)与其提供的安全保障之间的权衡。理想的场景是实现“物理最优”的延迟:写入交易的一轮往返延迟和读取交易的一轮往返延迟——总计 2δ,其中 δ 为实际的网络延迟。这是物理极限,因为信息必须从写入方传递给副本,然后从副本传递给读取方。
实现如此低的延迟并非易事。消除副本间通信(通常是保证全序和达成协议所必需的)意味着系统必须放弃传统共识协议提供的一些较强保证。相反,Pod 的目标是实现一种“广义共识”,集中于以最小延迟获取有用的、特定应用的信息。
大多数传统区块链共识协议关注于全序广播模型。这意味着每笔交易都是顺序排序的,所有节点对此顺序达成一致。虽然这对于某些应用来说是必需的,但对于其他应用,通常而言,过于繁重。
例如,考虑支付系统、去中心化拍卖,或某些类型的去中心化数据存储。在这些情况下,要求未必是每笔交易都要全序,而是需要快速确认每笔交易,并且某些较弱的顺序属性得到保持。这是 Pod 背后的洞察,我们将在下一部分讨论。
我们可以看到,双重支付可以在没有全序的情况下解决,正如这里解释的:想象一下,我想向两个不同的参与者,Alice和Bob发送两笔交易。假设验证者的数量是 3f + 1,其中 f 是拜占庭验证者的数量。我可以贿赂这 f 个拜占庭验证者接受这两笔交易,然后可以将一笔交易发送给 f 个其他验证者,另一笔交易发送给不同的 f 个验证者。如果需要 2f + 1 个同意,那么我无法从 2f + 1 个地方收集到对这两笔交易的接受,而我的交易要么无法通过,要么只有一笔成功,另一笔则得不到诚实参与者的支持。
以下图片取自这篇文章,显示了全序和 Pod 的区别:
我们可以看到,在某些记录中,交易4可以发生在交易3之前,但所有行为都在规定的范围以内。
在其核心,Pod 旨在实现 2δ 延迟内的交易确认——这一物理下限由网络延迟决定。为此,协议做出了一个基础设计决策:在交易写入阶段消除副本间通信。相反,使用以下过程:
这种设计虽然牺牲了全序广播的强保证,但使协议能够在最小延迟 2δ 的情况下提供交易。其权衡在于交易的排序是“广义的”而非严格的;也就是说,协议保证交易将在特定时间内获得确认,且其相关的时间戳将位于特定范围内。
Pod 被设计用于提供几项关键保证,使其特别适合低延迟至关重要的应用程序。这些属性包括:
过去完美性与确认界限确保当事方不会因交易突然出现确认而被盲目,并且不同交易时间戳会保持在一定范围内。
传统共识协议,例如最长链区块链或 BFT 系统中使用的协议,依赖于多个节点之间广泛的通信以建立交易的全序。相比之下,Pod 的方法是在交易写入阶段完全规避副本间通信。这一决策对实现最优延迟至关重要,但也意味着协议必须接受较弱的排序形式。
为了说明这一点,考虑以下对比:
Pod 协议的技术核心(在论文中称为 pod-core)围绕以下机制构建:
通过遵循这些程序,pod-core 保证任何由诚实客户端写入的交易将在最小延迟下得到确认,并且钦拜节点试图审查或重新排序交易的任何企图都将可被检测并因此受到制裁。
Pod 的一个核心创新是在写入阶段消除副本间的通信。传统共识协议要求副本进行多轮消息交换以达成交易排序。Pod 通过允许客户端将其交易直接广播给每个副本来规避这一点。这一设计选择具有几个深远的影响:
该协议采用流式构造。客户端与所有副本建立持久连接,使其能够在副本处理交易后立即接收“投票”消息。这种流式特性意味着,客户端无需为每笔交易单独发起一次性的请求,而是维护一个持续的会话,交易更新——包括时间戳、序列号和数字签名——以实时方式流入。通过不断接收这些数据,客户端能够即时更新其状态并聚合必要的投票,以计算参数如 rmin、rmax、rconf 和 rperf。这种方法不仅最小化了重复建立新连接的开销,也确保了客户端对账本的视图是尽可能最新的,从而有助于协议实现近乎最佳的延迟。这摆脱了以往块模式的等待确认,提高了效率。
Pod 引入了一种复杂的时间戳分配和聚合方案,以确保即使在没有副本间通信的情况下,客户端也能推导出交易排序的一致视图。关键组成部分有:
该协议保证,对于任何交易,确认轮次 rconf 将满足由 rmin 和 rmax 确定的界限。
引理1显示,rmin 和 rmax 的值将对应于在位置 ⌊α/2⌋−β⌊α/2⌋−β 和 n−α+⌊α/2⌋+βn−α+⌊α/2⌋+β 中以升序排列的值。这里 α 是确认阈值,β 是韧性阈值,满足 n−α=βn−α=β。如果 α≥4β+1,则引理2指出,总会有至少一个诚实副本,其最新时间戳节点不超过 rperf。在相同假设下,引理3和引理4保证在 2δ2δ 内有确认以及在 δδ 内的过去完美。引理5、6 和 7 确保了该构造具有过去完美的安全性、确认界限和 ββ 考虑的安全性。这些结果综合在一起,证明了 Pod 核心的安全性,正如定理1所陈述的那样。
每个 Pod 中的交易投票都附有数字签名。这具有多个优势:
这种问责机制不仅对安全至关重要,也对实施经济激励有帮助。如果副本被发现表现不端,可以受到惩罚(例如,通过削减其权益),从而抑制可能破坏协议保证的行为。
客户端维护一个包含所有副本、它们的公钥、每个副本的最近时间戳和预期下一个序列号的列表,接收时间戳的列表,以及客户端迄今为止观察到的 pod。
在初始化(算法1的步骤7-14)之后,客户端可以尝试发送一笔包含的交易。为此,客户端将交易发送给所有副本(算法2的步骤1-5)。诚实副本在接收时会答复它们的投票。每当客户端收到投票时,客户端(算法1的第15-24步骤):
客户端随后可以执行读取操作,按照算法2的第6到28步骤:
算法3负责计算中值(第33-35行)以及最小(第1-13行)、最大(第14-26行)和预计下一个时间戳的最小值(第27-32行)。
副本包含连接的客户端列表、下一个序列号、其日志,并具有返回副本时间的函数(第1-4行)。其在干净的日志和没有连接(第5-7行)状态下进行初始化。在每轮结束时,副本向每个连接发送心跳(第26-28行)。
每当客户端连接到副本时,它将客户端添加到连接客户端列表中(第9行)并向客户端发送所有投票(第10-12行)。如果客户端想执行写入操作,副本首先检查是否为重复交易(第15行,若为重复则返回)并返回投票。
投票的过程如下:
Pod-core 作为非常简单的核心,实现了客户端的读写,副本保留交易的日志并进行投票。我们可以利用传统数据库的扩展,以增强性能或允许额外的功能。扩展以最低信任方式添加,以确保网络的安全依赖于 pod-core 的安全性。
我们可以使用二级副本,分隔处理读取和写入请求的计算机。二级副本是非受信任的只读节点,为客户端服务请求。它们从写入节点(验证者)接收签名更新,进行缓存,并将其转发给订阅节点。它们不对任何消息进行签名,唯一的事情是停止响应。在这种情况下,用户只需切换到同一验证者的另一个二级副本。
尽管读取不再由验证者处理,但客户端仍需将写入发送给所有验证者,这既不高效也不经济。我们可以通过引入不受信任的网关来解决这个问题,它们与所有验证者保持开放连接。当客户端想提交交易时,它会先到达网关,然后该网关将其转发给所有验证者,接收签名,组装至少含有 αα 个签名的证书,并将所有信息返回给客户端。网关不对交易进行签名,如果它们拒绝发送交易,客户端可以切换到另一个网关。
我们还可以通过使用 Merkle Mountain Ranges 来减少活跃验证者的数据存储需求,从而降低运行验证者的要求,这反过来有助于提高网络的去中心化程度。
对于区块链设计者而言,关键的启示是,任何仅为了高 TPS 而优化的系统在其共识机制引入显著延迟时仍可能达不到预期效果。Pod 的设计哲学——通过无共识且客户驱动的方法实现最优延迟(2δ)——通过关注性能的真实指标:最终确认时间。
在实际操作中,这意味着区块链系统需要:
共识延迟发挥核心作用的另一个关键应用领域是实时拍卖。传统区块链由于基于领导者排序固有的延迟和脆弱性,而不适合用于拍卖。在本节中,我们将探讨拍卖在区块链环境中面临的挑战,以及替代共识方法如何为拍卖应用提供更好的基础。
拍卖一直是经济活动的基石——从艺术品销售到频谱拍卖——在区块链空间中也找到了许多应用:
尽管这些应用各不相同,共同点在于拍卖结果至关重要地依赖于出价的排序和在截止日期前快速包含所有有效出价。
目前的大多数区块链依赖于基于领导者的架构,其中一个节点(或小组节点)被信任提出下一个区块。虽然这一设计有效地确保了全球共识,但在拍卖场景中引入了几个脆弱性:
鉴于基于领导者的共识对拍卖受到的局限性,Pod 协议提供了一个有前途的替代方案。通过在交易写入阶段消除副本间通信,Pod 可以:
Pod 的“过去完美”属性确保,一旦出价确认,它们便在账本上保持永久性。这在拍卖中尤其重要,因为出价集的完整性至关重要。
将拍卖转换为无共识模型提供了几个令人信服的好处:
这些特性不仅改进了现有拍卖机制的功能,还为需要极低延迟和高公平性的创新拍卖应用打开了可能性。
区块链技术的格局正在经历深刻转变。服务于早期区块链系统的传统共识协议正在被重新构想,以满足需要高吞吐量和超低延迟的现代应用程序的需求。在这篇文章中,我们探讨了几个想法:
- 原文链接: blog.lambdaclass.com/why...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!