Skip to main content
Version: 2.15.0

MerkleTree

Defined in: lib/provable/merkle-tree.ts:28

A Merkle Tree is a binary tree in which every leaf is the cryptography hash of a piece of data, and every node is the hash of the concatenation of its two child nodes.

A Merkle Tree allows developers to easily and securely verify the integrity of large amounts of data.

Take a look at our documentation on how to use Merkle Trees in combination with zkApps and zero knowledge programming!

Levels are indexed from leaves (level 0) to root (level N - 1).

Constructors​

Constructor​

new MerkleTree(height: number): MerkleTree;

Defined in: lib/provable/merkle-tree.ts:37

Creates a new, empty Merkle Tree.

Parameters​

height​

number

The height of Merkle Tree.

Returns​

MerkleTree

A new MerkleTree

Properties​

height​

readonly height: number;

Defined in: lib/provable/merkle-tree.ts:37

The height of Merkle Tree.


nodes​

nodes: Record<number, Record<string, Field>> = {};

Defined in: lib/provable/merkle-tree.ts:29


zeroes​

zeroes: Field[];

Defined in: lib/provable/merkle-tree.ts:30

Accessors​

leafCount​

Get Signature​

get leafCount(): bigint;

Defined in: lib/provable/merkle-tree.ts:160

Returns the amount of leaf nodes.

Returns​

bigint

Amount of leaf nodes.

Methods​

clone()​

clone(): MerkleTree;

Defined in: lib/provable/merkle-tree.ts:48

Return a new MerkleTree with the same contents as this one.

Returns​

MerkleTree


fill()​

fill(leaves: Field[]): void;

Defined in: lib/provable/merkle-tree.ts:150

Fills all leaves of the tree.

Parameters​

leaves​

Field[]

Values to fill the leaves with.

Returns​

void


getLeaf()​

getLeaf(index: bigint): Field;

Defined in: lib/provable/merkle-tree.ts:71

Returns a leaf at a given index.

Parameters​

index​

bigint

Index of the leaf.

Returns​

Field

The data of the leaf.


getNode()​

getNode(level: number, index: bigint): Field;

Defined in: lib/provable/merkle-tree.ts:62

Returns a node which lives at a given index and level.

Parameters​

level​

number

Level of the node.

index​

bigint

Index of the node.

Returns​

Field

The data of the node.


getRoot()​

getRoot(): Field;

Defined in: lib/provable/merkle-tree.ts:79

Returns the root of the Merkle Tree.

Returns​

Field

The root of the Merkle Tree.


getWitness()​

getWitness(index: bigint): Witness;

Defined in: lib/provable/merkle-tree.ts:115

Returns the witness (also known as Merkle Proof or Merkle Witness) for the leaf at the given index.

Parameters​

index​

bigint

Position of the leaf node.

Returns​

Witness

The witness that belongs to the leaf.


setLeaf()​

setLeaf(index: bigint, leaf: Field): void;

Defined in: lib/provable/merkle-tree.ts:94

Sets the value of a leaf node at a given index to a given value.

Parameters​

index​

bigint

Position of the leaf node.

leaf​

Field

New value.

Returns​

void


validate()​

validate(index: bigint): boolean;

Defined in: lib/provable/merkle-tree.ts:135

Checks if the witness that belongs to the leaf at the given index is a valid witness.

Parameters​

index​

bigint

Position of the leaf node.

Returns​

boolean

True if the witness for the leaf node is valid.