从JS-LIBP2P开始

 

  这里是从一系列关于libp2p的javascirpt实现教程开始,js-libp2p我们将带你完成一个具有基本功能的全功能libp2p节点的设置。最后我们还会在两个节点之间发送Ping消息。

安装node.js

  想要进行js-libp2p的开发需要node.js。如果你还没有准备node.js,不管你使用什么包管理工具,或者官方安装工具( using the official installer),首先需要安装它。我们推荐你使用最新版本的node.js,当然最近的几个版本也都是可以的。如果你想知道可用的最低版本是什么,你通常可以在 js-libp2p project page找到当前需要的版本。

创建一个空项目

  我们需要一个目录来放置我们的工作,因此,打开终端在你想在的位置创建一个目录,并把它设置成一个npm项目。   

                   

  注解:

  在整个教程中,我们使用>字符来表示shell终端提示符。当你输入命令时,不要输入 >否则你会碰到一些奇怪错误。

配置libp2p

  Libp2p是一个模块框架, 它允许javascript开发人员使用不同的运行时环境或者通过定制包含不同的模块来选择需要的功能特征。因为每个应用程序都是不同的,我们建议你只配置包含你需要的libp2p节点功能模块。如果你需要多个javacript运行时环境和功能特征,你甚至可以做多个不同配置。例如,IPFS项目有两个libp2p配置,一个是为node.js( one for node.js),一个是为浏览器(one for the browser)。注意:在一个产品应用中,为libp2p节点创建一个分离的npm模块可能是有道理的,它给你提供了一个为所有javascirpt项目来管理libp2p所有依赖的地方。这个实例中,你不应该在你的程序中直接依赖libp2p,而是应该采用依赖libp2p配置模块的方式,进而达到使用你需要的任何libp2p功能模块。如果你对libp2p是新手的话,我们推荐你采用分步骤逐步配置你的节点,参照这个方式更容易排除配置问题。在这个教程中,我们只会采用这种方式。如果你对libp2p已经很有经验了,你可能想跳过这些,直接阅读Configuration readme。按照最开始的步骤,你应该先安装libp2p模块。

 

基本设置

  现在我们已经安装好了libp2p,我们现在设置能是节点运行的最小配置。Lib2p仅需要的模块是Transport and Crypto但是我们仍推荐你在基本的配置上加上Stream Multiplexer ,我们会在随后解释。首先让我以配置Transport开始。

Transports

  整个网络中,libp2p使用Transport来建立对等节点直接的网络连接。你可以配置任意数量的Transports,但是最开始你只需要一个。你应该根据你应用程序的运行时环境来选择Transports;Node.js 或者 浏览器。你可以在configuration readme里面看到可用Transports的列表。根据这个指南,我们先安装libp2p-tcp。

 

  现在我们已经安装好了这个模块, 让我们同过配置libp2p来使用它。我们将使用Libp2p.create方法,这个函数是使用一个配置对象作为它唯一的参数。我们可以将Transport作为参数传递给Libp2p.create,使其加入到modules.transport数组:

 

  你可以向 modules.transport加入尽可能多的transpprts,以至于能够建立更可能多的节点。

连接加密

  每一个连接都必须加密,以确保每一人的通讯是安全的。因此,连接加密是libp2p需要的模块。为libp2p开发的加密模块数量还在持续增多。已经发布的可以在 ConnectionEncryption section of the configuration readme查看。现在,我们将为我们的节点配置使用libp2p-secio模块。

 

 

 

Multiplexing

  当然,multiplexers 严格意义上说并不是必须的,它们被强烈推荐是因为它们能够改善libp2p运行的各种链接协议的有效性和效率。查看available streammultiplexing模块,js-libp2p当前只支持libp2p-mplex, 因此我们将在这里使用它。在下面的例子中,你可以安装libp2p-mplex并将其加入到libp2p节点。

 

 

  

运行libp2p

  现在你已经配置好了 TransportCrypto and Stream Multiplexer模块,可以现在启动libp2p节点了。我们可以使用libp2p.start() 和libp2p.stop() 方法来启动和停止libp2p节点。一个libp2p节点需要给transport设置一个监听地址,使其他节点能够连接到它。通常,我们会安装multiaddr模块,用于创建一个TCP multiaddress,并且将其添加到节点。

 

  试着利用node src/index.js运行这些代码,你应该可以看到一下内容:

 

发送ping、pong消息

  我们现在已经恰当的建好了transport, multiplexing,和security 模块,我们现在可以开始通讯了。我们可以使用 libp2p.ping()向其他节点拨号并发送ping消息。收到ping消息的其他节点会回应pong消息,这样我们就知道它还是一个活动节点。我们也可以使用这个方式来测量节点之间的消息延迟情况。我们也可以通过命令行参数设置我们的应用程序,使其接收一个多地址节点,并向它发生ping消息。为了达到这个目的,我们还需要加入两样东西。首先,我们需要process模块,通过该模块我们能够获得命令行参数:

 

  然后我们需要解析这个来自命令行的多地址参数并试着向其发送ping消息。

 

 

 

 

 

 

 

  现在我们可以启动一个没有参数的节点:

  复制上面从 /ip4/...开始的地址,用其做为参数在另一个终端再启动一个节点:

 

  成功了!我们的两个节点在多路复用和安全的通道上进行了通讯。当然,它们只能发送ping消息,但是这只是开始!

下一节是什么?

  完成这个教程之后,你应该进一步阅读js-libp2p gettingstarted文档,从这个文档中你既可以了解到如何对libp2p进行基本的配置,也可以学到如何对libp2p进行定制化配置。你也可以研究 js-libp2p repo库里的大量代码示例,从这些代码中你可以学到在不同的场景和运行时环境下如何使用 js-libp2p

posted on 2020-12-16 11:08  冷月_孤星  阅读(858)  评论(0编辑  收藏  举报