【硬核】Filecoin虚拟机架构概述

FVM 虚拟机的主要目的是为参与者提供多种编程模型,以及帮助在其他环境(例如ETH)编写的智能合约和程序可以利用 Filecoin 网络的存储功能。

 

 

对于FVM中的参与者,我们区分了三种类型:

1、本地用户定义的参与者:在开发时以 FVM 为目标。

2、外部用户定义的参与者:最初在开发时针对另一个运行程序(例如 EVM)。可能在其原始代码中命名为“智能合约”。

3、内置系统参与者:截至目前存在。

 

本地用户定义

原生 FVM 的运行程序是 WebAssembly (WASM),用户可以在技术上在任何编译为 WASM 的编程中编写程序。但是需要注意一些特定语言会影响 WASM 输出,导致 WASM 字节码臃肿和执行效率低下,还需要考虑链上代码大小限制。

 

外部用户定义

FVM的架构特性,让FVM可以运行外部程序,其中最重要的就是EVM。FVM的目标是支持将 EVM 字节码按原样部署到 Filecoin 网络。为此,FVM将采用SputnikVM,这是一个与 WASM 运行时兼容的 Rust EVM 解释器,可以将以太坊网络特定的行为填充到 Filecoin 对应物上。虽然,这在性能方面是一种低效的解决方案,但它允许将现有经过实战考验的以太坊智能合约直接且相对无风险地部署到 Filecoin 网络。

ETH的Gas费高昂导致效率低下,执行成本更高。这将激励开发人员将智能合约迁移到本地 FVM 参与者以降低执行成本。除了 EVM,未来还将热衷于支持 Agoric SES、Solana 的 BPF 和使用其他区块链编程的模型和范式。

 

内置系统参与者

内置系统参与者将完全在 WASM 空间中运行。他们的源代码可能会迁移到使用 FVM SDK。它们将被编译为 WASM,并将作为捆绑在 Filecoin 节点实现分发中的静态 WASM 模块发布,可能通过二进制嵌入。系统参与者将继续静态绑定到其现有地址,以及通过系统升级发展。网络导向升级机制的方式在路线图中。

注意:此计划取决于 WASM 与本机系统参与者的初步性能基准测试结果。如果前者的表现不可接受,可能会被迫将系统参与者保留在本地空间中,并将它们视为其他平台中的“预编译合约”。