区块链中的树

Merkle 树

问题：对一个数组求哈希（n 个元素）

传统方案：将每个数据拼接然后哈希，时空复杂度都是 $O (n)$

使用 merkle 树：只需计算路线上的哈希，时空复杂度都是 $O (logn)$；代价是总存储空间变大（需要存哈希树），但是依旧是 $O (n)$

Trie 树

根据前缀进行索引，适用于前缀相似的数据存储

深度最劣为最长字符串的长度（也就是时间复杂度），但不一定是二叉树

适用于前缀字典的查找

Merkle Patricia 树

把 Merkle 树的二叉变为 16 叉

父节点记录 16 个叉的指针，再加一个 value 字段表示自己的数值

这里的指针，就是子节点的哈希值，存在一个key-value DB里协助反向查找

同时负责哈希和索引两个功能

16 叉减少深度 -> 减少数据库的请求次数

Rollup 的 State Tree

对 map 和 value 进行分离

Verkle Tree

基于 KZG

依此构造 16 叉树