type
status
date
slug
summary
tags
category
icon
password
Sub-item
Last edited time
Oct 15, 2023 04:09 AM
Parent item
领域
1.概述
比特币/以太坊2大公链使用的共识模型是一个顺序模型。在这个模型中,每个区块都是被串行地构建、打包(挖掘)、广播和验证。对于区块的共识是由节点形成的,这些节点不断打包后续区块。所有参与的节点必须为每个区块进行工作量证明挑战(挖矿),虽然PoW为链提供了防篡改功能,但大量的计算工作限制了区块生成效率和交易吞吐量,阻碍了去中心化应用的广泛使用 [2、3、4]。
使用工作量证明 (PoW) 的区块链需要消耗大量电力进行计算,为了消除PoW的资源消耗,主要解决办法是采用拜占庭容错 (BFT) 共识算法 [5、6]。相比PoW,通过拜占庭容错共识来生成区块是非常高效的,但需要一组已知的参与者,其中绝大多数必须是诚实的。
将拜占庭容错共识与权益证明 (PoS) [7] 相结合,可以创建具有强大安全属性的无需许可的网络。在 PoS 下,所有参与节点都需要存入(金融意义上的)股份,如果他们违反协议规则,这些股份可以被没收。每个节点的影响力与其占总权益的比例成正比,节点的影响力越大,风险也越大。此外,存入的股份还有防止女巫攻击(Sybil attacks)的额外好处 [8、9、10]。 PoS 系统在增加链的吞吐量的同时,也降低了维护链安全相关的总资金成本。不过,即使通过采用 PoS 提高性能,吞吐量还是不够满足广泛应用带来的挑战 [11、12]。
在本文中,我们探索了一种提高 PoS 区块链吞吐量的新方法。
虽然 PoS 代替了PoW的计算工作,但仍然继承了PoW系统的大部分架构。特别是,网络中的每个完整节点都需要检查和执行每个提议的区块,才能更新其本地区块链状态副本。由于每笔交易都需要由每个节点处理,因此向系统添加节点不仅不会提高吞吐量或规模,相反,会降低大多数拜占庭容错共识协议的吞吐量,因为最终确定一个区块的消息复杂度(注:节点间消息交互次数)会随着共识节点的数量呈超线性增加(详见第 3.1 节)。因此,大多数 PoS 区块链必须维持在小型规模的共识委员会(注:会削弱安全性)和低区块生产率(降低吞吐量)之间做出权衡。
对于不愿在安全性或去中心化方面做出妥协的网络,解决扩展问题的最常见方法是通过分片 [2] 或将工作移出主链(例如 Lightning [13] 或 Plasma [14] 网络)。不幸的是,这两种方法都严重限制了在整个网络中的分布式状态的交易访问能力 [15]。同时,这些限制也极大地增加了基于智能合约的DAPP开发人员的工作复杂性。
我们的提议,即 Flow 架构,从根本上改变区块链的形成方式来解决这些限制。 Flow 将交易的选择和排序与其执行分离,以便两个进程可以并行运行。与其他区块链架构相比,解耦可实现更高的交易吞吐量,而不会损害安全性或参与率。
传统的区块链架构需要对每个区块的状态更新结果作出承诺,并将其作为共识过程的一部分。因此,每个节点都必须在完成确定区块之前重新进行状态更新计算。但我们发现,只需就区块中交易的顺序达成共识即可(注释1)。一旦确定了该顺序,就可以确定结果计算,即使它不一定是已知的。因此,即使对于非常大量的交易,参与共识的计算量也会大大减少。一旦确定了交易顺序,就可以委托后续流程自行执行计算,而不会影响系统的去中心化。
在完整的 Flow 架构中,共识节点处理交易批次(collections)。一个区块包含collections的哈希和随机源,执行节点在执行交易之前先对交易进行洗牌。虽然共识节点不直接计算区块的交易顺序,但它们指定计算顺序的确定性算法并指定所有的输入数据,来隐式确定顺序。
我们的主要工作是第 3 部分,我们讨论并证明了我们的核心定理,该定理指出可以在不损害安全性的情况下将大部分计算和通信负载与共识分开。第 4 部分通过在实验网络上对 Flow 架构进行基准测试来补充理论讨论。第 5 部分概述实现基于这些想法的系统所需的未来工作来结束本文。
本文的重点是正式划分共识和计算,并证明这种方法在保持强大安全性的同时提高了吞吐量保证。围绕本文概述的原则设计的区块链需要指定各种额外的机制,包括:
- 用于验证计算结果的完整协议
- 共识算法的细节
- 以及足够的补偿和罚没机制,以激励节点遵守协议。
1.1 术语
虽然目前大多数区块链只专注于处理金融交易,但我们将区块链视为通用的、图灵完备的分布式计算平台。我们没有将区块链称为账本,而是采用了分布式状态机的术语,其中交易描述了计算状态之间的转换。此外,我们使用术语共识仅指线性化状态转换的顺序(但不将计算结果的一致视为共识的一部分)。
1.2 相关工作
验证者困境问题
支持图灵完备计算的区块链一般会对一个区块内的计算量设置一个上限,例如以太坊的 gas 限制。但这样的gas限制会引入吞吐量限制。首先施加gas限制的一个原因是为了避免验证者困境(Verifier's Dilemma,(检查执行结果的正确性))[16]。如果将gas限制设置得足够低,那么用于验证的时间投入(与 PoW 的工作量相比)可以忽略不计。因此,gas限制确保执行验证工作不会给节点挖掘下一个区块带来不利条件。
对于 PoS 区块链采用的激励机制, 验证者困境仍然存在。特别是对于高吞吐量的区块链,大量交易的验证会消耗大量的计算资源和时间。通过分离共识和计算,共识节点不再需要关心验证者困境(注释2)(注:因为验证工作不在共识阶段实施),这样可以增加区块中的最大计算量(区块的gas限制),而共识节点不会受到验证者困境的影响或因计算工作而减慢。然而,对于计算的验证者来说,验证者困境仍然需要解决,一些可行的解决方案包括 zkSnarks [17]、Bulletproofs [18] 和 TrueBit 的方法 [19]。对于 Flow,我们开发了专门的机密知识证明 (SPoCKs) 来克服验证者困境,这在后续论文中有详细描述。
虽然在 PoS 中检查加密签名和证明仍然需要大量的计算工作,但是Verifier's Dilemma(检查执行结果的正确性)不再是共识节点关心的问题。延迟验证签名可能会引发共识节点的验证者困境,但与要求共识节点重新执行所有交易相比,影响规模要小得多。
存储和计算的资源需求
区块链的另一个限制是存储和更新大量计算状态的资源需求。在以太坊中,gas限制也用于控制状态增长的速度 [20]。通过将维护大量计算状态的责任委托给专门的节点,即使对于高吞吐量区块链,共识节点的硬件要求就也可以不用太高。这种设计增加了去中心化,因为它允许在家庭互联网连接上拥有合适的消费硬件的个人都可以高度参与共识。
先前在分布式数据库的技术研究中,已经探索了将交易排序问题与计算结果的工作分开(注:2步法)的概念 [21、22]。交易通过仲裁(共识)被排序到日志中,随后每个节点可以独立地解决交易冲突的影响。然而,这些系统是为在维护良好的数据中心运行而设计的,在这些数据中心中不存在拜占庭故障。具体来说,参与节点数量少,节点失效模式仅限于退出。
回到区块链的讨论范畴,Ekiden [23] 论文描述了一个共识与计算分离的系统,其目标是保护合约执行环境的隐私。该论文解释了一部分Oasis 区块链技术 [24],指出这种方法可以提高性能。但它没有量化性能增益,也没有证明如何保持由此产生的系统安全性。
2 架构概述
Flow 架构建立在“关注点分离”(一种系统是为方法: 先将复杂问题做合理的分解,再分别仔细研究问题的不同关注点,最后综合各方面的结果,合成整体的解决方案)的原则之上。该网络具有专门的角色:共识节点和执行节点。
两种节点类型之间的核心区别是客观性与主观性。客观任务是那些有客观正确答案的任务。任何传统的数学计算都是客观的;您不需要权威或专家来确认 2 + 2 = 4 的正确性,或确认声称 2 + 2 = 5 的演员是拜占庭式的。主观任务没有这种确定性的解决方案。大多数人类治理系统(“法律”)通常处理主观问题。在不同社会的不同时期,关于谁可以做某些事情的规则可能大不相同。共识一词的定义是指对主观问题达成一致,没有单一的正确答案。相反,必须通过双方同意选择一个答案。
区块链将客观规则与解决主观问题的去中心化机制相结合。一个例子是,如果同时提交了两笔尝试花费相同硬币的交易(例如,没有双花),哪一笔正确解决,哪一笔失败?传统的区块链架构要求参与网络的节点同时解决这两种问题。在 Flow 中,共识节点负责所有主观问题,而执行节点只负责完全确定的客观问题。请参见图 1。
2.1共识角色
共识节点从交易数据摘要中形成区块。本质上,共识节点维护和扩展核心 Flow 区块链。需要大多数节点达成协议,接受提议区块,这需要拜占庭容错 (BFT) 共识算法 [5]。需要注意的是,本文的结果适用于任何具有最终确定性的拜占庭容错共识算法。
在 Flow 中,一个区块包括一组交易的引用并定义它们的执行顺序,但是不包含对区块执行后产生的计算状态的承诺。因此,共识节点不需要维护计算状态或执行交易。此外,共识节点裁定来自其他节点的罚没请求,例如声称执行节点产生了不正确的输出。
2.2执行角色
当交易按照共识节点确定的顺序执行时,执行节点提供确定交易结果所需的原始计算能力。他们生成密码学证明,以执行凭证的形式声明他们的执行结果。
在执行节点的声明被证明不正确时,这些执行凭证可用于对其提出质疑。确认它们是正确的之后,它们还将用于创建区块链当前状态的证明。拜占庭凭证(注:造假的凭证)会被拒绝,产生它们的执行节点会被罚没,有效凭证会被接受(并与网络观察者共享)。
3 性能和安全理论分析
在本节中,我们提出了一种理论推导,即可以在不损害安全性的情况下将大部分计算和通信负载与共识节点分开。此外,我们提供了一项分析,解释了实验观察到的吞吐量增加的来源。
Flow 旨在保证执行节点引入的任何错误都保持四个关键属性:
- 可检测性:根据定义,确定性过程具有客观正确的输出。因此,即使是网络中的单个诚实节点也可以检测确定性故障,并通过指出错误执行的过程部分来向所有其他诚实节点证明错误在哪。
- 可归属性:Flow 中所有确定性过程的输出必须使用生成这些结果的节点的身份进行签名。因此,检测到的任何错误都可以清楚地找到负责该过程的节点。
- 可惩罚性:所有参与 Flow 网络的节点,包括执行节点,都必须投入一定的股份,如果发现它们表现出拜占庭行为,则该股份可以被罚没。由于确定性过程中的所有错误都是可检测和可归属的,因此可以通过“罚没”可靠地惩罚这些错误。
- 可恢复性:系统必须能够在检测到错误时撤消错误。该属性用于阻止恶意行为者引发错误,这些错误比罚没更能使恶意行为者受益。
在 Flow 中,保证是概率性的。具体来说,对于 0 < ε <<1(ε远小于1),错误的检测和纠正概率为 p = 1 − ε。通过调整系统参数ε ,几乎可以确保系统的所需的特性。
这种设计的一个重要特性是对于每个系统内部操作和参与者都是负责的。具体来说,对于除共识节点之外的所有操作,每个操作的执行都被委托给节点的一个子集,即操作处理者组。验证结果被分配给一个不相交的节点子集:操作验证者组(不能和操作处理者集合相同)。非正式地,该协议的工作方式如下:
- 操作处理者和操作验证者组都是随机选择的。节点的选择使用可验证的随机函数 [25],因此结果是确定性的,但可以抵抗“哈希研磨”(hash grinding)。
- 任一组中节点被包含的概率与其权益成正比。这强制要求拜占庭参与者必须锁定大量股份,才能有不可忽略的影响系统的可能性。具体来说,这加强了系统对 Sybil 攻击的抵抗力 [26]。
- 两组所需的股份数量都设置得足够高,使得在两组中都只抽取到拜占庭参与者的概率足够小。
- 只要任一组中至少有一个诚实节点参与,诚实节点就会检测并标记任何错误。
- 如果标记出潜在错误,则由共识节点裁定,恶意节点被罚没,如果有错误,操作结果将被拒绝。
上述过程保证了恶意执行节点几乎肯定会被罚没。恶意行为者几乎不可能成功引入错误。
可能出现的一个问题是,为什么 Flow 具有单独的操作处理者组和操作验证者组,而不是操作处理者相互验证彼此的结果?
我们通过这种“关注点分离”原则来解决验证者困境 [16]。如果没有专门的操作验证者角色,操作处理者在计算下一个区块与验证(重新计算)最后一个区块的结果时会存在利益冲突。在 Flow 中,专门的操作验证者缓解了这种困境,他们仅因验证而获得报酬。
我们的区块验证协议的技术细节在后续论文中介绍,包括解决“吃白食的问题”(验证者只是批准任何结果而不进行实际计算)和“恶意标记”(验证者挑战正确的结果以造成网络拥堵)。
以下定理形式化了 Flow 架构的安全保证,并证明通过发布或批准错误结果将错误引入系统在经济上是不可行的。
定理 1(将工作委托给小团体的概率安全性)
对于除共识节点之外的任何操作,如果满足以下条件,则通过故意发布或批准错误结果将错误引入系统在经济上是不可行的。
- 操作被委托给两组随机选择的节点:
- 一组操作处理者:该组的成员执行操作并为其结果提供密码学安全承诺
- 一组操作验证者:该组的成员验证操作的结果,并在他们审批后对结果提供密码学安全承诺
- 两个组的规模都可以相对较小,只要在两个组中同时只选择拜占庭参与者的概率足够低。
- 在操作处理者处理产生结果时,他们并不知道操作验证者组的成员身份。
- 共识节点
- 要么验证绝大多数人已经承诺公布的结果,并且没有参与节点提出异议
- 要么裁定异议,确定有问题的节点(可归属的),并将其罚没(可惩罚的)
必须强调的是,不需要共识节点来检查操作结果的正确性。相反,拥有足够股份的其他节点负责验证。此外,定理 1 适用于任何具有确定性最终性的拜占庭容错共识算法。
定理 1 的证明
我们将证明定理 1 在以下现实条件下总能得到满足:
- 两个组中至少有一个是从具有绝大多数诚实节点集合中采样的;
- 拜占庭参与者无法抑制正确节点之间的通信,即如果有一个诚实节点反对结果并证明其错误,则错误节点将被罚没。
具体来说,让我们考虑一个包含 个节点的群体,我们希望从中随机抽取一个具有个节点的子集。此外,我们假设最多有个拜占庭节点。在下文中,我们将重点关注所有节点都是同等权益的情况,即它们的被选中包含概率相同。
该论点可以扩展到具有不同权益的节点。在这种情况下,每个节点的包含概率将等于其占总权益的比例。但是,完全拜占庭组采样的概率取决于各个节点的总权益的特定比例。
允许具有不同权益的节点的基本解决方案是:引入单位数量权益(例如10)。对于拥有股份(例如1000)的节点,重数 表示该节点拥有多少个单元股份(100,1000/10=100)。为了操作方便(包括投票和节点选择),区块链将该节点视为个独立单元节点(相当于100个逻辑节点),每个节点都有股份。
假设一个包含个元素的子集,该子集属于没有替换的简单随机抽样的领域[27]。在该子集中具有个拜占庭节点的概率由如下超几何分布(超几何分布是统计学上一种离散概率分布来给出。
它描述了从有限的个物件(其中包含个指定种类的物件)中抽出个物件,成功抽出该指定种类的物件的次数(不放回)的概率:
为简洁起见,我们只处理 (表示拜占庭节点的数量)的情况。对于,(比如拜占庭有3个,要求包含5个拜占庭的概率是0)。
假设不存在与错误结果相矛盾的诚实节点,那么成功攻击的概率:
其中 表示是仅抽到拜占庭节点的概率。
公式(4) 表明,仅抽到拜占庭节点的概率随着的增加而严格单调下降。
公式 (4) 指出样本大小 越大,仅抽到拜占庭节点的概率就越小,被攻击的概率也越小
对于通过发布错误结果或批准错误结果来故意攻击网络的节点,我们假设存在一些奖励,如果攻击成功,该节点将收到该奖励。但是,如果被发现攻击,节点将被罚没(按照惯例为正数)。攻击网络所产生的统计预期收入是
为了使攻击在经济上可行,需要收入大于等于0,得出该证明的中心结果:
此外,公式(4) 意味着随着的增加而严格单调增加。
使用 [28] 的结果,可以表明当时, 随 呈指数增长。
公式 (7) 的左侧是安全性度量,因为它表示在攻击者攻击系统的统计成本。
例如,考虑 的情况。为简单起见,假设为了发布或批准错误结果,节点的全部权益被罚没。然后,为了使攻击在经济上可行,成功奖励需要是节点权益的 65343 倍()。如果操作验证者每人投入 1000 美元,攻击者将不得不平均花费 6530 万美元来支付所有罚没成本。对于攻击者来说,运行整个操作验证器池而不是试图让错误通过诚实的验证器会更便宜。当进一步增加到时,攻击者需要花费倍的赌注才能让一个错误通过绝大多数诚实的验证者。
总而言之,我们已经分析了处理操作或验证其结果被委托给大量节点的一小部分随机子集的情况。我们已经表明,在现实的假设下,通过发布或批准错误结果将错误引入系统在经济上是不可行的。请注意,此结果仅涵盖共识节点以外的节点类型。因此,共识节点只需要检查是否有足够的节点参与执行操作并对其进行验证就足够了,他们不需要检查结果本身来保证其完整性。
定理 1 是一个关键的见解,因为它允许我们:
- 将大部分计算和通信负载与共识分开;
- 开发具有不同需求配置文件的高度专业化节点(而不是拥有一种必须在所有领域都具有出色性能或以其他方式降低网络吞吐量的节点类型);
当其他节点以小组形式验证彼此的操作时,整个共识节点委员会会进行自我审核。
3.1 共识节点的特殊作用
共识节点通过 BFT 共识算法确定事件的相对时间顺序。虽然我们的结果适用于任何具有最终确定性的拜占庭容错共识算法,但 HotStuff [29、30] 是领先的竞争者。不过我们会继续评估其他算法,例如 Casper CBC [31、32、33] 或 Fantômette [34]。
与需要审核小组(验证节点集)批准结果的其他节点的操作不同,共识节点在没有外部验证的情况下完成区块组装。虽然区块的内容可以被验证,并且如果共识节点包含无效数据时共识节点可以被惩罚,但是在这种情况下区块不会被重建。外部各方可以在事后检查最终确定的区块。然而,如果发生对抗性攻击将链条分叉,那么此时双花攻击可能已经成功。
为了提高整个系统的弹性,共识节点委员会应尽可能多的抵押节点股份。
对于简单的 BFT 算法:
- 每个区块的消息复杂度 (即所有个节点发送的消息总数)为 [7]。
- 更高级的协议实现是 [35] 或(),对于大 N ,近似于恒定值。
整个共识委员会的带宽负载,单位:,计算公式 是
β:出块速率,单位
b:消息大小,单位。
对于接收消息 并对其进行处理的节点,还有计算延迟:
其中f表示接收m的网络传输时间,表示处理m的计算时间。
很明显,带宽负载 和计算延时都强烈影响共识算法的吞吐量。具体细节在很大程度上取决于所选择的 BFT 协议,以及所采用的gossip拓扑(P2P协议) [38]。其他因素包括底层网络硬件中的延迟或带宽限制。
目前,我们的目标是建立一个数千个节点数量级的共识委员会。为了支持去中心化和透明度,共识节点的硬件要求应该受到限制,这样私人团体仍然可以负担得起运行节点并参与共识。因此,给定所需的最小块率(例如,和环境确定的函数,共识委员会的数量只能通过减小消息大小 或来增加。
为了完整起见,我们简要介绍如何同时减少 Flow 中的 和。对于各个过程的详细机制,读者可以参考后续论文。
- 我们将交易的计算委托给专门的执行节点。委托消除了共识节点维护和计算状态的需要,这显著减少了 。
- 共识节点在正常操作期间不需要完整的交易文本。相反,专门的收集器节点从外部客户端接收交易并将它们预先打包成批次,称为collections。共识节点仅对集合引用(哈希)进行排序,与处理单个交易文本相比,这大大减少了消息大小 。
我们通过将我们的方法与 Vlad Zamfir [39] 提出的“妥协三角形”进行比较来结束本节,我们在图 2 中重新创建了它。
三角形说明了 Zamfir 对权益证明系统的不可能性猜想。虽然该猜想尚未得到正式证明,但我们确认已经正确识别相关妥协,Flow 优化了做出这些妥协的地方:
- 共识节点作为大型共识委员会的一部分工作,以实现最大的安全性。为了确保最终块的安全性和快速生成,我们接受更高的通信开销(三角形的左下角)。然而,与其他区块链不同的是,这种共识只决定区块内交易的顺序,而不是结果状态。该架构补偿了由此产生的更高带宽(不需要传输很多数据)。通过使用集合引用(对批量交易的引用)而不是完整的单个交易来最小化消息大小来减少开销。为了进一步提高吞吐量并减少通信延迟,所有可能的计算都委托给其他节点类型。
- 执行节点解压集合并处理单个交易。在没有涉及大量拜占庭参与者的情况下,这可以直接在收集器和执行节点之间处理,而无需涉及共识节点。此外,任务可以并行化并由小组处理,小组相互对正确的结果负责。只有在拜占庭攻击期间,才会将恶意行为报告给共识节点以裁定罚没。
4 性能模拟
第 3.1 节中提出的理论分析表明,可以通过将关于交易顺序的共识与其执行分开来增加交易吞吐量。然而,理论分析并没有断言实际可实现的加速比是多少,因为吞吐量在很大程度上取决于各种环境参数,例如消息往返时间、CPU 性能等。因此,我们实施了一个简化的基准测试仅专注于交易排序(共识)和交易执行的网络。
4.1 实验设置
在 2015 年的一项分析比特币网络计算能力分布的研究中 [40],作者估计 75% 的挖矿能力由大约 2% 的节点提供。我们模拟了一个系统,其中心化指标大约是比特币分数的一半。在我们的模拟中:
- 约 6% 的节点由快速节点提供大约 38% 的计算能力。
- 对于剩余 62%网络总计算能力:
- 三分之二的节点(慢节点)拥有剩余计算能力的三分之一(即 62%/3 =20%的总计算能力)
- 其余分配给中等节点。
将执行角色分配给具有最大计算能力的节点需要激励机制来补偿节点对网络使用的资源。假设存在这样的激励机制,快速节点抵押为执行节点在经济上是合理的。在任何其他角色中,其资源都不会被最大程度地利用,从而导致收入减少。因此,我们假设最强大的节点将专门成为执行节点。我们进行了三个不同的实验。所有模拟的共同特征如下所述。第 4.1.1 至 4.1.3 节介绍了每个单独实验的具体细节。图 3 说明了不同的设置。对于每个实验,网络资源(节点类型)和职责分配在表1中给出
共同特征
- 交易:为简单起见,我们的网络正在处理基准交易,它们都具有相同的复杂性(指令数量)。批量基准交易由共识节点直接生成,而不是将专门的提交过程集成到模拟中。
- 网络:我们实施了一个由 32 个节点组成的相对较小的网络,每个节点都在专用的 Google Cloud 实例上运行。这些节点分布在世界各地的 8 个数据中心,以提供有点真实的延迟。
- 节点:根据实验(见表 1),交易在具有不同硬件的节点上执行:
- 慢速节点:在大约 10 毫秒内处理基准交易
- 中等节点:速度是慢速节点的五倍,即处理基准交易在 5 毫秒内
- 快速节点:速度是慢速节点的 25 倍,即在 2.5 毫秒内处理基准交易
为了促进去中心化,理想的网络应该允许任何参与者加入,只需要最低限度的节点性能。因此,一个现实的网络将包含大部分慢速节点、一些中等节点和极少数快速节点。
- 共识:我们使用旋转区块提议器实现了受 Tendermint 启发的共识算法。由于我们的目标是在没有大规模拜占庭攻击的情况下对可实现的吞吐量进行基准测试,因此我们的基准网络仅由诚实节点组成。提议的区块包含可变数量$ t 个基准交易,其中 t 是从整数区间 [240, 480]$ 中随机抽取的。然而,为了可重复性,我们对随机数生成器进行了播种,以便在所有实验中,提出并最终确定相同的 20 个区块序列。
4.1.1 实验(I):共识与计算分离的Flow PoS 网络
本实验模拟共识与计算分离的网络:
- 20 个慢速节点和10 个中等节点组成共识委员会。他们就区块内的交易顺序达成一致,但不存储或更新链的计算状态。
- 两个快速节点按照交易在区块中完成的顺序执行交易。他们不参与共识。
如需进一步说明,请参见图 3(I) 和表 1。
在 Flow 网络中,区块仅指定交易顺序,但不包含有关结果状态的信息。由于该模型中的共识仅涵盖交易顺序,因此共识节点对计算状态一无所知。
4.1.2 实验 (II):具有不同性能的节点的 PoS 网络
实验 (II) 密切模拟传统的 BFT 共识系统,如 Tendermint [41、42、43] 或 Hot-Stuff [29]。该网络与实验 (I) 相同,即它由完全相同类型和数量的节点组成(有关详细信息和说明,请参见表 1 和图 3(II))。但是,区块包含交易顺序和对结果计算状态的哈希承诺。由于这种结果承诺,每个共识节点必须重复计算提议区块的所有交易以验证其正确性。本质上,节点只有一个作用:参与共识算法,其中包括更新计算状态的任务。
4.1.3 实验(III):具有统一性能的节点的 PoS 网络
实验(III)如图 3(III)所示,模拟了具有统一计算性能的 32 个节点的网络。与实验 (II) 一样,所有节点都执行相同的算法,该算法将交易排序的共识与它们的计算相结合。
4.2 实验结果
我们的模拟旨在对交易吞吐量进行基准测试。对于每个实验,我们通过网络发送 7995 个基准交易并测量相应的处理时间。结果总结在表 2 中。
实验 (I) 和 (II) 使用相同的网络配置执行。唯一的区别是在实验(一)中共识和计算是分离的,而在实验(二)中两者是合并的。在我们适度简化的模型中,将计算与共识分开使吞吐量增加了大约56 倍。
比较实验 (II) 和 (III) 说明增加网络资源的影响有限。就每秒指令数而言,实验 (II) 中的网络比实验 (III) 中的网络强大 3.75 倍(注释6)。然而,与实验 (III) 相比,(II) 的吞吐量仅增加了 0.7%。正如结果所示,共识和计算的分离允许更有效地利用网络资源。在结合了共识和计算的 PoS 网络中,确定性区块的最终确定需要绝大多数节点投票支持最终确定的候选区块。
注释6:让慢速节点每秒处理 x 条指令。因此,在理想的资源利用下,实验(III)中的网络可以处理 32x 指令。相比之下,实验(三)中的网络处理20x + 10 · 5x + 2 · 25x = 120x
表 2:网络性能。以秒 [s] 为单位的 7995 笔交易的处理时间和由此产生的交易吞吐量 [TX/s]。虽然我们只进行了一次性实验,但我们在整个实施过程中反复观察到处理时间仅在亚秒级范围内波动。
BFT 协议,例如 [29, 42, 44, 45],最终确定需要支持投票,累计股份 S>2/3S > 2/3S>2/3。但是,某些协议有其他限制,例如 [46、47] 的 S > 80%。所有这些协议的共同点是,共识节点有义务将计算作为子任务来执行,以验证提议的区块。因此,完成一个区块的时间受节点最快第 S 个百分位数的限制。不那么正式,最慢的节点决定了整个系统的吞吐量。因此,只要最慢的 (1 − S) 部分节点没有获得性能升级,在更强的节点上运行网络就会保持吞吐量不变。相反,共识和计算的分离显着地将计算负载从共识节点转移到网络中最快的节点。
5 进一步的工作
围绕本文概述的原则设计的区块链需要解决其他问题,最值得注意的是验证计算输出的机制。一方面,拆分共识和计算工作可以提高 Flow 的吞吐量。另一方面,必须特别注意结果状态是正确的,因为共识节点不会重复计算。
此外,在 Flow 中,区块不再包含对计算区块后结果状态的哈希承诺。因此,从区块状态接收数据的节点无法根据区块中发布的信息来验证接收到的数据的有效性。尽管如此,前一个区块的结果的哈希承诺可以在通过验证后在后一个区块中发布。我们将在后续文章中详细介绍区块验证和计算结果承诺(简称区块封存,block sealing)的技术细节。
所呈现的模拟提供了实验证据来支持本文的理论工作。虽然理论结果(第 3 部分)在没有实验验证的情况下独立存在,但实验可以显着扩展。例如,我们没有考虑验证计算状态并将它们提交到链中所需的额外步骤。另一个方面是共识委员会的规模。研究不同委员会规模的共识和执行节点的交易吞吐量的扩展会很有趣。但是,我们决定优先实施 Flow 架构,而不是对简化模型系统进行基准测试。吞吐量和其他性能特征将在全面实施完成后立即进行测量和发布。
6 结论
在这项概念验证工作中,我们证明了共识和计算的分离可以显着提高 PoS 区块链网络中的资源利用率。对于传统的基于回合(round-based)的 PoS 网络,其中一个区块在提出后续区块之前完成,吞吐量受到一小部分最慢节点的限制。相反,共识和计算的分离显着地将计算负载从共识节点转移到网络中最快的节点。我们已经在定理 1 中表明,这种关注点分离不会损害网络的安全性。最初的实验表明,通过这种关注点分离实现的吞吐量改进是巨大的。在适度简化的模型中,我们的模拟显示与具有联合共识和块计算的架构相比,吞吐量增加了 56 倍。
大幅提高现有区块链(例如以太坊)吞吐量的一种方法可能是提高gas限制。然而,这会加快状态增长的速度,使新节点更难加入系统。虽然在传统的工作量证明区块链中,维护和更新状态的计算负载在所有(完整)节点上是统一的,但大部分计算资源都集中在一小部分挖掘节点中 [40]。
Flow 架构利用了网络生态系统中自然发生的资源不平衡。少数具有大量计算和带宽容量的数据中心规模节点可以抵押成为执行节点,以最有效地贡献其资源。相比之下,共识节点不存储或维护状态,因此可以在现成的消费硬件上运行。通过这种“关注点分离”,考虑到具有此角色的节点可用的操作资源,与加入系统的新执行节点共享一个大状态应该不会构成重大挑战。
致谢
我们感谢 Dan Boneh 进行的许多有见地的讨论,J. Ross Nicoll 对早期草案的贡献,以及 Nick Johnson、Alex Bulkin、Karim Helmy、Teemu Paivinen、Travis Scher、Chris Dixon、Jesse Walden、Ali Yahya、Ash Egan、Casey Taylor、Joey Krug、Arianna Simpson 以及 Lydia Hentschel 的评论。
参考文献
[1] 中本聪.比特币:点对点电子现金系统,2009。
[2] Kyle Croman、Christian Decker、Ittay Eyal、Adem Efe Gencer、Ari Juels、Ahmed Kosba、Andrew Miller、Prateek Saxena、Elaine Shi、Emin Gün Sirer、Dawn宋和罗杰·瓦滕霍夫。关于扩展去中心化区块链。在 Jeremy Clark、Sarah Meiklejohn、Peter Y.A. Ryan、Dan Wallach、Michael Brenner 和 Kurt Rohloff,编辑,金融密码学和数据安全,第 106-125 页,柏林,海德堡,2016 年。Springer Berlin Heidelberg。
[3] 英国广播公司新闻。 Cryptokitties 热潮减慢了以太坊上的交易。 2017. https://www.bbc.com/news/technology-42237162。
[4] 理查德·丹尼斯和朱尔斯·帕格纳·迪斯。对比特币和以太坊的可扩展性的分析,第 619-627 页。 01 2019.
[5] M. Pease、R. Shostak 和 L. Lamport。在存在错误的情况下达成协议。 J. ACM,27(2):228–234,1980 年 4 月。
[6] Leslie Lamport、Robert Shostak 和 Marshall Pease。拜占庭将军问题。 ACM 跨。程序。郎。 Syst., 4(3):382–401, July 1982.
[7] Miguel Castro 和 Barbara Liskov。实用的拜占庭容错。在第三届操作系统设计与实现研讨会论文集中,OSDI ’99,第 173–186 页,美国加利福尼亚州伯克利,1999 年。USENIX 协会。
[8] 斯科特纳达尔阳光国王。 Ppcoin:具有股权证明的点对点加密货币。 2012. http://www. peercoin.net/.
[9] Ittai Abraham 和 Dahlia Malkhi。区块链共识层和 BFT。 EATCS 公告,123,2017。
[10] Diksha Gupta、Jared Saia 和 Maxwell Young。没有所有工作的工作证明。在第 19 届分布式计算和网络国际会议论文集中,ICCDCN ’18,第 6:1–6:10 页,美国纽约州纽约市,2018 年。ACM。
[11] Shehar Bano、Alberto Sonnino、Mustafa Al-Bassam、Sarah Azouvi、Patrick McCorry、Sarah Meiklejohn 和 George Danezis。区块链时代的共识。 arXiv:1711.03936, 2017. https://arxiv.org/abs/1711。 03936.
[12] Jason Spasovski 和 Peter Eklund。权益证明区块链:群件通信的性能和可扩展性。在第 9 届数字生态系统管理国际会议记录中,MEDES '17,第 251-258 页,美国纽约州纽约市,2017 年。ACM。
[13] Joseph Poon 和 Thaddeus Dryja。比特币闪电网络:可扩展的链下即时支付。 2016. https://lightning.network/lightning-network-paper.pdf。
[14] Joseph Poon 和 Vitalik Buterin。 Plasma:可扩展的自主智能合约。白皮书,第 1–47 页,2017 年。
[15] Mahdi Zamani、Mahnush Movahedi 和 Mariana Raykova。 Rapidchain:通过完全分片的快速区块链协议。 IACR Cryptology ePrint Archive,2018:460,2018。
[16] Loi Luu、Jason Teutsch、Raghav Kulkarni 和 Prateek Saxena。揭秘共识计算机中的激励机制。在第 22 届 ACM SIGSAC 计算机和通信安全会议记录中,CCS '15,第 706–719 页,美国纽约州纽约市,2015 年。ACM。
[17] Nir Bitansky、Ran Canetti、Alessandro Chiesa 和 Eran Tromer。从可提取的抗碰撞性到简洁的非交互式知识论证,然后再返回。在第三届理论计算机科学会议创新会议记录中,ITCS '12,第 326-349 页,美国纽约州纽约市,2012 年。ACM。
[18] B. Bünz、J. Bootle、D. Boneh、A. Poelstra、P. Wuille 和 G. Maxwell。 Bulletproofs:机密交易等的简短证明。 2018 年 IEEE 安全与隐私研讨会 (SP),第 315–334 页,2018 年 5 月。
[19] Jason Teutsch 和 Christian Reitwießner。区块链的可扩展验证解决方案,2017 年 3 月。访问时间:2017-10-06。
[20] Vitalik Buterin 对媒体文章“以太坊区块链大小已超过 1TB,是的,这是一个问题”的评论。 2018. https://medium.com/hackernoon/the-ethereum-blockchain-size-has-exceeded-1tb-and-yes-its-an-issue-2b650b5f4f62。
[21] 马特弗里尔斯。 FaunaDB:架构概述。 2018. https://www2.fauna.com/FaunaDB_Tech_WP。
[22] Alexandre Verbitski、Tengiz Kharatishvilli、Xiaofeng Bao、Anurag Gupta、Debanjan Saha、James Corey、Kamal Gupta、Murali Brahmadesam、Raman Mittal、Sailesh Krishnamurthy 和 Sandor Maurice。 Amazon aurora:关于避免 i/os、提交和成员变更的分布式共识。 pages 789–796, 05 2018. [23] Raymond Cheng, Fan Zhang, Jernej Kos, Warren He, Nicholas Hynes, Noah M. Johnson, Ari Juels, Andrew Miller, and Dawn Song. Ekiden:一个用于保密、可信和高性能智能合约执行的平台。 CoRR, abs/1804.05141, 2018.
[24] 黎明之歌。 Oasis:大规模保护隐私的智能合约,2018 年。Microsoft Research Faculty Summit。
[25] 西尔维奥·米卡利、萨利尔·瓦丹和迈克尔·拉宾。可验证的随机函数。在第 40 届计算机科学基础年度研讨会论文集中,FOCS ’99,第 120 页–,华盛顿特区,美国,1999 年。IEEE 计算机协会。
[26] 约翰·R·杜赛尔。女巫攻击。由 Peter Druschel、Frans Kaashoek 和 Antony Rowstron 编辑,Peer-to-Peer Systems,第 251-260 页,柏林,海德堡,2002 年。Springer Berlin Heidelberg。
[27] 弗兰克·奥尔肯。从数据库中随机抽样。博士论文,加州大学伯克利分校,1993 年。http://db.cs.berkeley.edu/papers/UCB-PhD-olken.pdf。
[28] 瓦西里·霍夫丁。有界随机变量之和的概率不等式。美国统计协会杂志,58(301):13-30,1963 年 3 月。
[29] Maofan Yin、Dahlia Malkhi、Michael K. Reiter、Guy Golan Gueta 和 Ittai Abraham。 HotStuff:区块链视角下的 BFT 共识。 2018. http://arxiv.org/abs/1803.05069。
[30] Maofan Yin、Dahlia Malkhi、Michael K. Reiter、Guy Golan Gueta 和 Ittai Abraham。 HotStuff:具有线性和响应性的 BFT 共识。在 2019 年 ACM 分布式计算原理研讨会论文集中,PODC ’19,第 347–356 页,美国纽约州纽约市,2019 年。ACM。
[31] 弗拉德·赞菲尔。 Correct-By-Construction 共识协议的模板。 2017. https://github.com/ethereum/research/tree/master/papers/cbc-consensus。
[32] 弗拉德·赞菲尔。 Casper the Friendly Ghost:一个“通过构造纠正”区块链共识协议。 2017. https://github.com/ethereum/research/blob/master/papers/CasperTFG。
[33] Vlad Zamfir、Nate Rush、Aditya Asgaonkar 和 Georgios Piliouras。引入“最小 CBC Casper”共识协议系列。 2018. https://github.com/cbc-casper/cbc-casper-paper。
[34] Sarah Azouvi、Patrick McCorry 和 Sarah Meiklejohn。用 Fantômette 押注区块链共识。 2018. http://arxiv.org/abs/1805.06786。
[35] Jing Liu、Wenting Li、Ghassan O. Karame 和 N. Asokan。通过硬件辅助的秘密共享实现可扩展的拜占庭共识。 IEEE 计算机汇刊,68:139–151, 2019。
[36] Guy Golan-Gueta、Ittai Abraham、Shelly Grossman、Dahlia Malkhi、Benny Pinkas、Michael K. Reiter、Dragos- Adrian Seredinschi、Orr Tamir 和 Alin Tomescu。 SBFT:一种可扩展的区块链去中心化信任基础设施。 CoRR,abs/1804.01626,2018 年。https://arxiv.org/abs/1804.01626。
[37] Mohammad M. Jalalzai、Costas Busch 和 Golden Richard III。 Proteus:用于区块链的可扩展 BFT 共识协议。 2019. https://arxiv.org/abs/1903.04134。
[38] Stephen Boyd、Arpita Ghosh、Balaji Prabhakar 和 Devavrat Shah。随机八卦算法。 IEEE/ACM 翻译。 Netw., 14(SI):2508–2530, June 2006.
[39] Vlad Zamfir。容错共识协议的基本权衡。 https://twitter.com/vladzamfir/status/942271978798534657,2017 年 12 月。
[40] Ann Elizabeth Miller、James Litton、Andrew Pachulski、Neal Gupta、Dave Levin、Neil Spring 和 Bobby Bhattacharjee。发现比特币的公共拓扑和影响节点。 2015.
[41] 权在均. Tendermint:无需挖矿的共识。 2014. https://github.com/cosmos/cosmos/tree/master/tendermint。
[42] 伊桑·布赫曼。 Tendermint:区块链时代的拜占庭容错,2016 年 6 月。20
[43] Jae Kwon 和 Ethan Buchman。 Cosmos - 分布式账本网络。 2016. https://cosmos.network/cosmos-whitepaper.pdf。
[44] Cynthia Dwork、Nancy Lynch 和 Larry Stockmeyer。在存在部分同步的情况下达成共识。 J. ACM,35(2):288–323,1988 年 4 月。
[45] Miguel Castro 和 Barbara Liskov。实用的拜占庭容错和主动恢复。 ACM 跨。电脑。 Syst., 20(4):398–461, November 2002.
[46] Jean-Philippe Martin 和 Lorenzo Alvisi。快速拜占庭共识。 IEEE 跨。可靠的安全。 Comput., 3(3):202–215, July 2006.
[47] Dillkötter David。 ripple 协议共识算法。瑞波实验室公司,2014 年。