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
TypeScript
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 {};