🦊原文:IPFS: Merkle DAG 数据结构 - 知乎
🦊写在前面:本文属于搬运博客,自己留存学习。
1 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 不需要进行树的平衡操作,非叶子节点允许包含数据等。
2 Merkle DAG 的功能
Merkle DAG 拥有如下的功能:
- 内容寻址:使用多重哈希来唯一标识一个数据块的内容;
- 防篡改:通过检查哈希值来确认数据块的内容是否被篡改;
- 去重:由于内容相同的数据块哈希值是相同的,因此很容易去除重复的数据,以节省存储空间;
3 IPFS 的数据对象格式
IPFS 的数