@aztec/ivc-integration 0.84.0 → 0.85.0

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 (56) hide show
  1. package/artifacts/app_creator.json +1 -1
  2. package/artifacts/app_reader.json +1 -1
  3. package/artifacts/keys/app_creator.vk.data.json +69 -69
  4. package/artifacts/keys/app_reader.vk.data.json +69 -69
  5. package/artifacts/keys/mock_private_kernel_init.vk.data.json +69 -69
  6. package/artifacts/keys/mock_private_kernel_inner.vk.data.json +69 -69
  7. package/artifacts/keys/mock_private_kernel_reset.vk.data.json +69 -69
  8. package/artifacts/keys/mock_private_kernel_tail.vk.data.json +69 -69
  9. package/artifacts/keys/mock_rollup_base_private.vk.data.json +144 -0
  10. package/artifacts/keys/mock_rollup_base_public.vk.data.d.json.ts +2 -0
  11. package/artifacts/keys/mock_rollup_base_public.vk.data.json +144 -0
  12. package/artifacts/keys/mock_rollup_merge.vk.data.d.json.ts +2 -0
  13. package/artifacts/keys/mock_rollup_merge.vk.data.json +144 -0
  14. package/artifacts/keys/mock_rollup_root.vk.data.d.json.ts +2 -0
  15. package/artifacts/keys/mock_rollup_root.vk.data.json +133 -0
  16. package/artifacts/keys/mock_rollup_root_verifier.sol +1914 -0
  17. package/artifacts/mock_private_kernel_init.json +1 -1
  18. package/artifacts/mock_private_kernel_inner.json +1 -1
  19. package/artifacts/mock_private_kernel_reset.json +1 -1
  20. package/artifacts/mock_private_kernel_tail.json +1 -1
  21. package/artifacts/mock_rollup_base_private.json +1 -0
  22. package/artifacts/mock_rollup_base_public.d.json.ts +3 -0
  23. package/artifacts/mock_rollup_base_public.json +1 -0
  24. package/artifacts/mock_rollup_merge.d.json.ts +3 -0
  25. package/artifacts/mock_rollup_merge.json +1 -0
  26. package/artifacts/mock_rollup_root.d.json.ts +3 -0
  27. package/artifacts/mock_rollup_root.json +1 -0
  28. package/dest/index.d.ts +1 -35
  29. package/dest/index.d.ts.map +1 -1
  30. package/dest/index.js +1 -227
  31. package/dest/prove_native.d.ts +15 -0
  32. package/dest/prove_native.d.ts.map +1 -0
  33. package/dest/prove_native.js +105 -0
  34. package/dest/prove_wasm.d.ts +2 -0
  35. package/dest/prove_wasm.d.ts.map +1 -0
  36. package/dest/prove_wasm.js +17 -0
  37. package/dest/scripts/generate_ts_from_abi.js +4 -1
  38. package/dest/serve.js +2 -1
  39. package/dest/types/index.d.ts +41 -7
  40. package/dest/types/index.d.ts.map +1 -1
  41. package/dest/types/index.js +29 -2
  42. package/dest/witgen.d.ts +60 -0
  43. package/dest/witgen.d.ts.map +1 -0
  44. package/dest/witgen.js +335 -0
  45. package/package.json +15 -17
  46. package/src/index.ts +1 -260
  47. package/src/prove_native.ts +238 -0
  48. package/src/prove_wasm.ts +24 -0
  49. package/src/scripts/generate_ts_from_abi.ts +4 -1
  50. package/src/serve.ts +2 -1
  51. package/src/types/index.ts +72 -10
  52. package/src/witgen.ts +373 -0
  53. package/artifacts/keys/mock_public_base.vk.data.json +0 -133
  54. package/artifacts/mock_public_base.json +0 -1
  55. /package/artifacts/keys/{mock_public_base.vk.data.d.json.ts → mock_rollup_base_private.vk.data.d.json.ts} +0 -0
  56. /package/artifacts/{mock_public_base.d.json.ts → mock_rollup_base_private.d.json.ts} +0 -0
@@ -0,0 +1,60 @@
1
+ import { AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, AVM_V2_PUBLIC_INPUTS_FLATTENED_SIZE, AVM_V2_VERIFICATION_KEY_LENGTH_IN_FIELDS_PADDED, CLIENT_IVC_VERIFICATION_KEY_LENGTH_IN_FIELDS } from '@aztec/constants';
2
+ import { Fr } from '@aztec/foundation/fields';
3
+ import type { PublicTxSimulationTester } from '@aztec/simulator/server';
4
+ import type { AvmCircuitPublicInputs } from '@aztec/stdlib/avm';
5
+ import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
6
+ import type { RecursiveProof } from '@aztec/stdlib/proofs';
7
+ import type { VerificationKeyAsFields } from '@aztec/stdlib/vks';
8
+ import MockAppCreatorCircuit from '../artifacts/app_creator.json';
9
+ import MockAppReaderCircuit from '../artifacts/app_reader.json';
10
+ import MockAppCreatorVk from '../artifacts/keys/app_creator.vk.data.json';
11
+ import MockAppReaderVk from '../artifacts/keys/app_reader.vk.data.json';
12
+ import MockPrivateKernelInitVk from '../artifacts/keys/mock_private_kernel_init.vk.data.json';
13
+ import MockPrivateKernelInnerVk from '../artifacts/keys/mock_private_kernel_inner.vk.data.json';
14
+ import MockPrivateKernelResetVk from '../artifacts/keys/mock_private_kernel_reset.vk.data.json';
15
+ import MockPrivateKernelTailVk from '../artifacts/keys/mock_private_kernel_tail.vk.data.json';
16
+ import MockRollupBasePrivateVk from '../artifacts/keys/mock_rollup_base_private.vk.data.json';
17
+ import MockRollupBasePublicVk from '../artifacts/keys/mock_rollup_base_public.vk.data.json';
18
+ import MockRollupMergeVk from '../artifacts/keys/mock_rollup_merge.vk.data.json';
19
+ import MockRollupRootVk from '../artifacts/keys/mock_rollup_root.vk.data.json';
20
+ import MockPrivateKernelInitCircuit from '../artifacts/mock_private_kernel_init.json';
21
+ import MockPrivateKernelInnerCircuit from '../artifacts/mock_private_kernel_inner.json';
22
+ import MockPrivateKernelResetCircuit from '../artifacts/mock_private_kernel_reset.json';
23
+ import MockPrivateKernelTailCircuit from '../artifacts/mock_private_kernel_tail.json';
24
+ import MockRollupBasePrivateCircuit from '../artifacts/mock_rollup_base_private.json';
25
+ import MockRollupBasePublicCircuit from '../artifacts/mock_rollup_base_public.json';
26
+ import MockRollupMergeCircuit from '../artifacts/mock_rollup_merge.json';
27
+ import MockRollupRootCircuit from '../artifacts/mock_rollup_root.json';
28
+ import type { AppCreatorInputType, AppPublicInputs, AppReaderInputType, FixedLengthArray, KernelPublicInputs, MockPrivateKernelInitInputType, MockPrivateKernelInnerInputType, MockPrivateKernelResetInputType, MockPrivateKernelTailInputType, MockRollupBasePrivateInputType, MockRollupBasePublicInputType, MockRollupMergeInputType, MockRollupRootInputType, PrivateKernelPublicInputs, RollupPublicInputs } from './types/index.js';
29
+ export { MockAppCreatorCircuit, MockAppReaderCircuit, MockPrivateKernelInitCircuit, MockPrivateKernelInnerCircuit, MockPrivateKernelResetCircuit, MockPrivateKernelTailCircuit, MockRollupBasePublicCircuit, MockRollupBasePrivateCircuit, MockRollupMergeCircuit, MockRollupRootCircuit, MockAppCreatorVk, MockAppReaderVk, MockPrivateKernelInitVk, MockPrivateKernelInnerVk, MockPrivateKernelResetVk, MockPrivateKernelTailVk, MockRollupBasePublicVk, MockRollupBasePrivateVk, MockRollupMergeVk, MockRollupRootVk, };
30
+ export declare function getVkAsFields(vk: {
31
+ keyAsBytes: string;
32
+ keyAsFields: string[];
33
+ }): FixedLengthArray<string, typeof CLIENT_IVC_VERIFICATION_KEY_LENGTH_IN_FIELDS>;
34
+ export declare const MOCK_MAX_COMMITMENTS_PER_TX = 4;
35
+ export interface WitnessGenResult<PublicInputsType> {
36
+ witness: Uint8Array;
37
+ publicInputs: PublicInputsType;
38
+ }
39
+ export declare function witnessGenCreatorAppMockCircuit(args: AppCreatorInputType): Promise<WitnessGenResult<AppPublicInputs>>;
40
+ export declare function witnessGenReaderAppMockCircuit(args: AppReaderInputType): Promise<WitnessGenResult<AppPublicInputs>>;
41
+ export declare function witnessGenMockPrivateKernelInitCircuit(args: MockPrivateKernelInitInputType): Promise<WitnessGenResult<PrivateKernelPublicInputs>>;
42
+ export declare function witnessGenMockPrivateKernelInnerCircuit(args: MockPrivateKernelInnerInputType): Promise<WitnessGenResult<PrivateKernelPublicInputs>>;
43
+ export declare function witnessGenMockPrivateKernelResetCircuit(args: MockPrivateKernelResetInputType): Promise<WitnessGenResult<PrivateKernelPublicInputs>>;
44
+ export declare function witnessGenMockPrivateKernelTailCircuit(args: MockPrivateKernelTailInputType): Promise<WitnessGenResult<KernelPublicInputs>>;
45
+ export declare function witnessGenMockPublicBaseCircuit(args: MockRollupBasePublicInputType): Promise<WitnessGenResult<RollupPublicInputs>>;
46
+ export declare function witnessGenMockRollupBasePrivateCircuit(args: MockRollupBasePrivateInputType): Promise<WitnessGenResult<RollupPublicInputs>>;
47
+ export declare function witnessGenMockRollupMergeCircuit(args: MockRollupMergeInputType): Promise<WitnessGenResult<RollupPublicInputs>>;
48
+ export declare function witnessGenMockRollupRootCircuit(args: MockRollupRootInputType): Promise<WitnessGenResult<RollupPublicInputs>>;
49
+ export declare function generate3FunctionTestingIVCStack(): Promise<[string[], Uint8Array[], KernelPublicInputs]>;
50
+ export declare function generate6FunctionTestingIVCStack(): Promise<[string[], Uint8Array[], KernelPublicInputs]>;
51
+ export declare function mapRecursiveProofToNoir<N extends number>(proof: RecursiveProof<N>): FixedLengthArray<string, N>;
52
+ export declare function mapAvmProofToNoir(proof: Fr[]): FixedLengthArray<string, typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>;
53
+ export declare function mapVerificationKeyToNoir<N extends number>(vk: VerificationKeyAsFields, len: N): {
54
+ key: FixedLengthArray<string, N>;
55
+ hash: string;
56
+ };
57
+ export declare function mapAvmVerificationKeyToNoir(vk: Fr[]): FixedLengthArray<string, typeof AVM_V2_VERIFICATION_KEY_LENGTH_IN_FIELDS_PADDED>;
58
+ export declare function mapAvmPublicInputsToNoir(publicInputs: AvmCircuitPublicInputs): FixedLengthArray<string, typeof AVM_V2_PUBLIC_INPUTS_FLATTENED_SIZE>;
59
+ export declare function simulateAvmBulkTesting(simTester: PublicTxSimulationTester, contractInstance: ContractInstanceWithAddress): Promise<import("@aztec/simulator/server").PublicTxResult>;
60
+ //# sourceMappingURL=witgen.d.ts.map
@@ -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,335 @@
1
+ import { AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, AVM_V2_PUBLIC_INPUTS_FLATTENED_SIZE, AVM_V2_VERIFICATION_KEY_LENGTH_IN_FIELDS_PADDED } from '@aztec/constants';
2
+ import { Fr } from '@aztec/foundation/fields';
3
+ import { Noir } from '@aztec/noir-noir_js';
4
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
5
+ import createDebug from 'debug';
6
+ import MockAppCreatorCircuit from '../artifacts/app_creator.json' assert {
7
+ type: 'json'
8
+ };
9
+ import MockAppReaderCircuit from '../artifacts/app_reader.json' assert {
10
+ type: 'json'
11
+ };
12
+ import MockAppCreatorVk from '../artifacts/keys/app_creator.vk.data.json' assert {
13
+ type: 'json'
14
+ };
15
+ import MockAppReaderVk from '../artifacts/keys/app_reader.vk.data.json' assert {
16
+ type: 'json'
17
+ };
18
+ import MockPrivateKernelInitVk from '../artifacts/keys/mock_private_kernel_init.vk.data.json' assert {
19
+ type: 'json'
20
+ };
21
+ import MockPrivateKernelInnerVk from '../artifacts/keys/mock_private_kernel_inner.vk.data.json' assert {
22
+ type: 'json'
23
+ };
24
+ import MockPrivateKernelResetVk from '../artifacts/keys/mock_private_kernel_reset.vk.data.json' assert {
25
+ type: 'json'
26
+ };
27
+ import MockPrivateKernelTailVk from '../artifacts/keys/mock_private_kernel_tail.vk.data.json' assert {
28
+ type: 'json'
29
+ };
30
+ import MockRollupBasePrivateVk from '../artifacts/keys/mock_rollup_base_private.vk.data.json' assert {
31
+ type: 'json'
32
+ };
33
+ import MockRollupBasePublicVk from '../artifacts/keys/mock_rollup_base_public.vk.data.json' assert {
34
+ type: 'json'
35
+ };
36
+ import MockRollupMergeVk from '../artifacts/keys/mock_rollup_merge.vk.data.json' assert {
37
+ type: 'json'
38
+ };
39
+ import MockRollupRootVk from '../artifacts/keys/mock_rollup_root.vk.data.json' assert {
40
+ type: 'json'
41
+ };
42
+ import MockPrivateKernelInitCircuit from '../artifacts/mock_private_kernel_init.json' assert {
43
+ type: 'json'
44
+ };
45
+ import MockPrivateKernelInnerCircuit from '../artifacts/mock_private_kernel_inner.json' assert {
46
+ type: 'json'
47
+ };
48
+ import MockPrivateKernelResetCircuit from '../artifacts/mock_private_kernel_reset.json' assert {
49
+ type: 'json'
50
+ };
51
+ import MockPrivateKernelTailCircuit from '../artifacts/mock_private_kernel_tail.json' assert {
52
+ type: 'json'
53
+ };
54
+ import MockRollupBasePrivateCircuit from '../artifacts/mock_rollup_base_private.json' assert {
55
+ type: 'json'
56
+ };
57
+ import MockRollupBasePublicCircuit from '../artifacts/mock_rollup_base_public.json' assert {
58
+ type: 'json'
59
+ };
60
+ import MockRollupMergeCircuit from '../artifacts/mock_rollup_merge.json' assert {
61
+ type: 'json'
62
+ };
63
+ import MockRollupRootCircuit from '../artifacts/mock_rollup_root.json' assert {
64
+ type: 'json'
65
+ };
66
+ // Re export the circuit jsons
67
+ export { MockAppCreatorCircuit, MockAppReaderCircuit, MockPrivateKernelInitCircuit, MockPrivateKernelInnerCircuit, MockPrivateKernelResetCircuit, MockPrivateKernelTailCircuit, MockRollupBasePublicCircuit, MockRollupBasePrivateCircuit, MockRollupMergeCircuit, MockRollupRootCircuit, MockAppCreatorVk, MockAppReaderVk, MockPrivateKernelInitVk, MockPrivateKernelInnerVk, MockPrivateKernelResetVk, MockPrivateKernelTailVk, MockRollupBasePublicVk, MockRollupBasePrivateVk, MockRollupMergeVk, MockRollupRootVk };
68
+ /* eslint-disable camelcase */ const logger = createDebug('aztec:ivc-test');
69
+ export function getVkAsFields(vk) {
70
+ return vk.keyAsFields;
71
+ }
72
+ export const MOCK_MAX_COMMITMENTS_PER_TX = 4;
73
+ function foreignCallHandler() {
74
+ throw new Error('Unexpected foreign call');
75
+ }
76
+ export async function witnessGenCreatorAppMockCircuit(args) {
77
+ const program = new Noir(MockAppCreatorCircuit);
78
+ const { witness, returnValue } = await program.execute(args, foreignCallHandler);
79
+ return {
80
+ witness,
81
+ publicInputs: returnValue
82
+ };
83
+ }
84
+ export async function witnessGenReaderAppMockCircuit(args) {
85
+ const program = new Noir(MockAppReaderCircuit);
86
+ const { witness, returnValue } = await program.execute(args, foreignCallHandler);
87
+ return {
88
+ witness,
89
+ publicInputs: returnValue
90
+ };
91
+ }
92
+ export async function witnessGenMockPrivateKernelInitCircuit(args) {
93
+ const program = new Noir(MockPrivateKernelInitCircuit);
94
+ const { witness, returnValue } = await program.execute(args, foreignCallHandler);
95
+ return {
96
+ witness,
97
+ publicInputs: returnValue
98
+ };
99
+ }
100
+ export async function witnessGenMockPrivateKernelInnerCircuit(args) {
101
+ const program = new Noir(MockPrivateKernelInnerCircuit);
102
+ const { witness, returnValue } = await program.execute(args, foreignCallHandler);
103
+ return {
104
+ witness,
105
+ publicInputs: returnValue
106
+ };
107
+ }
108
+ export async function witnessGenMockPrivateKernelResetCircuit(args) {
109
+ const program = new Noir(MockPrivateKernelResetCircuit);
110
+ const { witness, returnValue } = await program.execute(args, foreignCallHandler);
111
+ return {
112
+ witness,
113
+ publicInputs: returnValue
114
+ };
115
+ }
116
+ export async function witnessGenMockPrivateKernelTailCircuit(args) {
117
+ const program = new Noir(MockPrivateKernelTailCircuit);
118
+ const { witness, returnValue } = await program.execute(args, foreignCallHandler);
119
+ return {
120
+ witness,
121
+ publicInputs: returnValue
122
+ };
123
+ }
124
+ export async function witnessGenMockPublicBaseCircuit(args) {
125
+ const program = new Noir(MockRollupBasePublicCircuit);
126
+ const { witness, returnValue } = await program.execute(args, foreignCallHandler);
127
+ return {
128
+ witness,
129
+ publicInputs: returnValue
130
+ };
131
+ }
132
+ export async function witnessGenMockRollupBasePrivateCircuit(args) {
133
+ const program = new Noir(MockRollupBasePrivateCircuit);
134
+ const { witness, returnValue } = await program.execute(args, foreignCallHandler);
135
+ return {
136
+ witness,
137
+ publicInputs: returnValue
138
+ };
139
+ }
140
+ export async function witnessGenMockRollupMergeCircuit(args) {
141
+ const program = new Noir(MockRollupMergeCircuit);
142
+ const { witness, returnValue } = await program.execute(args, foreignCallHandler);
143
+ return {
144
+ witness,
145
+ publicInputs: returnValue
146
+ };
147
+ }
148
+ export async function witnessGenMockRollupRootCircuit(args) {
149
+ const program = new Noir(MockRollupRootCircuit);
150
+ const { witness, returnValue } = await program.execute(args, foreignCallHandler);
151
+ return {
152
+ witness,
153
+ publicInputs: returnValue
154
+ };
155
+ }
156
+ export async function generate3FunctionTestingIVCStack() {
157
+ const tx = {
158
+ number_of_calls: '0x1'
159
+ };
160
+ // Witness gen app and kernels
161
+ const appWitnessGenResult = await witnessGenCreatorAppMockCircuit({
162
+ commitments_to_create: [
163
+ '0x1',
164
+ '0x2'
165
+ ]
166
+ });
167
+ logger('generated app mock circuit witness');
168
+ const initWitnessGenResult = await witnessGenMockPrivateKernelInitCircuit({
169
+ app_inputs: appWitnessGenResult.publicInputs,
170
+ tx,
171
+ app_vk: getVkAsFields(MockAppCreatorVk)
172
+ });
173
+ logger('generated mock private kernel init witness');
174
+ const tailWitnessGenResult = await witnessGenMockPrivateKernelTailCircuit({
175
+ prev_kernel_public_inputs: initWitnessGenResult.publicInputs,
176
+ kernel_vk: getVkAsFields(MockPrivateKernelResetVk)
177
+ });
178
+ logger('generated mock private kernel tail witness');
179
+ // Create client IVC proof
180
+ const bytecodes = [
181
+ MockAppCreatorCircuit.bytecode,
182
+ MockPrivateKernelInitCircuit.bytecode,
183
+ MockPrivateKernelTailCircuit.bytecode
184
+ ];
185
+ const witnessStack = [
186
+ appWitnessGenResult.witness,
187
+ initWitnessGenResult.witness,
188
+ tailWitnessGenResult.witness
189
+ ];
190
+ return [
191
+ bytecodes,
192
+ witnessStack,
193
+ tailWitnessGenResult.publicInputs
194
+ ];
195
+ }
196
+ export async function generate6FunctionTestingIVCStack() {
197
+ const tx = {
198
+ number_of_calls: '0x2'
199
+ };
200
+ // Witness gen app and kernels
201
+ const creatorAppWitnessGenResult = await witnessGenCreatorAppMockCircuit({
202
+ commitments_to_create: [
203
+ '0x1',
204
+ '0x2'
205
+ ]
206
+ });
207
+ const readerAppWitnessGenResult = await witnessGenReaderAppMockCircuit({
208
+ commitments_to_read: [
209
+ '0x2',
210
+ '0x0'
211
+ ]
212
+ });
213
+ const initWitnessGenResult = await witnessGenMockPrivateKernelInitCircuit({
214
+ app_inputs: creatorAppWitnessGenResult.publicInputs,
215
+ tx,
216
+ app_vk: getVkAsFields(MockAppCreatorVk)
217
+ });
218
+ const innerWitnessGenResult = await witnessGenMockPrivateKernelInnerCircuit({
219
+ prev_kernel_public_inputs: initWitnessGenResult.publicInputs,
220
+ app_inputs: readerAppWitnessGenResult.publicInputs,
221
+ app_vk: getVkAsFields(MockAppReaderVk),
222
+ kernel_vk: getVkAsFields(MockPrivateKernelInitVk)
223
+ });
224
+ const resetWitnessGenResult = await witnessGenMockPrivateKernelResetCircuit({
225
+ prev_kernel_public_inputs: innerWitnessGenResult.publicInputs,
226
+ commitment_read_hints: [
227
+ '0x1',
228
+ MOCK_MAX_COMMITMENTS_PER_TX.toString(),
229
+ MOCK_MAX_COMMITMENTS_PER_TX.toString(),
230
+ MOCK_MAX_COMMITMENTS_PER_TX.toString()
231
+ ],
232
+ kernel_vk: getVkAsFields(MockPrivateKernelInnerVk)
233
+ });
234
+ const tailWitnessGenResult = await witnessGenMockPrivateKernelTailCircuit({
235
+ prev_kernel_public_inputs: resetWitnessGenResult.publicInputs,
236
+ kernel_vk: getVkAsFields(MockPrivateKernelResetVk)
237
+ });
238
+ // Create client IVC proof
239
+ const bytecodes = [
240
+ MockAppCreatorCircuit.bytecode,
241
+ MockPrivateKernelInitCircuit.bytecode,
242
+ MockAppReaderCircuit.bytecode,
243
+ MockPrivateKernelInnerCircuit.bytecode,
244
+ MockPrivateKernelResetCircuit.bytecode,
245
+ MockPrivateKernelTailCircuit.bytecode
246
+ ];
247
+ const witnessStack = [
248
+ creatorAppWitnessGenResult.witness,
249
+ initWitnessGenResult.witness,
250
+ readerAppWitnessGenResult.witness,
251
+ innerWitnessGenResult.witness,
252
+ resetWitnessGenResult.witness,
253
+ tailWitnessGenResult.witness
254
+ ];
255
+ return [
256
+ bytecodes,
257
+ witnessStack,
258
+ tailWitnessGenResult.publicInputs
259
+ ];
260
+ }
261
+ export function mapRecursiveProofToNoir(proof) {
262
+ return proof.proof.map((field)=>field.toString());
263
+ }
264
+ export function mapAvmProofToNoir(proof) {
265
+ if (proof.length != AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED) {
266
+ throw new Error('Invalid number of AVM proof fields');
267
+ }
268
+ return proof.map((field)=>field.toString());
269
+ }
270
+ export function mapVerificationKeyToNoir(vk, len) {
271
+ if (len !== vk.key.length) {
272
+ throw new Error('Verification key length does not match expected length');
273
+ }
274
+ return {
275
+ key: vk.key.map((field)=>field.toString()),
276
+ hash: vk.hash.toString()
277
+ };
278
+ }
279
+ export function mapAvmVerificationKeyToNoir(vk) {
280
+ if (vk.length != AVM_V2_VERIFICATION_KEY_LENGTH_IN_FIELDS_PADDED) {
281
+ throw new Error('Invalid number of AVM verification key fields');
282
+ }
283
+ return vk.map((field)=>field.toString());
284
+ }
285
+ export function mapAvmPublicInputsToNoir(publicInputs) {
286
+ // TODO: Currently the recursive verifier only expects a single public input, the reverted field.
287
+ const serialized = [
288
+ new Fr(publicInputs.reverted)
289
+ ];
290
+ if (serialized.length != AVM_V2_PUBLIC_INPUTS_FLATTENED_SIZE) {
291
+ throw new Error('Invalid number of AVM public inputs');
292
+ }
293
+ return serialized.map((x)=>x.toString());
294
+ }
295
+ export async function simulateAvmBulkTesting(simTester, contractInstance) {
296
+ const argsField = [
297
+ 1,
298
+ 2,
299
+ 3,
300
+ 4,
301
+ 5,
302
+ 6,
303
+ 7,
304
+ 8,
305
+ 9,
306
+ 10
307
+ ].map((x)=>new Fr(x));
308
+ const argsU8 = [
309
+ 1,
310
+ 2,
311
+ 3,
312
+ 4,
313
+ 5,
314
+ 6,
315
+ 7,
316
+ 8,
317
+ 9,
318
+ 10
319
+ ].map((x)=>new Fr(x));
320
+ const args = [
321
+ argsField,
322
+ argsU8,
323
+ /*getInstanceForAddress=*/ contractInstance.address.toField(),
324
+ /*expectedDeployer=*/ contractInstance.deployer.toField(),
325
+ /*expectedClassId=*/ contractInstance.currentContractClassId.toField(),
326
+ /*expectedInitializationHash=*/ contractInstance.initializationHash.toField()
327
+ ];
328
+ return await simTester.simulateTx(/*sender=*/ AztecAddress.fromNumber(42), /*setupCalls=*/ [], /*appCalls=*/ [
329
+ {
330
+ address: contractInstance.address,
331
+ fnName: 'bulk_testing',
332
+ args
333
+ }
334
+ ], /*teardownCall=*/ undefined);
335
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/ivc-integration",
3
- "version": "0.84.0",
3
+ "version": "0.85.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -60,14 +60,14 @@
60
60
  ]
61
61
  },
62
62
  "dependencies": {
63
- "@aztec/bb.js": "0.84.0",
64
- "@aztec/constants": "0.84.0",
65
- "@aztec/foundation": "0.84.0",
66
- "@aztec/noir-noir_codegen": "0.84.0",
67
- "@aztec/noir-noir_js": "0.84.0",
68
- "@aztec/noir-noirc_abi": "0.84.0",
69
- "@aztec/noir-types": "0.84.0",
70
- "@aztec/stdlib": "0.84.0",
63
+ "@aztec/bb.js": "0.85.0",
64
+ "@aztec/constants": "0.85.0",
65
+ "@aztec/foundation": "0.85.0",
66
+ "@aztec/noir-noir_codegen": "0.85.0",
67
+ "@aztec/noir-noir_js": "0.85.0",
68
+ "@aztec/noir-noirc_abi": "0.85.0",
69
+ "@aztec/noir-types": "0.85.0",
70
+ "@aztec/stdlib": "0.85.0",
71
71
  "chalk": "^5.3.0",
72
72
  "change-case": "^5.4.4",
73
73
  "pako": "^2.1.0",
@@ -76,12 +76,12 @@
76
76
  "tslib": "^2.4.0"
77
77
  },
78
78
  "devDependencies": {
79
- "@aztec/bb-prover": "0.84.0",
80
- "@aztec/kv-store": "0.84.0",
81
- "@aztec/noir-contracts.js": "0.84.0",
82
- "@aztec/simulator": "0.84.0",
83
- "@aztec/telemetry-client": "0.84.0",
84
- "@aztec/world-state": "0.84.0",
79
+ "@aztec/bb-prover": "0.85.0",
80
+ "@aztec/kv-store": "0.85.0",
81
+ "@aztec/noir-contracts.js": "0.85.0",
82
+ "@aztec/simulator": "0.85.0",
83
+ "@aztec/telemetry-client": "0.85.0",
84
+ "@aztec/world-state": "0.85.0",
85
85
  "@jest/globals": "^29.5.0",
86
86
  "@msgpack/msgpack": "^3.0.0-beta2",
87
87
  "@playwright/test": "1.49.0",
@@ -93,8 +93,6 @@
93
93
  "html-webpack-plugin": "^5.6.0",
94
94
  "jest": "^29.5.0",
95
95
  "jest-mock-extended": "^4.0.0-beta1",
96
- "levelup": "^5.1.1",
97
- "memdown": "^6.1.1",
98
96
  "resolve-typescript-plugin": "^2.0.1",
99
97
  "serve": "^14.2.1",
100
98
  "ts-loader": "^9.5.1",