在 Filecoin 网络上支持智能合约是一个自然的想法,已经被讨论过多次。开发者内部的讨论应该是在网络的设计时就考虑了。Filecoin 的目标是构建一个去中心化的存储市场,首先迎接的挑战是存储证明问题。Filecoin 的主网上线以及上线一年内的逐步优化,已经证明了 Filecoin 的存储证明(复制证明和时空证明)是可行的和安全的。在这个基础上,引入智能合约就成了下一步的重要工作。
可以想象一下智能合约可以为 Filecoin 带来的好处。许多人可能会说,可以像其他公链一样,玩 DeFi,NFT,这些都可以迁移过来。但是问题是,为什么别人要迁移过来,你这一条链的特点是什么,你能给整个区块链生态带来一些什么新的东西,什么是你的竞争力所在才是关键。Filecoin上面实现智能合约以及智能合约所带来的生态应该Filecoin 的特征,也就是说具有分布式存储市场的特征,这才是它的竞争优势。当然,智能合约可以支持目前流行的各种应用,但同时,可以简单想象一下, Filecoin 的智能合约能够带来一些完全不同的东西,比如以下这些是Filecoin自身网络通过智能合约建立的底层业务:
构建自动化的存储提供者信用积分系统
基于信用积分构建分布式自动存储匹配市场
基于自动存储匹配市场解锁真实数据存储的验证问题
构建存储抵押贷款市场,自动化利率调节,降低存储提供者进入门槛
构建数据担保市场,实现数据存储保险
通过数据担保市场,建立数据监测和恢复业务,自动保障数据安全
通过信用系统,构建数据检索市场,实现检索提供者的激励
在没有智能合约之前,这些业务或者功能的建立需要通过 Filecoin 网络升级来实现,也就是必须要 Lotus 或者 Venus 的新版本来实现这些功能。但是,当有了智能合约,这些功能就可以通过合约来实现了,跟搭积木一样,Filecoin 网络的功能可以自由地添加,并通过竞争,来测试不同的方案,可以自由试错,逐步演进。也就是说,智能合约解锁了 Filecoin 功能升级的麻烦,网络功能的提升无需通过网络升级来实现,这个是智能合约平台本身带来的极大好处。
前面提到的是 Filecoin 智能合约在平台层能够带来的好处,那么在应用一层,可以想象的就更加丰富了。所有与数据强相关的应用,在Filecoin这一个系统之中都可以在一个去中心化系统内实现,比如:
目前大多数NFT存储在IPFS网络中,那么一个IPFS/Filecoin为基础的NFT平台将完全是一个统一平台
构建Data DAOs(数据去中心化自治组织),建立以数据为基础的协作和管理
非常容易实现关于数字版权,法律文书等的签署和确权
通过 Filecoin 的支付通道体系,微支付等方式,解锁无穷的去中心化数据交易的创新
有太多的想象空间了。哪些会爆发,让时间来验证吧。
前面的分析和想象说明数据是 Filecoin 网络的最基础的资产。在数据的基础之上,运算能力也是 Filecoin 网络需要解决的问题。
解决数据问题,是 Filecoin 网络目前关注的重点,引入有价值的数据存储到 Filecoin 网络中来,是智能合约真正能够发挥作用的前提。为此,协议实验室专门成立了生态工作组来促进这方面的工作,同时,启动存储平台的建设,Estaury 是其中重要的项目之一。Filecoin 基金会也对存储服务者提供支持,希望有更多的基于 Filecoin 的存储服务平台诞生和提供服务。目前,我们看到生态之中已经有一些不错的项目在开发和完善之中,比如 Textile,Filedrive,FilSwan,MatrixStorage 等。
另外,协议实验室和基金会也在积极引进企业存储,Filecoin Plus 项目的公证人也在积极推进存储客户的引进和沟通。预计在接下来的半年中,我们应该可以看到不少大型的客户进入到 Filecoin 的生态里面来。
运算能力是 Filecoin 网络的另一个问题,在HyperDrive升级前,Filecoiin 的Gase BaseFee 达到数个 NanoFil,非常高。在EIP-1559的机制下, Gas BaseFee高意味着网络已经拥堵。那在这种情况下,支持智能合约就是一句空谈。Filecoin 网络是目前最大的零知识证明网络,零知识证明的验证占用了大量的网络计算资源。这个部分必须想办法缩减。Filecoin 的核心开发者们在持续不断地努力解决这些问题,HyperDrive是一个重大进步,但这还不够,要支持智能合约,存储证明的验证消耗的网络资源必须在进一步降低。这个部分目前已有一些方案,等时机成熟,会以基础网络升级的方式来实现。
毫无疑问,以太坊是目前区块链占统治地位的智能合约平台,其他新兴公链基本上都要与 EVM 看齐。没有办法,别人生态好,已经成为了事实上的标准。
那是不是直接把 EVM 搬过来用就可以了呢?当然不是,照搬过来,那才是直接与以太坊竞争,没有意义。所要做的是兼容 EVM,说白一点,应该是兼容 Solidity,使得运行在 EVM 上的智能合约在不改或尽量少改代码的情况下,可以直接拿过来用。这是一个通用做法。这么做,我们就不是要构建一个 EVM,而是兼容 EVM 的 FVM (Filecoin Virtual Machine,Filecoiin 虚拟机)。
FVM 兼容 EVM,但又不同于 EVM,原因上面已经讲了,要利用 Filecoin 的特点。至少,数据这个部分要纳入进来,Piece 的访问,IPLD数据结构的支持等等;同时,需要与现有 Filecoin 的 Actors 兼容。
同时,在选择兼容 Solidity 方面,也有不少选择。EVM 诞生5,6年了,作为第一个广泛使用的智能合约虚拟机,其自身有很多不足,比如,速度比较慢,底层的安全性不足等等。另一方面,WebAssembly(WASM) 的逐步流行和被认可,已经有成为下一代标准的趋势。支持WASM基本上也是必须的。因此,FVM在实现路径的选择上必须非常慎重。还是那句话,作为区块链项目,一旦上线,犹如火箭上天,将难以改变。
综合以上考虑,FVM的实现将通过慎重选择,分步实施进行。Filecoin 网络的演进是一条长久的路(参考以下 Ethereum 的演进),Filecoin 智能合约的支持也不是一蹴而就的,同样有一个演进的过程。
按照一般软件的开发规律,Filecoin 虚拟机的实现可能经历以下步骤:
选型,并构建原型:选择一个市场上已有的虚拟机原型,最好支持 WASM,能够兼容 Solidity;Filecoin 目前的Actors能够编译到 WASM,并能够在主网运行,实现兼容
纳入数据模型,实现GAS计算机制:WASM与IPLD交互,把Filecoin 数据市场相关元素集成进虚拟机;实现智能合约部署架构
实现与 EVM 兼容的 Event 处理机制,兼容 Ethereum 生态
实现 Solidity 编译器
集成 Filecoin 原生的数据层