导?读
本文为IPFS系列文第4篇,详解IPFS的核心模块——Bitswap。
星际文件系统是一个旨在创建持久且分布式存储和共享文件的网络传输协议。
与传统的文件系统不同,它是一种基于内容寻址的点对点超媒体分发协议。
IPFS网络中的节点构成一个分布式文件系统网络,其中Bitswap是IPFS的核心模块,负责与网络中其他节点之间请求和发送数据块。
图1
IPFS将文件分解为称为block的数据块,这些块由内容标识符标识。?
IPFS文件内容存储在不同的节点上,每个节点存储rootblock,少量节点存储完整文件数据,大部分节点存储部分文件block。因为block分散存储在不同节点,Bitswap协议解决了从多个节点高效获取全部数据块的问题。
图2?多节点文件存储示意图
总体架构
本文基于Bitswapv0.3.3版本进行分析。
科蓝软件:IPFS强调的是Web内容的分发,使其完成去中心化:9月26日消息,科蓝软件在董秘回答投资者提问时表示,IPFS强调的是Web内容的分发,使其完成去中心化,相对于当前的http来说是升级版,而数据库是数据的存储,强调的是数据存储的安全、可靠性;因此无论以何种方式分发数据,最终都会被存储,这时候就会用到数据库。另一方面,IPFS的核心是"无主"分布式存储,从当前的应用效果来看,更多仍停留在挖矿和代币的交易,并没有多少真正有价值数据记录到IPFS,从存取效率来看,也是比较低的。 公司一向重视分布式数据协同机制,注重在区块链和分布式存储领域的技术积累,因此公司有在IPFS和云存储方面的技术储备,目前正在布局云原生数据库、云存储、云计算相关领域,后续会根据产业发展逐步演进出产品。[2021/9/26 17:07:37]
IPFS向Bitswap获取block,Bitswap是IPFSexchange接口的具体实现,负责完成IPFS网络数据交换功能。
图3?Bitswap组件架构图
Bitswap协议内容比较繁琐,为了降低实现复杂度协议划分为block请求模块、block发送模块、会话管理模块、block提供者发现模块、网络模块等。
新加坡WBF交易所已上线IPFS:据官方消息显示,WBF交易所已上线IPFS.,并于5月27日16:00在开放区上IPFS/USDT交易对,充值提币已开启。
星际力量闪存系统 Interstellar Power Flash System(简称 IPFS),是美国华尔街 IPFS 实验室研发的新一代分布式存储系统。IPFS 实验室由全球顶级区块链技术爱好者组成,其 中包括了来自谷歌、亚马逊、微软等知名企业的在职工程师以及参与过 IPFS 代码开发的顶 级工程师。[2021/6/1 23:00:48]
Bitswap模块负责接收新的消息并且提供对外数据交换接口。
session管理模块用来管理多个session,每个session管理一组文件的下载,来提高下载效率。
block发送模块负责管理向其它节点发送数据块。block请求模块负责管理数据块的请求。block提供者发现模块负责通过DHT网络发现网络中的数据块,通常session找不到已拥有所需block的节点时会调用此模块进行数据块发现。
协议概述
为了完成节点间block交换,Bitswap定义了通信消息及通信协议。
金色算力云Maggie Lin:金色算力云以算力为切入点,专注深耕IPFS领域:IPFS100.com现场报道,9月20日,由节点咨询主办的“DeFi崛起 引领矿业新思潮”论坛在厦门举办。金色算力云副总裁Maggie Lin发表主题演讲。Maggie指出,非常看好Filecoin未来的发展前景,并从合规、融资、激励、解决行业痛点等方面解释了进军Filecoin的原因。Maggie认为,目前市场上可以通过矿机、云算力、二级市场购买期货三种方式参与到Filecoin。通过客观分析三种方式的优劣势,为普通用户购买算力筛选出评判标准:一是平台实力,二是矿机单台投入产出,三是数据是否公开透明。最后,Maggie分享了金色算力云的四大优势:第一、石油矿池技术加持;第二、一键购买;第三、两大保障;第四、挖矿的准入门槛低。[2020/9/20]
图4
Bitswap消息处理流程:
1、IPFS请求文件区块,Bitswap发送want-have消息携带CID1信息到连接的所有节点。节点根据自己是否有CID1文件块返回have或dont-have消息。
2、client向拥有CID1的节点发送want-block消息,节点返回相应的block消息。
3、当没有节点有请求的block,Bitswap广播want-have到所有的连接节点,或者通过DHT查找拥有文件区块的节点。
李世庚:IPFS落地后对于整个DeFi、甚至整个区块链行业都有非常大的利好:IPFS100.com现场报道,9月20日,由节点咨询主办,WAVES、金色财经、IPFS100联合主办的“DeFi崛起 引领矿业新思潮”共为创业者大会·鹭岛分论坛在厦门举行。
在圆桌讨论环节中,WAVES中国区负责人李世庚表示,关于DeFi已经讲了,短期来看一定有泡沫,而且泡沫破灭会很惨烈,目前来看DeFi很多项目是有泡沫的,也没有什么好说的。但是关于未来会有什么样的变局,或者未来DeFi整个发展方向会不会是完全革新性的方向,我的观点是很明确的。未来区块链的技术指标和各项性能,随着链本身的技术以及整个网络环境的提升,这是双方面的,一方面是现有的技术瓶颈被突破,另外一方面,网络的承载能力和一些硬件提升都会导致整个基础设施的升级,这就像最早的互联网时代只能看一个小说或听一个音乐,现在可以直接几秒钟下载两三个小时的电影。整个基础设施的升级会推动DeFi行业的发展,甚至是使得很多之前在DeFi产业做起来很困难的事,以后会变得很顺畅。举例,Uniswap其实真的使用很差,跟链本身的硬件基础有非常紧密的联系。所以我认为在更长时间维度看,包括IPFS落地应用之后,对于整个DeFi、甚至整个区块链行业都有非常大的利好。所以我还是看好未来DeFi变局是随着技术革新和产品本身、硬件网络的进步有越来越多的应用形态和用户体验。[2020/9/20]
模块详解
现场| 汉光百货董天一:IPFS能弥补HTTP不足 与区块链的结合顺理成章:金色财经现场报道,在今日MSUP主办的全球区块链技术案例峰会上,汉光百货商务电子技术总监、IPFS技术专家董天一在演讲中提到,IPFS弥补了HTTP的不足,将为我们打造更好的互联网。IPFS能够改变文件存储、数据在互联网上传输和人类使用数据的方式,并能进行存储资源、带宽资源的优化配置,因此,区块链项目选择IPFS作为存储解决方案是顺理成章的事。[2018/9/9]
▲?Bitswap模块
Bitswap模块负责接收新消息并且实现对外的数据交换接口。
当接收到新消息后,Bitswap处理流程:
1、记录有关消息的一些统计信息
2、通知发送模块wants消息,这样数据发送模块可以根据实际情况向需求节点发送响应消息。
3、通知发送模块任何收到的blocks,发送模块根据节点的需求列表可以将接收到的块发送给任何需要它们的节点
4、向SessionManager通知接收到的blocks,HAVEs和DONT_HAVEs消息,这样SessionManager可以通知消息相关的session。
Bitswap通过FacadePattern提高了模块使用的便利性,使得Bitswap子系统的用法变得简单,避免了IPFS和Bitswap的高度耦合。
▲?Session管理模块
session管理模块用来管理多个数据块下载session,每个session管理一组文件的下载。
当SessionManager收到新消息时,它将
1、通知BlockPresenceManager组件跟踪每个block。
2、通知对接收到的block感兴趣并想要的Sessions。
3、通知PeerManager组件收到的block,PeerManager检查是否有任何wants被发送到节点以接收已经收到的块。?如果是这样,它将向那些节点发送“CANCEL”消息,防止其它节点重复发送消息。
Session管理模块通过协调多个session的数据需求来提高数据交互的效率,避免数据块的重复请求、发送。
▲?Session模块
Session管理一组文件的下载,用来提高一组文件块,比如单个文件下载效率。当IPFS调用Bitswap时,Bitswap会创建一个新的Session并调用Session的相应方法,比如GetBlocks()获取blocks。Session会管理一个节点列表,数据获取过程只会向session中的节点获取数据,而不是所有的连接节点。当Session中的节点都没有某个block时,Bitswap才会通过DHT获取具有block的节点并加入session。
由于session刚开始没有任何节点,处于“discovery”模式。当IPFS最初从session请求block时,该session处理流程如下:
1、通知SessionInterestManager组件它感兴趣的block。
2、通知sessionWantManager组件需要的block。
3、通知PeerManager组件向连接节点发送“want-have”消息,以发现哪些节点有需要的block。
4、查询ProviderQueryManager组件以发现哪些节点具有该block。
当session收到带有“HAVE”或“block”的消息时,它将通知SessionPeerManager组件。
当session收到带有“block”的消息时,它将通知SessionInterestManager组件。
一旦session具有节点,就不再处于“discovery”模式。当IPFS请求后续block时,session将通知sessionWantSender组件。sessionWantSender组件通知PeerManager组件向会话中的节点发送“want-have”和“want-block”消息。
对于session所需的每个block,sessionWantSender组件通过与BlockPresenceManager组件核对哪些节点已为该block发送了“HAVE”,来确定哪个节点最有可能拥有该block。如果多个节点发送过“HAVE”,则会根据先前请求回复速度来选择节点。
由于DHT内容发现速度慢并且网络带宽消耗大,session通过向一组含有目标数据块可能性大的节点获取数据,从而大大提高了数据块获取的效率。
▲?Block发送模块
block发送模块负责管理向其它节点发送数据块,包含节点需求管理组件和消息发送任务队列。
Engine是block发送模块的处理类,当Engine被告知有新的wants时
1、将want添加到Ledger,Ledger会存储每个节点的需求列表。
2、检查blockstore中的相应block,并将任务添加到PeerTaskQueue组件。如果block库没有想要的block,则添加“DONT_HAVE”任务;如果blockstore有block,对于“want-have”添加了“HAVE”任务,对于“want-block”添加了“block”任务。
3、当Engine收到新block的消息时,它会检查Ledger以查看是否有节点需要此block。对于发送“want-have”的每个节点向PeerTaskQueue组件添加一个?“HAVE”任务,对于为发送了“want-block”的每个节点,向PeerTaskQueue组件添加一个“block”任务。
4、Engine会定期从PeerTaskQueue组件中取出任务,并创建带有“blocks”,“HAVEs”和“DONT_HAVEs”的消息。
PeerTaskQueue组件通过对任务进行优先级排序,发送队列中数据量最少的节点方具有最高优先级,通过这种流控措施,提高数据块发送处理效率。
▲?数据块请求模块
Block请求模块负责管理数据块的请求。PeerManager组件为连接到Bitswap的每个节点创建一个MessageQueue组件,记录了“want-have”?、“want-block”已发送到哪个节点,并将任何新的wants定向到正确的节点。并且MessageQueue组件通过合并多个want为一条消息,然后将该消息发送给节点,从而提高了消息发送效率。
▲?内容发现模块
当Bitswap找不到已拥有所需block的节点时,它会使用DHT进行内容发现。Bitswap通过ProviderQueryManager组件管理这些请求,ProviderQueryManager组件对请求进行速率限制,并对进行中的请求进行重复删除处理。
总结
Bitswap作为IPFS网络数据交换接口的具体实现,设计并实现了一套高效的节点间交换数据的协议。
协议主要关注点是如何快速、高效获取需要的block,其中包括节点选择策略,如何最大化利用每个节点的能力。
Bitswap通过FacadePattern提高了模块使用的便利性,在具体实现上解耦复杂依赖到各功能模块,从而降低系统实现的复杂度。
作者简介
马耀耀来自数据网格实验室BitXMesh团队研究方向:P2P网络、数据安全传输
参考资料
https://github.com/ipfs/go-bitswap/blob/master/docs/how-bitswap-works.md
https://github.com/ipfs/specs/blob/master/BITSWAP.md
据外媒1月9日报道,Web3APIDAO正式完成了100万美元的前种子轮融资。参与次轮融资的包括RarestoneCapital、TRGC、Gnosis、AutarkVentures、MANTR.
主要财经刊物Investing.com高级金融分析师JesseCohen表示,在主流应用越来越多的情况下,比特币很可能在2021年达到6万美元.
2月15日,去中心化服务平台Avalanche发推宣布,Avalanche-Ethereum桥已经恢复服务。中继节点Meter将密切监视桥运行状况,并在桥恢复稳定时根据需要动态调整服务.
文章来源:汇商传媒 曾准确预测2008年金融海啸、素有“末日博士”之称的纽约大学经济学教授鲁比尼近日接受采访时表示,特斯拉首席执行官马斯克在特斯拉投资比特币之前,于社交媒体上唱多比特币.
今日,EOS创始人BM发帖称,比特币和以太坊的先动优势给它们带来了远远超过其相对原始、低性能设计的技术缺陷的网络效应。自我实现对资本收益和流动性的追求助长了这些网络效应.
近期以来,波卡成为了币圈的热门,除了币价上涨之外,来自波卡和kusama的插槽炒作也是吸引了很多人的眼球,并且波卡的市值也不断的上升,大有取代usdt,赶超以太坊之势.