Skip to content

Commit 24d6d2b

Browse files
implement getProofElements part 2
1 parent 14b6ed5 commit 24d6d2b

File tree

3 files changed

+12
-5
lines changed

3 files changed

+12
-5
lines changed

src/merkle-tree.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ Deno.test("should return the correct proof for an element at a specific index",
2626
const exampleArray = ["dog", "horse", "cow", "chicken"]
2727
const merkleTree = new MerkleTree(exampleArray)
2828

29-
const proof = merkleTree.getProof(exampleArray.indexOf("dog"))
29+
const proof = merkleTree.getProofElements(exampleArray.indexOf("dog"))
3030

3131
const expectedProof = ["fd62862b6dc213bee77c2badd6311528253c6cb3107e03c16051aa15584eca1c", "a12b2f7a5ddb20963c22654f6b22a6955c9956a20c76a0e8f169a437aafb4c98"]
3232

src/merkle-tree.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,14 +83,20 @@ export class MerkleTree {
8383
return this.hashes.filter((e: IMerkleHashes) => e.level === 2)[0].hashes[0]
8484
}
8585

86-
public getProof(investigatedEntryIndex: number): string[] {
86+
public getProofElements(investigatedEntryIndex: number): string[] {
8787
let level = 0
8888
let levels = this.hashes[this.hashes.length - 1].level
89+
let proofElements: string[] = []
8990

9091
console.log(this.hashes)
9192
console.log(`levels: ${levels}`)
9293

93-
return [this.hashes.filter((e: IMerkleHashes) => e.level === 0)[0].hashes[1], this.hashes.filter((e: IMerkleHashes) => e.level === 1)[0].hashes[1]]
94+
while (level < levels) {
95+
proofElements.push(this.hashes.filter((e: IMerkleHashes) => e.level === level)[investigatedEntryIndex].hashes[1])
96+
level++
97+
}
98+
99+
return proofElements
94100
}
95101

96102
private checkInput(array: any[]) {

usage-example.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
import { MerkleTree, Helper } from "https://deno.land/x/merkletrees/mod.ts"
1+
// import { MerkleTree, Helper } from "https://deno.land/x/merkletrees/mod.ts"
2+
import { MerkleTree, Helper } from "./mod.ts"
23

34
const exampleArray = ["dog", "horse", "cow", "chicken"]
45

56
const merkleTree = new MerkleTree(exampleArray)
67

78
const investigatedEntry = "dog"
8-
const proof = merkleTree.getProof(exampleArray.indexOf(investigatedEntry))
9+
const proof = merkleTree.getProofElements(exampleArray.indexOf(investigatedEntry))
910
const investigatedEntryHashed = Helper.sha256(investigatedEntry)
1011
const rootHash = merkleTree.getRootHash()
1112
const isValid = merkleTree.verify(proof, investigatedEntryHashed, rootHash, exampleArray.indexOf(investigatedEntry))

0 commit comments

Comments
 (0)