日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IPFS: BitSwap协议(数据块交换)

發布時間:2025/3/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IPFS: BitSwap协议(数据块交换) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

BitSwap協議

IPFS節點之間是如何進行數據交換的?本文來講一下這個問題。

IPFS在BitTorrent的基礎上實現了p2p數據交換協議:BitSwap協議


IPFS每一個節點都維護了兩個列表:

  • 已有的數據塊(have_list)
  • 想要的數據塊(want_list)

當兩個節點建立連接后,他們會根據hava_list和want_list互通有無。跟BitTorrent不一樣的是:BitSwap獲取數據塊的時候不限于從同一個torrent里面。也就是說BitSwap可以從不屬于本文件的其他文件獲取數據塊(只要數據塊的哈希值一樣,數據內容必然是一樣的),從全局考慮,這使得BitSwap的效率相比于BitTorrent更高。

我們知道,對于p2p網絡,有一個很重要的問題是:如何激勵大家分享自己的數據?用過迅雷、BitTorrent、emule等p2p軟件的讀者應該都知道,如果只下載不上傳的話,很快你的節點就無法下載數據了或者下載數據變得很慢。每一個p2p軟件都實現了自己的數據分享策略。IPFS也不例外。

IPFS的策略體系由信用、策略、賬單組成

BitSwap信用體系

BitSwap協議必須能夠激勵節點去樂于分享數據,即使這個節點暫時沒有數據需求。IPFS根據節點的之間的數據收發建立了一個信用體系:有借有還,再借不難。

  • 發送給其他節點數據可以增加信用值
  • 從其他節點接受數據降低信用值

如果一個節點只接收數據而不分享數據,信用值就會降得很低而被其他節點忽略掉。簡單來講就是:你樂于分享數據,其它節點也樂于發送數據給你,如果你不愿意分享,那么其它節點也不愿意給你數據。

BitSwap策略

根據上面的信用體系,BitSwap可以采取不同的策略來實現,每一種策略都會對系統的整體性能產生不同的影響。策略的目標是:

  • 節點數據交換的整體性能和效率最高
  • 阻止“吃白食”(freeloaders)的現象。就是不能夠只下載數據不上傳數據
  • 可以有效的防止一些攻擊行為(比如:女巫攻擊)
  • 對信任節點建立寬松機制(lenient)
  • IPFS提供一個可參考的策略機制(實際的實現可以有所變化):

    每個節點根據和其他節點的收發數據,計算負債率(debt ratio,r)
    r = bytes_sent / (bytes_recv + 1) 節點根據負債率計算出來和這個節點的數據發送率(P) P (send|r) = 1? 1/(1+exp(6?3r))

    根據這兩個函數可以發現,當負債率達到某一個值的時候負債率會急劇下降。

    這個模型表達的意義:如果一個節點只接受數據不分享數據,別人發送給它數據的概率會越來越低(到達某一個值后就會急劇降低接近0),如果節點持續保持分享數據,別的節點向你發送數據的概率就會越來越大。

    IPFS的官方論文里面沒有給出來曲線圖(只放了一個空白的圖),小編根據函數幫大家把曲線圖畫出來了。(小編一般是不愿意往文章里面放公式的,霍金說過:一本科普書中,每多一個公式,讀者減少就會一半,但是這兩個公式比較簡單,小編就冒個險 )

    P (send|r) = 1? 1/(1+exp(6?3r))

    BitSwap賬單

    BitSwap節點會記錄下來和其他節點通信的賬單(數據收發),可以保持節點間數據交換的歷史和防止篡改。當兩個節點之間建立連接的時候,BitSwap會相互交換賬單信息,如果賬單不匹配,則清除重新記賬。惡意節點可能會故意“丟失”賬單,以希望清除掉自己的債務。其它交互節點會把這些都記下來,如果總是發生,節點就會被拒絕。

    BitSwap協議

    IPFS節點之間的數據交換和激勵體系大致就是這些內容。有想深入了解的讀者,建議參考一下 BitTorrent協議,IPFS的p2p協議大部分都來自于BitTorrent:

    en.wikipedia.org/wiki/B

    下次我們主要講一下IPFS節點是如何找到彼此的?


    本專欄的微信公眾號IPFS指南(ipfs_guide),致力于IPFS的知識的普及,如果你對IFPS、Filecoin,挖礦感興趣,敬請關注!

    本專欄的文章允許轉載,但請注明:原文來自于知乎專欄:IPFS指南(IPFS指南)作者:飛向未來


    總結

    以上是生活随笔為你收集整理的IPFS: BitSwap协议(数据块交换)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。