模块化区块链旨在将区块链功能拆分为独立且专业的模块,并确保每个模块都能高效地完成其特定任务,同时将其他任务外包。其也被视为 2024 年加密领域值得关注的叙事之一。但相较于其他模块,市场注意力似乎一直集中在数据可用性层模块上,例如 Celestia、EigenDA 等项目,而执行层、结算层等模块并没有获得太多关注。但近期随着并行 EVM 叙事的兴起,执行层也逐渐引起了重视。
执行层的主要职责是处理和执行智能合约和交易,为 Rollup 和应用程序提供高吞吐量的环境。Fuel 就是其中一个非常有趣的项目,它专注于避免状态增长,并且不局限于任何一种配置,无论是主权 Rollup、结算链还是单体链。
从 V1 到 V2:有哪些演进?
2020 年 12 月,Fuel Labs 发布了 Fuel V1,这是以太坊主网首个 Optimistic Rollup 解决方案。最初,Fuel v1 仅是为了应对以太坊扩容问题而提出的一个简单方案,通过采用与以太坊虚拟机不同的执行模型来实现可扩展性。Fuel V1 的主要用例是处理以支付为核心的应用,并且还支持带有哈希时间锁定合约(HTLC)的原子兑换、OP_RETURN 式输出、使用任何代币支付费用及在 10 分钟内提币等功能。
然而,由于 Fuel V1 的例过少且不支持智能合约的限制,上线后并未获得用户的广泛青睐。因此,在启动不久后,Fuel 开发团队 Fuel Labs 就将全部开发重心转移到了 V2 版本,并将其定位为模块化执行层。通过模块化设计,Fuel 可根据需求为其他模块化层选择即插即用的工具,从而具有更大的灵活性。此外,Fuel 采取欺诈证明的机制来确保 L2 网络的正确共识。尽管这可能会导致需要更多资源进行验证,但 Fuel 允许用户通过轻客户端进行链的验证,从而减少对全节点资源的需求。近期,Fuel 已宣布将其暂存网络迁移至 Beta-5,开发人员可使用新的 npm create fuels 软件包,从而简化构建全栈 DApp 的过程。且 Fuel 还表示未来将会推出激励测试网络。
Fuel 团队及投资背景
Fuel 的团队非常有趣,其联创 John Adler 同时也是模块化区块链网络 Celestia 的联创。且他还曾在 ConsenSys 从事二层可扩展性研究,并且创建了 Optimism Rollup 设计范式。这不禁也让人好奇,未来 Fuel 作为执行层会和 Celestia 产生何种协同效应。此外,Fuel 首席执行官 Dodson 则是以太坊早期的 Solidity 开发者。
根据公开资料,截止目前,Fuel 共完成了两轮融资。2021 年 9 月,Fuel Labs 完成了 CoinFund 领投的 150 万美元融资轮。随后于 2022 年完成了 8000 万美元融资,Blockchain Capital 和 Stratos Technologies 领投,Alameda Research、CoinFund、Bain Capital Crypto、TRGC、Maven 11 Capital、Blockwall、Spartan、Dialectic 和 ZMT 等参投。
技术堆栈解读
Fuel 的愿景是成为模块化区块链堆栈中最快的执行层,并提供最高安全性和灵活吞吐量。为了实现该愿景,Fuel 的技术架构做了多项设计选择,其中最为核心的是采用 UTXO 模型、虚拟机及编程语言的创新。
UTXO 模型
相比于其他因为性能而迁就 EVM 兼容性的 Rollup,Fuel 选择继承比特币的 UTXO 模型作为其记账模型。与账户模型不同,UTXO 模型中不存在钱包或账户的概念。每个 UTXO 代表一定数量的代币,交易的目的是消耗先前创建的 UTXO 并创建新的 UTXO。但和传统 UTXO 模型不同的是,Fuel 的 UTXO 模型更加通用,不仅可以表示代币的转移,还可以表示智能合约的状态。Fuel 的每个合约 UTXO 都承载着合约的状态和余额,由合约 ID 唯一标识。
相较于账户模型,UTXO 模型的优势在于不需要按照特定顺序处理事务,从而使得交易可以并行执行。Fuel 利用 UTXO 来管理对状态的访问,通过构建严格的访问列表,确保交易的执行顺序符合规范,实现了交易的并行处理。这种并行执行技术使得Fuel能够同时利用多个CPU线程和核心,在处理交易时提高了计算、状态访问和事务吞吐量。
但传统的 UTXO 模型存在并发问题,因为每个 UTXO 都只能使用一次。这导致了一个交易的成功执行意味着其他交易的失败,尤其是在 DeFi 应用中。而在 Fuel 中,用户不会直接签署 UTXO,而是签署合约 ID,以表示他们与合约进行交互的意图。这意味着用户不会直接改变状态,从而避免了UTXO被消耗。最终是由区块生产者决定交易将花费哪个 UTXO 以及相关合约的结果状态。
此外,在 Fuel 上,UTXO 的花费条件是谓词(Predicates)。谓词会对是否会发生交易进行评估,如果发现与其授权条件不匹配,则该交易将不会被包含在区块中。更为重要的是,谓词不会像智能合约那样存储数据,因此不会导致状态增长问题。而且,这种设计不仅能够最小化状态增长,还能够为 Fuel 引入无状态账户抽象功能,避免了账户状态在链上长期存储导致的问题。Fuel 的账户抽象支持各种应用场景,如社交恢复、交易费用补贴等,使得其在多样化的区块链应用中具有广泛的适用性。
全新 VM 架构 FuelVM
为了摆脱 EVM 内部构建的限制,Fuel 创建了自己的虚拟机 FuelVM。作为对 EVM 的兼容和简化的实现,FuelVM 在提升了 EVM 性能的同时,也不会为开发者带来额外的学习成本。FuelVM 采用了全局共享内存架构,所有合约调用都能够共享全局内存,这可以实现无需存储空间的跨合约的数据传输。
此外,FuelVM 还带来了很多优势。例如 FuelVM 允许用户指定交易涉及的合约,使得虚拟机在执行非争议状态访问交易的同时能够处理其他交易,实现了验证过程的完全并行,不受状态争用的影响。同时,FuelVM 支持原生资产系统,通过操作码铸造基于 UTXO 的原生资产,获得了原生级别调用和优化的优势。
而且 FuelVM 采用多维资源定价模式,允许 dApp 根据不同智能合约的资源需求情况进行定价,从而激励节点运行者优化底层硬件,并最大程度优化区块效用。此外,FuelVM 结合资源定价和 UTXO 系进行状态修剪,能够控制状态,降低节点的运行成本,促进网络的去中心化。且 FuelVM 的设计不关心共识或统交易排序,只负责执行,这有助于实现去中心化的区块生产,进一步提高网络的去中心化程度。
通过 FuelVM,Fuel 对 EVM 低效的执行环境进行了改进。并且 FuelVM 是从模块化执行层角度来考虑构建,重点在于实现高效机算能力的同时减少状态的使用。
特定领域语言 Sway
Sway是专为高计算需求的 Fuel 环境构建的,旨在为开发者提供简洁的开发体验。其基于 Rust 构建,并融合了 Solidity 语言特点。其中,Sway 继承了 Rust 的语法,使得开发者能够更加轻松地编写安全高效的智能合约代码。并且借鉴了 Solidity 中的智能合约范式,内置了顶层合约存储和区块链机制,为合约编程提供了更加安全的环境。
为了支持开发人员使用 Sway,Fuel 团队还开发了用于构建、部署和测试 Sway 代码的 Sway 工具链 Forc,包括一个包管理器,可以方便地访问 Sway 工具。其他集成工具包括 VSCode 扩展、测试基础架构和区块资源管理器。
然而,Sway 更适用于 EVM 链,而非兼容使用 UTXO 模型构建的链。这也意味着如果这些链要在 Fuel 上开发智能合约,就需要构建专属智能合约,这可能会增加开发者的工作负担。
未来可期?
正如 Fuel 所言,以太坊致力于解决协调(Coordination)问题,而其则旨在解决合作(Collaboration)问题。相较于协调,合作需要更多的目标和责任,以实现更长期的目标。基于这一理念,Fuel 让在去中心化信任层上构建可扩展且稳健的经济系统成为可能。但目前 Fuel 主网尚未上线,其是否真正能够在 Rollup 竞争市场上占据一定份额还需要时间的验证。值得注意的是,Fuel 一直在积极构建生态,其早于 2022 年就推出了生态资助计划,向基于 Fuel 构建的开发者提供 1 万至 15 万美元不等的资助。截止目前,Fuel 生态项目已超过 40 个。此外,Fuel 还计划推出激励测试网络,促进生态的进一步发展。