【解答】IPFS到底是如何运用Libp2p的?
Libp2p是协议实验室建立的一流项目,等同于IPFS和Filecoin, Libp2p也是IPFS和Filecoin的基础设施,也就是说Libp2p是IPFS和Filecoin的底层协议 ,那么IPFS是如何使用Libp2p技术的呢?为什么协议实验室如此重视?本文将详细介绍Libp2p在IPFS的应用。
Libp2p到底是什么?
Libp2p是协议、规范和库的模块化系统,支持对等网络应用的开发。简单来说, IPFS上的任意两个节点 ,无论在哪里,无论在什么环境,无论运行什么操作系统,无论是否经过NAT(网络地址转换),只要有物理链接的可能, Libp2p都可以完成这个链接 。众所周知,在任何系统或网络中,数据(信号)传输都是关键。否则, 两个节点之间没有通信,系统或网络就起不到大的作用。
协议实验室构建Libp2p的原因:
对于协议实验室来说,为什么一开始就要考虑构建Libp2p呢?在做IPFS项目的时候,我们发现有 大量的异构设备运行不同的操作系统,它们的网络环境非常复杂 。例如,尽管有许多协议变化,比特币仍需要51%的节点支持。国内有一些NAT,有些场景不需要TCP(传输控制协议)链路,因为它的 文件系统多样且不协调,需要通过其他协议的变化来统一,所以Libp2p应运而生。
Libp2p有哪些核心功能?
Libp2p是一个 P2P 的网络,分为网络层、路由层、交换层 ,在之前的文章也有提到过这三点,只不过当时介绍的比较浅,下面会将这些结合起来一起解析。
例如,在当前拥有数十亿台联网设备的世界中,我们都知道有许多欺诈电话(甚至冒充110号码进行欺诈),而Libp2p使用公钥密码作为对等方身份的基础,它可以以点的形式给每个对等方一个全球唯一的“名称”。其次,PeerId还允许任何人检索识别出的对等体的公钥,从而实现对等体之间的安全通信。每个人都可以认为 每个人的通讯设备也有自己的密钥身份,这意味着别人无法轻易破解你的通讯设备,安全性极强。
它不仅是身份确认的安全性,也是对等体(节点)之间发送和接收数据的安全性 。在交流的过程中,任何第三方都无法读懂我们的对话,也无法在飞行中更改。Libp2p支持从交通工具“升级”一个安全的加密通道。过程相当灵活,可以支持多种加密通信方式。TLS 1.3和noise已经实现了很长时间,但有一点是libp2p的每种语言实现都不一定支持这两种语言。
拥有身份后,确定其身份是安全的,不会被第三方读取和交换,然后节点通过网络进行传输和通信 。Libp2p的基础是传输层,它可以负责从一个对等点到另一个对等点的实际数据传输和接收。Libp2p还提供了一个简单的界面,可以调整以支持现有和未来的协议,允许Libp2p应用程序在许多不同的运行时和网络环境中运行。
其实运输交换过程都可以看做节点链接的建立过程,链接之后自然也能交流或交换数据。其中主要包括3个步骤, 包括地址解析、传输协议适配、双方协商。这也是Libp2p核心功能之一。
连接建立后,Libp2p会先与双方协商确定对方支持哪些功能,主要使用identify协议,这是Libp2p内置的基础协议,可以交换节点的公钥和本地监听地址。协商完成后,连接两端的节点将找到相互支持的协议并初始化它们。每个协议的处理程序(回调函数)将在初始化期间注册,当协议数据到达时,将调用相应的处理程序。因为多个传输协议会重用同一个底层连接,所以连接会被拆分成多个“Stream”,从而构建一个强大的p2p网络。
总结
上述功能流程基本都应用到了IPFS网络,但是Libp2p还在不断发展迭代的过程中,但是已经应用到了IPFS非常成熟。其他很多区块链项目也使用Libp2p作为底层,相当于分布层、呼叫层、传输层和网络层。IPFS和Filecoin在“块数据同步”、“文件传输”和“节点搜索”等核心环节使用Libp2p。比如Polkadot Poka Chain,为了兼容Ethereum等主链,采用异构多链架构,同时也考虑了终端设备的复杂场景,选择libp2p作为其底层传输层。
些核心功能? 哪些核心功能?