@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.
Files changed (61) hide show
  1. package/README.md +3 -0
  2. package/artifacts/app_creator.d.json.ts +3 -0
  3. package/artifacts/app_creator.json +210 -0
  4. package/artifacts/app_reader.d.json.ts +3 -0
  5. package/artifacts/app_reader.json +210 -0
  6. package/artifacts/mock_hiding.d.json.ts +3 -0
  7. package/artifacts/mock_hiding.json +256 -0
  8. package/artifacts/mock_private_kernel_init.d.json.ts +3 -0
  9. package/artifacts/mock_private_kernel_init.json +783 -0
  10. package/artifacts/mock_private_kernel_inner.d.json.ts +3 -0
  11. package/artifacts/mock_private_kernel_inner.json +833 -0
  12. package/artifacts/mock_private_kernel_reset.d.json.ts +3 -0
  13. package/artifacts/mock_private_kernel_reset.json +342 -0
  14. package/artifacts/mock_private_kernel_tail.d.json.ts +3 -0
  15. package/artifacts/mock_private_kernel_tail.json +306 -0
  16. package/artifacts/mock_rollup_root.d.json.ts +3 -0
  17. package/artifacts/mock_rollup_root.json +331 -0
  18. package/artifacts/mock_rollup_tx_base_private.d.json.ts +3 -0
  19. package/artifacts/mock_rollup_tx_base_private.json +322 -0
  20. package/artifacts/mock_rollup_tx_base_public.d.json.ts +3 -0
  21. package/artifacts/mock_rollup_tx_base_public.json +1484 -0
  22. package/artifacts/mock_rollup_tx_merge.d.json.ts +3 -0
  23. package/artifacts/mock_rollup_tx_merge.json +387 -0
  24. package/dest/batch_verifier_test_helpers.d.ts +14 -0
  25. package/dest/batch_verifier_test_helpers.d.ts.map +1 -0
  26. package/dest/batch_verifier_test_helpers.js +19 -0
  27. package/dest/bb_working_directory.d.ts +2 -0
  28. package/dest/bb_working_directory.d.ts.map +1 -0
  29. package/dest/bb_working_directory.js +10 -0
  30. package/dest/index.d.ts +2 -0
  31. package/dest/index.d.ts.map +1 -0
  32. package/dest/index.js +1 -0
  33. package/dest/prove_native.d.ts +15 -0
  34. package/dest/prove_native.d.ts.map +1 -0
  35. package/dest/prove_native.js +188 -0
  36. package/dest/scripts/generate_declaration_files.d.ts +2 -0
  37. package/dest/scripts/generate_declaration_files.d.ts.map +1 -0
  38. package/dest/scripts/generate_declaration_files.js +21 -0
  39. package/dest/scripts/generate_ts_from_abi.d.ts +2 -0
  40. package/dest/scripts/generate_ts_from_abi.d.ts.map +1 -0
  41. package/dest/scripts/generate_ts_from_abi.js +49 -0
  42. package/dest/serve.d.ts +2 -0
  43. package/dest/serve.d.ts.map +1 -0
  44. package/dest/serve.js +79 -0
  45. package/dest/types/index.d.ts +227 -0
  46. package/dest/types/index.d.ts.map +1 -0
  47. package/dest/types/index.js +102 -0
  48. package/dest/witgen.d.ts +87 -0
  49. package/dest/witgen.d.ts.map +1 -0
  50. package/dest/witgen.js +328 -0
  51. package/package.json +112 -0
  52. package/src/batch_verifier_test_helpers.ts +32 -0
  53. package/src/bb_working_directory.ts +9 -0
  54. package/src/index.html +9 -0
  55. package/src/index.ts +1 -0
  56. package/src/prove_native.ts +171 -0
  57. package/src/scripts/generate_declaration_files.ts +24 -0
  58. package/src/scripts/generate_ts_from_abi.ts +57 -0
  59. package/src/serve.ts +128 -0
  60. package/src/types/index.ts +349 -0
  61. 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
+ }
@@ -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":"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"}
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
+ }