<address id="n3jzt"></address>
<noframes id="n3jzt"><form id="n3jzt"></form><em id="n3jzt"><form id="n3jzt"><th id="n3jzt"></th></form></em>
    <em id="n3jzt"></em>
      <form id="n3jzt"></form>
            <noframes id="n3jzt">
            收藏本站 網站導航 開放平臺 Wednesday, July 27, 2022 星期三

            一文了解IPFS與Filecoin都在使用的去中心化數據結構——Merkle DAG - 嗶哩嗶哩

            來源 中金網 06-21 14:24
            摘要: 在之前介紹Filecoin技術概念的文章中,我們介紹了CID,它由加密哈希組成,相當于數據本身獨一無二的指紋。這些數據又是如何分類的?我們今天就來了解另一個概念:Merkle DAG。數據結構是一種數據組織、管理和存儲格式,可實現高效訪問和修改。在不同的系統中,使用著不同的數據結構。比如一臺電腦中,都會使用一種稱之為“鏈表”的數據結構,你可以高度信任這種在孤立環境中、中心化的數據結構。而在IPFS或Filecoin這種去中心化系統中,信任度肯定是遠遠低于中心化系統的,那么為了適應這種環境,就需要

              區塊天眼APP訊 : 一文了解IPFS與Filecoin都在使用的去中心化數據結構——Merkle DAG

              我們先來了解一些基礎概念。一般來說,我們常見的存儲結構是這樣的:

              如果需要找一個文件,我們會先從根目錄pics開始,逐步深入層次結構,以到達所需文件。

              這種模式就叫做有向圖(Directed Graphs),每條邊都有某種固定方向,即一個目錄包含一個文件,但一個文件不包含它的目錄,該方向由單向箭頭指示。就像家中的族譜圖。

              在這張圖中,一般稱有子節點的中間節點為“父節點”,沒有父節點的節點(如上圖的pics)則被稱為根節點,沒有子節點的(如freshwater)為葉節點。

              如果圖中沒有循環,那么該圖又被稱為無環圖(Acyclic Graphs)。即圖中的任何節點,無法沿著圖的邊緣從該節點導航回其自身。在像上圖這樣文件層次結構這樣的有向圖中,只能從父節點移動到子節點。

              符合上述兩種特征的結構圖,則被稱為有向無環圖(Directed Acyclic Graphs),簡稱為DAG。

              如果不用畫圖的方式,要如何表示DAG呢?我們知道,CID可以唯一的標識一個節點,那么也可以使用它來表示從一個節點到另一個節點的邊。這樣,就創建了一種特殊的DAG,即Merkle DAG,任何以這種方式利用內容尋址的圖形表示都必然是一個DAG。

              現在來了解如何構建Merkle DAG。繼續以上圖的文件目錄為例,第一步是對圖的葉節點進行編碼,并為每個葉節點提供一個CID。將這些節點的表示簡化為兩個屬性:文件名,以及與文件內容對應的數據。這些屬性捆綁在一起,構成了我們節點的數據,如下圖橙色框所示。

              節點上方的標簽“baf…1”是CID的簡化表示,它是通過加密哈希算法根據數據本身得出的,要注意,這個標簽不是節點的一部分。

              可以通過首先創建葉節點來開始構建Merkle DAG——層次結構中的每個文件都有一個節點,然后用其CID 標記每個節點:

              中間節點與葉節點有些不同,這些節點中的每一個還將包含目錄,目錄節點的“內容”是它包含的文件和目錄的列表,而不是任何特定文件的內容??梢詫⑵浔硎緸镃ID列表,每個CID都鏈接到圖中的另一個節點。這樣一來,上圖DAG使用Merkle DAG構建,就會變成這樣:

              在Merkle DAG中,每個節點的CID取決于它的下一層,因此只要有任何一個內容有一點不同,標簽CID的哈希值也會隨之改變。這是Merkle DAG最精髓的部分。

              但在一個分支中進行的更改不會強制更改其他分支中節點的CID,節點的CID僅響應于其自身數據或隨著其后代數據的變化而變化。例如,更改“blowfish.png”不需要更改 baf...1、baf...2、baf...4、baf...5 或 baf...7。

              看完上文的內容,想必你已經大致了解Merkle DAG到底是什么,那它又有什么屬性呢?

              1 可驗證性

              在Merkle DAG中,每個節點的CID依次取決于其每個子節點的 CID。根節點的CID不僅唯一標識該節點,還唯一標識它作為根的整個DAG。因此,可以將CID的安全性、完整性和持久性保證擴展到我們的數據結構本身,而不僅僅是它包含的數據。

              2 任何節點都可以是根節點

              DAG可以看作是遞歸數據結構,每個DAG由較小的DAG組成。在上文示例中,CID“baf...8”標識了一個DAG,但 CID“baf...6”也是如此——它只是標識了一個較小的DAG,即由“baf...8”標識的 DAG 的子圖。給定正確的上下文,相應的節點都是根節點。

              這一點有什么用呢?如果我們要檢索結構為DAG的內容,不必檢索整個DAG,只需可以選擇檢索一個子圖,由其自己的頂部節點的CID標識(此子圖的頂部節點將成為其根節點)。如果想與其他人共享該子圖,不必包含我們最初從中檢索數據的較大圖的上下文——只需發送子圖CID。因為DAG的CID,即其根節點的CID,取決于根節點的后代而不是其祖先。

              3 可分配性

              Merkle DAG還繼承CID的可分配性。首先,任何擁有DAG的人都能夠充當該DAG的提供者。二是當我們檢索編碼為DAG的數據時,比如文件目錄,可以利用這一事實并行檢索節點的所有子節點。三是文件服務器不僅限于集中式數據中心,這讓數據覆蓋范圍更廣。

              最后,因為DAG中的每個節點都有自己的CID,所以它所代表的DAG可以獨立于它本身嵌入的任何DAG進行共享和檢索。因此DAG十分適用于內容尋址。

              IPFS等分布式Web 協議以及Filecoin等去中心化存儲網絡都使用Merkle DAG用于存儲和通信數據。

              這種廣泛使用說明Merkle DAG有在不同項目之間通信的潛在能力。為了實現這一點,IPLD項目正在開發一個基于Merkle-DAG的數據格式及其正式描述的生態系統,以支持廣泛的數據交換。

              這些技術為人們提供了一種遍歷和理解數據結構的方法,而也正是它們構成了以相互關聯和相互理解為主的數據生態系統,在未來,這將會成為全球網絡的基礎。

            更多區塊鏈消息,請關注下載區塊天眼APP,全球區塊鏈監管查詢APP 。

            免責聲明:中金網發布此信息目的在于傳播更多信息,與本網站立場無關。中金網不保證該信息的準確性、真實性、完整性、有效性等。相關信息并未經過本網站證實,不構成任何投資建議,據此操作,風險自擔。
            天眼經紀商 更多
            天眼交易所 更多
            猜你喜歡
            伊人久久精品9超碰,日本免费AV一区二区观看,萌白酱91在线播放,台湾swag candybaby在线视频,日韩高清一卡二卡三卡四卡免费,国产 主播自慰种子 mp4,长筒袜少女萝莉,百度云国产网红视频