Nansen:详解以太坊扩容方案 Fuel 的机制与框架
2022-11-10 17:53
Nansen
2022-11-10 17:53
订阅此专栏
收藏此文章
Fuel 必须与大量的 L1、L2 竞争,并提供资金非常充足的业务发展激励措施。


撰文:Nansen


研报介绍


区块链由以下核心层组成: 


  • 数据可用性层(相关数据可用的地方) 
  • 共识层(区块链就交易的有效性达成共识) 
  • 执行层(执行交易的地方)
  • 结算层(交易完成的地方)

 

单体区块链是包含所有 4 个关键层的区块链。 大多数区块链网络都是单体的,例如以太坊网络、Solana、BNB 链等。 而模块化区块链是指上述核心层的专业化,各层相互利用,组合成一个完整的系统。 模块化区块链的论点是,分层后各模块的专业化结合, 形成了一个比单体系统优越得多的系统。



模块化区块链旨在克服安全性、去中心化和可扩展性的区块链三难困境。 尽管在过去几年中出现了大量新的 L1,但到目前为止,对于单体链如何解决这个问题还没有明确的方法。


  • 以太坊牺牲了基础层的可扩展性,同时专注于去中心化和安全性。
  • Solana 可以说牺牲了去中心化,同时专注于可扩展性和安全性。

 

无法克服区块链三难困境已将注意力转移到模块化区块链的未来。在模块化系统中:


  • 数据可用性层 - 确保数据可用,e.g. Celestia.。
  • 共识层 - 专注于排序交易。
  • 执行层 - 专注于处理交易事务,例如 Fuel。
  • 结算层 - 专注于确保交易的有效性。

 

比方说,以太坊专注于成为统一的数据可用性、共识和结算层——而交易执行则外包给执行层专家,例如 Arbitrum、Starkware 和 Fuel。 当然,以太坊目前也作为一个整体区块链运行,交易执行发生在 L1。 这种方法的问题很明显,交易时间慢,交易费用极其昂贵。

 

模块化区块链背后的核心想法是,不同层的专门分离可以实现比其他方式更高的安全性、可扩展性和去中心化。 例如,Arbitrum 和 Starknet 等以太坊汇总通过将交易执行移至链外(在 L2)同时利用以太坊 L1 的数据可用性、共识和结算来扩容以太坊。

 

State Growth


状态增长仅仅意味着区块链整体规模的增长。 区块链是一个分布式数据库,随着它的增长,它的验证节点需要变得更强大(以下载不断增长的数据)。结果,验证者成本上升,导致区块链变得更加中心化。 将状态推送到 L2 有助于在 L1 级别缓解此问题。 但是,还需要考虑的一件事是 L2 的状态增长。 L2 本身可以被认为是区块链,并且不能免受 L1 面临的状态增长问题的影响。 这是一个很少受到关注的问题,但随着 L2 本身获得更广泛的采用,它们也将经历状态增长,这可能会减慢区块链并导致更高的硬件要求。 这是 Fuel 试图避免的问题。

 

Fuel 的正式介绍


Fuel 背后的团队


Fuel 的团队与 Celestia 的团队有些重叠。 例如,John Adler 是 Celestia 和 Fuel Labs 的联合创始人。 Adler 在 Consensys 担任区块链研究员时帮助开创了 Optimistic Rollups。 在这里查看 Nansen 对 Celestia 的深入了解。 Fuel 的另一位创始人 Dodson 是以太坊的早期 Solidity 开发人员。

 

有趣的是,Fuel 自 2019 年以来就已经存在——仅筹集了 150 万美元。 然而,2022 年 9 月 7 日,Fuel 宣布了一轮 8000 万美元的融资,由 Blockchain Capital 和 Stratos 领投,Alameda 参投。

 

Fuel 的代币机制


Fuel 目前尚未上线,也没有关于代币的官方公告。 但是,该项目很可能会在某个时候推出代币。 在此处查看这篇文章,其中 John Adler 探索了不同的 L2 代币模型。


他反对使用典型的单一代币模型:


作为通用的 PoS token 代币

 

他认为这对于 Rollup 汇总来说不是必需的,因为他们已经从以太坊获得了安全性,并且它增加了大多数验证者能够在 L2 级别审查某些交易的额外风险。

 

作为手续费 Token


这被认为是「比无用更糟糕」,因为它增加了额外的摩擦因素。 虽然从价值增值的角度来看,费用代币是有意义的,但实际上它可能会妨碍用户体验。 最终,最好的用户体验可能会在竞争日益激烈的领域中胜出,而费用代币的额外摩擦点可能会危及这一点。

 

作为治理代币 Token

 

Adler 认为这不是一个好的选择,因为它可能导致 Rollup 汇总的治理捕获。 这是用户在使用汇总时应充分注意的额外风险。 当令牌分布广泛时,风险会降低。 请注意,这在加密货币中很少见,尤其是在较年轻的项目中。


Adler 对上述代币模型的拒绝很有趣,因为它们包含了当今绝大多数代币。 代币经济学是一个有争议的问题,大多数代币缺乏内在价值甚至合法性的论点是有道理的。

 

对于 Rollups 的另一种替代方案?

 

Rollups 本身会经历区块空间稀缺性,并且可能通过让区块生产者收取费用来标记这种稀缺性。 当然,随着交易需求的增加,区块生产者的费用也会增加,反之亦然。 为了减少摩擦,用户不一定需要以特定的代币支付这些费用(而是他们正在与之交易的任何代币)。

 

该模型的目的是分散区块生产。 这是当前汇总需要尽早实施的事情,以避免来自区块生产中心化的审查阻力。


  • 这将要求节点运营商绑定 Fuel 原生代币,以便生成区块并收取费用。
  • 该模型意味着代币仅用于区块领导者的选择——这意味着汇总不易受到治理攻击。 区块领导者意味着所有节点不需要达到多数即可通过区块 - 使区块链更快。

 

看看这个代币模型是否出现,以及 Fuel 将包含哪些修改(如果有的话)将会很有趣。 执行层代币设计将非常重要,提供最佳用户体验的汇总很可能会胜出。 令人满意的代币增值也很重要,费用机制应该提供这一点。

 

Fuel 的 Grant 奖金


Fuel 正在运行赠款计划,以激励开发人员在该协议上进行构建。 赠款范围从 10,000 美元到 150,000 美元不等。 在 Fuel 在 9 月份筹集到 8000 万美元之后,这些可能会扩大规模。在此处查看有关赠款计划的更多详细信息。


Fuel 的技术方案讲解

 

执行层简单地处理事务执行,同时将其他组件委托给另一个区块链。这方面的一个例子是 Arbitrum(一个执行层)和以太坊。

 

Fuel 被称为「模块化执行层」,它指的是 Fuel 作为执行层运行,能够进行多种不同的配置,例如作为以太坊的 Optimistic Rollup,或利用 Celestia 进行 DA 和以太坊达成共识和结算。

 

Fuel 专注于通过模块化执行层来实现长期可扩展性,目标是最小化状态。为了实现这一目标,Fuel 创建了自己的虚拟机,选择重新开始并避免仅在 EVM 内构建的限制。尽管通过这种设计选择退出了 EVM 的强大网络效应,但从长远来看,它可能会为开发人员和用户提供更好的体验。通过最小化状态,Fuel 正在寻求创建一个执行层,为验证者提供足够负担得起的硬件要求,以实现充分的去中心化。

 

请注意,Fuel V1 于 2020 年部署到以太坊主网。它是一个 Optimistic Rollup,用于支付(不是智能合约平台),具有开放的区块生产、欺诈证明和不可变的智能合约。本文中所有提到的 Fuel 均与 Fuel V2 版本相关。

 

 

上图显示了团队对 Fuel 多功能性的期望,并且很好地可视化了 Fuel 的模块化。 请注意,它不反映 Fuel 的当前状态(尚未启动),本报告重点关注作为执行层的 Fuel。

 

有趣的是,Fuel 并不是为特定的链设计的(就像 Arbitrum 是为以太坊设计的),预计将部署在以下链之上:


  • 以太坊、Celestia 或任何结算层,
  • 以太坊和 Celestia,以及
  • 作为 Celestia 和 X 链之间的结算层。

 

这是一种非常动态的方法,它允许 Fuel 成为一种即插即用的工具,供其他模块化层根据他们的需要进行选择。


在即将推出时,Fuel 的一些初始配置可能是:


  • 作为使用以太坊进行数据可用性和结算的 Optimistic Rollup。
  • Fuel 作为执行层,利用 Celestia 实现数据可用性,利用 Ethereum 实现结算和共识。

 

该图显示了 Fuel 提议的跨区块链堆栈的多功能性。 看看哪个成为 Fuel 的主要用例将会很有趣。 由于它主要是作为执行层构建的,因此人们会期望这是主要的用例。 Fuel 的第一次迭代很可能会作为以太坊之上的执行层。 当 Celestia 上线时,鉴于创始人之间的重叠和两个项目的一致愿景,Fuel 几乎肯定会在它之上建立。

 

Celestia 和 Fuel 是模块化区块链领域的关键项目。 Fuel 专注于执行层,而 Celestia 专注于数据可用性层。 可扩展的执行层需要可扩展的数据可用性层,反之亦然,以使两者都发挥其潜力。 这两个项目的联合创始人约翰·阿德勒(John Adler)表示,它们是在设计时考虑到彼此的。 

 

尽管 Fuel 可以在模块化堆栈中扮演许多角色,但它首先被视为执行层。 有趣的是,它可以作为 Optimistic Rollup(使用欺诈证明)或 ZK-Rollup(使用有效性证明)运行。 最初,它将作为 Optimistic Rollup 运行; 但是,它也可以使用有效性证明(ZK-Rollup)。

 

Fuel 的架构


UTXO Model


未使用的交易输出(UTXO)是一种区块链会计模型。UTXO 区块链没有钱包或账户——硬币和合约作为 UTXO 存在。 这方面的一个例子是比特币区块链。 UTXO 是用户收到的交易的输出,本质上代表了某个地址持有的硬币的余额。 交易消耗 UTXO 并创建反映新状态的新 UTXO。


更简单地说,在比特币上,UTXO 代表用户完成交易后剩余的 BTC 数量。未使用的输出作为输入存回数据库,稍后可用于另一笔交易。比特币 BTC 就是使用 UTXO 模型。

 

Fuel 的状态由合约和代币 UTXO 表示。每个合约 UTXO 都携带合约的状态和余额,由合约 ID 唯一标识。


值得将 UTXO 模型与大多数其他智能合约链使用的基于账户的会计模型进行比较,例如 以太坊。 在此模型中,代币是由私钥或智能合约控制的账户中的余额。 网络需要跟踪所有账户中的所有余额,并通过将交易顺序处理成代表新状态的块来更新状态。 这种设计限制了网络吞吐量,并且不能有效地利用硬件(仅 CPU 的单个线程)。


Fuel 的 UTXO 模型不一定需要能够并行执行的事务的顺序处理(同时发生多个事务)。


 

 

UTXO 的并发问题


然而,UTXO 的性质让人质疑如何在每笔交易中消费和重新创建复杂的智能合约。 使用 UTXO 模型进行智能合约遇到的困难的一个例子是 Cardano。

 

Cardano 在 AMM 的 UTXO 模型上遇到了问题。 由于每个 UTXO 只能使用一次,因此只有一个人可以一次与智能合约交互。 DeFi 应用程序通常有多个人同时与智能合约交互。 这意味着对于 UTXO 模型,只有一个事务会成功(并消耗 UTXO),这意味着所有其他事务都会失败。 这称为并发问题。

 

Fuel 是如何解决它的?


在 Fuel 上,需要签署交易的不同部分:


  • 用户不直接签署 UTXO,而是签署合约 ID——表明他们与合约交互的意图。 因此,用户不会直接改变状态,从而导致 UTXO 被消耗。
  • 相反,区块生产者将负责一个区块中的各种交易将如何影响整体状态,从而影响合约 UTXO。 UTXO 被花费并被另一个代表新状态的替换。 在撰写本文时,Fuel 尚未发布有关区块生产者将如何在系统中工作的较低级别的详细信息。
  • 已消费的合约 UTXO 创建新的 UTXO,具有相同的核心功能,但更新了存储和余额。


Sway 编程语言


Fuel 背后的团队创建了 Sway 编程语言,目标是优化开发人员体验并实现卓越的应用程序。 它是一种受 Rust 启发但专为智能合约设计的领域特定语言。 Sway 旨在最大限度地降低成本并最大限度地提高合同级别的安全性。


  • Sway 的语法与 Rust 相似。
  • 寻求结合区块链特定的安全检查和零成本抽象,允许开发人员编写可靠和高效的智能合约。
  • Fuel 团队在这里列出了 Solidity 和 Sway 之间的一些区别。
  • Fuel 团队专注于构建 Forc - Fuel 的构建系统,为 Fuel 开发人员提供工具和命令。

 

考虑到该语言的年轻程度,该团队已经建立了一个相对广泛的标准库。 这为 Sway 提供了多种功能,并使编译器能够快速移动。

 

Fuel 联合创始人 John Adler 使用「类似 iOS 的体验」的类比为开发人员构建了一个广泛的工具包,其中有一个统一且集成的工具链,而不是分散的。 这样做的理由是合理的,如果 Fuel 可以继续为开发人员构建统一的工具包,那么更简单的入职体验将有助于促进生态系统的发展。

 

Fuel 团队非常强调 Sway 的优势。 请注意,该语言还处于起步阶段,缺乏来自非附属开发人员的更广泛的反馈。

 

Scripts 和 predicates


Scripts 和 Predicates 是 Fuel 用来改善用户体验的关键工具。


Scripts:使单个事务无需路由即可调用多个合约的程序。 一个关键的例子是在转移资金之前无需批准合同; 使用脚本,这可以在单个事务中完成。 脚本的一个关键特性是一旦执行它们就会从区块链中删除,因此不会导致状态膨胀。

 

Predicates: 不访问状态的合约脚本,用于启用无状态账户抽象。 账户抽象是指将区块链上的两种账户类型(钱包地址和合约)减少为一种——降低用户的复杂性。


Fuel 上的账户抽象可以实现:


  • 使用 Solana、Cosmos 或 Ethereum 进行账户访问控制
  • 多重签名账户
  • 基于原子 UTXO 的订单簿交换
  • 一个有小额热签名者的帐户,例如 低于 500 美元,以及金额较大的冷签名者,例如 500 美元以上。

 

Predicates:可用于在满足某些条件时执行事务,例如 作为买单。 这是一个有趣的用例,因为谓词不会导致状态膨胀,并且可以在使用时进行修剪。

 

Fuel 利用脚本和谓词来提高性能。 脚本本质上是用于执行交易的字节码。 重要的是,脚本能够同时执行多个操作,这与以太坊不同。 例如,FuelVM 可以在单个交易中获得批准和转移,而在 EVM 上,这将是两个独立的交易。

 

合并脚本和谓词的目的是允许在单个事务中执行多个调用,因为与合约相比,它们更擅长维护状态。

 

Scripts 脚本和 Predicates 谓词旨在补充智能合约。 忠实于 Fuel 避免状态膨胀的目的,它们限制了状态增长,因为它们不持有存储(与合约不同)。 最终,利用脚本和谓词的基本原理是在 Fuel 上启用半无状态执行。

 

一些值得注意的关键点:


  • 根据状态和执行的定价以及应用程序的功能,应用程序可以选择依赖其中之一而不是两者。
  • State 状态和 Execution 执行不是相互排斥的。
  • 如果与状态相比计算成本较低,则各种 dApp 在技术上可以将其合约替换为脚本。 这在具有高计算带宽的执行层上是可能的。

 

Parallelization 并行化

 

Fuel 支持并行执行交易,例如多个事务同时执行。

 

这与按顺序处理事务的 EVM 不同。这可以通过使用严格的访问列表来实现。使用访问列表,每笔交易都需要指定它可以与哪些合约进行交互。如果交易与未指定的合约交互,那么它将恢复。对于不与相同合约交互的交易(如严格访问列表中所述),并行执行是可能的。这应该使 Fuel 能够利用 CPU 的多个线程和内核同时验证交易。这是值得注意的,因为随着时间的推移,单线程性能改进相对较低,而线程数量却增加了。因此,似乎利用多线程而不是依赖单线程改进是一种更好的策略。

 

Fuel 尚未公布其潜在可扩展性的估计值,而其他项目经常披露不切实际的每秒交易量估计值。但是,该团队预计规范 Fuel 实例上至少有 1,000 TPS。请注意,不同的 Fuel 实例将具有不同的节点集,从而实现可扩展的吞吐量。随着更多信息的出现,有关 Fuel 潜在可扩展性的更多细节值得关注。

 

Fuel 如何打败 EVM?


FuelVM 内置了各种功能,这些功能目前是以太坊改进提案(EIP)。 Fuel 团队建立其基础设施的方式旨在从以前区块链的「错误」中学习,以避免由于向后兼容的困难而不得不实施复杂的升级。

 

EVM 在设计时并没有考虑到欺诈证明,因此,欺诈证明的构建(Optimistic Rollups 所需)实际上相当复杂。 事实上,它通常需要像 MIPS 这样的二级层来解释为可证明欺诈的系统。 Vitalik Buterin 最近在 Bankless 播客上表示,Optimistic Rollup 未能在欺诈证明方面取得实质性进展令人惊讶。 然而,Fuel 在设计时考虑了欺诈证明。 Fuel 对 UTXO 的使用使得一般的欺诈证明构建比以太坊等基于账户的模型更容易,因为以太坊具有无限的欺诈证明成本。 此外,Fuel 并行执行交易的能力意味着欺诈证明的并行化是可能的。

 

Fuel 联合创始人 Nick Dodson 声称共享数据可用性和信任最小化的轻客户端促进了 Fuel 与其他模块化执行层的信任最小化桥梁,例如 仲裁。 这在任意不同的 L1 之间是不可能的。

 

Fuel 还没有上线,尽管设计决策背后的理由似乎很合理,但不确定它是否会在实践中发生。

 

多种原生资产

 

以太坊唯一的原生资产是 ETH。 但是,Fuel 可以有多个。 原生资产具有一等公民属性,例如通过合约调用而不是通过单独的代币合约进行转账。 这消除了与基于合约的代币相关的各种漏洞,并提供了更统一的开发人员体验。 这意味着在 Fuel 上发布的代币将具有这些属性(与以太坊不同,例如,ERC-20 缺乏这些一等公民属性)。

 

使用 64 位字代替 EVM 中的 256 位


Fuel 做出这个设计决定的原因是它总体上更高效,因为现在大多数架构都是 64 位的,而 256 位可能会导致溢出问题,这里有更多详细说明。 Fuel 团队声称 256 位字长是不必要的,因为可以在应用程序级别创建 FuelVM 上的库以处理更大的数字。

 

注册过的虚拟机 Register-based VM


Fuel 正在构建基于寄存器的虚拟机,旨在提高效率并使区块链更快、更便宜。 这可以实现,因为基于寄存器的 VM 通常比基于堆栈的 VM 需要更少的指令。


例子: Solana 使用基于寄存器的 VM。 


以太坊使用基于堆栈的虚拟机。

 

FuelVM 在单个事务中启用多个操作


FuelVM 使用的脚本允许发生多个操作,而无需为每个操作部署新合约。 例如,这意味着没有像 EVM 链上那样的「批准和 TransferFrom 功能」。 相反,这可以在单笔交易中发生,并且可以帮助减少签署批准使黑客可以访问您钱包中的资金的情况。



全局共享内存与上下文本地内存


Fuel 上的所有合约调用共享整个系统可读的内存。 在以太坊上,每个合约都有自己的内存、调用数据和返回数据。 拥有全局共享内存可以跨合约传输数据,而无需昂贵的存储空间。

 

Fuel Network 的安全性


在 Fuel 上,轻客户端将通过欺诈证明来验证区块。 只要有一个诚实且功能正常的完整节点产生欺诈证明,这将使 Fuel 对验证者的资源要求较低,并保持令人满意的安全性。 为了令人满意地分散共识,Fuel 正在寻求最小化运行完整节点的要求。 但是,目前还没有公开可用的信息。

 

SwaySwap


SwaySwap 是 Fuel 测试网上的一个应用程序,具有超快速的交易确认功能。 Fuel 团队指出它是 Fuel 性能能力的证明。 虽然它具有非常令人印象深刻的性能,但应该注意的是,它只是测试网上的一个应用程序,并不能明确表示 Fuel 在部署时的性能,特别是如果某些实例在多个 dApp 中获得大量用户时。

 

Fuel 存在的风险和考虑


开发者的普及


  • 虽然 Fuel 可能正在开发一种技术上优于 EVM 和其他竞争虚拟机的虚拟机,但区块链空间已经变得非常拥挤,许多拥有巨额业务开发资金的区块链吸引了开发人员的注意力,而越来越少的 用户。 Fuel 最近筹集的 8000 万美元对于 Fuel 吸引人才在此基础上发展非常重要。 
  • 在此说明中,TVL 排名前 10 的区块链中有 9 个使用了 EVM。 这是其主导地位的一个明显例子。 然而,这并不是未来成功的指标,构建一个克服其缺点的定制 VM 可以说是一个强有力的策略,因为 EVM 兼容 / 等效空间已经饱和。 构建一个有潜力实现卓越用户和开发人员体验的虚拟机可能是超越人群的更好选择。 如上所述,Fuel 团队专注于打造「类似 iOS」的开发者体验。
  • 执行落地的风险:Fuel 是一个令人兴奋的项目,其设计决策背后的基本原理是合理的。 然而,它声称的关键应用场景,尚未经过适当测试,只有时间才能证明它是否能够兑现承诺。


智能合约的风险


Fuel 正在开创一种新的虚拟机和模块化执行层设计。 这种创新水平伴随着可能无法按预期执行的风险。 如果发生这种情况,早期的开发人员可能会从一开始就难以构建完全安全的应用程序。

 

最后的总结


Fuel 是区块链模块化前沿的一个非常令人兴奋的项目。如前所述,FuelVM 做出了许多设计选择,这些选择是当今大多数区块链的范式转变。 使用 UTXO 会计模型、脚本和谓词以及新的编程语言可能是一个强大的组合——整个行业将非常有趣地看到它是如何发挥作用的。

 

执行层在过去一年中变得越来越有竞争力,随着 Optimistic Rollups 的增长以及 ZK-Rollups 和有效性的进步。 燃料正在进入一个竞争领域,但采取了不同的方法。 它专注于避免状态增长及其适应多种不同配置的能力很有趣。

 

Fuel 必须与大量的 L1/L2 竞争,并提供资金非常充足的业务发展激励措施。 客观的技术利益需要辅以适当的激励措施,以促使 Fuel 围绕其建立足够的生态系统。 最近的 8000 万美元投资应该为该项目提供良好的资源来启动生态系统。

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

相关Wiki
Nansen
数据请求中
查看更多

推荐专栏

数据请求中
在 App 打开