技术 | IPFS上的应用程序演示

2019-03-14
摘要:以下内容由四块翻译实验室根据David Richard Holtz的文章《An IPFS Applicati


以下内容由四块翻译实验室根据David Richard Holtz的文章《An IPFS Application Demo》翻译并编辑

随着像IPFS这样的分布式协议变得越来越普遍,我们会看到许多新应用程序在分布式Web上开发,主要侧重于离线优先,隐私和减少带宽。


本文介绍了IPFS上的AWS Lambda copy cat应用程序。 我们将使用Golang,Docker,IPFS和Python。 需要注意的一点是,该项目不会使用任何区块链技术。

 

重要的是要明白像IPFS这样的新技术与Blockchain没有直接联系。我们可以使用IPFS和现有的时间测试工具构建有用的应用程序。


IPFS上类似Lambda的应用程序


IPFS PubSub Compute是早期的IPFS驱动的dapp。它旨在将功能作为类似于AWS Lambda的服务。 我计划继续开发这个应用程序,因为它有很多构建便携式微服务的潜力。

 

该应用程序允许用户在由IPFS PubSub消息触发时,在docker容器中执行Python 3.7代码。

 

使用IPFS PubSub作为消息传递主干允许我们分离代码编辑器和代码执行器。 虽然有许多成熟的消息排队系统可用 - 我们希望围绕IPFS构建,因为它具有离线性和有前途的项目开发。我们还想使用IPFS(不仅仅是PubSub),因为我们需要一种方法来分布我们所开发的代码包。IPFS是一种完美的分享方式。

 


介绍 -  IPFS PubSub Compute


IPFS PubSub Compute(由于当时没有更好的名称)具有非常直接的执行流程。

 

首先,我们需要编写代码和事件 - 就像在AWS Lambda中一样。

这里我们使用的代码对应于第二个项目Euler问题的解决方案(关于添加斐波那契数列)


将代码和事件发送到IPFS PubSub Compute服务器上


我们将代码和作用于代码的事件发送到运行在localhost:8769的本地服务器上,这只是取出输入并将其中继到PubSub通道。 实际代码如下所示。


现在消息被触发到IPFS PubSub通道(我们使用test作为我们的默认通道)

Docker容器处理代码并发送回服务器


docker容器是AWS的Python 3.7 Lambda容器的精确副本,用作本地开发的参考。在我们的示例中,它完美地作为一个包含的Python工作线程。由于我们可以快速创建和销毁容器,使用事件处理程序将这些容器连接到网络,因此我们创建了一个小型IPFS电力分布式计算机! 通过努力,该系统可以跨多台机器进行扩展,并充分利用IPFS的所有优势。

 


目前所需要实现的功能


一个主要的改进 - 下一步是允许用户将其代码作为对象部署到IPFS。这样我们就可以将代码称为CID并将该函数分发给其他人。如果他们也有ipfs-pubsub-compute,他们就能够自己执行代码。通过添加一些代码,应用程序可以处理(CID,事件)请求,并在执行时获取代码。

 

所做出的这些努力几乎实现了离线的第一个无服务器架构,但肯定需要大量工作才能做好生产准备。



演示 


基于上面的概念和运行go-ipfs节点,我们可以构建并运行应用程序!

编辑执行演示

 

以上为IPFS PubSub Compute的一个工作示例,其中一个简单的lambda函数正在运行辅助斐波纳契函数 - 并返回所有偶数斐波纳契数的总和。 然后编辑该函数以显示数字列表而不是总和。正如您所看到的那样,输出都会在下面的窗格中打印出来。



这演示了端到端的过程


1.用户在UI中编辑代码

2.代码是base64编码的,并与事件一起发送到服务器(单击执行按钮旁边的“�"打开该窗格)

3.服务器通过IPFS PubSub发送编码值

4.IPFS PubSub侦听器对消息进行解码并将其复制到Docker容器中

5.Docker容器执行代码(将WS Lambda Python 3.7环境的完全复制)

6.lambda函数的结果被转发回服务器

7.服务器在屏幕上显示结果

8.在这里查看项目:ipfs-pubsub-compute



接下来的步骤


允许上传IPFS代码

服务器可以获取代码

导出到AWS兼容的ZIP文件

允许用户导入自定义库

“将部署添加到IPFS”按钮

整个应用程序的代码少于130行,它需要docker,go和lambci / lambda:python3.7 docker  image。它是与IPFS API交互的简单应用程序的样板。 这里我们只使用PubSub API,但IPFS也有丰富的存储API。

 

这个小项目可以采用多种方式,但还是希望它可以作为IPFS上一个简单但有用的应用程序。 没有Blockchain,我们仍然使用HTTP服务器和商业Docker容器的副本。Web 3.0不是要替换现有服务 - 而是去连接和利用它们。

 

相关阅读

这改变世界的协议,你不了解一下?

IPFS设备如何选择?

能不能超越比特币,今年就看它了!

雄岸基金与四块科技合作共同布局IPFS!

四块科技第一届分布式存储技术应用落地高峰论坛

四块科技第二届分布式存储技术应用落地高峰论坛

声明:本文观点仅代表作者本人,不代表凤梨财经赞同或证实其观点描述。如若侵权,请联系我们删除文章。