(文章來源:網絡整理)
IPFS是對等(p2p)存儲網絡。可以通過可能中繼信息或存儲信息(或同時做這兩者)的對等方訪問內容,并且這些對等方可以位于世界任何地方。IPFS知道如何通過其內容地址找到您要的內容,而不是在哪里。首先讓我們看一下內容尋址以及該內容如何鏈接在一起。IPFS堆棧的“中間”部分將生態系統連接在一起。一切都建立在能夠通過鏈接的唯一標識符查找內容的基礎上。
IPFS使用內容編址通過內容中的內容而不是內容的位置來標識內容。您一直都在按內容查找項目。例如,當您在圖書館里尋找一本書時,經常會要求書名。這是內容尋址,因為你問什么是。如果您使用位置尋址,找到那本書,你會問它通過在那里它是:“我想要的書那是在二樓,第一組,倒數第三架,左四周書”。如果有人搬了那本書,那你真倒霉!
通過散列進行內容尋址已成為從分布式支持代碼到運行加密貨幣的區塊鏈的分布式系統中連接數據的一種廣泛使用的方法。但是,這些系統中的基礎數據結構不一定可以互操作。
這就是IPLD項目的來歷。哈希標識內容,而IPLD在數據結構之間轉換。由于不同的分布式系統以不同的方式構造其數據,因此IPLD提供了一些庫,用于組合可插拔模塊(每種IPLD節點的解析器)來解析多個鏈接節點之間的路徑,選擇器或查詢(允許您探索數據,無論其基礎是什么)。協議)。IPLD提供了一種在內容可尋址的數據結構之間進行轉換的方法:“哦,您使用Git樣式,不用擔心,我可以關注這些鏈接。哦,您使用以太坊,我知道了,我也可以關注那些鏈接!”
IPFS協議使用IPLD從原始內容獲取IPFS地址。IPFS對于如何將數據分解為DAG有其自己的偏好和約定;IPLD使用這些約定將IPFS網絡上的內容鏈接在一起。IPFS生態系統中的其他所有內容都基于此核心概念:鏈接的可尋址內容是使其余工作正常進行的基本連接元素。IPFS和許多其他分布式系統利用了稱為有向無環圖或DAG 的數據結構。具體來說,它們使用Merkle-DAG,它們是DAG,其中每個節點都有一個標識符,該標識符是節點內容的哈希值。聽起來有點熟?這涉及到上一節中介紹的CID概念。查看此CID鏈接數據概念的另一種方法:通過其哈希值識別數據對象(如Merkle-DAG節點)是內容尋址。
IPFS使用為表示目錄和文件而優化的Merkle-DAG,但是您可以采用許多不同的方式來構造Merkle-DAG。例如,Git使用Merkle-DAG,其中包含許多版本的倉庫。為了建立內容的Merkle-DAG表示,IPFS通常首先將其分成多個塊。將其拆分為多個塊意味著文件的不同部分可以來自不同的來源,并且可以快速進行身份驗證。
Merkle-DAG有點“全力以赴”。也就是說,所有內容都有CID。您有一個具有CID的文件。如果一個文件夾中有幾個文件怎么辦?該文件夾具有一個CID,并且該CID包含下面文件的CID。反過來,這些文件由塊組成,并且每個塊都有一個CID。您可以看到如何將計算機上的文件系統表示為DAG。希望您還可以看到Merkle-DAG圖如何開始形成的。要直觀地了解這個概念,請查看我們的IPLD Explorer。
Merkle-DAG的另一個有用功能是將內容分成多個塊,如果您有兩個相似的文件,它們可以共享Merkle-DAG的一部分。也就是說,不同Merkle-DAG的一部分可以引用相同的數據。例如,如果您更新網站,則僅更改的文件將獲得新的內容地址。您的舊版本和新版本可以為其他所有內容引用相同的塊。這可以使傳輸大型數據集的版本(例如基因組研究或天氣數據)更加高效,因為您只需要傳輸新的或已更改的部分,而不必每次都創建全新的文件。
因此,總而言之,IPFS允許您為內容提供CID,并使用IPLD在Merkle-DAG中將內容鏈接在一起。現在,讓我們繼續最后一部分:如何查找和移動內容。為了查找哪些對等方正在托管您要查找的內容(發現),IPFS使用分布式哈希表或DHT。哈希表是值鍵的數據庫。甲分布式哈希表是其中所述表在所有的對等體在一個分布式網絡分割。要查找內容,請問這些同行。
該libp2p項目是IPFS生態系統提供連接,并互相交談的DHT和手柄同行的一部分。一旦知道了內容的位置(即哪個或哪些對等方正在存儲構成您所要訪問的內容的每個塊),就可以再次使用DHT 查找這些對等方的當前位置(路由)。因此,為了獲得內容,您可以使用libp2p兩次查詢DHT。
您已經找到了內容,并且已經找到了該內容的當前位置-現在您需要連接到該內容并進行獲取(交換)。為了向其他對等方請求塊并向其他對等方發送塊,IPFS當前使用名為Bitswap的模塊。Bitswap允許您連接到具有所需內容的一個或多個對等節點,將其發送給您的需求列表(您感興趣的所有塊的列表),然后讓他們向您發送您請求的塊。這些塊到達后,您可以通過對它們的內容進行哈希處理以獲取CID來對其進行驗證。
還討論了其他內容復制協議,其中最發達的是Graphsync。正在討論中的一項提案,旨在擴展Bitswap協議以在請求和響應周圍添加功能。
(責任編輯:fqj)
-
存儲
+關注
關注
13文章
4323瀏覽量
85922 -
互聯網
+關注
關注
54文章
11163瀏覽量
103426
發布評論請先 登錄
相關推薦
評論