当前位置: 首页 > news >正文

Gas优化利器:Merkle 树如何助力链上数据效率革命

目录

    • 前言
    • 原理
    • Merkle树示意图
    • 实战演示:构建 Merkle 树并在合约中验证
      • 离线构建 Merkle 树(手动计算Merkle树、生成mermaid示意图)
        • 编写Merkle.js脚本
        • 执行Merkle.js脚本
        • 执行结果展示
        • mermaid流程图展示
      • 离线构建 Merkle 树(merkletreejs计算Merkle树、验证哈希路径)
        • 编写Merkle.js脚本
        • 执行Merkle.js脚本
        • 执行结果展示
      • Solidity 合约中的验证逻辑
        • 编写MerkleTest.sol合约
        • 部署MerkleTest.sol合约
        • 验证结果展示
    • 典型应用场景
      • 空投(Airdrop)验证
      • 白名单验证
    • 注意事项与优化建议
    • 总结

前言

我们都知道,在链上进行数据验证,往往涉及大量存储与计算,而这两者在以太坊中都是“昂贵”的,首先storage 的写入操作是 Gas 消耗大户,其次,如果我们要在合约中存储或比对大量数据(如地址白名单、空投名单等),其成本是指数级增长的。而怎么解决这种问题呢?答案就是使用Merkle树,Merkle树可以将这大量的数据压缩成一个byte32的根节点,链上只需要保存这些根节点,链下保存Merkle树,当需要验证某项数据是否在链上时,只需要传递一个proof[](证明路径)即可完成验证,避免大规模数据上传与链上遍历

原理

哈希函数具备单向性:给定一段字符串,我们可以轻松计算其哈希值;但仅凭哈希值,几乎不可能还原出原始字符串。基于这一特性,我们可以将待验证的数据构建成一棵 Merkle 二叉树:

  • 叶子节点:每个叶子节点存放的是原始数据的哈希值;
  • 中间节点:每个非叶子节点的值,是其左右子节点哈希值拼接后,再次哈希计算所得;
  • 根节点(Merkle Root):整棵树向上迭代合并,最终得到的顶层哈希
http://www.xdnf.cn/news/550297.html

相关文章:

  • 25-CAN总线
  • avalonia android连接模拟器时报错adb cannot run as root in production builds,没有权限
  • 计算机视觉与深度学习 | Matlab实现EMD-GWO-SVR、EMD-SVR、GWO-SVR、SVR时间序列预测(完整源码和数据)
  • 结合仿生学原理与计算科学进行原创性构思
  • 威纶通触摸屏IP地址设定步骤及程序下载指南
  • Windows 上配置 Docker,Docker 的基本原理和用途,以及如何在 Docker 中运行程序
  • AI-02a5a7.神经网络-与学习相关的技巧-正则化
  • 大模型服务如何实现高并发与低延迟
  • (一) 本地hadoop虚拟机系统设置
  • SCAU--平衡树
  • 【深度学习】Transformer 的应用
  • 亚远景-汽车软件开发的“升级之路”:ASPICE各等级说明
  • 第二届帕鲁杯时间循环的信使
  • 广东省省考备考(第十五天5.20)—言语(第六节课)
  • 牛客周赛 Round 93题解(个人向A-E)
  • jenkins授权管理.
  • 如何自学FPGA设计?
  • 分布式ID生成器:原理、对比与WorkerID实战
  • SkyReels-V2:开启无限时长电影生成新时代
  • 元宇宙中的虚拟经济:机遇与挑战
  • centos7.6安装桌面并使用mstsc连接
  • WHAT - CSS 中的 min-height
  • 小白入门FPGA设计,如何快速学习?
  • Python虚拟环境再PyCharm中自由切换使用方法
  • 【周输入】517周阅读推荐-1
  • java 异常验证框架validation,全局异常处理,请求验证
  • Power BI入门之建模
  • C 语言学习笔记(指针1)
  • 十五、面向对象底层逻辑-BeanDefinitionRegistryPostProcessor接口设计
  • CentOS 7上搭建高可用BIND9集群指南