Linera:什么是并行执行 以 Aptos、Sui、Linera 和 Fuel 为例给你讲透_Christmas BNB

来源:老雅痞

本文旨在通过Aptos、Sui、Linera和Fuel来阐明并行执行技术的原理,以及这些项目之间的异同和面临的挑战。

当观察区块链技术的发展时,我们可以看到一个强大的趋势,即新的L1侧重于并行执行。这一想法并不新鲜,比如目前在Solana的Sealevel执行环境中就使用了并行执行。然而,上一轮牛市中,DeFi和NFT令人印象深刻的表现表明了对改进的迫切需求。目前采用并行执行理念的一些知名项目有Aptos、Sui、Linera和Fuel。

本文讨论了这些项目之间的异同,以及它们面临的挑战。

问题所在

智能合约平台能够创建广泛的去中心化应用。为了执行这些应用,需要一个共享的计算引擎。网络中的每个节点都会运行这个计算引擎,并执行应用程序以及用户与应用程序的交互。当节点从执行中得到相同的结果时,他们就会达成共识,并推动链的发展。

以太坊虚拟机是最主要的智能合约(SC)执行引擎,有大约20种不同的实现方式。自从EVM发明以来,它已经被开发人员广泛采用。除了以太坊和以太坊的L2外,Polygon、BNBSmartChain和AvalanchecChain等其他几个链都采用了EVM作为执行引擎,并致力于改变共识机制以提高网络吞吐量。

EVM的一个主要限制特性是顺序的顺序执行。EVM本质上每次执行一个交易都会将所有其他交易置于暂停状态,直到交易执行完成,区块链状态被更新。即使两个交易是独立的,例如,从Alice到Bob的付款和从Carol到Dave的另一个付款,EVM也不能并行执行这些交易。虽然该执行模式允许使用闪电贷等有趣的用例,但它既不高效,也不可扩展。

交易的这种顺序执行是网络吞吐量的主要瓶颈之一。首先,它导致区块中的交易执行时间变长,从而限制了区块时间。此外,它还限制了可以添加到区块中的交易数量。以太坊的平均吞吐量约为17tx/秒。这种低吞吐量意味着在高活动时期,网络矿工/验证者不能处理所有的交易,并会引发确保交易优先执行而推高交易费用的费用竞标战。以太坊的平均费用在某些点超过0.2ETH(约800美元),让许多用户望而却步。顺序执行的第二个问题是网络节点的低效。顺序指令的执行不能从多核处理器中受益,这会导致硬件利用率低,效率低下。这阻碍了可扩展性,并导致了不必要的能源消耗。

并行执行可以解决这个问题?

EVM结构的基本限制为专注于并行执行(PE)的L1新领域奠定了基础。并行允许在多个处理器核心之间划分交易处理,提高了硬件利用率,从而实现了更好的可扩展性。在高吞吐量链中,硬件资源的增加与可执行的交易数量直接相关。在高频活动期间,验证者节点可以委托更多的核心来处理额外的交易负载。计算资源的动态扩展允许网络在高需求时期实现更高的吞吐量,从而显著改善用户体验。

这种方法的另一个优点是改善了交易确认延迟。节点资源的动态扩展使低延迟确认交易成为可能。交易不需要等待数十或数百个区块,也不需要支付过多的费用来确定优先级。确认时间的改进提高了交易的最终确定性,为低延迟区块链打开了大门。保证执行交易的低延迟可以实现以前不可能实现的几个用例。

改变链的执行模式,以允许PE并不是一个新想法,已经有一些项目已经对此进行了探索。一种方法是将EVM使用的会计模型从帐户模型替换为未支出交易输出(UTXO)模型。比特币就使用了UTXO执行模型,它允许并行处理交易,这使其成为了支付的理想选择。由于UXTOs的功能有限,因此需要扩展来实现智能合约所需的复杂交互。作为示例,Cardano为此使用了一个扩展的UTXO模型,Findora使用了一个实现了两种会计模型,并允许用户在其间进行更改资产类型的混合UTXO模型。

PE的另一种方法并不改变账户模型,而是专注于改进链状态的架构。这种方法的一个例子是Solana的Sealevel?框架,本文主要讨论后一种方法。

并行执行是如何运作的

并行执行的工作原理是识别独立的交易并同时执行它们。如果一个交易的执行会影响另一个交易的执行,那么两个交易是相互依赖的。例如,同一个池中的AMM交易是相互依赖的,必须按顺序执行。

虽然并行处理的概念很简单,但问题在于细节。其主要的挑战是有效地识别“独立”的交易。分类独立交易需要理解每个交易如何更改区块链内存或链状态。与同一个智能合约交互的交易可以同时改变合约状态,因此不能同时执行。在目前应用程序之间的可组合程度下,识别依赖关系是一项具有挑战性的任务。

识别独立交易

本节中将比较不同的并行执行引擎所使用的方法。讨论的重点是控制状态(内存)访问的方法。区块链状态可以被看作是RAM存储器。每个链上账户或智能合约都拥有一系列可修改的存储位置。相互依赖的交易是那些试图改变同一区块中相同内存位置的交易。不同的链使用不同的内存架构和不同的机制来识别依赖交易。

这个类别中的几条链都建立在Facebook已经砍掉的区块链项目Diem所开发的技术之上。Diem团队创建了智能合约语言Move,以专门改善SC的执行。Aptos、Sui和Linera是属于这一类别的三个备受瞩目的项目。除了它们之外,Fuel是另一个专注于PE的知名项目,它使用自己的SC语言。

Aptos

Aptos构建在Diem的Move语言和MoveVM之上,创建了实现并行执行的高吞吐量链。Aptos的方法是检测依赖关系,同时对用户/开发者透明,也就是说不要求交易明确声明它们使用的是哪一部分状态(内存位置)。Aptos使用了软件交易内存(STM)的一种称为Block-STM的修改。在Block-STM中,交易在区块中被预先排序,并在执行期间在处理器线程之间进行划分,以便optimisticexecution。在执行中,交易的执行被假定没有依赖关系。被交易修改的内存位置会被记录下来。执行之后将验证所有交易结果。在验证期间,如果发现一个交易访问了被前一个交易修改过的内存位置,该交易就会被宣布无效。交易结果将被刷新,然后重新执行交易。这个过程重复进行,直到区块中的所有交易都被执行。当使用多个处理器核心时,Block-STM可以提高执行速度。该速度取决于交易之间的相互依赖程度。Aptos团队的结果显示,使用32个核心可以将速度在高度相互依赖的情况下提高8倍,在低相互依赖的情况下提高16倍。如果一个区块中的所有交易都是相互依赖的,那么与顺序执行相比,Block-STM的性能损失会更小。Aptos公司声称,这种方法可以实现160,000TPS的吞吐量。

Sui

另一种PE方法是要求交易明确声明他们修改了链状态的哪些部分。目前Solana和Sui使用了这种方法。Solana将内存单元称为账户,而交易必须说明它修改了哪些账户。Sui也使用了类似的方法。

Sui还利用MoveVM构建在了Diem的技术之上。然而,Sui使用了不同版本的Move语言。SuiMove的实现改变了Diem的核心存储模型和资产权限。这代表了它与使用核心DiemMove的Aptos的主要区别。SuiMove定义了一个状态存储模型,使识别独立交易更加容易。在Sui中,状态存储被定义为对象。对象通常代表资产,并且可以被共享,这意味着多个用户都可以修改一个对象。每个对象在Sui执行环境中都有一个惟一的ID,并具有指向所有者地址的内部指针。通过使用这些概念,很容易通过检查交易是否使用相同的对象来识别依赖关系。

通过将声明依赖关系的工作转移给开发者,执行引擎的实施变得更加容易,这意味着理论上它可以拥有更好的性能和可扩展性。然而,这样做的代价是开发人员体验不够理想。

Sui还没有上线,该项目最近刚刚上线了他们的测试网。Sui的创始人声称,并行执行的实现以及Narwhal&Tusk共识机制的使用可以让吞吐量超过10万tx/秒。如果这是真的,比起Solana目前约2400tx/秒的吞吐量,Sui将有一个巨大的提升,并将超过Visa和万事达的吞吐量。

Linera

Linera是并行处理领域的最新成员,他们最近宣布了由a16z领投的第一轮融资。关于项目实施的细节并不多。然而,根据他们的融资公告,我们知道它基于同样在Facebook开发的FastPay协议。Fastpay基于一种叫做ByzantineConsistentBroadcast的技术。这项技术专注于加速独立支付,比如发生在销售点网络中的支付。它允许一组验证者确保支付的完整性,只要其中三分之二以上是诚实的。Fastpay是银行和金融机构网络中使用的实时总结算(RTGS)系统的变体。

Linera计划在FastPay的基础上建立一个区块链,通过并行执行支付交易,专注于快速结算和低延迟。值得注意的是,Sui也使用了ByzantineConsistentBroadcast方式进行简单支付。对于其他交易,Sui使用自己的共识机制Narwhal和Tusk来高效地处理DeFi交易等更复杂和具依赖性的交易。

Fuel

Fuel致力于成为模块化区块链堆栈中的执行层。这意味着Fuel不实施共识,也不将区块链的数据存储在Fuel链上。对于一个功能性的区块链,Fuel与其他链(如以太坊或Celestia)进行交互,以获得共识和数据可用性。

Fuel使用UTXO创建严格的访问列表,用一个列表来控制对同一片状态的访问。该模型建立在经典交易排序的概念之上。在这个方案中,区块中的交易排序大大简化了交易之间依赖关系的检测。为了实现这个架构,Fuel构建了一个名为FuelVM的新虚拟机和一种名为Sway的新语言。FuelVM是EVM的兼容和简化的实现方式,它可以有效地引导开发人员进入Fuel生态系统。此外,由于Fuel专注于模块化区块链堆栈,FuelSC的执行可以在以太坊主网上进行。这种方法与以太坊在合并后作为一个以rollup为中心的结算和数据可用层的愿景一致。

作为一种概念验证,Fuel团队创建了一个名为SwaySwap的Uniswap风格的AMM,目前它正在测试网上运行,以证明与EVM相比,FuelVM的性能有所提高。

并行执行方法的挑战

并行执行方法看起来合乎逻辑且简单明了。然而,还有一些挑战需要讨论。首先是要估计可以使用这种并行执行加速的交易的实际比例。第二个挑战是网络的去中心化,也就是说,如果验证者可以轻易扩展计算能力以提高吞吐量,那么经常使用商品硬件的完整节点如何跟上以确保链的正确性?

可并行交易的百分比

准确估计可并行执行的链上交易的百分比是一个挑战。此外,根据网络活动的类型,这个百分比在不同区块之间可能会有很大的变化。例如,一个NFT铸币活动可能会导致依赖交易剧增。也就是说,我们可以使用一些假设来获得可并行交易平均百分比的粗略估计。例如,我们可以假设大多数ETH和ERC20传输是独立的。因此,我们可以假设约25%的简单ETH和ERC20转账是相互依赖的。另一方面,同一个池中的所有AMM交易都是相互依赖的。考虑到大多数AMM通常由少数池主导,而且AMM交易具有高度的可组合性,并与多个池交互,我们可以安全地假设至少50%的AMM交易是相互依赖的。

通过对以太坊的交易类别进行一些分析,我们可以发现在以太坊约120万笔的日常交易中,有20-30%是ETH转账,10-20%是稳定币转账,10-15%是DEX转账,4-6%是NFT交易,8-10%是ERC20审批,12-15%是其他ERC20转账。通过使用这些数字和假设,我们可以估计PE可以加速SC平台上大约70-80%的交易。这意味着依赖交易的顺序执行可能占所有交易的20-30%。换句话说,如果使用相同的gas限制,PE吞吐量可能会提高3-5倍。关于构建并行执行EVM的一些实验也显示了类似的估计。在实践中,高吞吐量链将通过使用更高的每区块gas限制和更短的区块时间来以实现至少比以太坊提高100倍的吞吐量。增加的吞吐量需要强大的验证者节点来处理这些区块。这一需求导致了网络集中化的问题。

网络集中化

对并行处理的另一个常见批评是,它极大地推动了网络的集中化。在高吞吐量网络中,网络每秒可以处理数以万计的交易。验证者节点受到费用和网络奖励的激励来处理这些交易,并投资于专用服务器或可扩展的云架构来处理这些交易。而对于使用该链并需要运行完整节点与链交互的公司或个人来说,情况就不一样了。这些实体无法负担复杂的服务器来处理如此庞大的交易负载。这将推动链上用户依赖于Infura等专门的RPC节点供应商,从而导致更多的集中化。

如果不选择使用消费级硬件来运行整个节点,高吞吐量链可能会变成一个封闭的系统,其中一小群实体对网络拥有绝对的权力。在这种情况下,这些实体可以协调审查交易、实体甚至应用程序,从而将这些链转变为与Web2没有区别的许可系统。

目前,在Sui测试网上运行全节点的要求低于Aptos测试网节点。然而,我们预计当主网启动、应用程序开始出现在链上时,这些需求将发生重大变化。去中心化的倡导者一直在提出解决这些预期问题的方案。其中解决方案包括使用轻型节点,通过zk有效性证明或欺诈证明来验证区块的正确性。Fuel团队在这方面非常积极,并在去中心化的重要性上与以太坊社区的理念达成了一致。Aptos和Sui团队还未清晰表明执行这些方法的优先次序或其他促进去中心化的方法。Linera团队在他们的介绍文章中简要地讨论了这些问题,但协议的实施尚未证实这一承诺。

结论

并行执行引擎有望改善智能合约平台的吞吐量。通过结合共识机制的创新,交易的并行执行可以使链的吞吐量接近或超过100kTPS。这样的性能可以与Visa和Mastercard相媲美,从而可以实现完全的链上游戏和去中心化小额支付等目前具有挑战性的几个用例。这些令人印象深刻的改进面临着如何确保去中心化的挑战。我们期待着致力于解决这些问题的创始人。

信息来源自AllianceDAO,略有修改

作者:MohamedFouda

编译:RR

来源:金色财经

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

大币网

[0:0ms0-5:531ms