買以太坊 買以太坊
Ctrl+D 買以太坊
ads
首頁 > 幣贏 > Info

LOCK:IPFS技術系列 | 揭秘IPFS數據交換模塊Bitswap_BLO

Author:

Time:1900/1/1 0:00:00

導?讀

本文為IPFS系列文第4篇,詳解IPFS的核心模塊——Bitswap。

星際文件系統是一個旨在創建持久且分布式存儲和共享文件的網絡傳輸協議。

與傳統的文件系統不同,它是一種基于內容尋址的點對點超媒體分發協議。

IPFS網絡中的節點構成一個分布式文件系統網絡,其中Bitswap是IPFS的核心模塊,負責與網絡中其他節點之間請求和發送數據塊。

圖1

IPFS將文件分解為稱為block的數據塊,這些塊由內容標識符標識。?

IPFS文件內容存儲在不同的節點上,每個節點存儲rootblock,少量節點存儲完整文件數據,大部分節點存儲部分文件block。因為block分散存儲在不同節點,Bitswap協議解決了從多個節點高效獲取全部數據塊的問題。

圖2?多節點文件存儲示意圖

總體架構

本文基于Bitswapv0.3.3版本進行分析。

分布式資本與協議實驗室合作宣布成立IPFS和Filecoin生態投資基金:據微信公眾號@Filecoin Network消息,分布式資本與協議實驗室合作宣布成立1500萬-2000萬美元的IPFS和Filecoin生態投資基金。該基金的使命是推動IPFS和Filecoin生態的健康有序發展。分布式和協議實驗室將共同管理該基金,分布式資本除了作為財務投資者外,還將作為IPFS和Filecoin的長期戰略合作伙伴。分布式資本計劃籌集1500-2000萬美元,并承諾將以FIL來進行資本籌集和部署,而不是穩定幣或其他加密資產中。分布式已與其他有限合伙人一起向該基金投放了100萬美元。另外,在過去的一年里,Filecoin開發者資助項目已經向社區提交的項目提案頒發了40多筆開發補助金。12月22日,Filecoin網絡進行了主網啟動以來的第四次升級——實施FIP-0009方案。此次升級大幅降低了網絡上證明存儲的成本。[2020/12/26 16:33:21]

IPFS向Bitswap獲取block,Bitswap是IPFSexchange接口的具體實現,負責完成IPFS網絡數據交換功能。

圖3?Bitswap組件架構圖

Bitswap協議內容比較繁瑣,為了降低實現復雜度協議劃分為block請求模塊、block發送模塊、會話管理模塊、block提供者發現模塊、網絡模塊等。

Uniswap最新提交代碼顯示:用戶可以通過星際文件系統IPFS的網關訪問Uniswap網站:金色財經報道,Uniswap最新提交代碼顯示,用戶可以通過星際文件系統IPFS的網關訪問Uniswap網站。代碼提交者表示可以通過使用子域IPFS網關或使用別名訪問Uniswap最新版本這兩種方式來避免通過同一IPFS網關訪問的其他站點在未經許可的情況下讀取和修改Uniswap接口設置的問題。[2020/9/25]

Bitswap模塊負責接收新的消息并且提供對外數據交換接口。

session管理模塊用來管理多個session,每個session管理一組文件的下載,來提高下載效率。

block發送模塊負責管理向其它節點發送數據塊。block請求模塊負責管理數據塊的請求。block提供者發現模塊負責通過DHT網絡發現網絡中的數據塊,通常session找不到已擁有所需block的節點時會調用此模塊進行數據塊發現。

協議概述

為了完成節點間block交換,Bitswap定義了通信消息及通信協議。

圖4

Bitswap消息處理流程:

鏈上ChainUP VP Kris Lee:鏈上ChainUP正深度參與IPFS、DEFI、DOT等生態建設:9月3日,華中區塊鏈周在武漢隆重舉辦。鏈上ChainUP VP Kris Lee在《鏈上三周年:交易系統的設計與探索》主題演講中提到,鏈上ChainUP通過三年的技術深耕,采用云原生與分布式撮合等綜合底層技術來提升交易系統的資源利用率、故障自愈、服務治理等能力,做到了全系統分布式無單點、彈性伸縮、適應突發流量、秒級容災恢復。Kris還分享了鏈上ChainUP的大中臺技術戰略,將交易所基礎服務和平臺數據開放,形成以交易所為核心的產品生態,與行業更多優質企業合作,為客戶提供更多交易所擴展功能。同時,在IPFS、DEFI、DOT等生態建設上,鏈上ChainUP也正在從技術層面深度參與,以推動區塊鏈技術在金融領域更廣泛地應用。[2020/9/3]

1、IPFS請求文件區塊,Bitswap發送want-have消息攜帶CID1信息到連接的所有節點。節點根據自己是否有CID1文件塊返回have或dont-have消息。

2、client向擁有CID1的節點發送want-block消息,節點返回相應的block消息。

3、當沒有節點有請求的block,Bitswap廣播want-have到所有的連接節點,或者通過DHT查找擁有文件區塊的節點。

模塊詳解

BBKX平臺將于7月3日上線首期IPFS云算力認購:據官方消息,BBKX平臺將于7月3日21:00(UTC+8)開啟首期IPFS云算力搶購,首期搶購價格195USDT/TB/年,約為市場價的八折。同時,BBKX平臺帶來雙重保障:1、2020年底FIL未上線即全額退款;2、一年內未回本即順延不超過一年。

BBKX平臺IPFS云算力依托知名礦池建立,起購門檻低至19.5USDT,可以滿足不同用戶的投資需求。

BBKX成立于2019年6月,已獲得節點資本與鏈上基金聯合投資,現貨交易手續費低至0.05%。[2020/6/30]

▲?Bitswap模塊

Bitswap模塊負責接收新消息并且實現對外的數據交換接口。

當接收到新消息后,Bitswap處理流程:

1、記錄有關消息的一些統計信息

2、通知發送模塊wants消息,這樣數據發送模塊可以根據實際情況向需求節點發送響應消息。

3、通知發送模塊任何收到的blocks,發送模塊根據節點的需求列表可以將接收到的塊發送給任何需要它們的節點

4、向SessionManager通知接收到的blocks,HAVEs和DONT_HAVEs消息,這樣SessionManager可以通知消息相關的session。

Bitswap通過FacadePattern提高了模塊使用的便利性,使得Bitswap子系統的用法變得簡單,避免了IPFS和Bitswap的高度耦合。

金色財經獨家采訪 IPFS布道者董天一談EOS漏洞:只要是代碼,就可能有bug的存在:金色財經獨家采訪IPFS布道者董天一,IPFS布道者董天一表示:從技術層面來講,只要是代碼,就可能有bug的存在。這和項目復雜程度,寫代碼人員的素質,項目管理能力都有關系。而且很難避免,歷史有很多類似的經典案例。例如 日本瑞穗與東京證交所當年的烏龍事件,因為bug問題導致400億日元(按當時匯率約合人民幣27億)的損失。EOS的事情不是第一次,也不會是最后一次,區塊鏈領域高度依賴計算機代碼,以后更應該提高重視,加強工程管理能力和程序猿的編碼能力。盡可能減少類似的事情。[2018/5/29]

▲?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

Tags:BLOLOCLOCKBLOCAvocado Blockchain GroupPLOCK幣Blocksquareblock幣圈

幣贏
PLE:不受SEC訴訟影響,Ripple如約解鎖巨額XRP_xrp幣價格今日行情

WhaleAlert數據顯示,在2021年的第一天,按照常規操作,Ripple解鎖了大量XRP。不過這一次的解鎖數量比平常稍微少了一點,由10億枚XRP變成了9億枚XRP.

1900/1/1 0:00:00
AIN:為建設中國區塊鏈之都作出更大貢獻!杭州市委常委、余杭區委書記張振豐點贊杭州未來區塊鏈創新中心_Glass Chain

12月20日下午,杭州市委常委、余杭區委書記張振豐,區委常委、常務副區長陳夏林,區委常委、副區長顧國煜,區委辦主任楊文闖,區經信局局長郭云偉,區科技局局長周堅,區財政局局長沈世杰.

1900/1/1 0:00:00
ETH:以太坊L2 Optimism宣布軟啟動,預計2月底上線公開測試網_MetaRealm

以太坊正處于其歷史上前所未有的時刻——從未有過如此多的使用、如此多的興奮和如此多的價值被創造。去年,以太坊累計交易費用超過了比特幣,今天,以太坊每日交易費用收入依然排名靠前.

1900/1/1 0:00:00
區塊鏈:檢察日報刊文:建議增設擅自發行數字貨幣罪_如何使用區塊鏈技術

本文來源:檢察日報,作者:曾婕為了維護貨幣的發行和流通秩序,世界上大多數國家都通過刑法來規范與貨幣相關的行為,同時用刑罰來懲罰涉及貨幣的犯罪行為,甚至以重罪予以打擊.

1900/1/1 0:00:00
NCR:比特幣持倉周報 | 2020 收官周市場現莫名恐慌,大型機構收獲“獨贏”_iBTC (Synthetix)

撰文:7 1月5日,CFTC公布了最新一期的CME比特幣期貨周報,這也是2020年最后一期持倉周報.

1900/1/1 0:00:00
比特幣:2021年,比特幣正在醞釀一場風暴_OIN

今天和大家分享一下對最近兩則新聞的感受。風波不斷的美國大選在上周鬧出了大事,現任總統的支持者大量在華盛頓聚集,情緒高昂,不滿選舉結果,更有人沖進了國會大廈,在全世界的關注下,上演了全武行的劇情.

1900/1/1 0:00:00
ads