@nori-zk/proof-conversion
Version:
Verifying zkVM proofs inside o1js circuits, to generate Mina compatible proof
427 lines (426 loc) • 23.3 kB
TypeScript
import { Field, Provable, VerificationKey, UInt8, Undefined, Proof, DynamicProof } from 'o1js';
import { BlobInclusionInput } from './verify_blob_inclusion.js';
declare const Bytes29_base: typeof import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
declare class Bytes29 extends Bytes29_base {
}
declare const Bytes64_base: typeof import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
declare class Bytes64 extends Bytes64_base {
}
declare const BatcherInput_base: (new (value: {
currentStateHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
index: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
namespace: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
currentRollingHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
batcherVkHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
blobInclusionVkHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
}) => {
currentStateHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
index: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
namespace: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
currentRollingHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
batcherVkHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
blobInclusionVkHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
}) & {
_isStruct: true;
} & Omit<import("node_modules/o1js/dist/node/lib/provable/types/provable-intf.js").Provable<{
currentStateHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
index: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
namespace: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
currentRollingHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
batcherVkHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
blobInclusionVkHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
}, {
currentStateHash: bigint;
index: bigint;
namespace: {
bytes: {
value: bigint;
}[];
};
currentRollingHash: bigint[];
batcherVkHash: bigint;
blobInclusionVkHash: bigint;
}>, "fromFields"> & {
fromFields: (fields: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[]) => {
currentStateHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
index: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
namespace: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
currentRollingHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
batcherVkHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
blobInclusionVkHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
};
} & {
fromValue: (value: {
currentStateHash: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
index: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
namespace: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes | {
bytes: {
value: bigint;
}[];
};
currentRollingHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[] | bigint[];
batcherVkHash: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
blobInclusionVkHash: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
}) => {
currentStateHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
index: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
namespace: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
currentRollingHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
batcherVkHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
blobInclusionVkHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
};
toInput: (x: {
currentStateHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
index: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
namespace: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
currentRollingHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
batcherVkHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
blobInclusionVkHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
}) => {
fields?: Field[] | undefined;
packed?: [Field, number][] | undefined;
};
toJSON: (x: {
currentStateHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
index: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
namespace: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
currentRollingHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
batcherVkHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
blobInclusionVkHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
}) => {
currentStateHash: string;
index: string;
namespace: {
bytes: {
value: string;
}[];
};
currentRollingHash: string[];
batcherVkHash: string;
blobInclusionVkHash: string;
};
fromJSON: (x: {
currentStateHash: string;
index: string;
namespace: {
bytes: {
value: string;
}[];
};
currentRollingHash: string[];
batcherVkHash: string;
blobInclusionVkHash: string;
}) => {
currentStateHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
index: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
namespace: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
currentRollingHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
batcherVkHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
blobInclusionVkHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
};
empty: () => {
currentStateHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
index: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
namespace: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
currentRollingHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
batcherVkHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
blobInclusionVkHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
};
};
declare class BatcherInput extends BatcherInput_base {
}
declare const BatcherOutput_base: (new (value: {
initialStateHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
currentStateHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
currentRollingHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
dataCommitment: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
}) => {
initialStateHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
currentStateHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
currentRollingHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
dataCommitment: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
}) & {
_isStruct: true;
} & Omit<import("node_modules/o1js/dist/node/lib/provable/types/provable-intf.js").Provable<{
initialStateHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
currentStateHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
currentRollingHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
dataCommitment: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
}, {
initialStateHash: bigint;
currentStateHash: bigint;
currentRollingHash: bigint[];
dataCommitment: {
bytes: {
value: bigint;
}[];
};
}>, "fromFields"> & {
fromFields: (fields: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[]) => {
initialStateHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
currentStateHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
currentRollingHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
dataCommitment: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
};
} & {
fromValue: (value: {
initialStateHash: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
currentStateHash: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
currentRollingHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[] | bigint[];
dataCommitment: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes | {
bytes: {
value: bigint;
}[];
};
}) => {
initialStateHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
currentStateHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
currentRollingHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
dataCommitment: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
};
toInput: (x: {
initialStateHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
currentStateHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
currentRollingHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
dataCommitment: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
}) => {
fields?: Field[] | undefined;
packed?: [Field, number][] | undefined;
};
toJSON: (x: {
initialStateHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
currentStateHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
currentRollingHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
dataCommitment: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
}) => {
initialStateHash: string;
currentStateHash: string;
currentRollingHash: string[];
dataCommitment: {
bytes: {
value: string;
}[];
};
};
fromJSON: (x: {
initialStateHash: string;
currentStateHash: string;
currentRollingHash: string[];
dataCommitment: {
bytes: {
value: string;
}[];
};
}) => {
initialStateHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
currentStateHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
currentRollingHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
dataCommitment: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
};
empty: () => {
initialStateHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
currentStateHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
currentRollingHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
dataCommitment: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes;
};
};
declare class BatcherOutput extends BatcherOutput_base {
}
declare function bytesToField(bs: UInt8[]): Field;
declare class BatcherDynamicProof extends DynamicProof<BatcherInput, BatcherOutput> {
static publicInputType: typeof BatcherInput;
static publicOutputType: typeof BatcherOutput;
static maxProofsVerified: 2;
static featureFlags: {
rangeCheck0: undefined;
rangeCheck1: undefined;
foreignFieldAdd: undefined;
foreignFieldMul: undefined;
xor: undefined;
rot: undefined;
lookup: undefined;
runtimeTables: undefined;
};
}
declare class BlobInclusionDynamicProof extends DynamicProof<BlobInclusionInput, Undefined> {
static publicInputType: typeof BlobInclusionInput;
static publicOutputType: import("node_modules/o1js/dist/node/lib/provable/types/struct.js").ProvablePureExtended<undefined, undefined, null>;
static maxProofsVerified: 1;
static featureFlags: {
rangeCheck0: undefined;
rangeCheck1: undefined;
foreignFieldAdd: undefined;
foreignFieldMul: undefined;
xor: undefined;
rot: undefined;
lookup: undefined;
runtimeTables: undefined;
};
}
declare const batcherVerifier: {
name: string;
maxProofsVerified(): Promise<0 | 1 | 2>;
compile: (options?: {
cache?: import("o1js").Cache;
forceRecompile?: boolean;
proofsEnabled?: boolean;
}) => Promise<{
verificationKey: {
data: string;
hash: Field;
};
}>;
verify: (proof: Proof<BatcherInput, BatcherOutput>) => Promise<boolean>;
digest: () => Promise<string>;
analyzeMethods: () => Promise<{
compute: {
proofs: import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofClass[];
rows: number;
digest: string;
gates: import("node_modules/o1js/dist/node/snarky.js").Gate[];
publicInputSize: number;
print(): void;
summary(): Partial<Record<import("node_modules/o1js/dist/node/snarky.js").GateType | "Total rows", number>>;
};
}>;
publicInputType: typeof BatcherInput;
publicOutputType: typeof BatcherOutput;
privateInputTypes: {
compute: [typeof BatcherDynamicProof, typeof VerificationKey, typeof BlobInclusionDynamicProof, typeof VerificationKey, typeof import("node_modules/o1js/dist/node/lib/provable/field.js").Field & ((x: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/core/fieldvar.js").FieldConst | import("node_modules/o1js/dist/node/lib/provable/core/fieldvar.js").FieldVar | import("node_modules/o1js/dist/node/lib/provable/field.js").Field) => import("node_modules/o1js/dist/node/lib/provable/field.js").Field), import("node_modules/o1js/dist/node/lib/provable/types/struct.js").ProvablePureExtended<import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes, {
bytes: {
value: bigint;
}[];
}, {
bytes: {
value: string;
}[];
}>];
};
auxiliaryOutputTypes: {
compute: undefined;
};
rawMethods: {
compute: (publicInput: BatcherInput, args_0: BatcherDynamicProof, args_1: VerificationKey, args_2: BlobInclusionDynamicProof, args_3: VerificationKey, args_4: import("node_modules/o1js/dist/node/lib/provable/field.js").Field, args_5: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes) => Promise<{
publicOutput: BatcherOutput;
}>;
};
Proof: {
new ({ proof, publicInput, publicOutput, maxProofsVerified, }: {
proof: import("node_modules/o1js/dist/node/snarky.js").Pickles.Proof;
publicInput: BatcherInput;
publicOutput: BatcherOutput;
maxProofsVerified: 0 | 1 | 2;
}): Proof<BatcherInput, BatcherOutput>;
fromJSON<S extends import("node_modules/o1js/dist/node/lib/util/types.js").Subclass<typeof Proof>>(this: S, { maxProofsVerified, proof: proofString, publicInput: publicInputJson, publicOutput: publicOutputJson, }: import("o1js").JsonProof): Promise<Proof<import("o1js").InferProvable<S["publicInputType"]>, import("o1js").InferProvable<S["publicOutputType"]>>>;
dummy<Input, OutPut>(publicInput: Input, publicOutput: OutPut, maxProofsVerified: 0 | 1 | 2, domainLog2?: number): Promise<Proof<Input, OutPut>>;
readonly provable: {
toFields: (value: Proof<any, any>) => import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
toAuxiliary: (value?: Proof<any, any> | undefined) => any[];
fromFields: (fields: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[], aux: any[]) => Proof<any, any>;
sizeInFields(): number;
check: (value: Proof<any, any>) => void;
toValue: (x: Proof<any, any>) => import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any>;
fromValue: (x: import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any> | Proof<any, any>) => Proof<any, any>;
toCanonical?: ((x: Proof<any, any>) => Proof<any, any>) | undefined;
};
publicInputType: import("o1js").FlexibleProvable<any>;
publicOutputType: import("o1js").FlexibleProvable<any>;
tag: () => {
name: string;
};
publicFields(value: import("o1js").ProofBase): {
input: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
output: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
};
_proofFromBase64(proofString: import("node_modules/o1js/dist/node/snarky.js").Base64ProofString, maxProofsVerified: 0 | 1 | 2): unknown;
_proofToBase64(proof: import("node_modules/o1js/dist/node/snarky.js").Pickles.Proof, maxProofsVerified: 0 | 1 | 2): string;
};
proofsEnabled: boolean;
setProofsEnabled(proofsEnabled: boolean): void;
} & {
compute: (publicInput: BatcherInput | {
currentStateHash: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
index: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
namespace: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes | {
bytes: {
value: bigint;
}[];
};
currentRollingHash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[] | bigint[];
batcherVkHash: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
blobInclusionVkHash: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
}, args_0: DynamicProof<any, any> | import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any>, args_1: VerificationKey | {
data: string;
hash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
} | {
data: string;
hash: bigint;
}, args_2: DynamicProof<any, any> | import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any>, args_3: VerificationKey | {
data: string;
hash: import("node_modules/o1js/dist/node/lib/provable/field.js").Field;
} | {
data: string;
hash: bigint;
}, args_4: string | number | bigint | import("node_modules/o1js/dist/node/lib/provable/field.js").Field, args_5: import("node_modules/o1js/dist/node/lib/provable/bytes.js").Bytes | {
bytes: {
value: bigint;
}[];
}) => Promise<{
proof: Proof<BatcherInput, BatcherOutput>;
auxiliaryOutput: undefined;
}>;
};
declare const BatcherProof: {
new ({ proof, publicInput, publicOutput, maxProofsVerified, }: {
proof: unknown;
publicInput: BatcherInput;
publicOutput: BatcherOutput;
maxProofsVerified: 0 | 2 | 1;
}): Proof<BatcherInput, BatcherOutput>;
fromJSON<S extends import("node_modules/o1js/dist/node/lib/util/types.js").Subclass<typeof import("node_modules/o1js/dist/node/lib/proof-system/proof.js").Proof>>(this: S, { maxProofsVerified, proof: proofString, publicInput: publicInputJson, publicOutput: publicOutputJson, }: import("o1js").JsonProof): Promise<Proof<import("o1js").InferProvable<S["publicInputType"]>, import("o1js").InferProvable<S["publicOutputType"]>>>;
dummy<Input, OutPut>(publicInput: Input, publicOutput: OutPut, maxProofsVerified: 0 | 2 | 1, domainLog2?: number): Promise<Proof<Input, OutPut>>;
readonly provable: {
toFields: (value: Proof<any, any>) => import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
toAuxiliary: (value?: Proof<any, any> | undefined) => any[];
fromFields: (fields: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[], aux: any[]) => Proof<any, any>;
sizeInFields(): number;
check: (value: Proof<any, any>) => void;
toValue: (x: Proof<any, any>) => import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any>;
fromValue: (x: Proof<any, any> | import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any>) => Proof<any, any>;
toCanonical?: ((x: Proof<any, any>) => Proof<any, any>) | undefined;
};
publicInputType: import("o1js").FlexibleProvable<any>;
publicOutputType: import("o1js").FlexibleProvable<any>;
tag: () => {
name: string;
};
publicFields(value: import("o1js").ProofBase<any, any>): {
input: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
output: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[];
};
_proofFromBase64(proofString: string, maxProofsVerified: 0 | 2 | 1): unknown;
_proofToBase64(proof: unknown, maxProofsVerified: 0 | 2 | 1): string;
} & {
provable: Provable<Proof<BatcherInput, BatcherOutput>, import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofValue<{
currentStateHash: bigint;
index: bigint;
namespace: {
bytes: {
value: bigint;
}[];
};
currentRollingHash: bigint[];
batcherVkHash: bigint;
blobInclusionVkHash: bigint;
}, {
initialStateHash: bigint;
currentStateHash: bigint;
currentRollingHash: bigint[];
dataCommitment: {
bytes: {
value: bigint;
}[];
};
}>>;
};
export { batcherVerifier, BatcherProof, BatcherInput, BatcherOutput, Bytes29, Bytes64, BatcherDynamicProof, BlobInclusionDynamicProof, bytesToField, };