暨5月20日Dr.GavinWood宣布启动Substrate接入IPFS的开发工作-作为2020年最为瞩目的两大公链项目,IPFS和Polkadot的合作已悄然开始。全文阅读时间:20分钟文章面向Polkadot和IPFS生态的开发者与技术爱好者如果大家有关注过Polkadot、Substrate、IPFS的动态,可能都对libp2p这一名词比较眼熟。Libp2p是一个点对点网络协议堆栈。最初的标准版本是由协议实验室(ProtocolLab)开发,并基于libp2p打造出IPFS星际文件系统,同时多个开发团队基于开源的libp2p框架又开发出适合自己的X-libp2p点对点网络底层。
图:Web3技术栈-Lay0,Lay1Libp2p作为一个模块化和可拓展的网络堆栈,已由IPFS,波卡,Substrate等很多开源项目所应用。Libp2p实际上是众多点对点网络协议的的统称,并由众多开发者帮助实现了Rust,Python等语言、以及面向不同对象的衍生版本;例如Gossip协议,BitTorrent,TOR,都是libp2p协议的一部分--最初是由协议实验室发起,一直在维持libp2p的Go语言和JavaScript语言实现的开发和运维,波卡的开发公司ParityTechnologies实现了Rust语言版的Libp2p。作为一个开源项目,Libp2p网络栈可以由任何开发者开发并不断扩张到任何应用。波卡之中的IPFSprotocol
图:IPFS协议与libp2p协议-Polkadot技术栈在开发的过程中,波卡自己使用了由Rust语言开发的版本跟协议实验室的“标准”libp2p版本有所不同。首先以林嘉文博士(Dr.GavinWood)带领的Polkadot项目与Parity开发团队推出了自己的区块链开发框架Substrate,Substrate框架下的libp2p网络协议是“标准libp2p协议和自研点对点网络协议的混合”。<Substrate是波卡开发团队Parity研发的区块链搭建SDK,具有:适配扩容互操作结构,runtime逻辑自定义,无需分叉升级,适用于所有波卡生态项目并可在未来接入波卡等优点,Gavin曾用Substrate演示15分钟搭建并发布一条公链>在libp2p官方标准协议方面,波卡共享了IPFS的libp2p,共同的功能包括connection-checking(Ping协议),informationonpeers(Identity协议),以及Kademiliaramdonwalking等。
图:Cratesc_network-Parity而同时基于Libp2p,Substrate框架为此专门研发一套点对点网络协议:LegacySubstratestream:用于获取区块信息(同步)的请求-响应、轻量级客户端、事务通知和区块声明等。详情参考:https://crates.parity.io/Substrate与IPFS:
为区块链搭建框架赋能星际文件系统-IPFS是一种点对点的超媒体协议,它允许将文件上传到网络,并与内容可寻址URI共享。尽管IPFS和Substrate都使用libp2p,但不能说Substrate“使用”IPFS,因为除了共享用于联网的底层库之外,更多的是基于IPFS和libp2p的技术扩展。
图:Substrate技术栈那么Polkadot和Substrate会选择libp2p作为网络层呢?首先目前的事实是几乎所有的分布式的点对点的网络协议都存在传统中心授信式网络的遗留问题。Libp2p的开源属性使其成为开发者可以即插即用的工具套件。首先在去分布式计算中,最重要的转变之一就是Client/Server的概念不复存在。以你的家用宽带路由器为例,所有连接到宽带的设备都会有一个私人的IP地址。当你向服务器请求服务时,你的宽带路由器就会将你的私人IP地址替换成一个家庭网络内的公用IP地址。
如果你自己的所有设备就是该宽带的所有连接的客户端,那就不会产生中心化服务器造成的问题,但如果一个来自外界的陌生客户端会连接到你的宽带路由器并想你的设备发出“请求”-->此时你的设备就会行使服务器的角色并向外界的请求者发出所对应的数据或命令回复-导致数据泄漏。这个状态就是典型的NAT穿透问题。而Libp2p就可以处理这一问题,点对点网络框架下客户端同时也是服务器,每个点与点之间会相互请求和传输数据并由设定好的算法对网络行为进行通过或不通过的验证。一个网络节点之外包装的形式可以是各种硬件、或是操作系统、或者通信协议。Libp2p既支持未加密的(如TCP、UDP),也支持开箱即用的加密协议(如TLS、Noise)。Libp2p的“中继”理念众多使用libp2p网络底层的项目会共享libp2p带来的优势,以libp2p的“子协议Relay”为例。
图:两个网络节点的Relay协议,通过Multiformats的Multiaddr自描述地址对传输的地址进行解释当众多网络节点依附于各种不一样的NAT路由和服务器平台时,节点们是不允许外部的连接接入的。如果必须要把这些节点连接起来形成一个去中心化的网络环境,Libp2p的Relay协议就把proxy设置在并生成连接于任意两个节点之间:这样所有的信息传输都会被加密并由远端的多数节点进行验证,因此使proxy本身无法成为验证中间人但仍担任传输中继的角色。
图:2020年5月20日波卡项目领导人林嘉文博士宣布启动Substrate接入IPFS的开发工作。据了解,Web3基金会在2019年已与一家头部IPFS矿机品牌初步达成波卡上线后数据存储合作意向。在Libp2p网络底层通过IPFS从其他链上调用数据,其中IPFS数据交换协议“ContentTransfer”:此版本包括主要的Bitswap重构,运行新的和向后兼容的Bitswap协议。借助重构的Bitswap协议,一是可以实现从使用新协议的其他节点获取数据时,几乎没有重复区块;二是Bitswap协议将从从多个节点获取数据时会实现更好的并行性(parallelism)。
图:IPFS–Bitswap:thedataexchangeprotocol生态互赢:为什么波卡和Substrate需要libp2p与IPFS
Libp2p协议自诞生以来承担着Web3.0的使命,为众多分布式网络项目赋能。而Polkadot之所以在众多解决方案中,能够成为引领跨链的生态之一,很大程度上和它的可拓展性(Scalability)分不开。其基础的Substrate区块链搭建框架在底层也应用到了IPFS。Libp2p定位为未来去中心应用程序的标准,一种灵活的跨平台网络框架,用于点对点应用程序。可以处理Polkadot生态系统中的对等方的发现和通信。现在多个网络都采用了Libp2p技术。如EOS、以太坊2.0、Substrate(Polkadot)、Agoric、Filecoin。根据Substrate的技术文档:目前不可能也不打算使用libp2p网络堆栈和rust-libp2p库之外的其他更优秀的网络堆栈。可以说是目前任何分布式网络协议都会与libp2p这个网络底层产生关联。开源的Libp2p技术为去分布式网络源源不断注入新鲜血液,“NoProxy”–一个无需授信的世界,波卡与IPFS在libp2p网络上搭建着共通的宏伟愿景–Web3.0
Libp2p协议自诞生以来承担着Web3.0的使命,为众多分布式网络项目赋能。而Polkadot之所以在众多解决方案中,能够成为引领跨链的生态之一,很大程度上和它的可拓展性(Scalability)分不开。其基础的Substrate区块链搭建框架在底层也应用到了IPFS。Libp2p定位为未来去中心应用程序的标准,一种灵活的跨平台网络框架,用于点对点应用程序。可以处理Polkadot生态系统中的对等方的发现和通信。现在多个网络都采用了Libp2p技术。如EOS、以太坊2.0、Substrate(Polkadot)、Agoric、Filecoin。根据Substrate的技术文档:目前不可能也不打算使用libp2p网络堆栈和rust-libp2p库之外的其他更优秀的网络堆栈。可以说是目前任何分布式网络协议都会与libp2p这个网络底层产生关联。开源的Libp2p技术为去分布式网络源源不断注入新鲜血液,“NoProxy”–一个无需授信的世界,波卡与IPFS在libp2p网络上搭建着共通的宏伟愿景–Web3.0
撰文:ShawnRingLin-PolkaBase图表:ShawnRingLin校对:TezasConsulting,CANDAQCryptoSkyAMA,LianDu,链读,连读编辑:ShawnRingLin参考文献:
https://medium.com/paritytech/https://wiki.polkadot.network/https://crates.parity.io/sc_network/index.htmlhttps://segmentfault.com/https://www.dropbox.com/https://github.com/ipfs/go-ipfs/releas
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。