(一)IPFS基礎原理

簡介

        IPFS的中文名是星際文件系統,由Juan Benet在2014年5月份發起。2015年,他創建的IPFS在YCombinator孵化競賽中拿到了鉅額的投資,同時成立了協議實驗室。這個實驗室團隊由14位核心開發者以及社區中上百位代碼貢獻者組成的。2017年8月份IPFS售出10%的代幣,當時募集到了2.57億美金。

      IPFS本質上是一種內容可尋址、版本化、點對點超媒體的分佈式存儲、傳輸協議,目標是補充甚至取代過去20年裏使用的超文本媒體傳輸協議(HTTP),希望構建更快、更安全、更自由的互聯網時代。

  •   基於內容尋址,而非基於域名尋址。文件(內容)具有存在的唯一性,一個文件加入了IPFS的網絡,將基於計算對內容賦予一個唯一加密的哈希值。這將改變我們使用域名訪問網絡的習慣。
  • 提供文件的歷史版本控制器(如git),並且讓多節點使用保存不同版本的文件。
  • IPFS的網絡上運行着一條區塊鏈,即用來存儲互聯網文件的哈希值表,每次有網絡訪問,即要在鏈上查詢該內容(文件)的地址。
  • 通過使用代幣(FileCoin)的激勵作用,讓各節點有動力去存儲數據。 Filecoin 是一個由加密貨幣驅動的存儲網絡。礦工通過爲網絡提供開放的硬盤空間獲得Filecoin,而用戶則用 Filecoin 來支付在去中心化網絡中儲存加密文件的費用

工作機制

        IPFS爲每一個文件分配一個獨一無二的hash值,這個方式使得IPFS可以支持基於文件內容尋址。IPFS在整個網絡範圍內去掉重複的文件,並且爲每一個文件建立版本管理。當查詢文件的時候,IPFS網絡根據文件的hash值進行查找。爲了讓用戶更好的記文件存放的hash,IPFS利用IPNS將hash值映射一個比較容易記憶的IPNS名字,每個節點除了存儲自己需要的數據,還需要存儲一張hash表,用來記錄文件存儲的位置,進行文件的查詢下載。

 

架構分析

        IPFS至少有八層子協議棧,從上至下爲身份、網絡、路由、交換、對象、文件、命名、應用。

 

1.身份層和路由層

          對等節點身份信息的生成以及路由規則是通過Kademlia協議生成制定,KAD協議實質是構建了一個分佈式鬆散Hash表,簡稱DHT,每個加入這個DHT網絡的人都要生成自己的身份信息(通過哈希生成的ID),然後才能通過這個身份信息去負責存儲這個網絡裏的資源信息和其他成員的聯繫信息。如果新成員需要尋找一位老成員A的聯繫信息,而他沒有這位老成員A的聯繫方式,那麼他可以通過聯繫任意一位存儲老成員A聯繫信息的成員來獲取這位老成員A的聯繫信息,同理在IPFS中獲取資源信息也是一樣的道理。

2.網絡層

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

3.交換層

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

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

        IPFS團隊把BitTorrent進行了創新,叫作Bitswap,它增加了信用和帳單體系來激勵節點去分享,用戶在Bitswap裏增加數據會增加信用分,分享得越多信用分越高。如果用戶只去檢索數據而不存數據,信用分會越來越低,其它節點會在嵌入連接時優先選擇信用分高的。這一設計可以解決女巫攻擊,信用分不可能靠機器刷去提高,一直刷檢索請求,信用分越刷越低。請求次數和存儲量的變量之間有一個比較精妙的算法,類似一個拋物線,前期可以容忍很多東西,達到一定次數後不再信任。

4.對象和文件層

        對象層和文件層適合結合來談,它們管理的是IPFS上80%的數據結構,大部分數據對象都是以Merkle DAG的結構存在,這爲內容尋址和去重提供了便利。文件層是一個新的數據結構,和DAG並列,採用Git一樣的數據結構來支持版本快照

5.命名層

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

6.應用層

生態介紹

 

用高度模塊集成化的方式。協議實驗室團隊2015年創立,到17年都在做IPLD、LibP2P、Multiformats這三個模塊的開發,它們服務於IPFS底層。

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

           LibP2P是IPFS的核心,面對各式各樣的傳輸層協議以及複雜的網絡設備

           IPLD是一個轉換中間件,將現有的異構數據結構統一成一種格式,方便不同系統之間的數據交換和互操作。當前IPLD支持比特幣、以太坊的區塊數據以及IPFS和IPLD。IPLD中間件可以把不同的區塊結構統一成一個標準進行傳遞。

           Filecoin把以上這些應用的數據價值化,通過類似比特幣的激勵政策和經濟模型,讓更多的人去創建節點,提供服務,去讓更多的人使用IPFS。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章