mirror of
https://github.com/tornadocash/tornado-core.git
synced 2024-11-22 17:50:19 +01:00
merkle tree update - getIndexByElement
This commit is contained in:
parent
b0c896c681
commit
3f3e0534cc
@ -179,6 +179,16 @@ class MerkleTree {
|
|||||||
current_index = Math.floor(current_index / 2)
|
current_index = Math.floor(current_index / 2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getIndexByElement(element) {
|
||||||
|
for(let i = this.totalElements - 1; i >= 0; i--) {
|
||||||
|
const elementFromTree = this.storage.get(MerkleTree.index_to_key(this.prefix, 0, i))
|
||||||
|
if (elementFromTree === element) {
|
||||||
|
return i
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = MerkleTree
|
module.exports = MerkleTree
|
||||||
|
@ -102,6 +102,27 @@ contract('MerkleTreeWithHistory', accounts => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('should find an element', async () => {
|
||||||
|
const elements = [12, 13, 14, 15, 16, 17, 18, 19, 20]
|
||||||
|
for(const [, el] of Object.entries(elements)) {
|
||||||
|
await tree.insert(el)
|
||||||
|
}
|
||||||
|
let index = tree.getIndexByElement(13)
|
||||||
|
index.should.be.equal(1)
|
||||||
|
|
||||||
|
index = tree.getIndexByElement(19)
|
||||||
|
index.should.be.equal(7)
|
||||||
|
|
||||||
|
index = tree.getIndexByElement(12)
|
||||||
|
index.should.be.equal(0)
|
||||||
|
|
||||||
|
index = tree.getIndexByElement(20)
|
||||||
|
index.should.be.equal(8)
|
||||||
|
|
||||||
|
index = tree.getIndexByElement(42)
|
||||||
|
index.should.be.equal(false)
|
||||||
|
})
|
||||||
|
|
||||||
it('creation even elements count', async () => {
|
it('creation even elements count', async () => {
|
||||||
const elements = [12, 13, 14, 15, 16, 17]
|
const elements = [12, 13, 14, 15, 16, 17]
|
||||||
for(const [, el] of Object.entries(elements)) {
|
for(const [, el] of Object.entries(elements)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user