# 8月29日日记 **Published by:** [R0chGh0st](https://paragraph.com/@r0ckgh0st/) **Published on:** 2022-08-29 **URL:** https://paragraph.com/@r0ckgh0st/8-29 ## Content 今日工作(1)撸空投,SHM链的swap,基本就是swap以下,add一下,发推特就可以领faucet https://www.swapped.finance/ (2)参与了galaxy的一个活动,可以领取oat,刚开始领取的时候报错: err: 1004:Get total claim count from formula fail; 2)err: 10000:failed to get cred output with cred id 185951744732864512; err: rpc error: code = Unknown desc = 10000: rpc error: code = Unavailable desc = no healthy upstream 后来经过官方提示,删除了galaxy站点的cookie后,恢复正常 https://galaxy.eco/Biteye/campaign/GC6zSUtVBn (3)研究了一下基于默克尔树的白名单验证方法,参考的是下面这篇文章: https://medium.com/@ItsCuzzo/using-merkle-trees-for-nft-whitelists-523b58ada3f9 其实默克尔树我们都很熟悉,他在以往也用于做过这样的权限认证工作,比如用户的机顶盒权限验证,用户作为叶子结点,需要对外提供一组Hash,只要能提供到,就可以通过节点验证,我实现了原型代码,如下所示,基本理解了默克尔树的构造方案,没有自行构造一棵树,而是用库生成的。let hre = require("hardhat"); let { MerkleTree } = require("merkletreejs"); let { keccak256 } = require("keccak256"); let whitelistAddress = ["0xcd404712d55d839902a9f4b5935f514829378728", "0xCCC26c4d84e997904Dc204d83ea912278C8b60a2", "0x72dA088a22D1ebcD790765977b09741bE0AB2819", "0xc02055721cD6a553Ac58487ABD1E085CFeF24521", "0x9f63389D0eb66FCc9D9631Cc5D0FcFe594DCb749", "0xb75f07A2749a312496788a7b73fDD386EA529F2B"]; let leafNodes = whitelistAddress.map(addr => hre.ethers.utils.keccak256(addr)) console.log(leafNodes); let Merkle_Tree = new MerkleTree(leafNodes, hre.ethers.utils.keccak256)//, { SortPairs: true }); console.log(Merkle_Tree.toString()); let hashing_proof = leafNodes[0]; console.log(Merkle_Tree.getHexProof(hashing_proof)); 执行效果如下图所示,第一组输出是对每一个地址计算的keccak256结果,第二组输出是一组树,第三组输出是验证钱包地址0xcd404712d55d839902a9f4b5935f514829378728所需要构造的叶子hash信息,叶节点与其兄弟节点合并可以计算出父节点hash,以此类推最终计算获得根hash,通过验证根hash的一致性来验证:(4)完善论文,补充引言及引用论文,使文章更加完善,基本完成任务。今日反思之前参加会议的会议费还没有报销,今天正好老师在,应该早一点去询问一下走哪个项目报销,这样不被动,以后要更主动一点。 ## Publication Information - [R0chGh0st](https://paragraph.com/@r0ckgh0st/): Publication homepage - [All Posts](https://paragraph.com/@r0ckgh0st/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@r0ckgh0st): Subscribe to updates - [Twitter](https://twitter.com/GrantYu1): Follow on Twitter