區(qū)塊鏈中最早的數據交換協(xié)議當屬BitTorrent,這也是大多數區(qū)塊鏈節(jié)點之間實現交流的基礎協(xié)議,當然IPFS也必須需要能實現p2p的數據交換協(xié)議,IPFS在BitTorrent的基礎上實現了自己BitSwap協(xié)議,該協(xié)議具體在IPFS節(jié)點之間如何運用呢?本文將詳細介紹。
何為BitSwap協(xié)議?
BitSwap協(xié)議的定義是IPFS網絡中數據塊交換方式的基礎協(xié)議,它是一個基于統(tǒng)一格式的消息對等協(xié)議,有別于request/response方式。簡單點來說就是在IPFS節(jié)點中交換信息,其請求和響應的消息都使用同一類型的消息包。也就是在IPFS網絡中所有的Peers(節(jié)點身份)都是對等節(jié)點,不存在BitTorrent中那樣的Tracker服務器,所以通信方式更加簡單。
不僅如此BitSwap協(xié)議清晰的定義了如何請求數據、如何發(fā)送數據、向誰發(fā)送數據等策略,并且每個節(jié)點都允許擁有自己的策略,將其作為數據交換的核心模塊,BitSwap協(xié)議還使用一些預期設定好的激勵機制來促進網絡中數據的流動,通過一個點對點之間的傳輸記錄交易賬本來達到互惠的目的,讓參與的節(jié)點有收益。
Bitswap 的工作原理?
大家都知道IPFS將文件分成稱為塊的塊,并且由內容標識符(CID (打開新窗口))。當節(jié)點想要運行Bitswap協(xié)議想要獲取文件,他們會向其他對等方發(fā)送“想要的列表”。“想要列表”是對等方想要接收的塊的CID列表。每個節(jié)點都會記住它的對等方想要哪些塊,并且每次節(jié)點收到一個塊時,它都會檢查是否有任何對等方想要該塊并將其發(fā)送給他們。簡單點就是摸清楚每個節(jié)點的需求是什么,再就是其節(jié)點有哪些文件。
而為了找出哪些對等點擁有構成文件的塊,Bitswap節(jié)點首先向它所連接的所有對等點發(fā)送對根塊 CID 的需求。如果節(jié)點沒有區(qū)塊,節(jié)點將會查詢分布式哈希表(DHT)詢問誰擁有根塊。任何以根塊響應的對等點都被添加到會話中。之后Bitswap只向會話中的對等方發(fā)送請求,以免請求淹沒網絡。簡單來說就是起到一個尋找的功能,大家可以看成內容尋址,就是文件如果沒有切分成塊給多個節(jié)點存儲,那就只有最初存儲文件的節(jié)點有,其節(jié)點就是根塊存儲所在。
這就是Bitswap協(xié)議的主要功能,其功能還有幾個重要的策略體系:
BitSwap信用體系:上面說了BitSwap協(xié)議會有激勵獎勵,這正是為了節(jié)點去樂于分享或交換數據。其信用體系可以用“有借有還,再借不難”八個字概括,定義來說就是發(fā)送給其他節(jié)點數據可以增加信用值,從其他節(jié)點接受數據降低信用值,說白了就是要分享出去,不要只接受。一個節(jié)點如果只接收數據而不分享數據,信用值就會降得很低而被其他節(jié)點忽略掉。
BitSwap策略:根據信用體系,BitSwap可以采取不同的策略來實現,每一種策略(大家可以詳細去官網查閱)都會對系統(tǒng)的整體性能產生不同的影響。不過其目的都是為了:節(jié)點數據交換的整體性能和效率最高,阻止“吃白食”的現象;就是不能夠只下載數據不上傳數據;可以有效的防止一些攻擊行為(比如:女巫攻擊);對信任節(jié)點建立寬松機制節(jié)點等等。
BitSwap賬單:BitSwap節(jié)點會記錄下來和其他節(jié)點通信的賬單(數據收發(fā)),可以保持節(jié)點間數據交換的歷史和防止篡改。當兩個節(jié)點之間建立連接的時候,BitSwap會相互交換賬單信息,如果賬單不匹配,則清除重新記賬。惡意節(jié)點可能會故意“丟失”賬單,以希望清除掉自己的債務。其它交互節(jié)點會把這些都記下來,如果總是發(fā)生,節(jié)點就會被拒絕。
總體來說Bitswap協(xié)議強調的是節(jié)點之間的交換,并制定了一些信用或規(guī)則來讓每一個節(jié)點去分享文件,去分享數據,而不是只接受文件,如果有這樣的節(jié)點存儲,最終會被系統(tǒng)給孤立。而且相比較BitTorrent協(xié)議在IPFS網絡中使用 Bitswap 協(xié)議獲取數據塊一個最大的特點是,請求的數據塊是跨文件的,任何類型的數據塊,只要其哈希值一樣,都可以拿為己用,一個Peer Swarm對應的是整個IPFS網絡中的數據,因此所有的數據塊都可以被用來使用,實現真正的跨文件數據交換,這也是Bitswap協(xié)議的特點。
發(fā)布評論請先 登錄
相關推薦
如何配置MTP設備進行數據交換
使用CAN總線進行數據采集的方法
PROFINET網關HT3S-PNS-MDN讀取七星華創(chuàng)CS310空氣流量計數據應用案例
![PROFINET網關HT3S-PNS-MDN讀取七星華創(chuàng)CS310空氣流量計<b class='flag-5'>數據</b>應用案例](https://file1.elecfans.com/web2/M00/0A/0D/wKgaomcGNG-AEW9pAAdFHSd2wLY550.jpg)
Profibus DP網關HT3S-DPS-MDN讀取七星華創(chuàng)CS310空氣流量計數據應用案例
![Profibus DP網關HT3S-DPS-MDN讀取七星華創(chuàng)CS310空氣流量計<b class='flag-5'>數據</b>應用案例](https://file1.elecfans.com/web2/M00/0A/09/wKgaomcF_R2AbFAeAAURm85w_5Q879.jpg)
EtherCAT網關HT3S-ECS-MDN讀取七星華創(chuàng)CS310空氣流量計數據應用案例
![EtherCAT網關HT3S-ECS-MDN讀取七星華創(chuàng)CS310空氣流量計<b class='flag-5'>數據</b>應用案例](https://file1.elecfans.com/web2/M00/09/F7/wKgaomcE0SeARZHeAAYaKyREpM4669.jpg)
DeviceNet網關HT3S-DNS-MDN讀取七星華創(chuàng)CS310空氣流量計數據應用案例
![DeviceNet網關HT3S-DNS-MDN讀取七星華創(chuàng)CS310空氣流量計<b class='flag-5'>數據</b>應用案例](https://file1.elecfans.com/web2/M00/07/62/wKgaomblOMuAAa0GAAGa5uHiH7I074.jpg)
HT3S-EIS-MDN網關讀取七星華創(chuàng)CS310空氣流量計數據應用案例
![HT3S-EIS-MDN網關讀取七星華創(chuàng)CS310空氣流量計<b class='flag-5'>數據</b>應用案例](https://file1.elecfans.com/web2/M00/06/52/wKgZombj8MWANeDxAAYPPvmEfRA345.jpg)
反射內存交換機與普通交換機的區(qū)別
![反射內存<b class='flag-5'>交換</b>機與普通<b class='flag-5'>交換</b>機的區(qū)別](https://file1.elecfans.com/web2/M00/06/1A/wKgaombXzAaAePzVAABG0fUEtU0800.png)
和利時LX-CU500PLC通過HT3S-ECS-MTP網關 與TWINCAT(EtherCAT)交換數據
![和利時LX-CU500PLC通過HT3S-ECS-MTP網關 與TWINCAT(EtherCAT)<b class='flag-5'>交換</b><b class='flag-5'>數據</b>](https://file1.elecfans.com/web2/M00/ED/51/wKgZomZqrmCARgX7AAMg7idte6s690.jpg)
PLC和變頻器是如何進行通訊
3芯M5接口數據交換如何
![3芯M5接口<b class='flag-5'>數據交換</b>如何](https://file1.elecfans.com/web2/M00/C6/54/wKgaomX9JraAfrffAADMjZr3SK0688.png)
評論