黑馬運營第25期 乾貨分享—IPFS技術架構解析

買賣虛擬貨幣

小夥伴們大家好,這是黑馬運營第二十四期。本文為小小昕本人編輯。
小小昕語錄:“路,是自己走出來的;機會是自己創造出來的!”

IPFS的身體架構

      IPFS至少有八層子協議棧,從上至下為身份、網路、路由、交換、物件、檔案、命名、應用。每個協議棧各司其職,又互相搭配。


IPFS技術構架圖

      身份層和路由層可以一起解釋。對等節點身份資訊的生成以及路由規則是透過Kademlia協議生成制定。KAD協議實質是構建了一個分散式鬆散Hash表,簡稱DHT,每個加入這個DHT網路的人都要生成自己的身份資訊,然後才能透過這個身份資訊去負責儲存這個網路裡的資源資訊和其他成員的聯絡資訊。如同微信名片分享,在無法透過直接搜尋微訊號的情況下,如果你要找一個人,可以透過有這個人聯絡方式的朋友分享名片來建立聯絡。


      網路層比較核心,使用的LibP2P可以支援任意傳輸層協議。NAT技術能讓內網中的裝置共用同一個外網IP,我們都體驗過的家庭路由器就是這個原理。

      交換層是類似迅雷這樣的BT工具。迅雷其實是模擬了P2P網路,並建立中心伺服器,當伺服器登記使用者請求資源時,讓請求同樣資源的使用者形成一個小叢集swarm,在這裡分享資料。這種方式有弊端,一位伺服器是由迅雷統一維護,如果出現了故障、宕機時,下載操作無法進行。


      中心化服務還可以限制一些下載請求,人們發明了一種更聰明的方式就是BitTorrent,讓每一個種子節點所要儲存的資料,透過雜湊表儲存在裡面,BT工具相對不太受監管,服務更加穩定。

      IPFS團隊把BitTorrent進行了創新,叫作Bitswap。它增加了信用和帳單體系來激勵節點去分享,我推斷FileCoin有很大概率是基於Bitswap,使用者在Bitswap裡增加資料會增加信用分,分享得越多信用分越高。如果使用者只去檢索資料而不存資料,信用分會越來越低,其它節點會在嵌入連線時優先選擇信用分高的。

      這一設計可以解決女巫攻擊,信用分不可能靠機器刷去提高,一直刷檢索請求,信用分越刷越低。請求次數和儲存量的變數之間有一個比較精妙的演算法,類似一個拋物線,前期可以容忍很多東西,達到一定次數後不再信任。

      物件層和檔案層適合結合來談,它們管理的是IPFS上80%的資料結構,大部分資料物件都是以MerkleDag的結構存在,這為內容定址和去重提供了便利。檔案層是一個新的資料結構,和DAG並列,採用Git一樣的資料結構來支援版本快照。


      命名層具有自我驗證的特性(當其他使用者獲取該物件時,使用指紋公鑰進行驗籤,即驗證所用的公鑰是否與NodeId匹配,這驗證了使用者釋出物件的真實性,同時也獲取到了可變狀態)。並且加入了IPNS這個巧妙的設計來使得加密後的DAG物件名可定義,增強可閱讀性。

      最後是應用層,IPFS核心價值就在於上面執行的應用程式,我們可以利用它類似CDN的功能,在成本很低的頻寬下,去獲得想要的資料,從而提升整個應用程式的效率。


      新的技術取代老的技術,無非就兩點:第一,能提高系統效率;第二,能夠降低系統成本。IPFS透過以上八層協議把這兩點都做到了,但這只是它精妙設計的一方面,另一方面還體現在協議與模組的完美對應。


      IPFS的團隊在開發時,採用高度模組整合化的方式,像搭積木一樣去開發整個專案。協議實驗室團隊2015年創立,到17年的時間裡都在做IPLD、LibP2P、Multiformats這三個模組的開發,它們服務於IPFS底層。

       從IPFS族譜關係圖(縱向資料流圖)上看,你能很直觀地發現,看似複雜的協議構架,其實每一層的實現都繫結在對應的模組下,合理有序。


      Mutiformats是一系列hash加密演算法和自描述方式(從值上就可以知道值是如何生成)的集合,它具有SHA1\SHA256 \SHA512\Blake3B等6種主流的加密方式,用以加密和描述nodeID以及指紋資料的生成。



      libp2p是一個模組化的、點到點網路的庫。它具有強大的瀏覽器支援,能夠完全在瀏覽器上,或透過WebSockets和WebRTC等協議工作,被認為是IPFS核心中的核心。它面對Quic和Tor傳輸協議、GO、JavaScript和Rust語言、Polkadot等各式各樣的傳輸層協議以及複雜的網路裝置,都可以幫助開發者迅速建立一個可用P2P網路層,快速且節約成本,這也是為什麼IPFS技術被眾多區塊鏈專案青睞的緣由。





      IPLD其實是一個轉換中介軟體,將現有的異構資料結構統一成一種格式,方便不同系統之間的資料交換和互操作。現在IPLD支援的資料結構,是比特幣、以太坊的區塊資料,也支援IPFS和IPLD。這也是IPFS為什麼受到區塊鏈系統歡迎的原因之二,它的IPLD中介軟體可以把不同的區塊結構統一成一個標準進行傳遞,為開發者提供了成功性比較高的標準,不用擔心效能、穩定和bug。



      IPFS合理巧妙地應用了這幾個模組的功能,整合為一種容器化的應用程式,執行在獨立節點上,以Web服務的形式,供大家使用訪問。如此複雜卻又如此設計巧妙,專案的完整落地勢必推動網際網路的新一代革命程序,盡請期待。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;