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