Fuel - 快速执行层

  • maven11
  • 发布于 2022-05-21 19:42
  • 阅读 31

本文深入探讨了Fuel作为模块化执行层的独特性与优势,强调其并行交易执行能力以及基于UTXO的交易设计。文章详细介绍了执行层的定义、与其他协议的区别,以及Fuel如何在以太坊和其他数据可用性协议中提供高吞吐量和复杂合约的执行。通过比较现有的乐观滚动和零知识滚动,文章揭示了Fuel在未来模块化区块链中的定位和重要性。

前言

Fuel 是我们所接触的最有趣的执行环境,我们为能支持 Fuel 感到自豪。Fuel 将自身定位为快速执行层,旨在为大多数区块链今后提供所需的全球规模扩展,以适应更灵活的模块化未来。此外,它充分利用了模块化为开发者提供的灵活性,因为它并不重复 EVM。在本文中,我们将探讨 Fuel 的独特之处,以及他们如何努力为用户、开发者和区块生产者提供最佳体验。如果你对在 Fuel 上构建感兴趣,请随时与我们联系,我们非常乐意听取你的意见。

执行层简介

在我们上一篇文章 中,我们详细讨论了 Celestia 所支持的独特功能。我们还提及了各种模块化协议及其架构。因此,在这篇文章中,我们将看看另一种类型的模块化协议。这不是一个 Enable 构建集群的模块化数据可用性层,而是一个模块化执行层。

那么,什么是执行层?执行层是一个链,仅处理交易执行,同时将区块链的其他功能委托给其他链,如共识/数据可用性和结算。执行层的一个例子是在以太坊上当前实施的 Rollup,如 Arbitrum 和 ZKSync。那么,这与结算层有什么不同呢?结算层也是一个执行环境,但它具有信任最小化的桥接合约,Rollup 使用这些合约提供统一的流动性。这些 Rollup 还将其各种证明和区块头发送至结算层,后者充当 Rollup 的真实来源。

如果你不确定什么是 Rollup,那么让我们快速解释一下。Rollup 是一种从主层 (通常是以太坊) 进行链下操作的扩展解决方案。该解决方案在线外执行交易,这意味着它不必争夺宝贵的区块空间。在执行交易后,它将一组交易数据或执行证明发送至 L1,在那里进行结算。因此,Layer2 扩展解决方案获得与同一Layer1 的安全措施相同的安全性,因为数据可用性层或结算层充当 Rollup 的真实来源。

以太坊上的乐观 Rollup 和 ZK Rollup

Rollup 主要有两种类型(当然也有其他类型的 Rollup)。这两者分别是 ZK Rollup 和乐观 Rollup。乐观 Rollup 默认假设交易有效(这就是其名称的来源)。但是,在恶意或错误交易的情况下,会生成欺诈证明并发送到 L1,以将其回滚,而交易提议者将被处罚。零知识 (ZK) Rollup 也在线外运行复杂计算,通过电路提供有效性证明(snarks、starks、plonks、kimchi 等)。这个有效性证明被发布到 L1,以显示 Rollup 正确地执行了交易,而实际上并未发布交易数据本身。

模块化执行层

现在我们已经明确了什么是执行层,以及各种现有 Rollup 扩展解决方案的工作原理,让我们看看什么是模块化执行层。Fuel 将模块化执行层定义为 一套用于模块化区块链堆栈的可验证计算系统。 那么,实际上这意味着什么呢?这意味着 Fuel 是一个能够利用懒惰/模块化区块链进行数据可用性的区块链执行环境。此外,“可验证计算”部分指的是具备欺诈或有效性取证的灵活性。

请注意,数据可用性证明是指发送到结算层合同的 DA 证明 —— 通过 Celestiums 通过 Gravity Bridge 或启用了 IBC 的链。

为什么 Fuel 和许多人一样,正在远离单体设计原则呢?

在单体区块链上严重拥堵时,L2 或 Rollup 的交易成本会激增。最近 Yuga Labs 的 Otherside 地块销售是这一现象的一个例子,导致 L2 的交易成本甚至达到了双位数,因为必须在单体链上结算交易。这仅仅是 Fuel 希望远离将共识、数据可用性和执行相结合的单体设计原则的原因之一。Fuel 希望提供的执行将通过以太坊的 Rollup 中心路线图以及其他模块化协议(如 Celestia)提供的数据可用性和共识来实现。因此,由于不受单体实体的阻碍,Fuel 能够专注于执行层,从而大幅提高执行能力。Fuel 脱颖而出的是他们正在努力通过自身独特的虚拟机、交易设计和特定领域语言提供快速的吞吐量和复杂的智能合约。他们通过为区块链的未来进行优化,使数据可用性的容量不再是瓶颈。

Fuel

如前所述,Fuel 一直是以太坊的 Layer-2 协议,但也在努力成为模块化未来的首选执行层。Fuel 成为首选位置的策略是提供与以太坊风格兼容的智能合约交易的高吞吐量。

它们仍然是乐观 Rollup。然而,Fuel 与现有的乐观 Rollup相比设计极具独特性。这种独特来自于其基于 UTXO 的设计,允许并行交易执行,后面我们会深入讨论。Fuel 还将实现操作节点接受 ETH 以外的其他代币作为交易费用的能力(如果他们愿意的话)。这是通过允许节点设置非主池来实现的,在非主池中,费用以节点希望接受的代币支付。

由 Fuel 节点操作的不同内存池,可以选择接受各种代币作为最终用户支付的费用

让我们深入探讨并分析 Fuel 的工作原理。

乐观 Rollup

Rollup 的工作方式是任何人都可以在链下构建区块,然后将其作为 calldata 提交给以太坊(我们对此严重缺乏,因此开发了 Blob 交易,并最终向 Sharding 迁移)。这是通过一个 Rollup 合约来实现的,该合约跟踪以太坊上的 Rollup 区块头。在乐观 Rollup 的情况下,可以提交欺诈证明并回滚链,烧毁约定金额并奖励欺诈证明者。

现在,让我们看看 Rollup 节点如何操作,无论是在链下还是与以太坊之间的协同状态。

Fuel 的操作节点

Rollup 用户通过你正在使用的 Rollup 侧的任何 dApp 向 Fuel 节点发送交易。客户端/序列器会将交易汇总到一个 Fuel 区块,然后将其发送给以太坊,以确认该区块。客户端还处理来自以太坊的存款,我之前称之为桥接合约,这使 Rollup 与以太坊之间的流动性得以统一。

那么,Fuel 的欺诈证明是如何工作的,以确保没有恶意行为呢?

一旦欺诈证明提交给 Rollup 合约,它需要经过验证,以检查其格式是否正确。这是为了确保证明未被恶意发送。因为如果情况是这样,合法的区块可能由于不正当的欺诈证明而被还原。证明验证器合约会验证欺诈证明的格式及有效性,如果有效,则处理该证明以惩罚违规的 Rollup 区块。

这个方案的独特之处在于不需要状态序列化。这是计算状态的 Merkle root 的行为(在我们之前的文章中覆盖过)在每个交易或区块之后。由于 Fuel 使用 UTXO,因此交易不需要按顺序执行。这是因为你可以在最后检查每个计算出的输入是否曾经未花费且唯一。因此,交易能够同时发生,无需排序。

基于 UTXO 的交易和账户设计

UTXO 是未花费交易输出,是比特币使用的交易数据模型。UTXO 表示某个账户可以被他人支出的 N 数量的币/代币。UTXO 利用公钥来识别和转移持有的所有权。UTXO 地址由一个具有相关私钥的公钥格式化,允许在特定账户上支出。这使得可以有原子数量的代币或状态,由花费者控制。

比特币的 UTXO 模型

在简化模型中,每个 UTXO 有两个字段:1. 币的数量,以及 2. 定义拥有者的脚本哈希。合约 UTXO 具有四个字段,1. 币的数量,2. 合约 ID,3. 合约代码哈希以及 4. 存储根,——这与普通的账户合约非常相似。请注意,与非合约 UTXO 不同,合约没有定义的拥有者,类似于以太坊上的合约。由于每个合约 UTXO 除了其 UTXO ID 外,还由其合约 ID 唯一标识,因此每个合约可以通过引用合约 ID 在单一块中多次使用。

使用 UTXO 的原因在于它可以启用一个极其强大的特性,即并行交易执行。这是因为交易彼此间没有相互依赖,因此能够并行执行。虽然之前也尝试过,但这依赖于用户在签字余出支出交易的效果,从而导致争用。然而,通过不强迫用户签署每个交易效果,可以使执行变得更加流畅。由于 UTXO 交易的原子特性定义了交易将去往的每个状态区域,因此 Fuel 上的节点可以确定哪些交易没有相互依赖,并因此并行执行它们。

这显然使得 Fuel 极具独特性,因为没有其他乐观 Layer-2 使用基于 UTXO 的交易系统。然而,这也是他们的优势,因为它可以实现并行交易验证,相比于基于账户的 Rollup 提高可扩展性。

那么,使用基于 UTXO 的交易系统为什么具有如此大的可扩展性呢?这是因为每个交易可以支出和处理多个输入和输出。

每个交易中都可以包含多个输入和输出,得益于使用 UTXO 基础交易模型

因此,Fuel 可以执行原子多用户交易,为 Fuel 之上的 dApp 解锁了全新的可能性。在 Fuel 上,基于 UTXO 的系统中的每个输入仅被产生和消耗一次,这意味着 Rollup 链的状态以键值的形式存储。

由于根据 UTXO ID 计算状态元素是确定性的且无状态的,因此一旦被消耗,它也允许长链和“树”的预签署交易。

可用于多种 ID 的预签署交易“树”

结果,由于状态数据库首次需要仅检查是否存在已消费的元素,因此在用户和交易之间可以实现有趣的可能性和交互。

与比特币类似,你不是像拥有账户一样控制原子数量的每种币/代币/状态,而是由花费者控制的原子数量。这些状态元素可以代表不同的资产,例如允许 ETH 和 ERC-20 代币。此外,由于 Fuel 的各种支出条件,你可以创建 HTLC 输出(允许一种加密货币与另一条链上的某数量加密货币进行交易),例如这将允许 Fuel 与以太坊之间进行即时提现。这是通过流动性提供者 (LPs) 实现的,可以为希望快速提现的用户提供流动性,当然需要支付一定费用。然而,如果他们在执行提款前完全验证 Fuel 区块,则不存在系统性风险。

总结一下基于 UTXO 的设计的独特之处:

  1. 并行交易验证

  2. 在不需要状态序列化的情况下创造独特的欺诈证明

安全性

区块链的安全性可以定义为攻击网络历史的成本。在大多数情况下,令攻击网络的成本变得禁止性昂贵的做法,即可确保其安全性——加密经济安全性。

对于 Layer 2,如 Fuel,Rollup 必须在状态活性和状态安全方面保持无信任。这种情况适用于以太坊的大多数 Rollup,因为它们继承了以太坊本身的安全性,因此信任最小化。此外,还有人们口中的“去中心化”,通常通过运行全节点的成本来衡量(如果成本过高,会导致网络的去中心化出现问题)。这通常是为什么我们不增加区块大小。最后,参与 Rollup 生态系统必须是无权限的,这正是 Rollup 的桥接合约在以太坊上所实现的。

基础安全性由 Layer 1 提供,提供数据可用性等功能。

Fuel 的三大支柱

Fuel 的路线图和理念是一个专注于未来的执行层——模块化未来。这体现在他们专注于为以太坊和其他数据可用性解决方案提供最佳执行层。Fuel 设计的三大支柱是:

  1. 并行交易执行

  2. Fuel 虚拟机(FuelVM)

  3. 优越的开发者体验(采用 Sway 和 Forc)

并行处理(执行)

并行交易处理通过 Solana 的 Sealevel 运行时得到了极大推广,它对传入交易进行排序,以便通过多个核心并行运行,这意味着它们不会影响 VM 内存中的相同状态。这是因为 Solana 的交易描述了交易执行时所读取或写入的所有状态——类似于 UTXO——从而支持并行处理。Solana 像以太坊一样,采用基于账户的结构。然而,与以太坊不同的是,每个节点确保多次访问的账户仅在一个队列中按顺序列出。

那么,如 Fuel 这样的 Rollup 如何受益于这个设计呢?它之所以能够以 UTXO 模型并行执行交易,因此 Fuel 有可能利用 CPU 更多的线程和核心,而这些在单线程区块链中通常是处于空闲状态的。结果,Fuel 可以提供比以太坊其他 Rollup 更高的计算和交易吞吐量。

FuelVM

FuelVM 是 Fuel 上用于通过 Sway 语言构建各种应用程序和智能合约的虚拟机,我们稍后将深入讨论。在 FuelVM 中,交易是通过 UTXO 进行的,如前所述。每个输入都被销毁并创建输出。虚拟机基本上是一台状态计算机,允许智能合约相互交互。它还指定了更改每个 Fuel 性质的规则。如果你对 FuelVM 的工作原理感兴趣,并希望开始在 Fuel 上构建,可以查看GitHub,其中包含开发者所需的所有信息。

Sway 编程语言

Sway 是用于在 Fuel 上构建智能合约和应用程序的语言。它在很大程度上基于 Rust,这是一个在区块链应用程序集建设方面已相当流行的语言(主要用于 Cosmos 生态系统以及 Solana 和 Near)。Sway 针对 FuelVM 进行了优化,并拥有名为 Forc(Fuel orchestration,读作“fork”)的工具链。Forc 提供开发者可以在 FuelVM 内使用的工具和命令。你可以将 Forc 与 Cargo 进行比较,后者是 Rust 的构建系统。这意味着 Rust 开发者学会 Sway 后,极为简单,能够在 Fuel 上开始构建。Sway 还拥有 vscode 插件,因此非常容易启动。此外,Rust(一种 Sway 的 DSL)每年都被开发者评选为最受热爱的编程语言,也是最流行的编程语言之一。

L2 代币经济

为了更好地理解 Fuel 如何试图改变当前 Rollup 的工作方式,了解他们对 Rollup 的代币经济学观念非常重要。Rollup 的代币经济显然与众不同,因为你仍然依赖以太坊进行结算、获得统一流动性和继承安全性。Fuel 讨论了三种应该避免用于 Rollup 的主要代币模型(但可能适合其他系统,如侧链)。它们是:

  1. 一种权益证明模型,其中验证者可以审查新的 Rollup 区块,而这一点并不必要,因为你继承了以太坊的安全性。许多 Rollup 试图采用这种方式,进行链下数据可用性操作,例如 ZKSync。

  2. 一种模型,其中需要使用原生代币支付手续费,从而将其与以太坊绑定。然而,Rollup 节点仍然需要持有以太坊以进行结算。这只是为使用该协议的用户增加了更多的用户体验障碍。例如,一个采用此路径的 Rollup 是 Obscuro。

  3. 一种治理代币,提供对 Rollup 合约的控制,这可能会受到加密经济攻击。

Fuel 认为哪种模型是未来之路呢?

Rollup 的区块空间是有限资源,就像在以太坊上一样。然而,Rollup 的区块空间与以太坊的区块空间截然不同。这个执行空间是稀缺的,正如以太坊的区块空间一样,但它独立存在,同时由你依赖的基础层的数据可用性进行相关。因此,Fuel 看到一种未来,即这种执行能力可以被代币化,但不会让代币的使用增加最终用户的费用或摩擦。那如何对块空间进行代币化呢?

你可以通过给予代币持有者集矿费用的权利来代币化块空间的稀缺性。这将代币需求转移到对能收取未来区块空间费用的区块生成者那里。这样,最终用户可以使用任何该区块生产者想要接受作为费用的代币,如本文前面所述。此外,通过使用对收取费用权利的稀缺性进行代币化的模型,可以去中心化区块生产。这意味着 Rollup 的节点运营商将抵押代币,有权生成区块并从最终用户那里获得费用,进而为代币创造市场——但不要求最终用户使用该特定代币。这意味着代币用于领导者选择、生成区块的权利以及与之相关的费用的收取。我曾提到过这与我希望看到其他跟随以太坊的 Rollup 如何相轻,但目前大多数人选择继续采用前面谈到的三种模型。

MEV 捕获

这一块空间的价值捕获也与 MEV 密切相关,而这也是中心化区块生产者的一个大问题。然而,通过朝着这样的代币模型发展,你能够去中心化运营节点及其领导者选择。这意味着这样的代币模型也可以以某种方式“代币化” MEV,这也是代币持有者声称获得的部分价值。通过对块空间的未来现金流进行代币化,该协议也在对块空间内的执行顺序现金流进行代币化。

其他 Rollup 也在进行着关于如何最小化其协议内 MEV 的有趣研究。例如,MEV 拍卖,基本上允许你对其进行代币化,已经在这里 被 Optimism 的 Karl Floesch 讨论过。Arbitrum 和 Chainlink 正在探索公平序列服务 (FSS),其将提高 Rollup 上交易排序的公平性和可预测性。

Fuel 在模块化的世界中

模块化的世界使得单生命引流的区块链的许多功能被分离到多个区块链中,创造了优化这些层的各种可能性。这正是 Celestia 通过优化数据可用性来实现,而 Fuel 通过在模块化范式中优化执行来实现。这也使得各种层能够创造出优化的节点,无论是完整节点、轻节点还是桥接节点。这些节点能够针对它们的特定目的进行优化,从而极大地提高各种层的能力。

我在不同的文章和讨论中曾广泛评论状态膨胀的进展,以及构建模块化如何有助于缓解这种状态膨胀。这正是利用一个独立的数据可用性层而非状态层所极大帮助的。因此,Fuel 希望超越单体设计原则的限制。

除此之外,交易设计也是极其独特的,因为 Fuel 使用了 UTXO。这是相当罕见的,因为你实际上是在使用“旧技术”,但这也是 Fuel 吸引我重要原因之一。

Fuel 不仅仅是为当前以太坊的气候构建,而是构建模块化未来的引擎。这让他们与当前所有的 Rollup 区分开来。正如我在文章开始时所提到的,如果你对在 Fuel 上构建、学习 Sway 或类似的内容感兴趣,请参加Fuel 黑客马拉松,并与我们联系——我们非常希望与你谈谈。

关注 Maven11 在 Twitter 上

关注 Fuel 在 Twitter 上

参考文献

https://fuel-labs.ghost.io/introducing-fuel-the-fastest-modular-execution-layer/

https://docs.fuel.sh/v1.1.0/Introduction/Welcome.html

https://github.com/fuellabs

https://forum.celestia.org/t/accounts-strict-access-lists-and-utxos/37

https://github.com/FuelLabs/fuel-specs/blob/master/specs/vm/main.md

https://fuel-labs.ghost.io/token-model-layer-2-block-production/

https://docs.fuel.sh/v1.1.0/Concepts/Fundamentals/Transaction%20Architecture.html

https://docs.fuel.sh/v1.1.0/Concepts/Fundamentals/Block%20Architecture.html

https://docs.fuel.sh/v1.1.0/Concepts/Fundamentals/Security%20Analysis.html#commondefinitions

https://fuellabs.github.io/sway/latest/

https://fuel.network/blog


订阅 Maven11 研究

三年前推出

Maven11 的技术区块链研究

  • 原文链接: maven11.substack.com/p/t...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
maven11
maven11
江湖只有他的大名,没有他的介绍。