我们已经介绍了数据、财富和身份标识的去中心化存储,那么计算呢?我们能把Web应用程序直接存放在IPFS上并运行它吗?好吧,既可以也不可以。IPFS只是一个文件系统,跟其他所有的文件系统一样,在它上面运行和显示静态网站完全没问题。但对于我们现在称为后台系统的动态应用程序而言,则需要一个编译和运行环境,比如Node.js和RubyonRails——IPFS不行。因此,虽然可以把应用程序的数据存放在IPFS上,也还要考虑要把源码放在什么地方。
为此,我们有两个选择。第一是把数据保存在IPFS上,把源码托管在传统的虚拟机(VM)提供商那里,比如Heroku。VM模拟了特定的计算机系统,其操作是基于(假想或真实的)计算机功能和架构的。VM的实现可能涉及特殊的软件、硬件及两者的组合。Heroku是非常流行的平台即服务(PaaS)提供商,让用户非常轻松就能用上VM。虚拟机上可以运行Go和Node.js等代码写成的动态后台系统,还可以用MongoDB这样的内部托管的数据库来存储数据。
如果把源码放在Heroku上,数据放在IPFS上,那么用户仍然会相信数据是属于他们的,你没有把数据卖出去赚钱。但他们不能保证在服务器上运行的代码就是你开源的代码。除了无法验证,这还意味着有中心失效点(Heroku)。第二种办法是把数据保存在IPFS上,把源码部署到构建于IPFS之上的去中心化VM上。有这样的东西吗?最接近的项目是astralboot(https://github.com/ipfs/astralboot)。这基本上是一个golang服务器,只是它直接从IPFS上拉取文件,并且允许你运行基于IPFS的Debian环境。也就是说如果你在astralboot上部署了一个动态应用程序,它是搭建在IPFS上的,你只需要在astralboot上的Linux环境中配置出特定的环境。
另一个选择是以太坊自己的EVM(以太坊虚拟机)。以太坊的区块链跟比特币区块链有很多不同:有不同的块时间,图灵完备的合约,并且它是一个去中心化状态机。我认为它虽然是VM,但并不完整,最起码肯定不是大多数开发人员想要的那种VM。在今天的软件市场上,几乎一定要从第三方那里请求数据。在这一领域有很多竞争者,他们专注于数据利基市场,为你提供指向其他服务的API。与其每次都做重复性的工作来为你的应用创建可信的数据源,还不如直接用第三方的API。以太坊EVM的问题是无法获取区块链之外的数据,除非数据提供者已经在自己的服务器里设置好了智能合约,能够跟以太坊协作。