作者简介:董天一 ,IPFS/Filecoin中国区技术布道人 ,《IPFS指南》作者

毕业于北京大学软件与微电子学院
曾担任甲骨文亚洲研发中心(中国)数据库开发工程师
资深区块链技术开发者,现致力于IPFS/Filecoin在中国的技术推广


【董天一】IPFS: Merkle DAG数据结构_第1张图片

 

 

今天带大家来深入探索一下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不需要进行树的平衡操作,非叶子节点允许包含数据等。

【董天一】IPFS: Merkle DAG数据结构_第2张图片

 

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系统无法理解的数据结构,灵活度非常的大。

 

下面以


End 虚线简洁分割线虚线简洁分割线虚线简洁分割线


圆方圆区块链汇集大批区块链名师,采取导师值班制,为学员实时解决技术疑难。请关注圆方圆区块链知识星球与导师。(培训咨询请联系船长13826054890微信手机同号)

知识星球介绍.png

更多技术文章请关注

圆方圆链圈

wechat code258&258.jpg