@jayanth-kumar-morem/indexed-merkle-tree
Version:
Indexed Merkle Tree implemented in Typescript and circom circuits using Poseidon hashing to perform non membership proofs with serialising and deserialising to off chain storage
48 lines • 1.29 kB
TypeScript
export interface Leaf {
val: bigint;
nextVal: bigint;
nextIdx: number;
}
export interface NonMembershipProof {
query: bigint;
preLeaf: Leaf;
path: bigint[];
directions: number[];
root: bigint;
}
export interface SerializedIMT {
depth: number;
nodes: string[][];
leaves: {
val: string;
nextVal: string;
nextIdx: number;
}[];
}
export declare class IndexedMerkleTree {
readonly depth = 32;
readonly zeros: bigint[];
readonly zero: bigint;
private nodes;
private leaves;
constructor();
new(): Promise<IndexedMerkleTree>;
private leafHash;
private parentHash;
private toField;
private predecessorIndex;
private setNode;
insert(x: bigint): Promise<void>;
private updateLeafHash;
get root(): bigint;
createNonMembershipProof(x: bigint): NonMembershipProof;
verifyNonMembershipProof(p: NonMembershipProof): boolean;
serialize(): SerializedIMT;
static deserialize(data: SerializedIMT): IndexedMerkleTree;
saveToFile(filePath: string): Promise<void>;
static loadFromFile(filePath: string): IndexedMerkleTree;
get size(): number;
getLeaves(): Leaf[];
getNodesAtLevel(level: number): bigint[];
}
//# sourceMappingURL=index.d.ts.map