如果你在去中心化的点对点领域做任何事情,你可能已经听说过libp2p——用于点对点应用的模块化网络栈。libp2p由许多模块化的库组成,p2p网络开发人员可以从中选择和重用他们所需要的协议,同时使应用程序之间的升级和互操作变得容易。这有助于web3开发者更快地启动和运行,构建更弹性的去中心化应用,并利用去中心化发布-订阅和分布式哈希表等高级功能。
libp2p与当今网络协议栈的不同之处在于它专注于传输不可知、模块化和可移植编码(如https://github.com/multiformats/multiaddr)。这些特性使得libp2p成为大多数新的dweb项目、区块链和点对点应用的首选网络层。阅读更多关于为什么项目选择在libp2p上构建的信息,或者观看技术负责人Raul Kripalani最近在DevCon5上的演讲。
一、2019年增长
在过去的一年里,libp2p有了惊人的改进,该协议迅速成为大量项目的事实上的web3网络层。
这方面最重要的消息可能是官方采用libp2p作为Ethereum 2.0网络规范的网络层。Ethereum 2.0是Ethereum的下一代产品,拥有庞大且蓬勃发展的客户端、dapp和开发者网络。libp2p在2019年的一大重点是提升稳定性、可扩展性和易用性,以满足如此大规模的区块链的要求。
libp2p 现在有 7 种语言实现:
协议实验室的go-libp2p
(https://github.com/libp2p/go-libp2p)
rust-libp2p by Polkadot
(https://github.com/libp2p/rust-libp2p)
协议实验室的js-libp2p
cpp-libp2p by Soramitsu
jvm-libp2p by Web3 Labs
nim-libp2p by Status.im
py-libp2p by Ethereum Foundation
视频地址:https://youtu.be/B7ecKMtNkXs
另一个基于libp2p构建的主要新区块链是Filecoin,它计划在今年夏天推出他们的公共存储和检索网络。在一个活跃的testnet矿工社区中,已经上线了超过7.5PB的存储空间,2019年libp2p的一大重点就是落地性能和加固改进以满足Filecoin的需求。
除了Filecoin和Ethereum 2之外,现在直接基于libp2p构建的项目有二十多个,包括:(Polkadot和Parity-Substrate,Nervos,Status.im,Paratii,0x,Coda,Enigma,Flow,Harmony,Golem,KeepNetwork和Validity Labs。)
像Matrix.org这样的团体也在早期阶段将libp2p支持添加到他们的应用中,帮助他们用户从p2p网络的弹性和开放性中获益。这些新加入libp2p生态系统的人都很重要——但实际上他们仍然只占所有活跃libp2p节点的一半不到!绝大多数libp2p终端用户来自于通过IPFS(InterPlanetary File System)使用libp2p的dapp、工具和项目!
每周都有数百万终端用户和超过10万个libp2p节点参与IPFS网络。像Opera、Ethereum、Brave、Netflix、微软和Cloudflare这样的组织已经加入了IPFS生态系统,数百个新生的社区拥有的项目,如Audius、Fleek、Textile、Qri、Pinata、OpenBazaar、Berty、Infura和3Box等,都在用IPFS建立他们的业务。
二、2019年和2020年初
这一年的重点是强化和进化堆栈——我们把这个问题解决了!以下是核心团队和我们的社区对libp2p的一些贡献。以下是核心团队和我们的社区为libp2p贡献的一些功能。
在2019年,我们增加了AutoRelay,这个功能确保任何用户都可以轻松启动libp2p节点,而无需在路由器上打开端口或做任何技术上复杂的事情。中继节点将处理流量的中继。即将推出的是由中继连接自动升级为直接连接。我们增加了更好的连接管理,有衰减标签和连接门控。
我们构建并发布了Gossipsub,写了一个新的解释器,后来又增强了安全扩展,包括同行评分、机会主义嫁接、同行交换等功能。2019年的规格改进对于跨语言的兼容性和在新语言中实现libp2p的便利性有了夜以继日的变化。
我们简化了go-libp2p代码库,将抽象和接口集中在go-libp2p-core模块下,逐步停用了12个以上的repos。进一步简化代码库是2020年的路线图。
这一年的一大重点是js-libp2p中的Async Await重构--实现了使用流式迭代而非拉流,以及一些接口重构。
libp2p核心团队发起了一次大规模的文档检查。查看文档网站和新的《入门指南》。
https://github.com/libp2p/js-libp2p/blob/master/doc/GETTING_STARTED.md
我们已经完成了一个重要的DHT 改进项目。对 DHT 的查询速度更快,从而更好地支持 DHT 密集型应用,如IPFS 的名称解析器。https://docs.ipfs.io/concepts/ipns/
对Noise 握手的支持已经被规范化,现在在 libp2p 的所有 7 个实现中都可用。
我们继续更新我们的QUIC实现,以跟上QUIC标准的新版本。我们在js中实现QUIC方面也取得了进展。我们引入了经过认证的对等记录,以增强基础协议的安全性。它们被gossipsub和DHT使用,也可以用于应用协议。
我们已经建立了一个自省协议(https://github.com/libp2p/go-libp2p-core/blob/master/introspection/pb/introspection.proto)的原型,并在go-libp2p中进行了参考实现。我们很快就会发布一个框架和UI shell,它将与所有libp2p实现互操作。
发布
go-libp2p有19个版本,包括v0.9.5。
js-libp2p 有 41 个版本,包括v0.28.0。
rust-libp2p 发布了10 个版本,包括 v0.19.1。
cpp-libp2p 有 2 个版本,包括 v0.0.1-p0。
py-libp2p 有 6 个版本,包括 v0.1.5。
jvm-libp2p有3个版本,包括v0.2.0。
三、社区
今年我们看到了libp2p团队和社区的巨大增长,在各种会议上进行了演讲和研讨会,包括EthCC 2、Web3 2019、EthBerlin Zwei、IPFS Camp、ReadyLayerOne、DevCon V(会谈:
libp2p的现状:https://www.youtube.com/watch?v=NZL7XBxTI_s、
gossipsub:https://www.youtube.com/watch?v=b8AZBVdrCC0)等。
libp2p项目还启动了一个开发补助计划(https://github.com/libp2p/devgrants)。该计划在EthBerlinZwei的首次启动导致社区实现了几个重要的功能,包括Noise handshakes in Go和Lua Wireshark剖析器。赏金计划是参与libp2p项目的好方法。请在GitHub上查看它
四、2020年H1回顾
在整个上半年,我们的首要重点是支持当前和在途采用者的需求,特别是IPFS、Eth2和Filecoin。到目前为止,我们已经在以下方面取得了成果。
内容路由和连接
为了支持IPFS和所有其他dapp用户,我们改进了libp2p的内容路由和连接性,使在分布式网络中寻找和共享内容变得快速可靠。这意味着我们需要深入研究libp2p DHT、提供子系统、NAT遍历等主要系统,以优化和重构性能。我们一直在与协议实验室的IPFS和Testground团队紧密合作,以实现这一目标。
领取专属 10元无门槛券
私享最新 技术干货