使用Node.Js构建IPFS应用程序 | 技术帖

与当今的网络相反,IPFS实际上可以实现分布式的永久性网络。

来源:https://tinyletter.com/ipfsnewsletter/letters/ipfs-weekly-70

翻译:星际大陆

介绍

IPFS是改变游戏规则的存在。与当今的网络相反,IPFS实际上可以实现分布式的永久性网络。最重要的是,它可能是行星际的,这对于我们当前的客户端-服务器体系结构是完全不可能的。IPFS利用对等架构,其中每个节点既是客户端又是服务器。如果您从网络请求某些内容,则将您请求的内容提供给其他节点。

您可以将其视为一个巨大的BitTorrent群。

除了点对点体系结构,我们在IPFS上检索内容的方式也是革命性的。我们不是通过内容的位置即IP地址来标识内容,而是通过对内容本身进行散列创建的唯一标识符来标识内容。这称为内容寻址。出于以下几个原因,这非常有用:

  • 数据持久性。如果许多同行拥有您想要的内容,您将从最接近的同行那里获得。即使内容的原始上载者脱机了,但由于它是按内容寻址的,因此您很有可能仍会获得它。与当今的Web相比,如果服务器出现故障,则内容随之减少,这是一个很大的进步。
  • 内置安全性。由于内容标识符(CID)是通过对内容本身进行哈希处理而创建的,因此您始终可以确保完全获得所需的内容。无法欺骗系统,因为如果您修改内容,其标识符将随之改变。

入门

在开始之前,我想先解决一些问题。IPFS客户端有两种实现,一种在JavaScript中,另一种在Go中。JavaScript在这里似乎是最好的选择,但由于它处于比Go客户端更早的开发状态,因此这不是最佳选择。我们将使用Go客户端,并通过其API与Node连接。 先决条件:

  • Node.js(最好是更高版本之一)和npm
  • go-ipfs客户端(此处的安装说明)
  • 邮递员或curl,用于向我们的REST API发出请求

首先,我们的节点必须以在线模式运行,因此打开一个终端并运行ipfs daemon。您应该会看到以下内容:

使用Node.Js构建IPFS应用程序 | 技术帖

在第19行,您可以看到API服务器正在侦听端口5001。这是我们需要连接的端口。

其次,创建一个新的项目目录并运行npm install ipfs-http-client。这是我们需要连接到正在运行的IPFS节点的软件包。 接下来,让我们创建js文件,在该文件中我们将连接到节点:

使用Node.Js构建IPFS应用程序 | 技术帖

第3行,我们实际上连接到守护程序API服务器。现在,我们可以开始在ipfs对象上执行命令以与网络交互。

作为示例,让我们编写一个向IPFS添加一些文本的函数: 

使用Node.Js构建IPFS应用程序 | 技术帖

在第1行上,我们创建一个要添加到IPFS的对象。这path是我们希望在IPFS上调用文件的内容(我们可以包括目录),内容是Buffer我们要添加的文件的内容(在本例中为纯文本)。接下来,我们使用将该文件添加到ipfs中ipfs.add(),这将返回一个包含所有添加文件的数组。由于我们只添加了一个,因此的结果console.log()将是:

使用Node.Js构建IPFS应用程序 | 技术帖

如果继续进行,您会发现该hash字段每次都会完全相同,因为您添加了与我相同的内容。另外,请注意,该path名称不会影响内容标识符。如果现在要检索内容,则有两种可能性: 像这样使用本地网关服务器:http:// localhost:8080 / ipfs / QmWfVY9y3xjsixTgbd9AorQxH7VtMpzfx2HaWtsoUYecaX 您的IPFS守护程序启动了网关服务器。 使用这样的公共网关:https : //gateway.ipfs.io/ipfs/QmWfVY9y3xjsixTgbd9AorQxH7VtMpzfx2HaWtsoUYecaX 所有这些都已经很酷了,但是让我们看看如何在应用程序中使用它。为了演示更多功能,让我们使用Express创建一个小的REST API。

建立应用程式

别忘了跑步npm install express。 让我们从一些样板代码开始:

使用Node.Js构建IPFS应用程序 | 技术帖

继续并运行它,并使用进行测试curl http://localhost:3000。您应该看到Welcome to my IPFS app。

现在添加一条POST路线:

使用Node.Js构建IPFS应用程序 | 技术帖

现在,我们可以与邮递员一起测试这条路线。为创建新的POST请求http://localhost:3000/upload。您可以选择放入正文中的内容,但必须为JSON:

使用Node.Js构建IPFS应用程序 | 技术帖

如果一切顺利,您应该已经得到我的答复以及Express应用程序的一些终端输出:{ path: ‘postman request’, content: ‘postman says whassup’ }。由于我们使用JSON中间件,因此req.body被解析为JS对象,这已经是我们需要向IPFS添加内容的格式。让我们通过修改和调用函数来扩展addFile功能,然后通过公共网关返回指向添加文件的链接:

使用Node.Js构建IPFS应用程序 | 技术帖

在addFile()上线8,我们采取的req.body数据作为参数,并用它来增加IPFS。然后fileHash,我们返回,以便将其包含在作为响应发送回的链接中。如果现在我们对邮递员发出另一个POST请求:

使用Node.Js构建IPFS应用程序 | 技术帖

我们返回一个链接以在公共网关上查看我们的文件!请注意,由于公共网关的速度可能很慢,因此实际上可能需要一段时间才能加载此链接。

转载声明:本文 由CoinON抓取收录,观点仅代表作者本人,不代表CoinON资讯立场,CoinON不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。若以此作为投资依据,请自行承担全部责任。

声明:图文来源于网络,如有侵权请联系删除

风险提示:投资有风险,入市需谨慎。本资讯不作为投资理财建议。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2019年12月10日 上午11:56
下一篇 2019年12月10日 上午11:56

相关推荐

使用Node.Js构建IPFS应用程序 | 技术帖

星期二 2019-12-10 11:56:42

来源:https://tinyletter.com/ipfsnewsletter/letters/ipfs-weekly-70

翻译:星际大陆

介绍

IPFS是改变游戏规则的存在。与当今的网络相反,IPFS实际上可以实现分布式的永久性网络。最重要的是,它可能是行星际的,这对于我们当前的客户端-服务器体系结构是完全不可能的。IPFS利用对等架构,其中每个节点既是客户端又是服务器。如果您从网络请求某些内容,则将您请求的内容提供给其他节点。

您可以将其视为一个巨大的BitTorrent群。

除了点对点体系结构,我们在IPFS上检索内容的方式也是革命性的。我们不是通过内容的位置即IP地址来标识内容,而是通过对内容本身进行散列创建的唯一标识符来标识内容。这称为内容寻址。出于以下几个原因,这非常有用:

  • 数据持久性。如果许多同行拥有您想要的内容,您将从最接近的同行那里获得。即使内容的原始上载者脱机了,但由于它是按内容寻址的,因此您很有可能仍会获得它。与当今的Web相比,如果服务器出现故障,则内容随之减少,这是一个很大的进步。
  • 内置安全性。由于内容标识符(CID)是通过对内容本身进行哈希处理而创建的,因此您始终可以确保完全获得所需的内容。无法欺骗系统,因为如果您修改内容,其标识符将随之改变。

入门

在开始之前,我想先解决一些问题。IPFS客户端有两种实现,一种在JavaScript中,另一种在Go中。JavaScript在这里似乎是最好的选择,但由于它处于比Go客户端更早的开发状态,因此这不是最佳选择。我们将使用Go客户端,并通过其API与Node连接。 先决条件:

  • Node.js(最好是更高版本之一)和npm
  • go-ipfs客户端(此处的安装说明)
  • 邮递员或curl,用于向我们的REST API发出请求

首先,我们的节点必须以在线模式运行,因此打开一个终端并运行ipfs daemon。您应该会看到以下内容:

使用Node.Js构建IPFS应用程序 | 技术帖

在第19行,您可以看到API服务器正在侦听端口5001。这是我们需要连接的端口。

其次,创建一个新的项目目录并运行npm install ipfs-http-client。这是我们需要连接到正在运行的IPFS节点的软件包。 接下来,让我们创建js文件,在该文件中我们将连接到节点:

使用Node.Js构建IPFS应用程序 | 技术帖

第3行,我们实际上连接到守护程序API服务器。现在,我们可以开始在ipfs对象上执行命令以与网络交互。

作为示例,让我们编写一个向IPFS添加一些文本的函数: 

使用Node.Js构建IPFS应用程序 | 技术帖

在第1行上,我们创建一个要添加到IPFS的对象。这path是我们希望在IPFS上调用文件的内容(我们可以包括目录),内容是Buffer我们要添加的文件的内容(在本例中为纯文本)。接下来,我们使用将该文件添加到ipfs中ipfs.add(),这将返回一个包含所有添加文件的数组。由于我们只添加了一个,因此的结果console.log()将是:

使用Node.Js构建IPFS应用程序 | 技术帖

如果继续进行,您会发现该hash字段每次都会完全相同,因为您添加了与我相同的内容。另外,请注意,该path名称不会影响内容标识符。如果现在要检索内容,则有两种可能性: 像这样使用本地网关服务器:http:// localhost:8080 / ipfs / QmWfVY9y3xjsixTgbd9AorQxH7VtMpzfx2HaWtsoUYecaX 您的IPFS守护程序启动了网关服务器。 使用这样的公共网关:https : //gateway.ipfs.io/ipfs/QmWfVY9y3xjsixTgbd9AorQxH7VtMpzfx2HaWtsoUYecaX 所有这些都已经很酷了,但是让我们看看如何在应用程序中使用它。为了演示更多功能,让我们使用Express创建一个小的REST API。

建立应用程式

别忘了跑步npm install express。 让我们从一些样板代码开始:

使用Node.Js构建IPFS应用程序 | 技术帖

继续并运行它,并使用进行测试curl http://localhost:3000。您应该看到Welcome to my IPFS app。

现在添加一条POST路线:

使用Node.Js构建IPFS应用程序 | 技术帖

现在,我们可以与邮递员一起测试这条路线。为创建新的POST请求http://localhost:3000/upload。您可以选择放入正文中的内容,但必须为JSON:

使用Node.Js构建IPFS应用程序 | 技术帖

如果一切顺利,您应该已经得到我的答复以及Express应用程序的一些终端输出:{ path: ‘postman request’, content: ‘postman says whassup’ }。由于我们使用JSON中间件,因此req.body被解析为JS对象,这已经是我们需要向IPFS添加内容的格式。让我们通过修改和调用函数来扩展addFile功能,然后通过公共网关返回指向添加文件的链接:

使用Node.Js构建IPFS应用程序 | 技术帖

在addFile()上线8,我们采取的req.body数据作为参数,并用它来增加IPFS。然后fileHash,我们返回,以便将其包含在作为响应发送回的链接中。如果现在我们对邮递员发出另一个POST请求:

使用Node.Js构建IPFS应用程序 | 技术帖

我们返回一个链接以在公共网关上查看我们的文件!请注意,由于公共网关的速度可能很慢,因此实际上可能需要一段时间才能加载此链接。