Skip to main content
Version: v1.2

IncrementalQuinTree

An implementation of an incremental Merkle tree

Dev

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

Table of contents​

Constructors​

Properties​

Methods​

Constructors​

constructor​

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

Create a new instance of the MaciQuinTree

Parameters​

NameTypeDescription
depthnumberThe depth of the tree
zeroValuebigintThe zero value of the tree
aritynumberThe arity of the tree
hashFunc(leaves: bigint[]) => bigintThe hash function of the tree

Returns​

IncrementalQuinTree

Defined in​

crypto/ts/quinTree.ts:42

Properties​

arity​

• arity: number

Defined in​

crypto/ts/quinTree.ts:15


capacity​

• capacity: number

Defined in​

crypto/ts/quinTree.ts:33


depth​

• depth: number

Defined in​

crypto/ts/quinTree.ts:9


hashFunc​

• hashFunc: (leaves: bigint[]) => bigint

Type declaration​

▸ (leaves): bigint

Parameters​
NameType
leavesbigint[]
Returns​

bigint

Defined in​

crypto/ts/quinTree.ts:18


nextIndex​

• nextIndex: number = 0

Defined in​

crypto/ts/quinTree.ts:21


nodes​

• nodes: Node

Defined in​

crypto/ts/quinTree.ts:29


numNodes​

• numNodes: number

Defined in​

crypto/ts/quinTree.ts:31


root​

• root: bigint

Defined in​

crypto/ts/quinTree.ts:27


zeroValue​

• zeroValue: bigint

Defined in​

crypto/ts/quinTree.ts:12


zeros​

• zeros: bigint[] = []

Defined in​

crypto/ts/quinTree.ts:25

Methods​

calcChildIndices​

▸ calcChildIndices(index): number[]

Calculate the indices of the children of a node

Parameters​

NameTypeDescription
indexnumberThe index of the node

Returns​

number[]

The indices of the children

Defined in​

crypto/ts/quinTree.ts:272


calcInitialVals​

▸ calcInitialVals(arity, depth, zeroValue, hashFunc): Object

Calculate the zeroes and the root of a tree

Parameters​

NameTypeDescription
aritynumberThe arity of the tree
depthnumberThe depth of the tree
zeroValuebigintThe zero value of the tree
hashFunc(leaves: bigint[]) => bigintThe hash function of the tree

Returns​

Object

The zeros and the root

NameType
rootbigint
zerosbigint[]

Defined in​

crypto/ts/quinTree.ts:358


calcLeafIndices​

▸ calcLeafIndices(index): number[]

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

Parameters​

NameTypeDescription
indexnumberThe index of the leaf

Returns​

number[]

The indices of the leaves in the path to the root

Defined in​

crypto/ts/quinTree.ts:105


calcParentIndices​

▸ calcParentIndices(index): number[]

Calculate the indices of the parent

Parameters​

NameTypeDescription
indexnumberThe index of the leaf

Returns​

number[]

The indices of the parent

Defined in​

crypto/ts/quinTree.ts:248


copy​

▸ copy(): IncrementalQuinTree

Copy the tree to a new instance

Returns​

IncrementalQuinTree

The new instance

Defined in​

crypto/ts/quinTree.ts:338


genProof​

▸ genProof(index): IMerkleProof

Generate a proof for a given leaf index

Parameters​

NameTypeDescription
indexnumberThe index of the leaf to generate a proof for

Returns​

IMerkleProof

The proof

Defined in​

crypto/ts/quinTree.ts:122


genSubrootProof​

▸ genSubrootProof(startIndex, endIndex): IMerkleProof

Generates a Merkle proof from a subroot to the root.

Parameters​

NameTypeDescription
startIndexnumberThe index of the first leaf
endIndexnumberThe index of the last leaf

Returns​

IMerkleProof

The Merkle proof

Defined in​

crypto/ts/quinTree.ts:168


getNode​

▸ getNode(index): bigint

Get a node at a given index

Parameters​

NameTypeDescription
indexnumberThe index of the node

Returns​

bigint

The node

Defined in​

crypto/ts/quinTree.ts:299


insert​

▸ insert(value): void

Insert a leaf at the next available index

Parameters​

NameTypeDescription
valuebigintThe value to insert

Returns​

void

Defined in​

crypto/ts/quinTree.ts:68


setNode​

▸ setNode(index, value): void

Set a node (not the root)

Parameters​

NameTypeDescription
indexnumberthe index of the node
valuebigintthe value of the node

Returns​

void

Defined in​

crypto/ts/quinTree.ts:327


update​

▸ update(index, value): void

Update a leaf at a given index

Parameters​

NameTypeDescription
indexnumberThe index of the leaf to update
valuebigintThe value to update the leaf with

Returns​

void

Defined in​

crypto/ts/quinTree.ts:79


verifyProof​

▸ verifyProof(proof): boolean

Verify a proof

Parameters​

NameTypeDescription
proofIMerkleProofThe proof to verify

Returns​

boolean

Whether the proof is valid

Defined in​

crypto/ts/quinTree.ts:221