作者简介:董天一 ,IPFS/Filecoin中国区技术布道人 ,《IPFS指南》作者 毕业于北京大学软件与微电子学院 曾担任甲骨文亚洲研发中心(中国)数据库开发工程师 资深区块链技术开发者,现致力于IPFS/Filecoin在中国的技术推广
今天带大家来深入探索一下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系统无法理解的数据结构,灵活度非常的大。