IPFS: Merkle DAG数据结构
今天帶大家來深入探索一下IPFS的核心數(shù)據(jù)結(jié)構(gòu)Merkle DAG
什么是 Merkle DAG?
Merkle DAG是IPFS系統(tǒng)的核心概念之一,當然Merkle DAG并不是IPFS團隊發(fā)明的,它來來自于Git數(shù)據(jù)結(jié)構(gòu),ipfs團隊進行了改造(這一點ipfs團隊一直是一個很努力的團隊,并不是直接拿來使用,而是在此基礎(chǔ)上修改更適合項目的使用)。
Merkle DAG的全稱是 Merkle directed acyclic graph(默克有向無環(huán)圖)。它是在Merkle tree基礎(chǔ)上構(gòu)建的,Merkle tree是由美國計算機學(xué)家merkle于1979年申請的專利。Merkle DAG跟Merkle tree很相似,但不完全一樣,比如:Merkle DAG不需要進行樹的平衡操作,非葉子節(jié)點允許包含數(shù)據(jù)等。
Merkle DAGMerkle DAG擁有如下的功能:
- 內(nèi)容尋址:使用多重哈希來唯一識別一個數(shù)據(jù)塊的內(nèi)容
- 防篡改:可以方便的檢查哈希值來確認數(shù)據(jù)是否被篡改
- 去重:由于內(nèi)容相同的數(shù)據(jù)塊哈希是相同的,可以很容去掉重復(fù)的數(shù)據(jù),節(jié)省存儲空間
IPFS的數(shù)據(jù)對象格式如下:
type IPFSLink struct {Name string // link 的名字
Hash Multihash // 數(shù)據(jù)的加密哈希
Size int // 數(shù)據(jù)大小
}
Type IPFSObject struct {
links []IPFSLink // link數(shù)組
data []byte // 數(shù)據(jù)內(nèi)容
}
IPFS讓應(yīng)用可以完全控制對象的數(shù)據(jù)字段,也就是說應(yīng)用可以隨意定義自己的data類型和結(jié)構(gòu),甚至可以是一些IPFS系統(tǒng)無法理解的數(shù)據(jù)結(jié)構(gòu),靈活度非常的大。
下面以
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的IPFS: Merkle DAG数据结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IPFS网络是如何运行的(p2p网络)
- 下一篇: IPFS家族(一)