IPFS系列 分布式雜湊表 DHT

2021-10-06 03:20:20 字數 2449 閱讀 8102

dht的全稱是distributed hash table,即分布式雜湊表技術,是一種分布式的儲存方法。這種分布式網路不需要中心節點伺服器,而是每個客戶端負責乙個小範圍的路由,並負責儲存一小部分資料,從而實現整個dht網路的定址和儲存。dht網路還在於關鍵字最接近的節點上覆製備份冗餘資訊,避免了單一節點失效問題。

簡單地說,dht就是一種分布式的儲存和定址技術。通過dht資料結構它把key 和 value用某種方式對應起來。使用hash()函式把乙個key值對映到乙個index上:hash(key) = index。這樣就可以把乙個key值同某個index對應起來。然後把與這個key值對應的value儲存到index所標記的儲存空間中。這樣,每次想要查詢key所對應的value值時,只需要做一次hash()運算就可以找到了。以上就是定址過程。

分布式雜湊表dht是一種概念模型或者說思想,其主要思路是:將每條檔案索引k檔名或其他屬性的雜湊值-v儲存檔案的結點ip位址,組成一張巨大的檔案索引雜湊表。然後,再將這張大表按照一定規則分割成許多小塊,並分布到各個結點上,每個結點負責維護其中一塊。dht使用一致性雜湊的思想來最小化拓撲結構變化帶來的影響,並構造overlay網路實現高效地搜尋。

overlay network(覆蓋網路)。所謂覆蓋網路是應用層網路,幾乎不考慮網路層和物理層,它具體指的就是建立在另乙個網路上的網路。例如p2p網路就是覆蓋網路,因為它執行在網際網路之前,但允許對未知ip主機的訪問。通過dht等演算法,可以在事先不知道ip位址的情況下,訪問到儲存某個檔案的結點。

全網維護乙個巨大的檔案索引雜湊表,這個雜湊表的條目形如。這裡key通常是檔案的某個雜湊演算法下的雜湊值(也可以是檔名或者檔案內容描述),而value則是儲存檔案的ip位址。查詢時,僅需要提供key,就能從表中查詢到儲存節點的位址並返回給查詢節點。當然,這個雜湊表會被分割成小塊,按照一定的演算法和規則分布到全網各個節點上。每個節點僅需要維護一小塊雜湊表。這樣,節點查詢檔案時,只要把查詢報文路由到相應的節點即可。

目前應用dht技術的主要應用包括:bittorrent,git,storm botnet,*******, yacy,ipfs和holochain。前五種應用都屬於傳統網際網路技術應用,後面兩種涉及到區塊鏈行業。

ipfs(interplanetary file system)星際檔案系統是一種可選的 p2p 超**協議,以內容定址超連結為基礎的、提供高吞吐量、內容定址的塊儲存模型。從本質上講,它允許檔案以永久和分布式的方式儲存,同時提供歷史版本的檔案,從而刪除重複檔案。

ipfs專案通過整合已有的技術(bittorrent、dht、git和sfs),建立一種點對點超**協議,試圖打造乙個更加快速、安全、開放的下一代網際網路,實現網際網路中永久可用、資料可以永久儲存的全球檔案儲存系統。同時,該協議有內容定址、版本化特性,嘗試補充甚至最終取代伴隨了我們20多年的超文字傳輸協議(即http協議)。ipfs是乙個協議,也是乙個p2p網路,它類似於現在的bt網路,只是擁有更強大的功能,使得ipfs擁有可以取代http的潛力。

對等節點身份資訊的生成以及路由規則是通過kademlia協議生成制定的,該協議實質上是構建了乙個分布式雜湊表,簡稱dht。每個加入這個dsht網路的節點都要生成自己的身份資訊,然後才能通過這個身份資訊去負責儲存這個網路裡的資源資訊和其他成員的聯絡資訊。

它參考了4種技術

holochain也採用了dht作為全網分布式賬本儲存和定址技術。將全網賬本分布式的儲存在各個參與的節點上,並通過dht定址技術保證賬本的完整性和可檢索性。

holochain vs blockchain

區塊鏈簡單說就是分布式記賬技術,全網統一乙個版本的賬本,各個全節點node的賬本全網一致,也就是每個參與者都複製乙份賬本,並通過gossip技術實時更新,那麼區塊鏈面臨的scaling擴容問題的癥結就在於此,全網同步乙份相同的賬本,有多少個節點就有多少個賬本的副本,副本的儲存空間和更新所耗費的頻寬是對資源的浪費。

holochain上的賬本和blockchain一樣是全網統一乙個版本的賬本,但這個賬本的儲存不是每人乙份副本,而是只有乙份正本,每人儲存一部分,每人儲存的就是與自己交易和狀態轉換相關的部分。每人都儲存了自己的交易,也就是自己的鏈,自己的分賬本,但自己的分賬本也是全網總賬的一部分,通過dht技術和密碼學技術讓這些分賬不可分割不可篡改。每個節點儲存的賬本都是唯一的,並且是必要的,相對於blockchain,極大的降低了副本占用的空間和頻寬,同時還保留了區塊鏈的優勢(如:不可篡改)。

往期精彩回顧:

區塊鏈知識系列

密碼學系列

共識系列

公鏈調研系列

以太坊系列

eos系列

智慧型合約系列

token系列

分布式雜湊演算法DHT

我們從淺入深一步一步介紹什麼是分布式雜湊表。雜湊函式 雜湊函式是一種計算方法,它可以把乙個值a對映到乙個特定的範圍 begin,end 之內。對於乙個值的集合,雜湊函式把他們均勻的對映到某個範圍之中。這樣,通過這些值就可以很快的找到與之對應的對映位址。對於同乙個值,雜湊函式要能保證對這個值的運算結果...

分布式雜湊表(DHT)與Chord協議

分布式雜湊表 dht 通常是直接拿業務資料的雜湊值作為 key,業務資料本身作為 value。可以簡單而快速地進行put get。chord協議 原理 chord通過把node和key對映到相同的空間而保證一致性雜湊,為了保證雜湊的非重複性,chord選擇sha 1作為雜湊函式,sha 1會產生乙個...

分布式雜湊表

我們從淺入深一步一步介紹什麼是分布式雜湊表。1 雜湊函式 雜湊函式是一種計算方法,它可以把乙個值a對映到乙個特定的範圍 begin,end 之內。對於乙個值的集合,雜湊函式把他們均勻的對映到某個範圍之中。這樣,通過這些值就可以很快的找到與之對應的對映位址。對於同乙個值,雜湊函式要能保證對這個值的運算...