導?讀
本文為IPFS系列文第4篇,詳解IPFS的核心模塊——Bitswap。
星際文件系統是一個旨在創建持久且分布式存儲和共享文件的網絡傳輸協議。
與傳統的文件系統不同,它是一種基于內容尋址的點對點超媒體分發協議。
IPFS網絡中的節點構成一個分布式文件系統網絡,其中Bitswap是IPFS的核心模塊,負責與網絡中其他節點之間請求和發送數據塊。
圖1
IPFS將文件分解為稱為block的數據塊,這些塊由內容標識符標識。?
IPFS文件內容存儲在不同的節點上,每個節點存儲rootblock,少量節點存儲完整文件數據,大部分節點存儲部分文件block。因為block分散存儲在不同節點,Bitswap協議解決了從多個節點高效獲取全部數據塊的問題。
圖2?多節點文件存儲示意圖
總體架構
本文基于Bitswapv0.3.3版本進行分析。
鏈上ChainUP市場合伙人江南:IPFS的誕生可以解決區塊鏈數據存儲體量的問題:由開源礦池和火幣主辦,金色算力云、鏈上ChainUP、Filecoin Beijing聯合主辦的“分布式存儲中國行暨開源礦池IPFS私享會”2020年12月6日在武漢舉行。鏈上ChainUP市場合伙人江南在會上表示,隨著5G、物聯網、大數據時代的到來,人類的數據飛速增長,實現對這些數據存儲、去重和檢索搜尋的需求,也變得越來越重要,需要一個安全、可靠、龐大的基礎設施去承載。而目前在這條賽道中,最領先最落地的技術就是IPFS。也是因為看好IPFS的前景,ChainUP Capital專門設立了一支2000萬美金的IPFS專項資金,希望能夠借此機會,深度布局IPFS領域,助力Filecoin未來的應用場景早日落地。
最后,江南分享了鏈上ChainUP的最新動態:新合約交易系統已于11月底全新上線,為行業的投資者和創業者帶來性能更加穩定可靠的系統,更豐富的交易功能,更多樣的運營工具,歡迎體驗。[2020/12/6 14:21:34]
IPFS向Bitswap獲取block,Bitswap是IPFSexchange接口的具體實現,負責完成IPFS網絡數據交換功能。
鏈上ChainUP VP Kris Lee:鏈上ChainUP正深度參與IPFS、DEFI、DOT等生態建設:9月3日,華中區塊鏈周在武漢隆重舉辦。鏈上ChainUP VP Kris Lee在《鏈上三周年:交易系統的設計與探索》主題演講中提到,鏈上ChainUP通過三年的技術深耕,采用云原生與分布式撮合等綜合底層技術來提升交易系統的資源利用率、故障自愈、服務治理等能力,做到了全系統分布式無單點、彈性伸縮、適應突發流量、秒級容災恢復。Kris還分享了鏈上ChainUP的大中臺技術戰略,將交易所基礎服務和平臺數據開放,形成以交易所為核心的產品生態,與行業更多優質企業合作,為客戶提供更多交易所擴展功能。同時,在IPFS、DEFI、DOT等生態建設上,鏈上ChainUP也正在從技術層面深度參與,以推動區塊鏈技術在金融領域更廣泛地應用。[2020/9/3]
圖3?Bitswap組件架構圖
Bitswap協議內容比較繁瑣,為了降低實現復雜度協議劃分為block請求模塊、block發送模塊、會話管理模塊、block提供者發現模塊、網絡模塊等。
Bitswap模塊負責接收新的消息并且提供對外數據交換接口。
session管理模塊用來管理多個session,每個session管理一組文件的下載,來提高下載效率。
block發送模塊負責管理向其它節點發送數據塊。block請求模塊負責管理數據塊的請求。block提供者發現模塊負責通過DHT網絡發現網絡中的數據塊,通常session找不到已擁有所需block的節點時會調用此模塊進行數據塊發現。
IPFS微信指數日環比上升4.34%:金色財經報道,微信指數顯示,8月25日,區塊鏈微信指數為1332450,日環比下降17%;比特幣微信指數為471989,日環比下降0.81%;以太坊微信指數為123668,日環比下降2.32%;IPFS微信指數為210062,日環比上升4.34%。[2020/8/27]
協議概述
為了完成節點間block交換,Bitswap定義了通信消息及通信協議。
圖4
Bitswap消息處理流程:
1、IPFS請求文件區塊,Bitswap發送want-have消息攜帶CID1信息到連接的所有節點。節點根據自己是否有CID1文件塊返回have或dont-have消息。
2、client向擁有CID1的節點發送want-block消息,節點返回相應的block消息。
3、當沒有節點有請求的block,Bitswap廣播want-have到所有的連接節點,或者通過DHT查找擁有文件區塊的節點。
模塊詳解
▲?Bitswap模塊
Bitswap模塊負責接收新消息并且實現對外的數據交換接口。
王青水:IPFS+Filecoin為數字化生產提供基礎設施、工具配套和環境支撐:金色財經現場報道,7月6日,由杭州市余杭區政府指導,杭州未來科技城管委會、巴比特主辦的2020杭州區塊鏈國際周在杭州舉辦。1475IPFS生態投資基金創始人王青水做了主題為《IPFS的戰略價值和1475的生態布局》的演講。
王青水表示,Web2.0向Web3.0躍遷過程中最大的障礙是數據,沒有大數據,Web3.0空洞無物,但只有大數據,Web3.0就會孤立不通。IPFS+Filecoin巧妙的解決了這一問題,通過分布式存儲和區塊鏈最佳結合,成為下一代互聯網的基石,為數字化生產提供了最重要的基礎設施、工具配套和環境支撐。[2020/7/6]
當接收到新消息后,Bitswap處理流程:
1、記錄有關消息的一些統計信息
2、通知發送模塊wants消息,這樣數據發送模塊可以根據實際情況向需求節點發送響應消息。
3、通知發送模塊任何收到的blocks,發送模塊根據節點的需求列表可以將接收到的塊發送給任何需要它們的節點
4、向SessionManager通知接收到的blocks,HAVEs和DONT_HAVEs消息,這樣SessionManager可以通知消息相關的session。
Bitswap通過FacadePattern提高了模塊使用的便利性,使得Bitswap子系統的用法變得簡單,避免了IPFS和Bitswap的高度耦合。
掌柜調查署|節點資本創始合伙人杜均:單純從技術角度來看,并沒有看到IPFS技術的突破:在今日舉行的掌柜調查署中,針對“IPFS和Filecoin有哪些重大創新,為什么大家如此關注“的問題,節點資本創始合伙人杜均表示,個人認為,無論是比特幣為代表的區塊鏈1.0,還是以太坊為代表的區塊鏈2.0,以及現在我們大熱的IPFS(激勵層Filecoin),都是一群“技術中立”信仰者構建的理想國,希望通過“CODE IS LAW”促進社會變得更公平更美好。單純從技術角度來看,我并沒有看到技術的突破,我更多看到的是利用區塊鏈思維對傳統互聯網訪問協議以及分布式存儲的升級。大家關注的點不一樣,只有極少數人關注到IPFS的技術創新,更多的人關注的是如何賺錢。更多詳情見原文鏈接。[2020/7/4]
▲?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:BLOLOCKBLOCKBLOCVideo BlogVRBLOCKSBlock Ape Scissorsblockchain安卓
前言:馬斯克不是頭一次“帶飛”狗狗幣,但這一次似乎毫無預兆。美國時間周日一早,SpaceX老板、億萬富翁埃隆·馬斯克發了一條極其簡短的twitter:"Oneword:Doge." 這不是馬斯克.
1900/1/1 0:00:00導讀 我們知道,相比公有鏈,聯盟鏈中使用的拜占庭容錯(BFT)算法能夠有效地提升區塊鏈的交易處理能力.
1900/1/1 0:00:00鏈上互助保險平臺NexusMutual創始人HughKarp在推特上向黑客發聲:“互聯網上的IP地址是透明的,如果黑客在12小時內退還盜取資金,將兌現賞金,并且不會過問任何問題”.
1900/1/1 0:00:00原文鏈接: https://verisart.medium.com/are-nfts-the-future-of-the-art-market-59bfe04cfed2 VRtigo Alott.
1900/1/1 0:00:0012月28日晚間,“我與無限——玲聽2021區塊鏈跨年演講”在杭州大劇院重磅開啟。巴比特副總裁/主編、《玲聽區塊鏈》發起人湯霞玲湯霞玲在演講中說,區塊鏈充滿著暴富神話,一度也成為了犯罪的重災區.
1900/1/1 0:00:00近日,中國人民大學財政金融學院黨委副書記、國際貨幣研究所副所長宋科在CMF宏觀經濟熱點問題研討會上發布了CMF中國宏觀經濟專題報告.
1900/1/1 0:00:00