@aztec-labs/ivc-integration 6.0.0-nightly.20260829
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/artifacts/app_creator.d.json.ts +3 -0
- package/artifacts/app_creator.json +210 -0
- package/artifacts/app_reader.d.json.ts +3 -0
- package/artifacts/app_reader.json +210 -0
- package/artifacts/mock_hiding.d.json.ts +3 -0
- package/artifacts/mock_hiding.json +256 -0
- package/artifacts/mock_private_kernel_init.d.json.ts +3 -0
- package/artifacts/mock_private_kernel_init.json +783 -0
- package/artifacts/mock_private_kernel_inner.d.json.ts +3 -0
- package/artifacts/mock_private_kernel_inner.json +833 -0
- package/artifacts/mock_private_kernel_reset.d.json.ts +3 -0
- package/artifacts/mock_private_kernel_reset.json +342 -0
- package/artifacts/mock_private_kernel_tail.d.json.ts +3 -0
- package/artifacts/mock_private_kernel_tail.json +306 -0
- package/artifacts/mock_rollup_root.d.json.ts +3 -0
- package/artifacts/mock_rollup_root.json +331 -0
- package/artifacts/mock_rollup_tx_base_private.d.json.ts +3 -0
- package/artifacts/mock_rollup_tx_base_private.json +322 -0
- package/artifacts/mock_rollup_tx_base_public.d.json.ts +3 -0
- package/artifacts/mock_rollup_tx_base_public.json +1484 -0
- package/artifacts/mock_rollup_tx_merge.d.json.ts +3 -0
- package/artifacts/mock_rollup_tx_merge.json +387 -0
- package/dest/batch_verifier_test_helpers.d.ts +14 -0
- package/dest/batch_verifier_test_helpers.d.ts.map +1 -0
- package/dest/batch_verifier_test_helpers.js +19 -0
- package/dest/bb_working_directory.d.ts +2 -0
- package/dest/bb_working_directory.d.ts.map +1 -0
- package/dest/bb_working_directory.js +10 -0
- package/dest/index.d.ts +2 -0
- package/dest/index.d.ts.map +1 -0
- package/dest/index.js +1 -0
- package/dest/prove_native.d.ts +15 -0
- package/dest/prove_native.d.ts.map +1 -0
- package/dest/prove_native.js +188 -0
- package/dest/scripts/generate_declaration_files.d.ts +2 -0
- package/dest/scripts/generate_declaration_files.d.ts.map +1 -0
- package/dest/scripts/generate_declaration_files.js +21 -0
- package/dest/scripts/generate_ts_from_abi.d.ts +2 -0
- package/dest/scripts/generate_ts_from_abi.d.ts.map +1 -0
- package/dest/scripts/generate_ts_from_abi.js +49 -0
- package/dest/serve.d.ts +2 -0
- package/dest/serve.d.ts.map +1 -0
- package/dest/serve.js +79 -0
- package/dest/types/index.d.ts +227 -0
- package/dest/types/index.d.ts.map +1 -0
- package/dest/types/index.js +102 -0
- package/dest/witgen.d.ts +87 -0
- package/dest/witgen.d.ts.map +1 -0
- package/dest/witgen.js +328 -0
- package/package.json +112 -0
- package/src/batch_verifier_test_helpers.ts +32 -0
- package/src/bb_working_directory.ts +9 -0
- package/src/index.html +9 -0
- package/src/index.ts +1 -0
- package/src/prove_native.ts +171 -0
- package/src/scripts/generate_declaration_files.ts +24 -0
- package/src/scripts/generate_ts_from_abi.ts +57 -0
- package/src/serve.ts +128 -0
- package/src/types/index.ts +349 -0
- package/src/witgen.ts +444 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/* Autogenerated file, do not edit! */ /* eslint-disable */ import { Noir } from "@aztec/noir-noir_js";
|
|
2
|
+
export async function AppCreator(commitments_to_create, AppCreator_circuit, foreignCallHandler) {
|
|
3
|
+
const program = new Noir(AppCreator_circuit);
|
|
4
|
+
const args = {
|
|
5
|
+
commitments_to_create
|
|
6
|
+
};
|
|
7
|
+
const { returnValue } = await program.execute(args, foreignCallHandler);
|
|
8
|
+
return returnValue;
|
|
9
|
+
}
|
|
10
|
+
export async function AppReader(commitments_to_read, AppReader_circuit, foreignCallHandler) {
|
|
11
|
+
const program = new Noir(AppReader_circuit);
|
|
12
|
+
const args = {
|
|
13
|
+
commitments_to_read
|
|
14
|
+
};
|
|
15
|
+
const { returnValue } = await program.execute(args, foreignCallHandler);
|
|
16
|
+
return returnValue;
|
|
17
|
+
}
|
|
18
|
+
export async function MockHiding(prev_kernel_public_inputs, kernel_vk, MockHiding_circuit, foreignCallHandler) {
|
|
19
|
+
const program = new Noir(MockHiding_circuit);
|
|
20
|
+
const args = {
|
|
21
|
+
prev_kernel_public_inputs,
|
|
22
|
+
kernel_vk
|
|
23
|
+
};
|
|
24
|
+
const { returnValue } = await program.execute(args, foreignCallHandler);
|
|
25
|
+
return returnValue;
|
|
26
|
+
}
|
|
27
|
+
export async function MockPrivateKernelInit(tx, app_inputs, app_vk, MockPrivateKernelInit_circuit, foreignCallHandler) {
|
|
28
|
+
const program = new Noir(MockPrivateKernelInit_circuit);
|
|
29
|
+
const args = {
|
|
30
|
+
tx,
|
|
31
|
+
app_inputs,
|
|
32
|
+
app_vk
|
|
33
|
+
};
|
|
34
|
+
const { returnValue } = await program.execute(args, foreignCallHandler);
|
|
35
|
+
return returnValue;
|
|
36
|
+
}
|
|
37
|
+
export async function MockPrivateKernelInner(prev_kernel_public_inputs, kernel_vk, app_inputs, app_vk, MockPrivateKernelInner_circuit, foreignCallHandler) {
|
|
38
|
+
const program = new Noir(MockPrivateKernelInner_circuit);
|
|
39
|
+
const args = {
|
|
40
|
+
prev_kernel_public_inputs,
|
|
41
|
+
kernel_vk,
|
|
42
|
+
app_inputs,
|
|
43
|
+
app_vk
|
|
44
|
+
};
|
|
45
|
+
const { returnValue } = await program.execute(args, foreignCallHandler);
|
|
46
|
+
return returnValue;
|
|
47
|
+
}
|
|
48
|
+
export async function MockPrivateKernelReset(prev_kernel_public_inputs, kernel_vk, commitment_read_hints, MockPrivateKernelReset_circuit, foreignCallHandler) {
|
|
49
|
+
const program = new Noir(MockPrivateKernelReset_circuit);
|
|
50
|
+
const args = {
|
|
51
|
+
prev_kernel_public_inputs,
|
|
52
|
+
kernel_vk,
|
|
53
|
+
commitment_read_hints
|
|
54
|
+
};
|
|
55
|
+
const { returnValue } = await program.execute(args, foreignCallHandler);
|
|
56
|
+
return returnValue;
|
|
57
|
+
}
|
|
58
|
+
export async function MockPrivateKernelTail(prev_kernel_public_inputs, kernel_vk, MockPrivateKernelTail_circuit, foreignCallHandler) {
|
|
59
|
+
const program = new Noir(MockPrivateKernelTail_circuit);
|
|
60
|
+
const args = {
|
|
61
|
+
prev_kernel_public_inputs,
|
|
62
|
+
kernel_vk
|
|
63
|
+
};
|
|
64
|
+
const { returnValue } = await program.execute(args, foreignCallHandler);
|
|
65
|
+
return returnValue;
|
|
66
|
+
}
|
|
67
|
+
export async function MockRollupTxBasePublic(chonk_proof_data, proof, public_inputs, MockRollupTxBasePublic_circuit, foreignCallHandler) {
|
|
68
|
+
const program = new Noir(MockRollupTxBasePublic_circuit);
|
|
69
|
+
const args = {
|
|
70
|
+
chonk_proof_data,
|
|
71
|
+
proof,
|
|
72
|
+
public_inputs
|
|
73
|
+
};
|
|
74
|
+
const { returnValue } = await program.execute(args, foreignCallHandler);
|
|
75
|
+
return returnValue;
|
|
76
|
+
}
|
|
77
|
+
export async function MockRollupTxBasePrivate(chonk_proof_data, MockRollupTxBasePrivate_circuit, foreignCallHandler) {
|
|
78
|
+
const program = new Noir(MockRollupTxBasePrivate_circuit);
|
|
79
|
+
const args = {
|
|
80
|
+
chonk_proof_data
|
|
81
|
+
};
|
|
82
|
+
const { returnValue } = await program.execute(args, foreignCallHandler);
|
|
83
|
+
return returnValue;
|
|
84
|
+
}
|
|
85
|
+
export async function MockRollupTxMerge(a, b, MockRollupTxMerge_circuit, foreignCallHandler) {
|
|
86
|
+
const program = new Noir(MockRollupTxMerge_circuit);
|
|
87
|
+
const args = {
|
|
88
|
+
a,
|
|
89
|
+
b
|
|
90
|
+
};
|
|
91
|
+
const { returnValue } = await program.execute(args, foreignCallHandler);
|
|
92
|
+
return returnValue;
|
|
93
|
+
}
|
|
94
|
+
export async function MockRollupRoot(a, b, MockRollupRoot_circuit, foreignCallHandler) {
|
|
95
|
+
const program = new Noir(MockRollupRoot_circuit);
|
|
96
|
+
const args = {
|
|
97
|
+
a,
|
|
98
|
+
b
|
|
99
|
+
};
|
|
100
|
+
const { returnValue } = await program.execute(args, foreignCallHandler);
|
|
101
|
+
return returnValue;
|
|
102
|
+
}
|
package/dest/witgen.d.ts
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { CircuitKind } from '@aztec/bb.js';
|
|
2
|
+
import { AVM_CIRCUIT_PUBLIC_INPUTS_LENGTH, AVM_V2_PROOF_LENGTH_IN_FIELDS } from '@aztec-labs/constants';
|
|
3
|
+
import { Fr } from '@aztec-labs/foundation/curves/bn254';
|
|
4
|
+
import type { AvmCircuitPublicInputs } from '@aztec-labs/stdlib/avm';
|
|
5
|
+
import type { RecursiveProof } from '@aztec-labs/stdlib/proofs';
|
|
6
|
+
import { VerificationKeyAsFields } from '@aztec-labs/stdlib/vks';
|
|
7
|
+
import MockAppCreatorCircuit from '../artifacts/app_creator.json';
|
|
8
|
+
import MockAppReaderCircuit from '../artifacts/app_reader.json';
|
|
9
|
+
import MockHidingCircuit from '../artifacts/mock_hiding.json';
|
|
10
|
+
import MockPrivateKernelInitCircuit from '../artifacts/mock_private_kernel_init.json';
|
|
11
|
+
import MockPrivateKernelInnerCircuit from '../artifacts/mock_private_kernel_inner.json';
|
|
12
|
+
import MockPrivateKernelResetCircuit from '../artifacts/mock_private_kernel_reset.json';
|
|
13
|
+
import MockPrivateKernelTailCircuit from '../artifacts/mock_private_kernel_tail.json';
|
|
14
|
+
import MockRollupRootCircuit from '../artifacts/mock_rollup_root.json';
|
|
15
|
+
import MockRollupTxBasePrivateCircuit from '../artifacts/mock_rollup_tx_base_private.json';
|
|
16
|
+
import MockRollupTxBasePublicCircuit from '../artifacts/mock_rollup_tx_base_public.json';
|
|
17
|
+
import MockRollupTxMergeCircuit from '../artifacts/mock_rollup_tx_merge.json';
|
|
18
|
+
import type { AppCreatorInputType, AppPublicInputs, AppReaderInputType, FixedLengthArray, KernelPublicInputs, MockHidingInputType, MockPrivateKernelInitInputType, MockPrivateKernelInnerInputType, MockPrivateKernelResetInputType, MockPrivateKernelTailInputType, MockRollupRootInputType, MockRollupTxBasePrivateInputType, MockRollupTxBasePublicInputType, MockRollupTxMergeInputType, PrivateKernelPublicInputs, RollupPublicInputs, VerificationKey } from './types/index.js';
|
|
19
|
+
declare const MockAppCreatorVk: {
|
|
20
|
+
keyAsBytes: any;
|
|
21
|
+
keyAsFields: any;
|
|
22
|
+
};
|
|
23
|
+
declare const MockAppReaderVk: {
|
|
24
|
+
keyAsBytes: any;
|
|
25
|
+
keyAsFields: any;
|
|
26
|
+
};
|
|
27
|
+
declare const MockPrivateKernelInitVk: {
|
|
28
|
+
keyAsBytes: any;
|
|
29
|
+
keyAsFields: any;
|
|
30
|
+
};
|
|
31
|
+
declare const MockPrivateKernelInnerVk: {
|
|
32
|
+
keyAsBytes: any;
|
|
33
|
+
keyAsFields: any;
|
|
34
|
+
};
|
|
35
|
+
declare const MockPrivateKernelResetVk: {
|
|
36
|
+
keyAsBytes: any;
|
|
37
|
+
keyAsFields: any;
|
|
38
|
+
};
|
|
39
|
+
declare const MockPrivateKernelTailVk: {
|
|
40
|
+
keyAsBytes: any;
|
|
41
|
+
keyAsFields: any;
|
|
42
|
+
};
|
|
43
|
+
declare const MockRollupTxBasePrivateVk: {
|
|
44
|
+
keyAsBytes: any;
|
|
45
|
+
keyAsFields: any;
|
|
46
|
+
};
|
|
47
|
+
declare const MockRollupTxBasePublicVk: {
|
|
48
|
+
keyAsBytes: any;
|
|
49
|
+
keyAsFields: any;
|
|
50
|
+
};
|
|
51
|
+
declare const MockRollupTxMergeVk: {
|
|
52
|
+
keyAsBytes: any;
|
|
53
|
+
keyAsFields: any;
|
|
54
|
+
};
|
|
55
|
+
declare const MockRollupRootVk: {
|
|
56
|
+
keyAsBytes: any;
|
|
57
|
+
keyAsFields: any;
|
|
58
|
+
};
|
|
59
|
+
export { MockAppCreatorCircuit, MockAppCreatorVk, MockAppReaderCircuit, MockAppReaderVk, MockPrivateKernelInitCircuit, MockPrivateKernelInitVk, MockPrivateKernelInnerCircuit, MockPrivateKernelInnerVk, MockPrivateKernelResetCircuit, MockPrivateKernelResetVk, MockPrivateKernelTailCircuit, MockHidingCircuit, MockPrivateKernelTailVk, MockRollupTxBasePrivateCircuit, MockRollupTxBasePrivateVk, MockRollupTxBasePublicCircuit, MockRollupTxBasePublicVk, MockRollupTxMergeCircuit, MockRollupTxMergeVk, MockRollupRootCircuit, MockRollupRootVk, };
|
|
60
|
+
export declare function getVkAsFields<N extends number>({ keyAsFields }: {
|
|
61
|
+
keyAsFields: string[];
|
|
62
|
+
}, length: N): Promise<VerificationKey<N>>;
|
|
63
|
+
export declare const MOCK_MAX_COMMITMENTS_PER_TX = 4;
|
|
64
|
+
export interface WitnessGenResult<PublicInputsType> {
|
|
65
|
+
witness: Uint8Array;
|
|
66
|
+
publicInputs: PublicInputsType;
|
|
67
|
+
}
|
|
68
|
+
export declare function witnessGenCreatorAppMockCircuit(args: AppCreatorInputType): Promise<WitnessGenResult<AppPublicInputs>>;
|
|
69
|
+
export declare function witnessGenReaderAppMockCircuit(args: AppReaderInputType): Promise<WitnessGenResult<AppPublicInputs>>;
|
|
70
|
+
export declare function witnessGenMockPrivateKernelInitCircuit(args: MockPrivateKernelInitInputType): Promise<WitnessGenResult<PrivateKernelPublicInputs>>;
|
|
71
|
+
export declare function witnessGenMockPrivateKernelInnerCircuit(args: MockPrivateKernelInnerInputType): Promise<WitnessGenResult<PrivateKernelPublicInputs>>;
|
|
72
|
+
export declare function witnessGenMockPrivateKernelResetCircuit(args: MockPrivateKernelResetInputType): Promise<WitnessGenResult<PrivateKernelPublicInputs>>;
|
|
73
|
+
export declare function witnessGenMockPrivateKernelTailCircuit(args: MockPrivateKernelTailInputType): Promise<WitnessGenResult<KernelPublicInputs>>;
|
|
74
|
+
export declare function witnessGenMockHidingCircuit(args: MockHidingInputType): Promise<WitnessGenResult<KernelPublicInputs>>;
|
|
75
|
+
export declare function witnessGenMockPublicBaseCircuit(args: MockRollupTxBasePublicInputType): Promise<WitnessGenResult<RollupPublicInputs>>;
|
|
76
|
+
export declare function witnessGenMockRollupTxBasePrivateCircuit(args: MockRollupTxBasePrivateInputType): Promise<WitnessGenResult<RollupPublicInputs>>;
|
|
77
|
+
export declare function witnessGenMockRollupTxMergeCircuit(args: MockRollupTxMergeInputType): Promise<WitnessGenResult<RollupPublicInputs>>;
|
|
78
|
+
export declare function witnessGenMockRollupRootCircuit(args: MockRollupRootInputType): Promise<WitnessGenResult<RollupPublicInputs>>;
|
|
79
|
+
export declare function generateTestingIVCStack(numCreatorAppCalls: number, numReaderAppCalls: number): Promise<[Uint8Array[], Uint8Array[], KernelPublicInputs, Uint8Array[], CircuitKind[]]>;
|
|
80
|
+
export declare function mapRecursiveProofToNoir<N extends number>(proof: RecursiveProof<N>): FixedLengthArray<string, N>;
|
|
81
|
+
export declare function mapAvmProofToNoir(proof: Fr[]): FixedLengthArray<string, typeof AVM_V2_PROOF_LENGTH_IN_FIELDS>;
|
|
82
|
+
export declare function mapVerificationKeyToNoir<N extends number>(vk: VerificationKeyAsFields, len: N): {
|
|
83
|
+
key: FixedLengthArray<string, N>;
|
|
84
|
+
hash: string;
|
|
85
|
+
};
|
|
86
|
+
export declare function mapAvmPublicInputsToNoir(publicInputs: AvmCircuitPublicInputs): FixedLengthArray<string, typeof AVM_CIRCUIT_PUBLIC_INPUTS_LENGTH>;
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0Z2VuLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvd2l0Z2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHM0MsT0FBTyxFQUNMLGdDQUFnQyxFQUNoQyw2QkFBNkIsRUFHOUIsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFekQsT0FBTyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUlqRSxPQUFPLHFCQUFxQixNQUFNLCtCQUErQixDQUF1QjtBQUN4RixPQUFPLG9CQUFvQixNQUFNLDhCQUE4QixDQUF1QjtBQUN0RixPQUFPLGlCQUFpQixNQUFNLCtCQUErQixDQUF1QjtBQUNwRixPQUFPLDRCQUE0QixNQUFNLDRDQUE0QyxDQUF1QjtBQUM1RyxPQUFPLDZCQUE2QixNQUFNLDZDQUE2QyxDQUF1QjtBQUM5RyxPQUFPLDZCQUE2QixNQUFNLDZDQUE2QyxDQUF1QjtBQUM5RyxPQUFPLDRCQUE0QixNQUFNLDRDQUE0QyxDQUF1QjtBQUM1RyxPQUFPLHFCQUFxQixNQUFNLG9DQUFvQyxDQUF1QjtBQUM3RixPQUFPLDhCQUE4QixNQUFNLCtDQUErQyxDQUF1QjtBQUNqSCxPQUFPLDZCQUE2QixNQUFNLDhDQUE4QyxDQUF1QjtBQUMvRyxPQUFPLHdCQUF3QixNQUFNLHdDQUF3QyxDQUF1QjtBQUNwRyxPQUFPLEtBQUssRUFDVixtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQiw4QkFBOEIsRUFDOUIsK0JBQStC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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"witgen.d.ts","sourceRoot":"","sources":["../src/witgen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,EACL,gCAAgC,EAChC,6BAA6B,EAG9B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,EAAE,EAAE,MAAM,qCAAqC,CAAC;AAEzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAIjE,OAAO,qBAAqB,MAAM,+BAA+B,CAAuB;AACxF,OAAO,oBAAoB,MAAM,8BAA8B,CAAuB;AACtF,OAAO,iBAAiB,MAAM,+BAA+B,CAAuB;AACpF,OAAO,4BAA4B,MAAM,4CAA4C,CAAuB;AAC5G,OAAO,6BAA6B,MAAM,6CAA6C,CAAuB;AAC9G,OAAO,6BAA6B,MAAM,6CAA6C,CAAuB;AAC9G,OAAO,4BAA4B,MAAM,4CAA4C,CAAuB;AAC5G,OAAO,qBAAqB,MAAM,oCAAoC,CAAuB;AAC7F,OAAO,8BAA8B,MAAM,+CAA+C,CAAuB;AACjH,OAAO,6BAA6B,MAAM,8CAA8C,CAAuB;AAC/G,OAAO,wBAAwB,MAAM,wCAAwC,CAAuB;AACpG,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,8BAA8B,EAC9B,+BAA+B,EAC/B,+BAA+B,EAC/B,8BAA8B,EAC9B,uBAAuB,EACvB,gCAAgC,EAChC,+BAA+B,EAC/B,0BAA0B,EAC1B,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAW1B,QAAA,MAAM,gBAAgB;;;CAA8C,CAAC;AACrE,QAAA,MAAM,eAAe;;;CAA6C,CAAC;AACnE,QAAA,MAAM,uBAAuB;;;CAAqD,CAAC;AACnF,QAAA,MAAM,wBAAwB;;;CAAsD,CAAC;AACrF,QAAA,MAAM,wBAAwB;;;CAAsD,CAAC;AACrF,QAAA,MAAM,uBAAuB;;;CAAqD,CAAC;AAEnF,QAAA,MAAM,yBAAyB;;;CAAuD,CAAC;AACvF,QAAA,MAAM,wBAAwB;;;CAAsD,CAAC;AACrF,QAAA,MAAM,mBAAmB;;;CAAiD,CAAC;AAC3E,QAAA,MAAM,gBAAgB;;;CAA8C,CAAC;AAGrE,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,4BAA4B,EAC5B,uBAAuB,EACvB,6BAA6B,EAC7B,wBAAwB,EACxB,6BAA6B,EAC7B,wBAAwB,EACxB,4BAA4B,EAC5B,iBAAiB,EACjB,uBAAuB,EACvB,8BAA8B,EAC9B,yBAAyB,EACzB,6BAA6B,EAC7B,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,GACjB,CAAC;AAMF,wBAAsB,aAAa,CAAC,CAAC,SAAS,MAAM,EAClD,EAAE,WAAW,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,EAAE,CAAA;CAAE,EAC1C,MAAM,EAAE,CAAC,GACR,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAI7B;AAED,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAe7C,MAAM,WAAW,gBAAgB,CAAC,gBAAgB;IAChD,OAAO,EAAE,UAAU,CAAC;IACpB,YAAY,EAAE,gBAAgB,CAAC;CAChC;AAED,wBAAsB,+BAA+B,CACnD,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAO5C;AAED,wBAAsB,8BAA8B,CAClD,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAO5C;AAED,wBAAsB,sCAAsC,CAC1D,IAAI,EAAE,8BAA8B,GACnC,OAAO,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,CAAC,CAOtD;AAED,wBAAsB,uCAAuC,CAC3D,IAAI,EAAE,+BAA+B,GACpC,OAAO,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,CAAC,CAOtD;AAED,wBAAsB,uCAAuC,CAC3D,IAAI,EAAE,+BAA+B,GACpC,OAAO,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,CAAC,CAOtD;AAED,wBAAsB,sCAAsC,CAC1D,IAAI,EAAE,8BAA8B,GACnC,OAAO,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAO/C;AAED,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAO/C;AAED,wBAAsB,+BAA+B,CACnD,IAAI,EAAE,+BAA+B,GACpC,OAAO,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAO/C;AAED,wBAAsB,wCAAwC,CAC5D,IAAI,EAAE,gCAAgC,GACrC,OAAO,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAO/C;AAED,wBAAsB,kCAAkC,CACtD,IAAI,EAAE,0BAA0B,GAC/B,OAAO,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAO/C;AAED,wBAAsB,+BAA+B,CACnD,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAO/C;AAED,wBAAsB,uBAAuB,CAE3C,kBAAkB,EAAE,MAAM,EAG1B,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,EAAE,kBAAkB,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,CAuJxF;AAED,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,CAE/G;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAO,6BAA6B,CAAC,CAK7G;AAED,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,MAAM,EACvD,EAAE,EAAE,uBAAuB,EAC3B,GAAG,EAAE,CAAC,GACL;IACD,GAAG,EAAE,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;CACd,CAQA;AAED,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,sBAAsB,GACnC,gBAAgB,CAAC,MAAM,EAAE,OAAO,gCAAgC,CAAC,CAMnE"}
|
package/dest/witgen.js
ADDED
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
import { CircuitKind } from '@aztec/bb.js';
|
|
2
|
+
import { Noir } from '@aztec/noir-noir_js';
|
|
3
|
+
import { AVM_CIRCUIT_PUBLIC_INPUTS_LENGTH, AVM_V2_PROOF_LENGTH_IN_FIELDS, MEGA_APP_VK_LENGTH_IN_FIELDS, MEGA_KERNEL_VK_LENGTH_IN_FIELDS } from '@aztec-labs/constants';
|
|
4
|
+
import { padArrayEnd } from '@aztec-labs/foundation/collection';
|
|
5
|
+
import { Fr } from '@aztec-labs/foundation/curves/bn254';
|
|
6
|
+
import { applyStringFormatting, createLogger } from '@aztec-labs/foundation/log';
|
|
7
|
+
import { VerificationKeyAsFields } from '@aztec-labs/stdlib/vks';
|
|
8
|
+
import { strict as assert } from 'assert';
|
|
9
|
+
import { ungzip } from 'pako';
|
|
10
|
+
import MockAppCreatorCircuit from '../artifacts/app_creator.json' with {
|
|
11
|
+
type: 'json'
|
|
12
|
+
};
|
|
13
|
+
import MockAppReaderCircuit from '../artifacts/app_reader.json' with {
|
|
14
|
+
type: 'json'
|
|
15
|
+
};
|
|
16
|
+
import MockHidingCircuit from '../artifacts/mock_hiding.json' with {
|
|
17
|
+
type: 'json'
|
|
18
|
+
};
|
|
19
|
+
import MockPrivateKernelInitCircuit from '../artifacts/mock_private_kernel_init.json' with {
|
|
20
|
+
type: 'json'
|
|
21
|
+
};
|
|
22
|
+
import MockPrivateKernelInnerCircuit from '../artifacts/mock_private_kernel_inner.json' with {
|
|
23
|
+
type: 'json'
|
|
24
|
+
};
|
|
25
|
+
import MockPrivateKernelResetCircuit from '../artifacts/mock_private_kernel_reset.json' with {
|
|
26
|
+
type: 'json'
|
|
27
|
+
};
|
|
28
|
+
import MockPrivateKernelTailCircuit from '../artifacts/mock_private_kernel_tail.json' with {
|
|
29
|
+
type: 'json'
|
|
30
|
+
};
|
|
31
|
+
import MockRollupRootCircuit from '../artifacts/mock_rollup_root.json' with {
|
|
32
|
+
type: 'json'
|
|
33
|
+
};
|
|
34
|
+
import MockRollupTxBasePrivateCircuit from '../artifacts/mock_rollup_tx_base_private.json' with {
|
|
35
|
+
type: 'json'
|
|
36
|
+
};
|
|
37
|
+
import MockRollupTxBasePublicCircuit from '../artifacts/mock_rollup_tx_base_public.json' with {
|
|
38
|
+
type: 'json'
|
|
39
|
+
};
|
|
40
|
+
import MockRollupTxMergeCircuit from '../artifacts/mock_rollup_tx_merge.json' with {
|
|
41
|
+
type: 'json'
|
|
42
|
+
};
|
|
43
|
+
// Helper to extract VK from circuit artifact
|
|
44
|
+
function extractVkFromCircuit(circuit) {
|
|
45
|
+
return {
|
|
46
|
+
keyAsBytes: circuit.verificationKey.bytes,
|
|
47
|
+
keyAsFields: circuit.verificationKey.fields
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
// Extract VKs from circuit artifacts
|
|
51
|
+
const MockAppCreatorVk = extractVkFromCircuit(MockAppCreatorCircuit);
|
|
52
|
+
const MockAppReaderVk = extractVkFromCircuit(MockAppReaderCircuit);
|
|
53
|
+
const MockPrivateKernelInitVk = extractVkFromCircuit(MockPrivateKernelInitCircuit);
|
|
54
|
+
const MockPrivateKernelInnerVk = extractVkFromCircuit(MockPrivateKernelInnerCircuit);
|
|
55
|
+
const MockPrivateKernelResetVk = extractVkFromCircuit(MockPrivateKernelResetCircuit);
|
|
56
|
+
const MockPrivateKernelTailVk = extractVkFromCircuit(MockPrivateKernelTailCircuit);
|
|
57
|
+
const MockHidingVk = extractVkFromCircuit(MockHidingCircuit);
|
|
58
|
+
const MockRollupTxBasePrivateVk = extractVkFromCircuit(MockRollupTxBasePrivateCircuit);
|
|
59
|
+
const MockRollupTxBasePublicVk = extractVkFromCircuit(MockRollupTxBasePublicCircuit);
|
|
60
|
+
const MockRollupTxMergeVk = extractVkFromCircuit(MockRollupTxMergeCircuit);
|
|
61
|
+
const MockRollupRootVk = extractVkFromCircuit(MockRollupRootCircuit);
|
|
62
|
+
// Re export the circuit jsons
|
|
63
|
+
export { MockAppCreatorCircuit, MockAppCreatorVk, MockAppReaderCircuit, MockAppReaderVk, MockPrivateKernelInitCircuit, MockPrivateKernelInitVk, MockPrivateKernelInnerCircuit, MockPrivateKernelInnerVk, MockPrivateKernelResetCircuit, MockPrivateKernelResetVk, MockPrivateKernelTailCircuit, MockHidingCircuit, MockPrivateKernelTailVk, MockRollupTxBasePrivateCircuit, MockRollupTxBasePrivateVk, MockRollupTxBasePublicCircuit, MockRollupTxBasePublicVk, MockRollupTxMergeCircuit, MockRollupTxMergeVk, MockRollupRootCircuit, MockRollupRootVk };
|
|
64
|
+
/* eslint-disable camelcase */ const log = createLogger('aztec:ivc-test');
|
|
65
|
+
export async function getVkAsFields({ keyAsFields }, length) {
|
|
66
|
+
const key = keyAsFields.map((f)=>Fr.fromString(f));
|
|
67
|
+
const vk = await VerificationKeyAsFields.fromKey(key);
|
|
68
|
+
return mapVerificationKeyToNoir(vk, length);
|
|
69
|
+
}
|
|
70
|
+
export const MOCK_MAX_COMMITMENTS_PER_TX = 4;
|
|
71
|
+
function foreignCallHandler(name, args) {
|
|
72
|
+
if (name === 'debugLog') {
|
|
73
|
+
assert(args.length === 3, 'expected 3 arguments for debugLog: msg, fields_length, fields');
|
|
74
|
+
const [msgRaw, _ignoredFieldsSize, fields] = args;
|
|
75
|
+
const msg = msgRaw.map((acvmField)=>String.fromCharCode(Fr.fromString(acvmField).toNumber())).join('');
|
|
76
|
+
const fieldsFr = fields.map((field)=>Fr.fromString(field));
|
|
77
|
+
log.verbose('debug_log ' + applyStringFormatting(msg, fieldsFr));
|
|
78
|
+
} else {
|
|
79
|
+
throw new Error('Unexpected foreign call');
|
|
80
|
+
}
|
|
81
|
+
return Promise.resolve([]);
|
|
82
|
+
}
|
|
83
|
+
export async function witnessGenCreatorAppMockCircuit(args) {
|
|
84
|
+
const program = new Noir(MockAppCreatorCircuit);
|
|
85
|
+
const { witness, returnValue } = await program.execute(args, foreignCallHandler);
|
|
86
|
+
return {
|
|
87
|
+
witness,
|
|
88
|
+
publicInputs: returnValue
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
export async function witnessGenReaderAppMockCircuit(args) {
|
|
92
|
+
const program = new Noir(MockAppReaderCircuit);
|
|
93
|
+
const { witness, returnValue } = await program.execute(args, foreignCallHandler);
|
|
94
|
+
return {
|
|
95
|
+
witness,
|
|
96
|
+
publicInputs: returnValue
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
export async function witnessGenMockPrivateKernelInitCircuit(args) {
|
|
100
|
+
const program = new Noir(MockPrivateKernelInitCircuit);
|
|
101
|
+
const { witness, returnValue } = await program.execute(args, foreignCallHandler);
|
|
102
|
+
return {
|
|
103
|
+
witness,
|
|
104
|
+
publicInputs: returnValue
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
export async function witnessGenMockPrivateKernelInnerCircuit(args) {
|
|
108
|
+
const program = new Noir(MockPrivateKernelInnerCircuit);
|
|
109
|
+
const { witness, returnValue } = await program.execute(args, foreignCallHandler);
|
|
110
|
+
return {
|
|
111
|
+
witness,
|
|
112
|
+
publicInputs: returnValue
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
export async function witnessGenMockPrivateKernelResetCircuit(args) {
|
|
116
|
+
const program = new Noir(MockPrivateKernelResetCircuit);
|
|
117
|
+
const { witness, returnValue } = await program.execute(args, foreignCallHandler);
|
|
118
|
+
return {
|
|
119
|
+
witness,
|
|
120
|
+
publicInputs: returnValue
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
export async function witnessGenMockPrivateKernelTailCircuit(args) {
|
|
124
|
+
const program = new Noir(MockPrivateKernelTailCircuit);
|
|
125
|
+
const { witness, returnValue } = await program.execute(args, foreignCallHandler);
|
|
126
|
+
return {
|
|
127
|
+
witness,
|
|
128
|
+
publicInputs: returnValue
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
export async function witnessGenMockHidingCircuit(args) {
|
|
132
|
+
const program = new Noir(MockHidingCircuit);
|
|
133
|
+
const { witness, returnValue } = await program.execute(args, foreignCallHandler);
|
|
134
|
+
return {
|
|
135
|
+
witness,
|
|
136
|
+
publicInputs: returnValue
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
export async function witnessGenMockPublicBaseCircuit(args) {
|
|
140
|
+
const program = new Noir(MockRollupTxBasePublicCircuit);
|
|
141
|
+
const { witness, returnValue } = await program.execute(args, foreignCallHandler);
|
|
142
|
+
return {
|
|
143
|
+
witness,
|
|
144
|
+
publicInputs: returnValue
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
export async function witnessGenMockRollupTxBasePrivateCircuit(args) {
|
|
148
|
+
const program = new Noir(MockRollupTxBasePrivateCircuit);
|
|
149
|
+
const { witness, returnValue } = await program.execute(args, foreignCallHandler);
|
|
150
|
+
return {
|
|
151
|
+
witness,
|
|
152
|
+
publicInputs: returnValue
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
export async function witnessGenMockRollupTxMergeCircuit(args) {
|
|
156
|
+
const program = new Noir(MockRollupTxMergeCircuit);
|
|
157
|
+
const { witness, returnValue } = await program.execute(args, foreignCallHandler);
|
|
158
|
+
return {
|
|
159
|
+
witness,
|
|
160
|
+
publicInputs: returnValue
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
export async function witnessGenMockRollupRootCircuit(args) {
|
|
164
|
+
const program = new Noir(MockRollupRootCircuit);
|
|
165
|
+
const { witness, returnValue } = await program.execute(args, foreignCallHandler);
|
|
166
|
+
return {
|
|
167
|
+
witness,
|
|
168
|
+
publicInputs: returnValue
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
export async function generateTestingIVCStack(// A call to the creator app creates 1 commitment. A tx can have at most 2 commitments.
|
|
172
|
+
numCreatorAppCalls, // A call to the reader app creates 1 read request. A reset kernel will be run if there are 2 read requests in the
|
|
173
|
+
// public inputs. All read requests must be cleared before running the tail kernel.
|
|
174
|
+
numReaderAppCalls) {
|
|
175
|
+
if (numCreatorAppCalls > 2) {
|
|
176
|
+
throw new Error('The creator app can only be called at most twice.');
|
|
177
|
+
}
|
|
178
|
+
const tx = {
|
|
179
|
+
number_of_calls: `0x${(numCreatorAppCalls + numReaderAppCalls).toString(16)}`
|
|
180
|
+
};
|
|
181
|
+
const witnessStack = [];
|
|
182
|
+
const bytecodes = [];
|
|
183
|
+
const vks = [];
|
|
184
|
+
const circuitKinds = [];
|
|
185
|
+
const pushCircuit = (witness, bytecode, vk, kind)=>{
|
|
186
|
+
witnessStack.push(witness);
|
|
187
|
+
bytecodes.push(bytecode);
|
|
188
|
+
vks.push(vk);
|
|
189
|
+
circuitKinds.push(kind);
|
|
190
|
+
};
|
|
191
|
+
let previousKernel;
|
|
192
|
+
const createInit = async (appResult, appVkAsFields)=>{
|
|
193
|
+
const result = await witnessGenMockPrivateKernelInitCircuit({
|
|
194
|
+
app_inputs: appResult.publicInputs,
|
|
195
|
+
tx,
|
|
196
|
+
app_vk: await getVkAsFields({
|
|
197
|
+
keyAsFields: appVkAsFields
|
|
198
|
+
}, MEGA_APP_VK_LENGTH_IN_FIELDS)
|
|
199
|
+
});
|
|
200
|
+
pushCircuit(result.witness, MockPrivateKernelInitCircuit.bytecode, MockPrivateKernelInitVk.keyAsBytes, CircuitKind.Kernel);
|
|
201
|
+
previousKernel = {
|
|
202
|
+
publicInputs: result.publicInputs,
|
|
203
|
+
keyAsFields: MockPrivateKernelInitVk.keyAsFields
|
|
204
|
+
};
|
|
205
|
+
};
|
|
206
|
+
const createInner = async (appResult, appVkAsFields)=>{
|
|
207
|
+
const result = await witnessGenMockPrivateKernelInnerCircuit({
|
|
208
|
+
prev_kernel_public_inputs: previousKernel.publicInputs,
|
|
209
|
+
kernel_vk: await getVkAsFields(previousKernel, MEGA_KERNEL_VK_LENGTH_IN_FIELDS),
|
|
210
|
+
app_inputs: appResult.publicInputs,
|
|
211
|
+
app_vk: await getVkAsFields({
|
|
212
|
+
keyAsFields: appVkAsFields
|
|
213
|
+
}, MEGA_APP_VK_LENGTH_IN_FIELDS)
|
|
214
|
+
});
|
|
215
|
+
pushCircuit(result.witness, MockPrivateKernelInnerCircuit.bytecode, MockPrivateKernelInnerVk.keyAsBytes, CircuitKind.Kernel);
|
|
216
|
+
previousKernel = {
|
|
217
|
+
publicInputs: result.publicInputs,
|
|
218
|
+
keyAsFields: MockPrivateKernelInnerVk.keyAsFields
|
|
219
|
+
};
|
|
220
|
+
};
|
|
221
|
+
const createReset = async (commitmentToReset)=>{
|
|
222
|
+
const result = await witnessGenMockPrivateKernelResetCircuit({
|
|
223
|
+
prev_kernel_public_inputs: previousKernel.publicInputs,
|
|
224
|
+
kernel_vk: await getVkAsFields(previousKernel, MEGA_KERNEL_VK_LENGTH_IN_FIELDS),
|
|
225
|
+
commitment_read_hints: padArrayEnd(commitmentToReset.map((r)=>commitments.findIndex((c)=>c === r).toString(16)), MOCK_MAX_COMMITMENTS_PER_TX.toString(), 4)
|
|
226
|
+
});
|
|
227
|
+
pushCircuit(result.witness, MockPrivateKernelResetCircuit.bytecode, MockPrivateKernelResetVk.keyAsBytes, CircuitKind.Kernel);
|
|
228
|
+
previousKernel = {
|
|
229
|
+
publicInputs: result.publicInputs,
|
|
230
|
+
keyAsFields: MockPrivateKernelResetVk.keyAsFields
|
|
231
|
+
};
|
|
232
|
+
};
|
|
233
|
+
const commitments = [
|
|
234
|
+
'0x1',
|
|
235
|
+
'0x2'
|
|
236
|
+
];
|
|
237
|
+
for(let i = 0; i < numCreatorAppCalls; i++){
|
|
238
|
+
const result = await witnessGenCreatorAppMockCircuit({
|
|
239
|
+
commitments_to_create: [
|
|
240
|
+
commitments[i],
|
|
241
|
+
'0x0'
|
|
242
|
+
]
|
|
243
|
+
});
|
|
244
|
+
pushCircuit(result.witness, MockAppCreatorCircuit.bytecode, MockAppCreatorVk.keyAsBytes, CircuitKind.App);
|
|
245
|
+
if (i === 0) {
|
|
246
|
+
await createInit(result, MockAppCreatorVk.keyAsFields);
|
|
247
|
+
} else {
|
|
248
|
+
await createInner(result, MockAppCreatorVk.keyAsFields);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
let commitmentToReset = [];
|
|
252
|
+
for(let i = 0; i < numReaderAppCalls; i++){
|
|
253
|
+
const commitmentToRead = commitments[Math.min(i, numCreatorAppCalls) % 2];
|
|
254
|
+
const result = await witnessGenReaderAppMockCircuit({
|
|
255
|
+
commitments_to_read: [
|
|
256
|
+
commitmentToRead,
|
|
257
|
+
'0x0'
|
|
258
|
+
]
|
|
259
|
+
});
|
|
260
|
+
pushCircuit(result.witness, MockAppReaderCircuit.bytecode, MockAppReaderVk.keyAsBytes, CircuitKind.App);
|
|
261
|
+
commitmentToReset.push(commitmentToRead);
|
|
262
|
+
if (i === 0 && !numCreatorAppCalls) {
|
|
263
|
+
await createInit(result, MockAppReaderVk.keyAsFields);
|
|
264
|
+
} else {
|
|
265
|
+
await createInner(result, MockAppReaderVk.keyAsFields);
|
|
266
|
+
}
|
|
267
|
+
if (i % 2 === 0 || i === numReaderAppCalls - 1) {
|
|
268
|
+
await createReset(commitmentToReset);
|
|
269
|
+
commitmentToReset = [];
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
const tailWitnessGenResult = await witnessGenMockPrivateKernelTailCircuit({
|
|
273
|
+
prev_kernel_public_inputs: previousKernel.publicInputs,
|
|
274
|
+
kernel_vk: await getVkAsFields(previousKernel, MEGA_KERNEL_VK_LENGTH_IN_FIELDS)
|
|
275
|
+
});
|
|
276
|
+
pushCircuit(tailWitnessGenResult.witness, MockPrivateKernelTailCircuit.bytecode, MockPrivateKernelTailVk.keyAsBytes, CircuitKind.Kernel);
|
|
277
|
+
const hidingWitnessGenResult = await witnessGenMockHidingCircuit({
|
|
278
|
+
prev_kernel_public_inputs: tailWitnessGenResult.publicInputs,
|
|
279
|
+
kernel_vk: await getVkAsFields(MockPrivateKernelTailVk, MEGA_KERNEL_VK_LENGTH_IN_FIELDS)
|
|
280
|
+
});
|
|
281
|
+
pushCircuit(hidingWitnessGenResult.witness, MockHidingCircuit.bytecode, MockHidingVk.keyAsBytes, CircuitKind.HidingKernel);
|
|
282
|
+
function base64ToUint8Array(base64) {
|
|
283
|
+
return Uint8Array.from(atob(base64), (c)=>c.charCodeAt(0));
|
|
284
|
+
}
|
|
285
|
+
function hexToUint8Array(hex) {
|
|
286
|
+
const cleaned = hex.replace(/^0x/i, '');
|
|
287
|
+
const bytes = new Uint8Array(cleaned.length / 2);
|
|
288
|
+
for(let i = 0; i < bytes.length; i++){
|
|
289
|
+
bytes[i] = parseInt(cleaned.slice(i * 2, i * 2 + 2), 16);
|
|
290
|
+
}
|
|
291
|
+
return bytes;
|
|
292
|
+
}
|
|
293
|
+
const rawBytecodes = bytecodes.map(base64ToUint8Array).map((arr)=>ungzip(arr));
|
|
294
|
+
const rawWitnessStack = witnessStack.map((arr)=>ungzip(arr));
|
|
295
|
+
const rawVks = vks.map(hexToUint8Array);
|
|
296
|
+
return [
|
|
297
|
+
rawBytecodes,
|
|
298
|
+
rawWitnessStack,
|
|
299
|
+
hidingWitnessGenResult.publicInputs,
|
|
300
|
+
rawVks,
|
|
301
|
+
circuitKinds
|
|
302
|
+
];
|
|
303
|
+
}
|
|
304
|
+
export function mapRecursiveProofToNoir(proof) {
|
|
305
|
+
return proof.proof.map((field)=>field.toString());
|
|
306
|
+
}
|
|
307
|
+
export function mapAvmProofToNoir(proof) {
|
|
308
|
+
if (proof.length != AVM_V2_PROOF_LENGTH_IN_FIELDS) {
|
|
309
|
+
throw new Error('Invalid number of AVM proof fields');
|
|
310
|
+
}
|
|
311
|
+
return proof.map((field)=>field.toString());
|
|
312
|
+
}
|
|
313
|
+
export function mapVerificationKeyToNoir(vk, len) {
|
|
314
|
+
if (len !== vk.key.length) {
|
|
315
|
+
throw new Error(`Verification key length ${len} does not match expected length ${vk.key.length}`);
|
|
316
|
+
}
|
|
317
|
+
return {
|
|
318
|
+
key: vk.key.map((field)=>field.toString()),
|
|
319
|
+
hash: vk.hash.toString()
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
export function mapAvmPublicInputsToNoir(publicInputs) {
|
|
323
|
+
const serialized = publicInputs.toFields();
|
|
324
|
+
if (serialized.length != AVM_CIRCUIT_PUBLIC_INPUTS_LENGTH) {
|
|
325
|
+
throw new Error('Invalid number of AVM public inputs');
|
|
326
|
+
}
|
|
327
|
+
return serialized.map((x)=>x.toString());
|
|
328
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@aztec-labs/ivc-integration",
|
|
3
|
+
"version": "6.0.0-nightly.20260829",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"exports": {
|
|
6
|
+
".": "./dest/index.js",
|
|
7
|
+
"./types": "./dest/types/index.js"
|
|
8
|
+
},
|
|
9
|
+
"inherits": [
|
|
10
|
+
"../package.common.json",
|
|
11
|
+
"./package.local.json"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "yarn clean && yarn generate && ../scripts/tsc.sh && webpack",
|
|
15
|
+
"clean": "rm -rf ./dest ./dist .tsbuildinfo src/types artifacts",
|
|
16
|
+
"formatting:fix:types": "NODE_OPTIONS='--max-old-space-size=8096' run -T eslint --fix ./src/types && run -T prettier -w ./src/types",
|
|
17
|
+
"generate": "yarn generate:noir-circuits",
|
|
18
|
+
"generate:noir-circuits": "mkdir -p ./artifacts && cp -r $(node -p \"require('path').dirname(require.resolve('@aztec/mock-protocol-circuits-artifacts/package.json'))\")/artifacts/* ./artifacts && node --no-warnings --loader @swc-node/register/esm src/scripts/generate_declaration_files.ts && node --no-warnings --loader @swc-node/register/esm src/scripts/generate_ts_from_abi.ts",
|
|
19
|
+
"test": "RAYON_NUM_THREADS=4 NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests ",
|
|
20
|
+
"codegen": "yarn noir-codegen",
|
|
21
|
+
"build:dev": "../scripts/tsc.sh --watch",
|
|
22
|
+
"serve": "serve -n -L -p 8080 -c ../serve.mt.json dest"
|
|
23
|
+
},
|
|
24
|
+
"jest": {
|
|
25
|
+
"moduleNameMapper": {
|
|
26
|
+
"^(\\.{1,2}/.*)\\.[cm]?js$": "$1"
|
|
27
|
+
},
|
|
28
|
+
"testRegex": "./src/.*\\.test\\.(js|mjs|ts)$",
|
|
29
|
+
"rootDir": "./src",
|
|
30
|
+
"extensionsToTreatAsEsm": [
|
|
31
|
+
".ts"
|
|
32
|
+
],
|
|
33
|
+
"transform": {
|
|
34
|
+
"^.+\\.tsx?$": [
|
|
35
|
+
"@swc/jest",
|
|
36
|
+
{
|
|
37
|
+
"jsc": {
|
|
38
|
+
"parser": {
|
|
39
|
+
"syntax": "typescript",
|
|
40
|
+
"decorators": true
|
|
41
|
+
},
|
|
42
|
+
"transform": {
|
|
43
|
+
"decoratorVersion": "2022-03"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
},
|
|
49
|
+
"reporters": [
|
|
50
|
+
"default"
|
|
51
|
+
],
|
|
52
|
+
"testTimeout": 120000,
|
|
53
|
+
"setupFiles": [
|
|
54
|
+
"../../foundation/src/jest/setup.mjs"
|
|
55
|
+
],
|
|
56
|
+
"testEnvironment": "../../foundation/src/jest/env.mjs",
|
|
57
|
+
"setupFilesAfterEnv": [
|
|
58
|
+
"../../foundation/src/jest/setupAfterEnv.mjs"
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
"dependencies": {
|
|
62
|
+
"@aztec-labs/constants": "6.0.0-nightly.20260829",
|
|
63
|
+
"@aztec-labs/foundation": "6.0.0-nightly.20260829",
|
|
64
|
+
"@aztec-labs/stdlib": "6.0.0-nightly.20260829",
|
|
65
|
+
"@aztec/bb.js": "6.0.0-nightly.20260826",
|
|
66
|
+
"@aztec/noir-noir_codegen": "6.0.0-nightly.20260826",
|
|
67
|
+
"@aztec/noir-noir_js": "6.0.0-nightly.20260826",
|
|
68
|
+
"@aztec/noir-types": "6.0.0-nightly.20260826",
|
|
69
|
+
"change-case": "^5.4.4",
|
|
70
|
+
"pako": "^2.1.0",
|
|
71
|
+
"playwright": "1.49.0",
|
|
72
|
+
"puppeteer": "^24.22.3",
|
|
73
|
+
"tslib": "^2.4.0"
|
|
74
|
+
},
|
|
75
|
+
"devDependencies": {
|
|
76
|
+
"@aztec-labs/bb-prover": "6.0.0-nightly.20260829",
|
|
77
|
+
"@aztec-labs/noir-protocol-circuits-types": "6.0.0-nightly.20260829",
|
|
78
|
+
"@aztec-labs/noir-test-contracts.js": "6.0.0-nightly.20260829",
|
|
79
|
+
"@aztec-labs/simulator": "6.0.0-nightly.20260829",
|
|
80
|
+
"@aztec-labs/world-state": "6.0.0-nightly.20260829",
|
|
81
|
+
"@aztec/mock-protocol-circuits-artifacts": "6.0.0-nightly.20260826",
|
|
82
|
+
"@jest/globals": "^30.0.0",
|
|
83
|
+
"@playwright/test": "1.49.0",
|
|
84
|
+
"@types/jest": "^30.0.0",
|
|
85
|
+
"@types/node": "^22.15.17",
|
|
86
|
+
"@types/pako": "^2.0.3",
|
|
87
|
+
"@typescript/native-preview": "7.0.0-dev.20260113.1",
|
|
88
|
+
"copy-webpack-plugin": "^12.0.2",
|
|
89
|
+
"html-webpack-plugin": "^5.6.0",
|
|
90
|
+
"jest": "^30.0.0",
|
|
91
|
+
"jest-mock-extended": "^4.0.0",
|
|
92
|
+
"msgpackr": "^1.11.2",
|
|
93
|
+
"resolve-typescript-plugin": "^2.0.1",
|
|
94
|
+
"serve": "^14.2.6",
|
|
95
|
+
"ts-loader": "^9.5.4",
|
|
96
|
+
"ts-node": "^10.9.1",
|
|
97
|
+
"typescript": "^5.3.3",
|
|
98
|
+
"webpack": "^5.99.6",
|
|
99
|
+
"webpack-cli": "^6.0.1",
|
|
100
|
+
"webpack-dev-server": "^5.2.1"
|
|
101
|
+
},
|
|
102
|
+
"files": [
|
|
103
|
+
"dest",
|
|
104
|
+
"src",
|
|
105
|
+
"!*.test.*",
|
|
106
|
+
"artifacts"
|
|
107
|
+
],
|
|
108
|
+
"types": "./dest/index.d.ts",
|
|
109
|
+
"engines": {
|
|
110
|
+
"node": ">=20.10"
|
|
111
|
+
}
|
|
112
|
+
}
|