🌲什么是默克尔树
- 一种二叉树的变种,称为哈希二叉树。
- 所有节点存储hash值,父节点是对所有子节点的hash。
❀ 默克尔树的特性
- 高效:可以实现不遍历整棵树,验证数据是否在树中。
- 不可篡改:只要有一个节点被篡改,root节点hash就会发生改变。
- 节省存储:不保存真实数据,仅保存数据的hash值。
🔨默克尔树的应用
- 空投白名单:将所有的空投地址构建一颗hash树,链上仅保存root根哈希。验证时,通过路径构建出root hash,和链上的root hash进行验证即可。
- 资产证明:构建资产的merkle tree,保存资产的root hash即可完成验证。
- 文件校验:构建文件的merkle tree,保存文件的root hash即可完成验证。
🍡默克尔验证
空投白名单是使用默克尔验证的方式进行校验白名单的:
具体流程如下:
1. 从地址=张三,构建hash--> H4
2. 获得H4的兄弟节点hash H5, 构建父节点H2
3. 获取H2的兄弟节点H3,构建root hash H1
4. 和链上(合约中)保存好的root hash进行比较,如果H1 = root hash,则地址张三有效。如果不等,则说明树被篡改或者张三不在此树中。