首页 > IPFS > 除IPFS与Filecoin,协议实验室如何改进整个互联网——libp2p篇
星际云存  

除IPFS与Filecoin,协议实验室如何改进整个互联网——libp2p篇

摘要:除IPFS与Filecoin,协议实验室如何改进整个互联网——libp2p篇星际云存发布时间: 2022-03-30 18:09北京星际云存科技有限公司关注上篇文章中,我们介绍了IPLD,了解了它被用于构建区块链数据结构,定义数据,给数据建模。今天,我们来了解下协议实验室的另一个项目——libp2p
IPFSFilecoin,协议实验室如何改进整个互联网——libp2p篇

星际云存

发布时间: 2022-03-30 18:09北京星际云存科技有限公司关注

上篇文章中,我们介绍了IPLD,了解了它被用于构建区块链数据结构,定义数据,给数据建模。今天,我们来了解下协议实验室的另一个项目——libp2p。

libp2p官方的定义是,一个模块化的网络堆栈和库,可以用于开发p2p网络应用程序。

单看这个概念可能会让人一头雾水,让我们一步一步来。p2p(peer-to-peer)你应该有所耳闻,即点对点技术,是去中心服务器、依靠用户群(peers)交换信息的互联网体系,可以降低中心化网络传输中的风险。

过去的bitTorrent,eMule等就是早期p2p在音视频领域的应用案例,当时,作用主要是为了在带宽有限的情况下提升下载速度和播放体验。还有许多即时通讯(如Skype)应用程序也大量使用了p2p的技术,以提供通讯效率。后来p2p再次出现在人们视野中,就是在区块链领域了,它成为了构建区块链领域的基础技术。

简单举个例子——不管在哪个领域,所有使用p2p技术的应用程序都需要解决的问题之一是可发现性,两个或多个对等点(peers)如何找到彼此并共享信息?过去,每个p2p应用程序都必须要解决这个问题,并根据各自的用例定制不同方法来实施自己的解决方案。而现实中,开发人员面对的问题往往不止这一个。

但为每种方案都设计一种p2p的过程十分繁琐,且存在许多问题,如代码过于老旧、找不到或限制性许可、已弃用的产品、无法使用未来协议升级等等,这样一来,每次需要p2p协议时,开发人员都需要从头解决这些问题,因为之前已嵌入软件包的p2p协议不可提取、重用。

于是,IPFS为了改进并简化这个步骤,提出了libp2p,旨在解决之前p2p协议不可互操的问题。这是一个用来解决上述p2p问题的一个库,有了它之后,开发者设计p2p的难度呈指数级下降——即使是一个不了解p2p核心技术的开发人员,也可以简单开发出一套p2p系统。

起初,libp2p只是IPFS的一个组件,后来从IPFS分离出来,成为一个独立的项目,它现在能在完全不依赖IPFS的前提下进一步发展自己的生态系统和社区,而IPFS则成为了其众多用户之一。

在文章开头的定义中,还提到了一个词——模块化(modular),这是强调将计算机程序的功能分离成独立的、可相互改变的“模块”(module)的软件设计技术。其中这些模块构成了libp2p网络堆栈:

你可以将这些模块想象成乐高拼图。用户可以选择他们需要的部分,根据自身情况进行编程,每个部分都有明确的接口,可以快速实现互操作性和升级。

libp2p的模块具体可以解决哪些问题呢?

1 传输(transport)。libp2p的基础是传输层,负责从一个点到另一个点的实际传输和接收数据。今天的跨网络发送数据的方法有很多,一些正在开发中,一些有待设计。libp2p提供了一个简单的界面它可以适应支持现有和未来的协议,允许libp2p应用程序在许多不同的运行时和网络环境中运行。

2 身份(Identity)。libp2p使用公钥密码学作为对等身份的基础,它给每个对等点一个全球唯一的“名称”,形式为PeerId. 其次,PeerId允许任何人检索已识别对等方的公钥,从而实现对等方之间的安全通信。

3 安全(Security)。为了防止第三方的参与,libp2p支持“升级”由传输进入安全加密的通道。该过程十分灵活,并且可以支持多种加密通信的方法。libp2p目前支持TLS 1.3和Noise语言(并非libp2p的每种语言实现都支持这两种语言)。

4 对等路由(Peer Routing)。当你想向另一个对等方发送消息时,您需要两个关键信息:他们的PeerId,以及一种在网络上定位它们以打开连接的方法。在一个对等路由系统中,一个对等点可以给人们需要的地址,或者将查询发送给另一个更有可能得到答案的对等点。

随着联系越来越多的对等点,不仅增加了找到正在寻找的对等点的机会,而且在自己的路由表中构建了更完整的网络视图,这使人们能够回答其他人的路由查询。

5 内容发现(Content Discovery)。某些系统中,人们更关心与谁交谈,而不关心他们可以提供什么。例如,我们可能想要一些特定的数据,但不关心从谁那里得到它,因为我们能够验证它的完整性。

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

这也是Filecoin中使用的一个libp2p组件。Libp2p的PeerID被用作Filecoin存储矿工和更普遍的 Filecoin节点的ID方案。客户端查找矿工信息(如矿工地址)的一种方法是使用DHT将关联的PeerID 解析为矿工的多地址(Multiaddress)。

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

libp2p定义了一个发布订阅接口用于向订阅给定“主题”的所有对等方发送消息。此外,gossipsub定义了一个可扩展的 gossip协议,这也是在Filecoin中使用的组件——Filecoin使用GossipSub在Filecoin节点之间进行消息和块传播。GossipSub的强化扩展包括许多技术,使其能够抵御各种攻击。

目前使用libp2p的项目

相信看完这些,你已经对libp2p有了系统的了解,虽然目前它只是在一部分项目中有所建树,但作为一个模块化的网络堆栈,libp2p旨在能够满足各种项目需求,未来一定会在整个web3领域发光发热,成为其不可或缺的一部分。

免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。