Skip to main content
Version: v3.x

Minimal Anti Collusion Infrastructure (MACI) / IncrementalQuinTree

Class: IncrementalQuinTree

Defined in: quinTree.ts:7

An implementation of an incremental Merkle tree

Dev​

adapted from https://github.com/weijiekoh/optimisedmt

Constructors​

Constructor​

new IncrementalQuinTree(depth, zeroValue, arity, hashFunc): IncrementalQuinTree

Defined in: quinTree.ts:42

Create a new instance of the MaciQuinTree

Parameters​

depth​

number

The depth of the tree

zeroValue​

bigint

The zero value of the tree

arity​

number

The arity of the tree

hashFunc​

(leaves) => bigint

The hash function of the tree

Returns​

IncrementalQuinTree

Properties​

arity​

arity: number

Defined in: quinTree.ts:15


capacity​

capacity: number

Defined in: quinTree.ts:33


depth​

depth: number

Defined in: quinTree.ts:9


hashFunc()​

hashFunc: (leaves) => bigint

Defined in: quinTree.ts:18

Parameters​

leaves​

bigint[]

Returns​

bigint


nextIndex​

nextIndex: number = 0

Defined in: quinTree.ts:21


nodes​

nodes: Node

Defined in: quinTree.ts:29


numNodes​

numNodes: number

Defined in: quinTree.ts:31


root​

root: bigint

Defined in: quinTree.ts:27


zeros​

zeros: bigint[] = []

Defined in: quinTree.ts:25


zeroValue​

zeroValue: bigint

Defined in: quinTree.ts:12

Methods​

calcChildIndices()​

calcChildIndices(index): number[]

Defined in: quinTree.ts:272

Calculate the indices of the children of a node

Parameters​

index​

number

The index of the node

Returns​

number[]

The indices of the children


calcLeafIndices()​

calcLeafIndices(index): number[]

Defined in: quinTree.ts:105

Calculate the indices of the leaves in the path to the root

Parameters​

index​

number

The index of the leaf

Returns​

number[]

The indices of the leaves in the path to the root


calcParentIndices()​

calcParentIndices(index): number[]

Defined in: quinTree.ts:248

Calculate the indices of the parent

Parameters​

index​

number

The index of the leaf

Returns​

number[]

The indices of the parent


copy()​

copy(): IncrementalQuinTree

Defined in: quinTree.ts:338

Copy the tree to a new instance

Returns​

IncrementalQuinTree

The new instance


generateProof()​

generateProof(index): IMerkleProof

Defined in: quinTree.ts:122

Generate a proof for a given leaf index

Parameters​

index​

number

The index of the leaf to generate a proof for

Returns​

IMerkleProof

The proof


generateSubrootProof()​

generateSubrootProof(startIndex, endIndex): IMerkleProof

Defined in: quinTree.ts:168

Generates a Merkle proof from a subroot to the root.

Parameters​

startIndex​

number

The index of the first leaf

endIndex​

number

The index of the last leaf

Returns​

IMerkleProof

The Merkle proof


getNode()​

getNode(index): bigint

Defined in: quinTree.ts:299

Get a node at a given index

Parameters​

index​

number

The index of the node

Returns​

bigint

The node


insert()​

insert(value): void

Defined in: quinTree.ts:68

Insert a leaf at the next available index

Parameters​

value​

bigint

The value to insert

Returns​

void


setNode()​

setNode(index, value): void

Defined in: quinTree.ts:327

Set a node (not the root)

Parameters​

index​

number

the index of the node

value​

bigint

the value of the node

Returns​

void


update()​

update(index, value): void

Defined in: quinTree.ts:79

Update a leaf at a given index

Parameters​

index​

number

The index of the leaf to update

value​

bigint

The value to update the leaf with

Returns​

void


verifyProof()​

verifyProof(proof): boolean

Defined in: quinTree.ts:221

Verify a proof

Parameters​

proof​

IMerkleProof

The proof to verify

Returns​

boolean

Whether the proof is valid