最基础的数据结构 - Merkle 树

  • shawn_shaw
  • 发布于 2025-04-13 03:19
  • 阅读 149

🌲什么是默克尔树一种二叉树的变种,称为哈希二叉树。所有节点存储hash值,父节点是对所有子节点的hash。❀默克尔树的特性高效:可以实现不遍历整棵树,验证数据是否在树中。不可篡改:只要有一个节点被篡改,root节点hash就会发生改变。节省存储:不保存真实数据,仅保存数据的h

🌲什么是默克尔树

  1. 一种二叉树的变种,称为哈希二叉树。
  2. 所有节点存储hash值,父节点是对所有子节点的hash。

image.png

❀ 默克尔树的特性

  1. 高效:可以实现不遍历整棵树,验证数据是否在树中。
  2. 不可篡改:只要有一个节点被篡改,root节点hash就会发生改变。
  3. 节省存储:不保存真实数据,仅保存数据的hash值。

    🔨默克尔树的应用

  4. 空投白名单:将所有的空投地址构建一颗hash树,链上仅保存root根哈希。验证时,通过路径构建出root hash,和链上的root hash进行验证即可。
  5. 资产证明:构建资产的merkle tree,保存资产的root hash即可完成验证。
  6. 文件校验:构建文件的merkle tree,保存文件的root hash即可完成验证。

    🍡默克尔验证

image.png 空投白名单是使用默克尔验证的方式进行校验白名单的: 具体流程如下:

  1. 从地址=张三,构建hash--> H4
  2. 获得H4的兄弟节点hash H5, 构建父节点H2
  3. 获取H2的兄弟节点H3,构建root hash H1
  4. 和链上(合约中)保存好的root hash进行比较,如果H1 = root hash,则地址张三有效。如果不等,则说明树被篡改或者张三不在此树中。
点赞 0
收藏 0
分享
8 订阅 13 篇文章

0 条评论

请先 登录 后评论
shawn_shaw
shawn_shaw
web3潜水员、技术爱好者、web3钱包开发工程师、欢迎交流工作机会。欢迎骚扰:vx:cola_ocean