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 叉樹