@aztec/ivc-integration 1.0.0-staging.2 → 1.0.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.
- package/artifacts/app_creator.json +1 -1
- package/artifacts/app_reader.json +1 -1
- package/artifacts/keys/mock_private_kernel_init.vk.data.json +61 -61
- package/artifacts/keys/mock_private_kernel_inner.vk.data.json +61 -61
- package/artifacts/keys/mock_private_kernel_reset.vk.data.json +61 -61
- package/artifacts/keys/mock_private_kernel_tail.ivc.vk +0 -0
- package/artifacts/keys/mock_private_kernel_tail.vk.data.json +61 -61
- package/artifacts/keys/mock_rollup_base_public.vk.data.json +85 -85
- package/artifacts/keys/mock_rollup_root_verifier.sol +2 -2
- package/artifacts/mock_private_kernel_init.json +1 -1
- package/artifacts/mock_private_kernel_inner.json +1 -1
- package/artifacts/mock_private_kernel_reset.json +1 -1
- package/artifacts/mock_private_kernel_tail.json +1 -1
- package/artifacts/mock_rollup_base_private.json +1 -1
- package/artifacts/mock_rollup_base_public.json +1 -1
- package/artifacts/mock_rollup_merge.json +1 -1
- package/artifacts/mock_rollup_root.json +1 -1
- package/dest/prove_native.d.ts +1 -2
- package/dest/prove_native.d.ts.map +1 -1
- package/dest/prove_native.js +1 -2
- package/dest/types/index.d.ts +17 -17
- package/dest/types/index.d.ts.map +1 -1
- package/dest/witgen.d.ts +8 -6
- package/dest/witgen.d.ts.map +1 -1
- package/dest/witgen.js +17 -14
- package/package.json +16 -16
- package/src/prove_native.ts +3 -3
- package/src/types/index.ts +18 -18
- package/src/witgen.ts +35 -26
package/src/prove_native.ts
CHANGED
|
@@ -29,7 +29,7 @@ import { makeProofAndVerificationKey } from '@aztec/stdlib/interfaces/server';
|
|
|
29
29
|
import type { NoirCompiledCircuit } from '@aztec/stdlib/noir';
|
|
30
30
|
import type { ClientIvcProof, Proof } from '@aztec/stdlib/proofs';
|
|
31
31
|
import { enhanceProofWithPiValidationFlag } from '@aztec/stdlib/rollup';
|
|
32
|
-
import {
|
|
32
|
+
import type { VerificationKeyData } from '@aztec/stdlib/vks';
|
|
33
33
|
|
|
34
34
|
import * as fs from 'fs/promises';
|
|
35
35
|
import { Encoder } from 'msgpackr';
|
|
@@ -189,7 +189,7 @@ export async function proveAvm(
|
|
|
189
189
|
logger: Logger,
|
|
190
190
|
skipPublicInputsValidation: boolean = false,
|
|
191
191
|
): Promise<{
|
|
192
|
-
vk:
|
|
192
|
+
vk: Fr[];
|
|
193
193
|
proof: Fr[];
|
|
194
194
|
publicInputs: AvmCircuitPublicInputs;
|
|
195
195
|
}> {
|
|
@@ -259,7 +259,7 @@ export async function proveAvm(
|
|
|
259
259
|
|
|
260
260
|
return {
|
|
261
261
|
proof: proofWithPublicInputsValidationFlag,
|
|
262
|
-
vk
|
|
262
|
+
vk,
|
|
263
263
|
publicInputs: avmCircuitInputs.publicInputs,
|
|
264
264
|
};
|
|
265
265
|
}
|
package/src/types/index.ts
CHANGED
|
@@ -22,11 +22,6 @@ export type TxRequest = {
|
|
|
22
22
|
number_of_calls: u32;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
export type VerificationKey<A extends number> = {
|
|
26
|
-
key: FixedLengthArray<Field, A>;
|
|
27
|
-
hash: Field;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
25
|
export type PrivateKernelPublicInputs = {
|
|
31
26
|
remaining_calls: u32;
|
|
32
27
|
commitments: FixedLengthArray<Field, 4>;
|
|
@@ -40,7 +35,12 @@ export type KernelPublicInputs = {
|
|
|
40
35
|
export type TubeData = {
|
|
41
36
|
public_inputs: KernelPublicInputs;
|
|
42
37
|
proof: FixedLengthArray<Field, 535>;
|
|
43
|
-
vk_data: VerificationKey
|
|
38
|
+
vk_data: VerificationKey;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export type VerificationKey = {
|
|
42
|
+
key: FixedLengthArray<Field, 113>;
|
|
43
|
+
hash: Field;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
export type AvmCircuitPublicInputs = {
|
|
@@ -187,7 +187,7 @@ export type RollupPublicInputs = {
|
|
|
187
187
|
export type PreviousRollupData = {
|
|
188
188
|
base_or_merge_public_inputs: RollupPublicInputs;
|
|
189
189
|
proof: FixedLengthArray<Field, 535>;
|
|
190
|
-
vk: VerificationKey
|
|
190
|
+
vk: VerificationKey;
|
|
191
191
|
}
|
|
192
192
|
|
|
193
193
|
|
|
@@ -220,13 +220,13 @@ export async function AppReader(commitments_to_read: FixedLengthArray<Field, 2>,
|
|
|
220
220
|
export type MockPrivateKernelInitInputType = {
|
|
221
221
|
tx: TxRequest;
|
|
222
222
|
app_inputs: AppPublicInputs;
|
|
223
|
-
app_vk:
|
|
223
|
+
app_vk: FixedLengthArray<Field, 127>;
|
|
224
224
|
}
|
|
225
225
|
|
|
226
226
|
export type MockPrivateKernelInitReturnType = PrivateKernelPublicInputs;
|
|
227
227
|
|
|
228
228
|
|
|
229
|
-
export async function MockPrivateKernelInit(tx: TxRequest, app_inputs: AppPublicInputs, app_vk:
|
|
229
|
+
export async function MockPrivateKernelInit(tx: TxRequest, app_inputs: AppPublicInputs, app_vk: FixedLengthArray<Field, 127>, MockPrivateKernelInit_circuit: CompiledCircuit, foreignCallHandler?: ForeignCallHandler): Promise<PrivateKernelPublicInputs> {
|
|
230
230
|
const program = new Noir(MockPrivateKernelInit_circuit);
|
|
231
231
|
const args: InputMap = { tx, app_inputs, app_vk };
|
|
232
232
|
const { returnValue } = await program.execute(args, foreignCallHandler);
|
|
@@ -234,15 +234,15 @@ export async function MockPrivateKernelInit(tx: TxRequest, app_inputs: AppPublic
|
|
|
234
234
|
}
|
|
235
235
|
export type MockPrivateKernelInnerInputType = {
|
|
236
236
|
prev_kernel_public_inputs: PrivateKernelPublicInputs;
|
|
237
|
-
kernel_vk:
|
|
237
|
+
kernel_vk: FixedLengthArray<Field, 127>;
|
|
238
238
|
app_inputs: AppPublicInputs;
|
|
239
|
-
app_vk:
|
|
239
|
+
app_vk: FixedLengthArray<Field, 127>;
|
|
240
240
|
}
|
|
241
241
|
|
|
242
242
|
export type MockPrivateKernelInnerReturnType = PrivateKernelPublicInputs;
|
|
243
243
|
|
|
244
244
|
|
|
245
|
-
export async function MockPrivateKernelInner(prev_kernel_public_inputs: PrivateKernelPublicInputs, kernel_vk:
|
|
245
|
+
export async function MockPrivateKernelInner(prev_kernel_public_inputs: PrivateKernelPublicInputs, kernel_vk: FixedLengthArray<Field, 127>, app_inputs: AppPublicInputs, app_vk: FixedLengthArray<Field, 127>, MockPrivateKernelInner_circuit: CompiledCircuit, foreignCallHandler?: ForeignCallHandler): Promise<PrivateKernelPublicInputs> {
|
|
246
246
|
const program = new Noir(MockPrivateKernelInner_circuit);
|
|
247
247
|
const args: InputMap = { prev_kernel_public_inputs, kernel_vk, app_inputs, app_vk };
|
|
248
248
|
const { returnValue } = await program.execute(args, foreignCallHandler);
|
|
@@ -250,14 +250,14 @@ export async function MockPrivateKernelInner(prev_kernel_public_inputs: PrivateK
|
|
|
250
250
|
}
|
|
251
251
|
export type MockPrivateKernelResetInputType = {
|
|
252
252
|
prev_kernel_public_inputs: PrivateKernelPublicInputs;
|
|
253
|
-
kernel_vk:
|
|
253
|
+
kernel_vk: FixedLengthArray<Field, 127>;
|
|
254
254
|
commitment_read_hints: FixedLengthArray<u32, 4>;
|
|
255
255
|
}
|
|
256
256
|
|
|
257
257
|
export type MockPrivateKernelResetReturnType = PrivateKernelPublicInputs;
|
|
258
258
|
|
|
259
259
|
|
|
260
|
-
export async function MockPrivateKernelReset(prev_kernel_public_inputs: PrivateKernelPublicInputs, kernel_vk:
|
|
260
|
+
export async function MockPrivateKernelReset(prev_kernel_public_inputs: PrivateKernelPublicInputs, kernel_vk: FixedLengthArray<Field, 127>, commitment_read_hints: FixedLengthArray<u32, 4>, MockPrivateKernelReset_circuit: CompiledCircuit, foreignCallHandler?: ForeignCallHandler): Promise<PrivateKernelPublicInputs> {
|
|
261
261
|
const program = new Noir(MockPrivateKernelReset_circuit);
|
|
262
262
|
const args: InputMap = { prev_kernel_public_inputs, kernel_vk, commitment_read_hints };
|
|
263
263
|
const { returnValue } = await program.execute(args, foreignCallHandler);
|
|
@@ -265,13 +265,13 @@ export async function MockPrivateKernelReset(prev_kernel_public_inputs: PrivateK
|
|
|
265
265
|
}
|
|
266
266
|
export type MockPrivateKernelTailInputType = {
|
|
267
267
|
prev_kernel_public_inputs: PrivateKernelPublicInputs;
|
|
268
|
-
kernel_vk:
|
|
268
|
+
kernel_vk: FixedLengthArray<Field, 127>;
|
|
269
269
|
}
|
|
270
270
|
|
|
271
271
|
export type MockPrivateKernelTailReturnType = KernelPublicInputs;
|
|
272
272
|
|
|
273
273
|
|
|
274
|
-
export async function MockPrivateKernelTail(prev_kernel_public_inputs: PrivateKernelPublicInputs, kernel_vk:
|
|
274
|
+
export async function MockPrivateKernelTail(prev_kernel_public_inputs: PrivateKernelPublicInputs, kernel_vk: FixedLengthArray<Field, 127>, MockPrivateKernelTail_circuit: CompiledCircuit, foreignCallHandler?: ForeignCallHandler): Promise<KernelPublicInputs> {
|
|
275
275
|
const program = new Noir(MockPrivateKernelTail_circuit);
|
|
276
276
|
const args: InputMap = { prev_kernel_public_inputs, kernel_vk };
|
|
277
277
|
const { returnValue } = await program.execute(args, foreignCallHandler);
|
|
@@ -279,7 +279,7 @@ export async function MockPrivateKernelTail(prev_kernel_public_inputs: PrivateKe
|
|
|
279
279
|
}
|
|
280
280
|
export type MockRollupBasePublicInputType = {
|
|
281
281
|
tube_data: TubeData;
|
|
282
|
-
verification_key:
|
|
282
|
+
verification_key: FixedLengthArray<Field, 1000>;
|
|
283
283
|
proof: FixedLengthArray<Field, 20000>;
|
|
284
284
|
public_inputs: AvmCircuitPublicInputs;
|
|
285
285
|
}
|
|
@@ -287,7 +287,7 @@ export type MockRollupBasePublicInputType = {
|
|
|
287
287
|
export type MockRollupBasePublicReturnType = RollupPublicInputs;
|
|
288
288
|
|
|
289
289
|
|
|
290
|
-
export async function MockRollupBasePublic(tube_data: TubeData, verification_key:
|
|
290
|
+
export async function MockRollupBasePublic(tube_data: TubeData, verification_key: FixedLengthArray<Field, 1000>, proof: FixedLengthArray<Field, 20000>, public_inputs: AvmCircuitPublicInputs, MockRollupBasePublic_circuit: CompiledCircuit, foreignCallHandler?: ForeignCallHandler): Promise<RollupPublicInputs> {
|
|
291
291
|
const program = new Noir(MockRollupBasePublic_circuit);
|
|
292
292
|
const args: InputMap = { tube_data, verification_key, proof, public_inputs };
|
|
293
293
|
const { returnValue } = await program.execute(args, foreignCallHandler);
|
package/src/witgen.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AVM_CIRCUIT_PUBLIC_INPUTS_LENGTH,
|
|
3
3
|
AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED,
|
|
4
|
+
AVM_V2_VERIFICATION_KEY_LENGTH_IN_FIELDS_PADDED,
|
|
4
5
|
CLIENT_IVC_VERIFICATION_KEY_LENGTH_IN_FIELDS,
|
|
5
6
|
} from '@aztec/constants';
|
|
6
7
|
import { Fr } from '@aztec/foundation/fields';
|
|
@@ -8,7 +9,7 @@ import { applyStringFormatting, createLogger } from '@aztec/foundation/log';
|
|
|
8
9
|
import { type ForeignCallInput, type ForeignCallOutput, Noir } from '@aztec/noir-noir_js';
|
|
9
10
|
import type { AvmCircuitPublicInputs } from '@aztec/stdlib/avm';
|
|
10
11
|
import type { RecursiveProof } from '@aztec/stdlib/proofs';
|
|
11
|
-
import { VerificationKeyAsFields } from '@aztec/stdlib/vks';
|
|
12
|
+
import type { VerificationKeyAsFields } from '@aztec/stdlib/vks';
|
|
12
13
|
|
|
13
14
|
import { strict as assert } from 'assert';
|
|
14
15
|
|
|
@@ -48,30 +49,29 @@ import type {
|
|
|
48
49
|
MockRollupRootInputType,
|
|
49
50
|
PrivateKernelPublicInputs,
|
|
50
51
|
RollupPublicInputs,
|
|
51
|
-
VerificationKey,
|
|
52
52
|
} from './types/index.js';
|
|
53
53
|
|
|
54
54
|
// Re export the circuit jsons
|
|
55
55
|
export {
|
|
56
56
|
MockAppCreatorCircuit,
|
|
57
|
-
MockAppCreatorVk,
|
|
58
57
|
MockAppReaderCircuit,
|
|
59
|
-
MockAppReaderVk,
|
|
60
58
|
MockPrivateKernelInitCircuit,
|
|
61
|
-
MockPrivateKernelInitVk,
|
|
62
59
|
MockPrivateKernelInnerCircuit,
|
|
63
|
-
MockPrivateKernelInnerVk,
|
|
64
60
|
MockPrivateKernelResetCircuit,
|
|
65
|
-
MockPrivateKernelResetVk,
|
|
66
61
|
MockPrivateKernelTailCircuit,
|
|
67
|
-
MockPrivateKernelTailVk,
|
|
68
|
-
MockRollupBasePrivateCircuit,
|
|
69
|
-
MockRollupBasePrivateVk,
|
|
70
62
|
MockRollupBasePublicCircuit,
|
|
71
|
-
|
|
63
|
+
MockRollupBasePrivateCircuit,
|
|
72
64
|
MockRollupMergeCircuit,
|
|
73
|
-
MockRollupMergeVk,
|
|
74
65
|
MockRollupRootCircuit,
|
|
66
|
+
MockAppCreatorVk,
|
|
67
|
+
MockAppReaderVk,
|
|
68
|
+
MockPrivateKernelInitVk,
|
|
69
|
+
MockPrivateKernelInnerVk,
|
|
70
|
+
MockPrivateKernelResetVk,
|
|
71
|
+
MockPrivateKernelTailVk,
|
|
72
|
+
MockRollupBasePublicVk,
|
|
73
|
+
MockRollupBasePrivateVk,
|
|
74
|
+
MockRollupMergeVk,
|
|
75
75
|
MockRollupRootVk,
|
|
76
76
|
};
|
|
77
77
|
|
|
@@ -79,14 +79,11 @@ export {
|
|
|
79
79
|
|
|
80
80
|
const log = createLogger('aztec:ivc-test');
|
|
81
81
|
|
|
82
|
-
export
|
|
83
|
-
|
|
84
|
-
}: {
|
|
82
|
+
export function getVkAsFields(vk: {
|
|
83
|
+
keyAsBytes: string;
|
|
85
84
|
keyAsFields: string[];
|
|
86
|
-
}):
|
|
87
|
-
|
|
88
|
-
const vk = await VerificationKeyAsFields.fromKey(key);
|
|
89
|
-
return mapVerificationKeyToNoir(vk, CLIENT_IVC_VERIFICATION_KEY_LENGTH_IN_FIELDS);
|
|
85
|
+
}): FixedLengthArray<string, typeof CLIENT_IVC_VERIFICATION_KEY_LENGTH_IN_FIELDS> {
|
|
86
|
+
return vk.keyAsFields as FixedLengthArray<string, typeof CLIENT_IVC_VERIFICATION_KEY_LENGTH_IN_FIELDS>;
|
|
90
87
|
}
|
|
91
88
|
|
|
92
89
|
export const MOCK_MAX_COMMITMENTS_PER_TX = 4;
|
|
@@ -233,13 +230,13 @@ export async function generate3FunctionTestingIVCStack(): Promise<
|
|
|
233
230
|
const initWitnessGenResult = await witnessGenMockPrivateKernelInitCircuit({
|
|
234
231
|
app_inputs: appWitnessGenResult.publicInputs,
|
|
235
232
|
tx,
|
|
236
|
-
app_vk:
|
|
233
|
+
app_vk: getVkAsFields(MockAppCreatorVk),
|
|
237
234
|
});
|
|
238
235
|
log.debug('generated mock private kernel init witness');
|
|
239
236
|
|
|
240
237
|
const tailWitnessGenResult = await witnessGenMockPrivateKernelTailCircuit({
|
|
241
238
|
prev_kernel_public_inputs: initWitnessGenResult.publicInputs,
|
|
242
|
-
kernel_vk:
|
|
239
|
+
kernel_vk: getVkAsFields(MockPrivateKernelInitVk),
|
|
243
240
|
});
|
|
244
241
|
log.debug('generated mock private kernel tail witness');
|
|
245
242
|
|
|
@@ -273,13 +270,13 @@ export async function generate6FunctionTestingIVCStack(): Promise<
|
|
|
273
270
|
const initWitnessGenResult = await witnessGenMockPrivateKernelInitCircuit({
|
|
274
271
|
app_inputs: creatorAppWitnessGenResult.publicInputs,
|
|
275
272
|
tx,
|
|
276
|
-
app_vk:
|
|
273
|
+
app_vk: getVkAsFields(MockAppCreatorVk),
|
|
277
274
|
});
|
|
278
275
|
const innerWitnessGenResult = await witnessGenMockPrivateKernelInnerCircuit({
|
|
279
276
|
prev_kernel_public_inputs: initWitnessGenResult.publicInputs,
|
|
280
277
|
app_inputs: readerAppWitnessGenResult.publicInputs,
|
|
281
|
-
app_vk:
|
|
282
|
-
kernel_vk:
|
|
278
|
+
app_vk: getVkAsFields(MockAppReaderVk),
|
|
279
|
+
kernel_vk: getVkAsFields(MockPrivateKernelInitVk),
|
|
283
280
|
});
|
|
284
281
|
|
|
285
282
|
const resetWitnessGenResult = await witnessGenMockPrivateKernelResetCircuit({
|
|
@@ -290,12 +287,12 @@ export async function generate6FunctionTestingIVCStack(): Promise<
|
|
|
290
287
|
MOCK_MAX_COMMITMENTS_PER_TX.toString(),
|
|
291
288
|
MOCK_MAX_COMMITMENTS_PER_TX.toString(),
|
|
292
289
|
],
|
|
293
|
-
kernel_vk:
|
|
290
|
+
kernel_vk: getVkAsFields(MockPrivateKernelInnerVk),
|
|
294
291
|
});
|
|
295
292
|
|
|
296
293
|
const tailWitnessGenResult = await witnessGenMockPrivateKernelTailCircuit({
|
|
297
294
|
prev_kernel_public_inputs: resetWitnessGenResult.publicInputs,
|
|
298
|
-
kernel_vk:
|
|
295
|
+
kernel_vk: getVkAsFields(MockPrivateKernelResetVk),
|
|
299
296
|
});
|
|
300
297
|
|
|
301
298
|
// Create client IVC proof
|
|
@@ -355,6 +352,18 @@ export function mapVerificationKeyToNoir<N extends number>(
|
|
|
355
352
|
};
|
|
356
353
|
}
|
|
357
354
|
|
|
355
|
+
export function mapAvmVerificationKeyToNoir(
|
|
356
|
+
vk: Fr[],
|
|
357
|
+
): FixedLengthArray<string, typeof AVM_V2_VERIFICATION_KEY_LENGTH_IN_FIELDS_PADDED> {
|
|
358
|
+
if (vk.length != AVM_V2_VERIFICATION_KEY_LENGTH_IN_FIELDS_PADDED) {
|
|
359
|
+
throw new Error('Invalid number of AVM verification key fields');
|
|
360
|
+
}
|
|
361
|
+
return vk.map(field => field.toString()) as FixedLengthArray<
|
|
362
|
+
string,
|
|
363
|
+
typeof AVM_V2_VERIFICATION_KEY_LENGTH_IN_FIELDS_PADDED
|
|
364
|
+
>;
|
|
365
|
+
}
|
|
366
|
+
|
|
358
367
|
export function mapAvmPublicInputsToNoir(
|
|
359
368
|
publicInputs: AvmCircuitPublicInputs,
|
|
360
369
|
): FixedLengthArray<string, typeof AVM_CIRCUIT_PUBLIC_INPUTS_LENGTH> {
|