UNPKG

@nori-zk/proof-conversion

Version:

Verifying zkVM proofs inside o1js circuits, to generate Mina compatible proof

427 lines (426 loc) 23.7 kB
import { Field, Provable, VerificationKey, UInt8, Undefined, 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("o1js").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; withRuntimeTables?: boolean; numChunks?: number; lazyMode?: boolean; }) => Promise<{ verificationKey: { data: string; hash: Field; }; }>; verify: (proof: import("o1js").Proof<BatcherInput, BatcherOutput>) => Promise<boolean>; digest: () => Promise<string>; analyzeMethods: () => Promise<{ compute: import("node_modules/o1js/dist/node/lib/provable/core/provable-context.js").ConstraintSystemSummary & { proofs: import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofClass[]; }; }>; analyzeSingleMethod<K extends "compute">(methodName: K): Promise<import("node_modules/o1js/dist/node/lib/provable/core/provable-context.js").ConstraintSystemSummary & { proofs: import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofClass[]; }>; 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("o1js").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/bindings.js").Pickles.Proof; publicInput: BatcherInput; publicOutput: BatcherOutput; maxProofsVerified: 0 | 1 | 2; }): import("o1js").Proof<BatcherInput, BatcherOutput>; fromJSON<S extends import("node_modules/o1js/dist/node/lib/util/types.js").Subclass<typeof import("o1js").Proof>>(this: S, { maxProofsVerified, proof: proofString, publicInput: publicInputJson, publicOutput: publicOutputJson, }: import("o1js").JsonProof): Promise<import("o1js").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<import("o1js").Proof<Input, OutPut>>; get provable(): { toFields: (value: import("o1js").Proof<any, any>) => import("node_modules/o1js/dist/node/lib/provable/field.js").Field[]; toAuxiliary: (value?: import("o1js").Proof<any, any> | undefined) => any[]; fromFields: (fields: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[], aux: any[]) => import("o1js").Proof<any, any>; sizeInFields(): number; check: (value: import("o1js").Proof<any, any>) => void; toValue: (x: import("o1js").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> | import("o1js").Proof<any, any>) => import("o1js").Proof<any, any>; toCanonical?: ((x: import("o1js").Proof<any, any>) => import("o1js").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/bindings.js").Base64ProofString, maxProofsVerified: 0 | 1 | 2): unknown; _proofToBase64(proof: import("node_modules/o1js/dist/node/bindings.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: import("o1js").Proof<BatcherInput, BatcherOutput>; auxiliaryOutput: undefined; }>; }; declare const BatcherProof: { new ({ proof, publicInput, publicOutput, maxProofsVerified, }: { proof: unknown; publicInput: BatcherInput; publicOutput: BatcherOutput; maxProofsVerified: 0 | 2 | 1; }): import("o1js").Proof<BatcherInput, BatcherOutput>; fromJSON<S extends import("node_modules/o1js/dist/node/lib/util/types.js").Subclass<typeof import("o1js").Proof>>(this: S, { maxProofsVerified, proof: proofString, publicInput: publicInputJson, publicOutput: publicOutputJson, }: import("o1js").JsonProof): Promise<import("o1js").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<import("o1js").Proof<Input, OutPut>>; readonly provable: { toFields: (value: import("o1js").Proof<any, any>) => import("node_modules/o1js/dist/node/lib/provable/field.js").Field[]; toAuxiliary: (value?: import("o1js").Proof<any, any> | undefined) => any[]; fromFields: (fields: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[], aux: any[]) => import("o1js").Proof<any, any>; sizeInFields(): number; check: (value: import("o1js").Proof<any, any>) => void; toValue: (x: import("o1js").Proof<any, any>) => import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any>; fromValue: (x: import("o1js").Proof<any, any> | import("node_modules/o1js/dist/node/lib/proof-system/proof.js").ProofValue<any, any>) => import("o1js").Proof<any, any>; toCanonical?: ((x: import("o1js").Proof<any, any>) => import("o1js").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<import("o1js").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, };