Merkle tree简介
Merkle树又称为哈希树,是一种二叉树,由一个根节点、若干中间节点和一组叶节点组成。最底层的叶节点存储数据,在它之上的一层节点为它们对应的Hash值,中间节点是它下面两个子节点的Hash值,根节点是最后顶层的Hash值,这个一般成为Merkle根。

Merkle树的层层Hash计算,任何底层叶节点或者说某个节点的数据变动都会传递到父亲节点,并直达树根。当叶子节点发生数据改变时,如果要比较两个集合的数据是否相同,则只需比较两次数据的树根即可,若底层叶节点数据相同,则树根相同;反之,树根便不相同。因此Merkle树的典型应用场景具体如下:
- 快速比较大量数据:当两个Merkle树根相同时,则意味着所代表的数据必然相同
- 快速定位变更:如果上图L1的数据被修改,则hi影响到Hash0-0,Hash0 和Root。因此沿着Root->Hash0->Hash0-0,可以快速定位到发生改变的L1。
MPT 状态树
Trie树是一种有序的树形结构,也被称为前缀树或者字典树,一般用于保存关联数组,其中的键通常是字符串,键不保存在节点中,而是由节点在树中的位置决定,根节点对应空字符串,键对应的值标注在节点之下。
Patricia树是一种节省空间的压缩前缀树。相当于Trie树存在的缺点,每个前置节点仅能表示一个字母,不管key和其它key有没有共享内容,key越长,树的深度也就越长。Patricia树的主要改进在于如果存在一个父节点只有一个子节点,那么这个父节点将与其子节点合并,这样可以减少Trie中树的深度,加快搜索节点速度,同时也减少了空间的消耗。

Merkle树是一种二叉树结构,用于快速比较和定位数据变化。在以太坊中,MPT(Merkle-PatriciaTrie)作为状态树使用,包含空节点、叶子节点、扩展节点和分支节点,优化了数据存储和检索效率。状态树、交易树和收据树是构成以太坊区块头的关键部分,分别存储账户状态、交易记录和交易收据。
最低0.47元/天 解锁文章
616

被折叠的 条评论
为什么被折叠?



