UNPKG

minauth-merkle-membership-plugin

Version:

This package contains an implementation of a simple MinAuth plugin that extends the concept of password authentication into authenticating within sets that provide a level of anonymity. The proofs are built and verified with MINA's `o1js` library & proof

162 lines (161 loc) 5.84 kB
import { SelfProof } from 'o1js'; export declare const TREE_HEIGHT = 10; declare const TreeWitness_base: typeof import("o1js/dist/node/lib/merkle_tree").BaseMerkleWitness; export declare class TreeWitness extends TreeWitness_base { } declare const PrivateInput_base: (new (value: { witness: TreeWitness; secret: import("o1js/dist/node/lib/field").Field; }) => { witness: TreeWitness; secret: import("o1js/dist/node/lib/field").Field; }) & { _isStruct: true; } & import("o1js/dist/node/snarky").ProvablePure<{ witness: TreeWitness; secret: import("o1js/dist/node/lib/field").Field; }> & { toInput: (x: { witness: TreeWitness; secret: import("o1js/dist/node/lib/field").Field; }) => { fields?: import("o1js/dist/node/lib/field").Field[] | undefined; packed?: [import("o1js/dist/node/lib/field").Field, number][] | undefined; }; toJSON: (x: { witness: TreeWitness; secret: import("o1js/dist/node/lib/field").Field; }) => { witness: any; secret: string; }; fromJSON: (x: { witness: any; secret: string; }) => { witness: TreeWitness; secret: import("o1js/dist/node/lib/field").Field; }; empty: () => { witness: TreeWitness; secret: import("o1js/dist/node/lib/field").Field; }; }; export declare class PrivateInput extends PrivateInput_base { } declare const PublicInput_base: (new (value: { merkleRoot: import("o1js/dist/node/lib/field").Field; }) => { merkleRoot: import("o1js/dist/node/lib/field").Field; }) & { _isStruct: true; } & import("o1js/dist/node/snarky").ProvablePure<{ merkleRoot: import("o1js/dist/node/lib/field").Field; }> & { toInput: (x: { merkleRoot: import("o1js/dist/node/lib/field").Field; }) => { fields?: import("o1js/dist/node/lib/field").Field[] | undefined; packed?: [import("o1js/dist/node/lib/field").Field, number][] | undefined; }; toJSON: (x: { merkleRoot: import("o1js/dist/node/lib/field").Field; }) => { merkleRoot: string; }; fromJSON: (x: { merkleRoot: string; }) => { merkleRoot: import("o1js/dist/node/lib/field").Field; }; empty: () => { merkleRoot: import("o1js/dist/node/lib/field").Field; }; }; export declare class PublicInput extends PublicInput_base { } declare const PublicOutput_base: (new (value: { recursiveHash: import("o1js/dist/node/lib/field").Field; }) => { recursiveHash: import("o1js/dist/node/lib/field").Field; }) & { _isStruct: true; } & import("o1js/dist/node/snarky").ProvablePure<{ recursiveHash: import("o1js/dist/node/lib/field").Field; }> & { toInput: (x: { recursiveHash: import("o1js/dist/node/lib/field").Field; }) => { fields?: import("o1js/dist/node/lib/field").Field[] | undefined; packed?: [import("o1js/dist/node/lib/field").Field, number][] | undefined; }; toJSON: (x: { recursiveHash: import("o1js/dist/node/lib/field").Field; }) => { recursiveHash: string; }; fromJSON: (x: { recursiveHash: string; }) => { recursiveHash: import("o1js/dist/node/lib/field").Field; }; empty: () => { recursiveHash: import("o1js/dist/node/lib/field").Field; }; }; export declare class PublicOutput extends PublicOutput_base { } /** Prove knowledge of a preimage of a hash in a merkle tree. * The proof does not reveal the preimage nor the hash. * The output contains a recursive hash of all the roots for which the preimage is known. * output = hash(lastRoot + hash(secondLastRoot, ... hash(xLastRoot, lastRoot) ...) * Therefore the order of the proofs matters. */ export declare const Program: { name: string; compile: (options?: { cache?: import("o1js/dist/node/lib/proof-system/cache").Cache | undefined; forceRecompile?: boolean | undefined; } | undefined) => Promise<{ verificationKey: { data: string; hash: import("o1js/dist/node/lib/field").Field; }; }>; verify: (proof: import("o1js/dist/node/lib/proof_system").Proof<PublicInput, PublicOutput>) => Promise<boolean>; digest: () => string; analyzeMethods: () => { baseCase: { rows: number; digest: string; result: unknown; gates: import("o1js/dist/node/snarky").Gate[]; publicInputSize: number; print(): void; summary(): Partial<Record<import("o1js/dist/node/snarky").GateType | "Total rows", number>>; }; inductiveCase: { rows: number; digest: string; result: unknown; gates: import("o1js/dist/node/snarky").Gate[]; publicInputSize: number; print(): void; summary(): Partial<Record<import("o1js/dist/node/snarky").GateType | "Total rows", number>>; }; }; publicInputType: typeof PublicInput; publicOutputType: typeof PublicOutput; privateInputTypes: { baseCase: [typeof PrivateInput]; inductiveCase: [typeof SelfProof, typeof PrivateInput]; }; rawMethods: { baseCase: (publicInput: PublicInput, ...args: [PrivateInput] & any[]) => PublicOutput; inductiveCase: (publicInput: PublicInput, ...args: [SelfProof<unknown, unknown>, PrivateInput] & any[]) => PublicOutput; }; } & { baseCase: (publicInput: PublicInput, ...args: [PrivateInput] & any[]) => Promise<import("o1js/dist/node/lib/proof_system").Proof<PublicInput, PublicOutput>>; inductiveCase: (publicInput: PublicInput, ...args: [SelfProof<unknown, unknown>, PrivateInput] & any[]) => Promise<import("o1js/dist/node/lib/proof_system").Proof<PublicInput, PublicOutput>>; }; export {};