區塊鏈
挖礦,比特幣,EOS,以太坊

IPFS – 可快速索引的版本化的點對點文件系統(1)

315

摘要
星際文件系統是一種點對點的分布式文件系統, 旨在連接所有有相同的文件系統的計算機設備。在某些方面, IPFS類似于web, 但web 是中心化的,而IPFS是一個單一的Bittorrent 群集, 用git 倉庫分布式存儲。換句話說, IPFS 提供了高吞吐量的內容尋址塊存儲模型, 具有內容尋址的超鏈接。
這形成了一個廣義的Merkle DAG 數據結構,可以用這個數據結構構建版本文件系統,區塊鏈,甚至是永久性網站。。IPFS 結合了分布式哈希表, 帶有激勵機制的塊交換和自我認證命名空間。IPFS 沒有單故障點, 節點不需要相互信任。

1. 介紹
在全球分布式文件系統這領域, 已經有許多人的嘗試。一些系統已經取得了重大的成功, 而很多卻完全失敗了。
在學術嘗試中, AFS【6】就是成功的例子,如今已經得到廣泛的應用, 然而,其他的【7, ?】卻沒有得到相同的結果。在學術界之外,應用最廣泛的是面向音視頻媒體的點對點文件共享系統。
最值得注意的是, Napster, KaZaA 和BitTorrent[2]部署的文件分發系統支持1億用戶的同時在線。即使在今天, BitTorrent 也維持著每天千萬節點的活躍數。
基于這些學術文件系統理論而實現的應用程序有很多的用戶量, 然而,這些系統理論是在應用層,而沒有放在基礎層。以致沒有出現通用的文件系統基礎框架, 給全球提供低延遲的分發。
也許是因為HTTP這樣“足夠好“的系統已經存在。到目前為止,HTTP已經作為“分布式文件系統“的協議,并且已經大量部署,再與瀏覽器相結合,具有巨大的技術和社會影響力。
在現在, 它已經成為互聯網傳輸文件的事實標準。然而,他沒有采用最近15年的發明的數十種先進的文件分發技術。
從一方面講, 由于向后兼容的限制 和 當前新模式的投入, 不斷發展http web 的基礎設施幾乎是不可能的。
但從一個角度看, 從http 出現以來, 已經有許多新協議出現并被廣泛使用。升級http協議雖然能引入新功能和加強當前http協議,但會降低用戶的體驗。
有些行業已經擺脫使用HTTP 這么久, 因為移動小文件相對便宜,即使對擁有大流量的小組織也是如此。但是,隨著新的挑戰,我們正在進入數據分發的新紀元。

(a)托管和分發PB級數據集,(b)跨組織的大數據計算,(c)大批量的高清晰度按需或實時媒體流,(d)大規模數據集的版本化和鏈接,(e)防止意外丟失重要文件等。其中許多可以歸結為“大量數據,無處不在”。由于關鍵功能和帶寬問題,我們已經為不同的數據放棄了HTTP 分銷協議。下一步是使它們成為web自己的一部分。

正交于有效的數據分發,版本控制系統,已經設法開發重要的數據協作工作流程。Git是分布式源代碼版本控制系統,開發了許多有用的方法來建模和實現分布式數據操作。
Git工具鏈提供了靈活的版本控制功能,這正是大量的文件分發系統所嚴重缺乏的。由Git啟發的新解決方案正在出現,如Camlistore [?],個人文件存儲系統,Dat [?]數據協作工具鏈和數據集包管理器。
Git已經影響了分布式文件系統設計[9],因為其內容涉及到Merkle DAG數據模型,能夠實現強大的文件分發策略。
還有待探討的是,這種數據結構如何影響面向高吞吐量的文件系統的設計,以及如何升級Web本身。
本文介紹了IPFS,一種新穎的對等版本控制的文件系統,旨在調和這些問題。 IPFS綜合了許多以前成功的系統的優點。 IPFS產生了突出的效果, 甚至比參考的這些系統的總和還要好。IPFS的核心原則是將所有數據建模為同一Merkle DAG的一部分。

2. 背景
本節回顧了IPFS所采用成功的點對點系統技術的重要屬性。

2.1 分布式哈希表(DHT)
分布式散列表(DHT)被廣泛用于協調和維護關于對等系統的元數據。比如,MainlineDHT 是一個去中心化哈希表,他可追蹤查找所有的對等節點。

2.1.1 KADEMLIA DHT
Kademlia[10] 是受歡迎的DHT, 它提供:

1.通過大量網絡進行高效查詢:查詢平均聯系人O(log2N)節點。 (例如,20跳10萬個節點的網絡)2.低協調開銷:優化數量的控制消息發送到其他節點。3.抵抗各種攻擊,喜歡長壽節點。4.在對等應用中廣泛使用,包括Gnutella和BitTorrent,形成了超過2000萬個節點的網絡[16]。

 

2.1.2 CORAL DSHT
雖然一些對等文件系統直接在DHT中存儲數據塊,這種“數據存儲在不需要的節點會亂費存儲和帶寬”[5]。Coral DSHT擴展了Kademlia三個特別重要的方式:
1.Kademlia在ids為“最近”(使用XOR-distance)的關鍵節點中存儲值。這不考 慮應用程序數據的局部性,忽略“遠”可能已經擁有數據的節點,并強制“最近”節點存儲它,無論它們是否需要。這浪費了大量的存儲和帶寬。相反,Coral 存儲了地址, 該地址的對等節點可以提供相應的數據塊。
2.Coral將DHT API從get_value(key)換成了get_any_values(key)(DSHT中的“sloppy”)中。這仍然是因為Coral用戶只需要一個(工作)的對等體,而不是完整的列表。作為回報,Coral可以僅將子集分配到“最近”的節點,避免熱點(當密鑰變得流行時,重載所有最近的節點)。
3.另外,Coral根據區域和大小組織了一個稱為群集的獨立DSHT層次結構。這使得節點首先查詢其區域中的對等體,“查找附近的數據而不查詢遠程節點”[5]并大大減少查找的延遲。

2.1.3 S/KADEMLIA DHT
S/Kademlia[1] 擴展了Kademlia, 用于防止惡意的攻擊。有如下兩方面的方法:
1.S/Kad 提供了方案來保證NodeId的生成已經防止Sybill攻擊。它需要節點產生PKI公私鑰對。從中導出他們的身份,并彼此間簽名。一個方案使用POW工作量證明,使得生成Sybills成本高昂。
2.S/Kad 節點在不相交的路徑上查找直, 即使網絡中存在大量的不誠實節點,也能確保誠實節點可以互相鏈接。即使網絡中存在一半的不誠實節點,S/Kad 也能達到85%的成功率。

2.2 塊交換 – BitTorrent
BitTorrent[3] 是一個廣泛成功應用的點對點共享文件系統,它可以在存在不信任的對等節點(群集)的協作網絡中分發各自的文件數據片。從BitTorrent和它的生態系統的關鍵特征, IPFS得到啟示如下:
1.BitTorrent的數據交換協議使用了一種bit-for-tat的激勵策略, 可以獎勵對其他方面做貢獻的節點,懲罰只榨取對方資源的節點。
2.BitTorrent對等體跟蹤文件的可用性,優先發送稀有片段。這減輕了seeds節點的負擔, 讓non-seeds節點有能力互相交易。
3.對于一些剝削帶寬共享策略, BitTorrent的標準tit-for-tat策略是非常脆弱的。 然而,PropShare[8]是一種不同的對等帶寬分配策略, 可以更好的抵制剝削戰略, 提高群集的表現。

2.3. 版本控制系統- Git
版本控制系統提供了對隨時間變化的文件進行建模的設施,并有效地分發不同的版本。流行版本控制系統Git提供了強大的Merkle DAG對象模型,以分布式友好的方式捕獲對文件系統樹的更改。
1.不可更改的對象表示文件(blob),目錄(樹)和更改(提交)。
2.通過加密hash對象的內容,讓對象可尋址。
3.鏈接到其他對象是嵌入的,形成一個Merkle DAG。這提供了很多有用的完整和work-flow屬性。
4.很多版本元數據(分支,標示等等)都只是指針引用,因此創建和更新的代價都小。
5.版本改變只是更新引用或者添加對象。
6.分布式版本改變對其他用戶而言只是轉移對象和更新遠程引用。

2.4 自我認證認文件系統-SFS
SFS [ 12,11 ]提出了兩個引人注目的實現(a)分布式信任鏈,和(b)平等共享的全局命名空間。SFS引入了一種自我建構技術—注冊文件:尋址遠程文件系統使用以下格式:

/sfs/<Location>:<HostID>?Location:代表的是服務網絡地方HostID = hash(public_key || Location)

因此SFS文件系統的名字認證了它的服務,用戶可以通過服務提供的公鑰來驗證,協商一個共享的私鑰,保證所有的通信。所有的SFS實例都共享了一個全局的命名空間,這個命名空間的名稱分配是加密的,不被任何中心化的body控制。

贊(0)

評論 搶沙發

  • 昵稱 (必填)
  • 郵箱 (必填)
  • 網址
p3试机号99