RR丨编译

信息来源自medium,略有修改,作者Ryan Sproule

Fuel Labs 正在构建一个新的执行层,用于扩展下一代区块链应用程序。FuelVM 被设计成模块化性质——它可以作为任何区块链的执行引擎。

FuelVM:一种基于UTXO的通用型执行引擎

介绍Sway和FuelVM

Fuel Labs正在构建一个新的执行层,用于扩展下一代区块链应用程序。FuelVM被设计成模块化性质——它可以作为任何区块链的执行引擎。首先,FuelVM将被部署为以太坊的第2层rollup,但在理论上,它可以作为L2甚至另一个L1部署在任何地方。FuelVM旨在扩展以太坊而不增加节点需求,而是通过从现有硬件中获得更多内容。

Fuel Labs还在为FuelVM构建一种名为Sway的新型DSL,用于编写合约。Sway受到了Rust和Solidity的启发,创建了理想的智能合约编程语言。

什么是FuelVM?

FuelVM是一个完全为执行智能合约而专门构建的定制虚拟机。Fuel VM从一开始就被设计成易于防欺诈,可以用作optimistic rollup的交易执行层使用。

FuelVM经过了优化,可以更好地利用硬件来提高交易执行的吞吐量。具体地说,它基于UTXO,并强制每个交易明确定义它将接触的UTXO。由于执行引擎可以准确地识别每个交易所触及的状态,因此它能够轻松地找到没有争议的交易并将其并行化。

为什么VM很重要?

在智能合约区块链系统中,VM是能够理解智能合约代码并根据该代码中定义的规则执行状态转换的系统。VM是智能合约区块链的操作系统。

到目前为止,智能合约VM还没有在以太坊提供的初始版本之外有什么迭代。目前所有广泛使用的智能合约链(Solana除外)都使用了与以太坊相同的VM:EVM。

目前,EVM是“足够好”的,因为扩展的主要瓶颈不是交易执行的速度,而是共识引擎可以支持的带宽(区块空间)。随着第二层扩展解决方案和Celestia、EIP-4844、Danksharding、EigenDA等DA解决方案的发展,将rollup交易数据发布到L1的成本将不再是主要制约因素。

在这个即将到来的带宽很便宜的环境中,下一个瓶颈将是计算吞吐量:在保持底层硬件需求足够低的情况下,系统能以多快的速度执行交易,以实现足够的去中心化。FuelVM的优势是在设计时就考虑到了这些未来因素,并能相应地进行优化。

FuelVM的差异化优势

执行+验证并行化

FuelVM的可并行虚拟机背后的秘密是其严格的访问列表——它要求用户指出他们的交易将涉及哪些合约。检查FuelVM中交易的确切组成是很有帮助的。

  • 输入:交易将触及的所有合约UTXO的列表+解锁UTXO或谓词脚本的数据。
  • 输出:定义将被创建的UTXO
  • Gas信息:Gas价格+Gas限制
  • 见证人:元数据+数字签名授权

这里的关键点是明确的“输入”列表,它列出了将要消耗的所有UTXO。这包括“特殊”合约UTXO。如果在执行任何代码之前,VM能够判断出交易将触及哪些合约,它就可以安全地并行执行所有其他无争议的状态访问交易。

FuelVM:一种基于UTXO的通用型执行引擎

▵交易执行和验证都可以利用并行性(验证的程度甚至更高)。

请注意,由于交易输出被明确包括在验证中,因此在断言另一个节点提出的区块是否正确的过程中,不需要按顺序执行重叠的交易。这意味着无论状态争用如何,验证都可以完全并行进行。在实践中,这意味着当节点与网络同步时,它们可以实现更大的并行化,并且可以更快地赶上。

原生资产系统

在EVM中,有一种原生资产:ETH。所有其他资产都是通过处理余额会计(ERC20)的智能合约实现的。在Fuel中,开发人员可以自由地在智能合约中实现资产,但是,有一个选项允许VM以本地方式处理这一点。

在余额管理方面,本地资产比起ERC20风格的智能合约有几个相当大的优势。首先,本原生资产的操作比智能合约中操作状态更便宜。这可以归因于它在较低级的原语中运行(UTXO系统被用来代替操纵存储)。其次,原生资产具有更好的用户体验,类似于发送ETH比发送ERC20简单得多(不需要设置审批)。

原生帐户抽象+谓词

帐户抽象一直是研究的热点话题,多年来以太坊社区在EIP (EIP-86、EIP-2938、EIP-3074、EIP-4337、EIP-5003)上进行了多次尝试。实施和升级以太坊以支持帐户抽象是困难的,这主要是因为核心团队的工程带宽/技术债务加上相关的复杂性,以及一长串更高优先级的项目。许多rollup从一开始就有机会在其新颖的执行环境上实施账户抽象。FuelVM就是其中之一,除了原生账户抽象之外,它还将包括一个有趣的新原语:谓词。

FuelVM:一种基于UTXO的通用型执行引擎

谓词是一个纯粹的(不访问状态)合约脚本,它只返回一个布尔值(true或false)。UTXO可以被锁定在一个谓词后面,所以只有当谓词中定义的条件被满足时,它们才能被使用。这带来了一个有趣的UX机会,用户可以将交易设置为只在某些条件下执行,然后一旦满足谓词,他们的交易就可以自动执行。此外,谓词在被销毁时可以被删减,因此它们不会导致状态膨胀。

简单的演示示例:用户设置一个交易,只要价格满足谓词中定义的阈值,就购买X个代币。瞧,pièce de résistance,完全链上的无信任限价订单,不会使状态膨胀!

多维资源定价

资源定价是智能合约区块链最关键的组成部分之一。通过将链上的资源需求保持在合理的、负担得起的水平来维持去中心化。资源定价允许系统向用户收取网络中节点的“工作”的费用。

在EVM中,引入EIP的最常见原因之一是操作码的重新定价。这是因为操作码具有硬编码的Gas价格,而资源的基础价格并不按比例扩展(从历史上看,CPU的改进比SSD更快)。理想情况下,这些系统能够完全独立地为每个资源定价,这样整个收费系统就可以根据底层硬件系统的变化进行动态调整。

FuelVM将能够实现动态的多资源定价,这可以激励节点运行者更好地优化其底层硬件,同时仍然最大优化“每区块效用”。

FuelVM:一种基于UTXO的通用型执行引擎

这张图演示了智能合约的需求明显高于其他智能合约的情况。有了本地化的资源定价,其他合约就不会受到相同程度的影响。NFT空投便是一个很好的例子。这与资源定价与合约定价(Solana风格)并不完全相同,但效果非常相似。具有特定资源配置文件的智能合约与其他合约的定价不同。对于NFT空投的示例,热合约可能具有一个存储密集型但计算成本非常低的资源配置文件。相对于存储而言,对计算量要求较高的智能合约不会受到嘈杂的NFT空投的影响。

Solana打破帐户或合约收费市场的策略在实际基础资源和对它们的需求之间增加了一层抽象。这意味着仍然可能存在费用非常低,但节点上的压力非常大的情况。例如,由于一个事件(例如,许多不同的NFT同时被铸造),系统上的存储负载可能非常高,但费用非常低,因为不是所有的流量都发生在一个帐户上。每个帐户的费用模型确实解决了帐户的热分区问题,但留下了系统无法正确定价底层资源的情况,因此它仍然可能导致失败。

基于底层硬件资源为系统定价更简洁、更准确,而不是试图添加基于多个市场的资源定价的帐户这种特定于网络的抽象层。

状态膨胀注意事项

正如geth团队多次提到的,geth目前的瓶颈在于状态读写的I/O。最初的想法是,100%的Merkle Patricia trie(MPT)状态将适合于标准设备的RAM。现在的情况已经不同了,因为状态已经增长到900多GB,并且预计每年将增长大约50-100 GB,这对于任何一个人来说都是不合理的,所以大多数节点已经转向SSD来存储状态。从历史上看,SSD的不会随着状态大小的增长而迅速改进,因此这种成本将继续影响网络的去中心化。这是以太坊研究人员讨论了一段时间的一个关键问题。

相反,FuelVM在构建时就考虑到了这个问题。Fuel Labs的联合创始人John Adler曾多次谈到资源定价在智能合约消耗状态或其他资源的过程中所扮演的角色。通过将适当的资源定价和更清晰的数据模型与UTXO系统相结合,FuelVM将能够保持状态处于控制之下,降低运行节点的成本,这相当于增加了网络的去中心化。

“排序器”的去中心化

尽管第2层允许我们从主链上卸载计算工作,但他们仍然需要提供一种机制来排序交易。许多第2层解决方案都是使用所谓的“排序器”启动的。排序器是一个特权节点,负责对交易进行排序,执行状态转换,然后将状态根更新连同压缩的交易信息提交给第一层以太坊。值得注意的是,一台负责排序的超级计算机比许多冗余地执行相同交易序列的小型计算机在每个epoch可以执行更多的交易。

这种中心化排序角色中有几个关键问题需要得到更多的关注!

控制交易的顺序是非常有利可图的。我们在以太坊和其他区块链中观察到,MEV是那些排序区块的人的主要收入来源之一。正如我们今天在传统金融中看到的那样,单方控制排序和MEV捕获最终会导致用户执行能力的下降。

从可用性和监管的角度来看,中心化的排序器可能是一个单点故障。如果一个或少数组织正在运行排序器,它们可能会瘫痪或被关闭。这对网络来说是一个活生生的风险。

一个中心化的排序器可以审查第二层的交易。排序器可以选择任何交易,并在构建区块的过程中以任何顺序放置它们,这就产生了审查的能力。许多L2通过提供“强制交易”机制来处理这种情况,这种机制允许用户绕过排序器,通过利用L1直接包括交易。

排序器可能会对rollup用户做出不一致的链状态承诺。这通常被称为equivocation,这基本上意味着排序器可以对L2的某些状态做出误导性的承诺。这是因为,rollup的快速终结是一个可信的步骤,一个排序器可能滥用这种信任,导致用户做他们不打算做的事情。

Fuel如何解决这些问题?

首先,Fuel不只是一个rollup或L1区块链,相反,它是一个应用状态转换的系统,如果配置为rollup或者作为L1在网络中运行以实现共识,它可以将状态转换发布到L1。关键的区别在于,Fuel的执行引擎并不关心共识或交易排序。Fuel只负责尽可能快地应用交易。但是,由于Fuel可以在如此轻量级的硬件上运行,而且验证是如此便宜,Fuel可以引导一个多样化和去中心化的共识网络,这比运行性能较差的执行引擎(如EVM)的同等系统要便宜得多。

此外,Fuel团队正在考虑将去中心化、MEV和其他考虑因素结合在一起的第二层代币经济学。Fuel联合创始人John Adler在1月份写了一篇关于第二层区块链的代币模型的文章,阐述了一种通过允许rollup通过作为区块生产者收取费用的权利来代币化区块空间的稀缺性,从而帮助去中心化区块生产的代币设计。收费只是区块生产者收入的一部分,正如我们在其他链中看到的,MEV是收入的另一大部分。与区块空间的稀缺性类似,MEV收入也将通过区块生产权进行被代币化。

状态模型:UTXO vs基于帐户

将UTXO数据模型和账户模型之间的区别概念化的最佳方法如下:UTXO可以被比作现金账单,而账户模型更类似于银行分类账。帐户系统自然会导致状态膨胀,因为每个交易都试图访问同一个帐户,而UTXO如果设计正确,则争议较小。这一特点使其能够更好地实现并行化,也可以通过简化状态截断的过程来防止状态膨胀。

FuelVM:一种基于UTXO的通用型执行引擎

继续使用现金vs.银行分类账的比喻,就可以清楚地了解为什么使用UTXO并行化会容易得多。两笔现金交易可以同时发生,它们彼此不需要知道任何信息,而如果一个分类账上有2个账户更新,则两笔交易都必须更新同一个共享分类账。

VM大战

除了Fuel之外,其他团队也在为智能合约区块链开发下一代虚拟机,如Mysten Labs和Aptos,后者正在使用最初由Facebook工程师设计的Libra项目的一部分的MoveVM。这进一步支持了这样一个论点:为了支持下一代区块链应用,需要新的执行环境。所有这些项目都有有趣的方法,并做出了不同的权衡。

在MoveVM停滞不前的几年里,当Libra忙于打官司时,加密货币世界发生了很多变化。Fuel能够适应这些变化并在一个节奏极快的行业中保持敏捷,而Move则略微落后。尽管如此,由于Move已经从Facebook分离出来,新的大型融资轮已经完成,他们肯定已经准备好开战了!

结论

与其他L2不同,Fuel计划从一开始就通过设计VM来去中心化排序器角色,这样就不需要昂贵的硬件来增加规模。

Fuel是灵活的。它可以部署在许多环境中,但其优先考虑的是作为与以太坊对齐的Optimistic Rollup。

Fuel的用户体验将比EVM好得多,因为它采用了原生和新颖的方式与链交互,例如账户抽象、脚本和谓词。

UTXO数据模型的争议自然比帐户数据模型小,并且会带来更多的并行性和更少的状态膨胀。