去中心化计算

咱们已经介绍了数据、财富和身份标识的去中心化存储,那么计算呢?咱们能把Web应用程序直接存放在IPFS上并运行它吗?好吧,既能够也不能够。IPFS只是一个文件系统,跟其余全部的文件系统同样,在它上面运行和显示静态网站彻底没问题。但对于咱们如今称为后台系统的动态应用程序而言,则须要一个编译和运行环境,好比Node.js和RubyonRails——IPFS不行。所以,虽然能够把应用程序的数据存放在IPFS上,也还要考虑要把源码放在什么地方。git

为此,咱们有两个选择。第一是把数据保存在IPFS上,把源码托管在传统的虚拟机(VM)提供商那里,好比Heroku。VM模拟了特定的计算机系统,其操做是基于(假想或真实的)计算机功能和架构的。VM的实现可能涉及特殊的软件、硬件及二者的组合。Heroku是很是流行的平台即服务(PaaS)提供商,让用户很是轻松就能用上VM。虚拟机上能够运行Go和Node.js等代码写成的动态后台系统,还能够用MongoDB这样的内部托管的数据库来存储数据。github

若是把源码放在Heroku上,数据放在IPFS上,那么用户仍然会相信数据是属于他们的,你没有把数据卖出去赚钱。但他们不能保证在服务器上运行的代码就是你开源的代码。除了没法验证,这还意味着有中心失效点(Heroku)。第二种办法是把数据保存在IPFS上,把源码部署到构建于IPFS之上的去中心化VM上。有这样的东西吗?最接近的项目是astralboot(https://github.com/ipfs/astralboot)。这基本上是一个golang服务器,只是它直接从IPFS上拉取文件,而且容许你运行基于IPFS的Debian环境。也就是说若是你在astralboot上部署了一个动态应用程序,它是搭建在IPFS上的,你只须要在astralboot上的Linux环境中配置出特定的环境。golang

另外一个选择是以太坊本身的EVM(以太坊虚拟机)。以太坊的区块链跟比特币区块链有不少不一样:有不一样的块时间,图灵完备的合约,而且它是一个去中心化状态机。我认为它虽然是VM,但并不完整,最起码确定不是大多数开发人员想要的那种VM。在今天的软件市场上,几乎必定要从第三方那里请求数据。在这一领域有不少竞争者,他们专一于数据利基市场,为你提供指向其余服务的API。与其每次都作重复性的工做来为你的应用建立可信的数据源,还不如直接用第三方的API。以太坊EVM的问题是没法获取区块链以外的数据,除非数据提供者已经在本身的服务器里设置好了智能合约,可以跟以太坊协做。数据库