Add merkleTree generation helpers
This commit is contained in:
parent
004b102540
commit
fd65316d1f
@ -23,8 +23,11 @@
|
||||
"@cosmos-kit/leap": "^2.4.3",
|
||||
"@cosmos-kit/leap-metamask-cosmos-snap": "^0.3.3",
|
||||
"@cosmos-kit/react": "^2.9.3",
|
||||
"crypto-js": "4.1.1",
|
||||
"@types/crypto-js": "4.2.1",
|
||||
"@fontsource/jetbrains-mono": "^4",
|
||||
"@fontsource/roboto": "^4",
|
||||
"merkletreejs": "0.3.11",
|
||||
"@leapwallet/cosmos-snap-provider": "0.1.24",
|
||||
"@pinata/sdk": "^1.1.26",
|
||||
"@popperjs/core": "^2",
|
||||
|
31
utils/merkleTree.ts
Normal file
31
utils/merkleTree.ts
Normal file
@ -0,0 +1,31 @@
|
||||
import sha256 from 'crypto-js/sha256'
|
||||
import { MerkleTree } from 'merkletreejs'
|
||||
|
||||
export class WhitelistMerkleTree {
|
||||
tree: MerkleTree
|
||||
constructor(members: string[]) {
|
||||
this.tree = new MerkleTree(
|
||||
members.map((member) => sha256(member)),
|
||||
sha256,
|
||||
{
|
||||
// sort: true,
|
||||
// hashLeaves: false,
|
||||
// sortLeaves: true,
|
||||
sortPairs: true,
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
getMerkleRoot() {
|
||||
return this.tree.getRoot().toString('hex')
|
||||
}
|
||||
|
||||
getMerkleProof(member: string) {
|
||||
console.log('this.tree.getProof(sha256(member).toString()): ', this.tree.getProof(sha256(member).toString()))
|
||||
return this.tree.getProof(sha256(member).toString()).map((item) => item.data.toString('hex'))
|
||||
}
|
||||
|
||||
verify(proof: string[], member: string) {
|
||||
return this.tree.verify(proof, sha256(member).toString(), this.tree.getRoot())
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user