1. 程式人生 > >IPFS: Merkle DAG資料結構

IPFS: Merkle DAG資料結構


今天帶大家來深入探索一下IPFS的核心資料結構Merkle DAG

什麼是 Merkle DAG?

Merkle DAG是IPFS系統的核心概念之一,當然Merkle DAG並不是IPFS團隊發明的,它來來自於Git資料結構,ipfs團隊進行了改造(這一點ipfs團隊一直是一個很努力的團隊,並不是直接拿來使用,而是在此基礎上修改更適合專案的使用)。

Merkle DAG的全稱是 Merkle directed acyclic graph(默克有向無環圖)。它是在Merkle tree基礎上構建的,Merkle tree是由美國計算機學家merkle於1979年申請的專利。Merkle DAG跟Merkle tree很相似,但不完全一樣,比如:Merkle DAG不需要進行樹的平衡操作,非葉子節點允許包含資料等。

Merkle DAG

Merkle DAG擁有如下的功能:

  • 內容定址:使用多重雜湊來唯一識別一個數據塊的內容
  • 防篡改:可以方便的檢查雜湊值來確認資料是否被篡改
  • 去重:由於內容相同的資料塊雜湊是相同的,可以很容去掉重複的資料,節省儲存空間

IPFS的資料物件格式如下:

type IPFSLink struct {
Name string // link 的名字
Hash Multihash // 資料的加密雜湊
Size int // 資料大小
}
Type IPFSObject struct {
links []IPFSLink // link陣列
data []byte // 資料內容
}

IPFS讓應用可以完全控制物件的資料欄位,也就是說應用可以隨意定義自己的data型別和結構,甚至可以是一些IPFS系統無法理解的資料結構,靈活度非常的大。

下面以