swap丨dapp智能合约只涨不跌项目系统开发成熟技术/案例设计/逻辑方案/源码指南

简介: 合约:import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol";

合约:import "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol";

}

function isVerifyMerkleNormal(bytes32[] calldata proof) view public returns (bool) {
bytes32 leaf = keccak256(abi.encodePacked(msg.sender));
return MerkleProof.verify(proof, whiteRootNormal, leaf);
}
首先你需要import,然后合约的角色是去验证,传入proof,然后生成leaf对象,verify方法会根据root去做校验,这里会在构造方法里先初始化一个root,后面如果有白名单的增删改查的话,只要去修改这个root就行了,如果有修改只需要修改一次gas费即可。

前端
前端这里的流程是这样的,有一个accounts的数组,根据这个数组去生成默克尔树的roots,如果是部署合约的时候,直接把这个roots写进合约里就行了,但如果是增删改查白名单的话,就需要在合约里的write contract方法里去更新这个roots了。
这里注意,如果非数组里的账户生成的proof为空,前端如果要测试的话就可以这么来测试是否为白名单。
//生成白名单
const generateWhiteOGProofs = () => {

//buffer化叶子结点
const leafNodes = whitelistAddressesOG.map(addr => keccak256(addr));
//实例化默克尔树
const merkleTree = new MerkleTree(leafNodes, keccak256, { sortPairs: true });
setMerkleTreeOG(merkleTree);
//获取根哈希值
const rootHash = merkleTree.getRoot();
console.log(rootHash);
console.log('Whitelist Merkle Tree og\n', merkleTree.toString());

}

相关文章
|
5月前
|
Web App开发 前端开发 JavaScript
鸿蒙5开发宝藏案例分享---Web适配一多开发实践
这是一份实用的鸿蒙Web多设备适配开发指南,针对开发者在不同屏幕尺寸下的布局难题提供了解决方案。文章通过三大法宝(相对单位、媒体查询和窗口监听)详细介绍如何实现智能适配,并提供了多个实战案例,如宫格布局、对话框变形和自适应轮播图等。此外,还分享了调试技巧及工具推荐,帮助开发者快速上手并优化性能。最后鼓励读者实践探索,并提示更多官方资源等待发现。
|
NoSQL Java Linux
springboot 中spring-data-redis报错:远程主机强迫关闭了一个现有的连接,如何解决?
springboot 中spring-data-redis报错:远程主机强迫关闭了一个现有的连接,如何解决?
springboot 中spring-data-redis报错:远程主机强迫关闭了一个现有的连接,如何解决?
|
12月前
|
安全
ICP备案服务码是什么,有什么用
【10月更文挑战第11天】 ICP备案服务码是什么,有什么用
1822 2
|
12月前
|
机器学习/深度学习 人工智能 人机交互
智能语音识别:重塑人机交互的新纪元###
【10月更文挑战第18天】 想象一下,轻声细语间,机器便能懂你心意,这是科幻电影的桥段,也是智能语音识别技术为我们描绘的现实蓝图。本文将带您穿越语音识别的奇妙世界,从它的历史长廊漫步至前沿技术的应用场域,一探究竟这项技术如何在教育、医疗、家居等领域大放异彩,同时审视其面临的挑战与未来可能的突破方向。这不仅是一场技术的旅行,更是对未来生活的一次憧憬。 ###
138 1
|
存储 Linux API
如何经济高效使用云存储网关对接OSS存储
存储网关是一款可以为OSS存储提供文件访问接口的产品,从而用户可以像使用NAS一样在Windows/Linux操作系统里面直接挂载OSS进行使用。众所周知,OSS存储具有多种存储类型。那么对于所有的存储类型,云存储网关是否都适用呢?本文将围绕这一话题,展开一些探讨。
370 0
|
数据可视化 开发者 Python
Python学习笔记之Matplotlib模块入门(直线图、折线图、曲线图、散点图、柱状图、饼状图、直方图、等高线图和三维图的绘制)-1
Python学习笔记之Matplotlib模块入门(直线图、折线图、曲线图、散点图、柱状图、饼状图、直方图、等高线图和三维图的绘制)
|
前端开发 JavaScript 搜索推荐
深入探讨单页面应用程序(SPA)的优势与实践
深入探讨单页面应用程序(SPA)的优势与实践
|
开发者
乘风者之星来啦!发文享阿里内推机会和50W流量曝光!
乘风者计划特推出乘风者每周之星活动,期待各位博主的参与,成为“每周之星”,上榜者可获得官方流量扶持
18667 3
乘风者之星来啦!发文享阿里内推机会和50W流量曝光!
|
算法 计算机视觉
图像增强—图像锐化
图像增强—图像锐化
图像增强—图像锐化
|
缓存 IDE Java
Gradle 系列(1)为什么说 Gradle 是 Android 进阶绕不去的坎
Gradle 系列(1)为什么说 Gradle 是 Android 进阶绕不去的坎
599 0
Gradle 系列(1)为什么说 Gradle 是 Android 进阶绕不去的坎