LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 行情分析 > Libp2p:两大天王级项目Filecoin&Polkadot的通信基石

Libp2p:两大天王级项目Filecoin&Polkadot的通信基石

2020-11-07 币须内容矿池 来源:区块链网络


libp2p是协议,规范和库的模块化系统,可用于开发对等网络应用程序。Libp2p是协议实验室(即IPFS的项目方)所开发的,后来用于Filecoin项目中,跨链之王Polkadot也采用了Libp2p作为其底层的通信传输协议。

一、Libp2p设计目标

所有分布式对等网络都面临着一系列不同于传统网络的挑战。Libp2p 是一个通用工具包,因此开发人员可以在其分布式应用程序中使用即插即用网络。

分布式计算的一个根本转变是 “客户端 / 服务器” 范式不再成立。让我们来看看家用路由器的功能。家庭网络中的每个设备都有一个专用IP 地址。当你从服务器请求数据时,路由器会将设备的专用地址替换为家庭的公共IP 地址,并记住将响应发送到哪个设备。

如果你所有的设备都是客户端,那很好用,但是当路由器发出外部请求时该怎么办?它不是对请求的响应,而是请求,因此请求者认为你是服务器。你的某一台设备充当服务器,但路由器不知道是哪一台。这是一个称为 NAT 遍历的问题,libp2p 提供了有助于处理它的工具。

Libp2p 还处理对等设备发现和握手协议。在客户端也充当服务器的世界中,节点之间不可避免地会有各种硬件、操作系统和通信协议。加密和安全性是 Web3 设计的基础,而 libp2p 开箱即用地支持未加密的协议(例如 TCP、UDP)和加密的协议(例如 TLS、Noise)。

许多网络协议都停留在 90 年代,随着安全漏洞的突破,越来越多的补丁被添加进来。此时 libp2p 模块化出现了。Libp2p 的设计使你可以升级所需的任何元素,同时保持向后兼容。

二、模块化

Libp2p 从一开始就被设计成非常模块化的,因此可以在许多不同的对等项目中实施。传统对等应用程序中的节点由 IP 地址和端口组合引用,而 libp2p 则使用多地址的概念来代替。

libp2p 模块化的第二个主要方面是它的协议协商过程。一旦建立了两个对等方之间的连接,libp2p 处理的唯一事情就是协商该连接上使用的协议。

尽管鼓励节点支持一组特定的通用协议,但从技术上讲,它们都不是强制性的。这样就可以轻松地尝试新协议或新想法,并在不增加技术负担的情况下仍支持旧版本的同时部署新版本的协议。

三、Libp2p可以解决什么问题

数据传输

libp2p的基础是传输层,它负责从一个对等方到另一对等方的实际数据传输和接收。如今,有多种方法可以跨网络使用数据发送数据,还有更多的方法正在开发中,还有更多尚待设计。libp2p提供了一个简单的方法接口 可以进行调整以支持现有和将来的协议,从而允许libp2p应用程序在许多不同的运行时和网络环境中运行。

身分识别

在拥有数十亿个联网设备的世界中,知道与您交谈的人是安全可靠通信的关键。libp2p的使用公钥密码术作为对等身份的基础,有两个互补的目的。首先,它给每个对等方一个全局唯一的“名称”,形式为对等ID。其次,PeerId允许任何人检索所标识对等方的公钥,从而实现对等方之间的安全通信。

安全

我们必须能够在同级之间安全地发送和接收数据,这很重要,这意味着我们可以信任身份 我们正在与之交流的同伴之间,并且没有第三方可以阅读或实时更改我们的对话。

libp2p支持“升级”由计算机提供的连接。 运输进入安全加密的频道 该过程很灵活,可以支持多种加密通信的方法。当前默认值为塞西奥,并支持 TLS 1.3 正在开发中。

对等路由

当您要将消息发送给另一个对等方时,您需要两个关键信息: 对等ID,以及在网络上定位它们以打开连接的方法。

在许多情况下,我们只有PeerId想要联系的对等体,并且我们需要一种方法来发现他们的网络地址。对等路由是通过利用其他对等体的知识来发现对等体地址的过程。

在对等路由系统中,对等可以将需要的地址提供给我们,也可以将查询发送给更有可能获得答复的另一对等。随着我们与越来越多的对等方联系,我们不仅增加了寻找所需对等方的机会,而且还在自己的路由表中建立了网络的更完整视图,这使我们能够回答来自其他方的路由查询。

libp2p中对等路由的当前稳定实现使用 分布式哈希表迭代地请求路由更接近期望PeerId使用Kademlia路由算法。

内容发现

在某些系统中,我们不在乎与谁交谈,而在乎他们可以为我们提供什么。例如,我们可能需要一些特定的数据,但由于我们能够验证其完整性,因此我们不在乎从谁那里获取数据。

libp2p提供了一个 内容路由接口 为此,主要稳定实现使用相同的 Kademlia对等路由中使用的基于DHT的DHT。

消息/ PubSub

向其他对等方发送消息是大多数对等系统的核心,而pubsub(发布/订阅的缩写)是一种将消息发送给感兴趣的接收者组的非常有用的模式。

libp2p定义了一个 pubsub接口用于向订阅了给定“主题”的所有对等方发送消息。该接口目前有两个稳定的实现;floodsub使用非常简单但效率低下的“网络泛洪”策略,并且Gossipsub定义了一个可扩展的八卦协议。在以下方面也正在进行积极的发展Episub,gossipsub是针对单源多播和方案进行了优化的扩展,其中一些固定源广播给主题中的大量客户端。

四、Libp2p 的全球视野

使用 libp2p 的另一个原因是它参与了去中心化项目。它从一开始就为 IPFS 提供支持,并将为多个新兴项目提供支持,例如 Filecoin、可能还有以太坊 2.0、Agoric,当然还有 Substrate 和 Polkadot。

具有多个项目共享相同的网络协议具有很大的优势:它使节点可以跨多个网络共享其功能。让我们以中继协议为例来举个例子。

在去中心化的环境中,你通常希望节点直接相互连接。但是,实际上,许多节点是不可访问的,因为它们位于 NAT 之后或使用不允许传入连接的平台。

为了解决此问题,libp2p 提供了一个名为 Relay 的协议,该协议允许一个节点充当两个其他节点之间的代理。所有通信都经过加密,并且验证了远程操作的身份,因此代理不能充当中间人。

通过让多个项目将 libp2p 用作其网络堆栈,它们都将能够从相同的中继节点中受益,从而共享资源。

Libp2p 已被设计为支持未来去中心化的网络协议。当公司启动传统应用程序时,他们只专注于应用程序的经验和逻辑,而无需重新发明 TCP/IP。这是 libp2p 的最终目标:允许应用程序开发人员在知道自己的服务将可访问和可用的情况下开发应用程序。随着 Rust、JavaScript 和 Go 的实现以及 Java、Haskell 和 Python 的开发,libp2p 正在迅速成长。

—-

编译者/作者:币须内容矿池

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...