Fluent 概述
Fluent 是第一个混合执行网络。该项目包含零知识虚拟机(zkVM)、第 2 层网络和开发框架,用于在以太坊上构建各种基于区块链的应用程序。
Fluent 的独特价值主张在于它能够:
模拟多个虚拟机(VM)的执行环境(EE),
实现与不同虚拟机(EVM、SVM、Wasm 等)相关的智能合约的实时可组合性,
可以用各种编程语言编写(例如 Solidity、Rust 等),
在共享状态执行环境中。
Fluent 支持针对不同虚拟机的应用程序之间的原子可组合性,以及由它们之间混合和匹配的智能合约组成的“混合”应用程序。网络支持的不同类型合约之间的交互在后台进行,既是原子的又是实时发生的。
Fluent VM
Fluent VM 是针对可验证应用程序而设计的 WebAssembly (Wasm) 二进制指令格式的最低限度修改版本。它是 Wasm 的简化版本,称为 rWasm,它与原始 Wasm 指令集保持兼容,但针对零知识 (zk) 操作进行了优化。指令集的部分内容嵌入在二进制文件中,提高了 zk-rollup 中 Wasm 程序的验证效率和易用性。
rWasm 在执行层支持多个 VM 目标。其账户和状态结构由代表每个受支持的 VM 的专用系统合约管理。最终,这些 VM 被模拟并编译为 rWasm 以供执行。该设计是可扩展的,因为可以随着时间的推移添加对其他 VM 的支持。它还确保与其支持的不同 VM 相关的智能合约之间的原子和同步可组合性。
兼容性合约
Fluent VM 包含经过验证的库或系统合约,称为兼容性合约。这些基于 Wasm 的合约定义了每个受支持的 VM 的 EE 标准,并提供了访问这些功能的 API。它们实际上充当中间件,允许每个受支持的 VM 的合约相互调用和检索信息。
兼容性合约类似于 Near 的 Aurora 实现(但针对 zk 操作进行了优化),可模拟 EVM 交易和区块。对于 zk 证明,兼容性合约由一个附加库支持,即 Journaled ZK Trie (JZKT),该库位于内存/存储中,可使跨标准 Fluent STF 的证明更加高效。
JZKT 与标准 zk trie 相同,但有一个主要区别,即它是可逆的。这确保了跨不同标准交易的原子性。如果作为多操作交易的一部分,某个操作失败,则所有先前的交易也将恢复。此外,通过将这个过程放在一个统一的库中,每个标准的表面积都被包裹在一个更大的电路中,使其更容易证明。
Fluent L2 网络
Fluent L2 是一个 zk-rollup,用于在一个地方运行 Wasm、EVM 和 SVM 应用程序。它支持在共享状态执行环境中混合执行不同的 VM 目标,以实现来自不同生态系统的应用程序之间的实时可组合性。该网络兼容 EVM 和 SVM,维护所有合约的 ABI 编码,并且不会为在 Solidity、Vyper 或 Solana Rust 中部署应用程序带来额外开销。
最终,Fluent 上的所有 VM 都在执行层进行模拟,并编译为 Fluent rWasm VM 以供执行。每个 VM 都由一个基于 Wasm 的核心系统合约(VM 的“兼容性合约”)表示,该合约定义了其 EE 标准并提供访问这些功能的 API。虽然 Fluent 最初将支持 Wasm、EVM 和基于 SVM 的合约,但其设计是可扩展的,从而支持其他 VM 集成。
应用程序部署模型
Fluent L2 将支持两种类型的应用程序:共享和专用。
共享应用程序:这些是 Fluent 执行环境中共享状态的智能合约应用程序。请注意,Fluent L2 上的所有共享应用程序都是实时编写的,即使跨不同的 VM 目标和编程语言(例如 Rust 和 Solidity)。
专用应用程序:这些应用程序是可定制的独立状态机,可以利用 Fluent 进行证明聚合和验证。开发人员可以自定义主权应用程序运行时、模块化层(例如 DA、排序)等。
Fluentbase 框架
Fluentbase 框架用于在 Fluent L2 上部署智能合约以及编译为 rWasm 的区块链和可验证计算环境。它为 Fluent 状态转换函数 (STF) 引入了一个 SDK 和一个证明系统。它是 Fluent L2 的基础,可用于构建:
混合应用程序:使用网络支持的各种编程语言编写的 Fluent L2 上的智能合约。
混合执行网络:基于区块链的网络(L2s、L3s 等),在共享执行层上模拟多个 VM 目标。
任意计算环境:具有任意逻辑的链下专用计算环境。
Fluentbase 支持集成构建模块化区块链,包括 DA 层(Celestia、Avail 等)、共享序列器(Espresso、Nodekit)等。
社区
推特 @fluentxyz
discord https://discord.gg/fluentlabs