@aztec/ivc-integration 1.0.0 → 1.1.2
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 +2 -1
- package/dest/prove_native.d.ts.map +1 -1
- package/dest/prove_native.js +2 -1
- package/dest/types/index.d.ts +17 -17
- package/dest/types/index.d.ts.map +1 -1
- package/dest/witgen.d.ts +6 -8
- package/dest/witgen.d.ts.map +1 -1
- package/dest/witgen.js +14 -17
- package/package.json +16 -16
- package/src/prove_native.ts +3 -3
- package/src/types/index.ts +18 -18
- package/src/witgen.ts +26 -35
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 type
|
|
32
|
+
import { VerificationKeyAsFields, 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: VerificationKeyAsFields;
|
|
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: await VerificationKeyAsFields.fromKey(vk),
|
|
263
263
|
publicInputs: avmCircuitInputs.publicInputs,
|
|
264
264
|
};
|
|
265
265
|
}
|
package/src/types/index.ts
CHANGED
|
@@ -22,6 +22,11 @@ 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
|
+
|
|
25
30
|
export type PrivateKernelPublicInputs = {
|
|
26
31
|
remaining_calls: u32;
|
|
27
32
|
commitments: FixedLengthArray<Field, 4>;
|
|
@@ -35,12 +40,7 @@ export type KernelPublicInputs = {
|
|
|
35
40
|
export type TubeData = {
|
|
36
41
|
public_inputs: KernelPublicInputs;
|
|
37
42
|
proof: FixedLengthArray<Field, 535>;
|
|
38
|
-
vk_data: VerificationKey
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export type VerificationKey = {
|
|
42
|
-
key: FixedLengthArray<Field, 113>;
|
|
43
|
-
hash: Field;
|
|
43
|
+
vk_data: VerificationKey<113>;
|
|
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<113>;
|
|
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: VerificationKey<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: VerificationKey<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: VerificationKey<127>;
|
|
238
238
|
app_inputs: AppPublicInputs;
|
|
239
|
-
app_vk:
|
|
239
|
+
app_vk: VerificationKey<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: VerificationKey<127>, app_inputs: AppPublicInputs, app_vk: VerificationKey<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: VerificationKey<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: VerificationKey<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: VerificationKey<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: VerificationKey<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: VerificationKey<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: VerificationKey<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,7 +1,6 @@
|
|
|
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,
|
|
5
4
|
CLIENT_IVC_VERIFICATION_KEY_LENGTH_IN_FIELDS,
|
|
6
5
|
} from '@aztec/constants';
|
|
7
6
|
import { Fr } from '@aztec/foundation/fields';
|
|
@@ -9,7 +8,7 @@ import { applyStringFormatting, createLogger } from '@aztec/foundation/log';
|
|
|
9
8
|
import { type ForeignCallInput, type ForeignCallOutput, Noir } from '@aztec/noir-noir_js';
|
|
10
9
|
import type { AvmCircuitPublicInputs } from '@aztec/stdlib/avm';
|
|
11
10
|
import type { RecursiveProof } from '@aztec/stdlib/proofs';
|
|
12
|
-
import
|
|
11
|
+
import { VerificationKeyAsFields } from '@aztec/stdlib/vks';
|
|
13
12
|
|
|
14
13
|
import { strict as assert } from 'assert';
|
|
15
14
|
|
|
@@ -49,29 +48,30 @@ import type {
|
|
|
49
48
|
MockRollupRootInputType,
|
|
50
49
|
PrivateKernelPublicInputs,
|
|
51
50
|
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
|
-
MockAppReaderCircuit,
|
|
58
|
-
MockPrivateKernelInitCircuit,
|
|
59
|
-
MockPrivateKernelInnerCircuit,
|
|
60
|
-
MockPrivateKernelResetCircuit,
|
|
61
|
-
MockPrivateKernelTailCircuit,
|
|
62
|
-
MockRollupBasePublicCircuit,
|
|
63
|
-
MockRollupBasePrivateCircuit,
|
|
64
|
-
MockRollupMergeCircuit,
|
|
65
|
-
MockRollupRootCircuit,
|
|
66
57
|
MockAppCreatorVk,
|
|
58
|
+
MockAppReaderCircuit,
|
|
67
59
|
MockAppReaderVk,
|
|
60
|
+
MockPrivateKernelInitCircuit,
|
|
68
61
|
MockPrivateKernelInitVk,
|
|
62
|
+
MockPrivateKernelInnerCircuit,
|
|
69
63
|
MockPrivateKernelInnerVk,
|
|
64
|
+
MockPrivateKernelResetCircuit,
|
|
70
65
|
MockPrivateKernelResetVk,
|
|
66
|
+
MockPrivateKernelTailCircuit,
|
|
71
67
|
MockPrivateKernelTailVk,
|
|
72
|
-
|
|
68
|
+
MockRollupBasePrivateCircuit,
|
|
73
69
|
MockRollupBasePrivateVk,
|
|
70
|
+
MockRollupBasePublicCircuit,
|
|
71
|
+
MockRollupBasePublicVk,
|
|
72
|
+
MockRollupMergeCircuit,
|
|
74
73
|
MockRollupMergeVk,
|
|
74
|
+
MockRollupRootCircuit,
|
|
75
75
|
MockRollupRootVk,
|
|
76
76
|
};
|
|
77
77
|
|
|
@@ -79,11 +79,14 @@ export {
|
|
|
79
79
|
|
|
80
80
|
const log = createLogger('aztec:ivc-test');
|
|
81
81
|
|
|
82
|
-
export function getVkAsFields(
|
|
83
|
-
|
|
82
|
+
export async function getVkAsFields({
|
|
83
|
+
keyAsFields,
|
|
84
|
+
}: {
|
|
84
85
|
keyAsFields: string[];
|
|
85
|
-
}):
|
|
86
|
-
|
|
86
|
+
}): Promise<VerificationKey<typeof CLIENT_IVC_VERIFICATION_KEY_LENGTH_IN_FIELDS>> {
|
|
87
|
+
const key = keyAsFields.map(f => Fr.fromString(f));
|
|
88
|
+
const vk = await VerificationKeyAsFields.fromKey(key);
|
|
89
|
+
return mapVerificationKeyToNoir(vk, CLIENT_IVC_VERIFICATION_KEY_LENGTH_IN_FIELDS);
|
|
87
90
|
}
|
|
88
91
|
|
|
89
92
|
export const MOCK_MAX_COMMITMENTS_PER_TX = 4;
|
|
@@ -230,13 +233,13 @@ export async function generate3FunctionTestingIVCStack(): Promise<
|
|
|
230
233
|
const initWitnessGenResult = await witnessGenMockPrivateKernelInitCircuit({
|
|
231
234
|
app_inputs: appWitnessGenResult.publicInputs,
|
|
232
235
|
tx,
|
|
233
|
-
app_vk: getVkAsFields(MockAppCreatorVk),
|
|
236
|
+
app_vk: await getVkAsFields(MockAppCreatorVk),
|
|
234
237
|
});
|
|
235
238
|
log.debug('generated mock private kernel init witness');
|
|
236
239
|
|
|
237
240
|
const tailWitnessGenResult = await witnessGenMockPrivateKernelTailCircuit({
|
|
238
241
|
prev_kernel_public_inputs: initWitnessGenResult.publicInputs,
|
|
239
|
-
kernel_vk: getVkAsFields(MockPrivateKernelInitVk),
|
|
242
|
+
kernel_vk: await getVkAsFields(MockPrivateKernelInitVk),
|
|
240
243
|
});
|
|
241
244
|
log.debug('generated mock private kernel tail witness');
|
|
242
245
|
|
|
@@ -270,13 +273,13 @@ export async function generate6FunctionTestingIVCStack(): Promise<
|
|
|
270
273
|
const initWitnessGenResult = await witnessGenMockPrivateKernelInitCircuit({
|
|
271
274
|
app_inputs: creatorAppWitnessGenResult.publicInputs,
|
|
272
275
|
tx,
|
|
273
|
-
app_vk: getVkAsFields(MockAppCreatorVk),
|
|
276
|
+
app_vk: await getVkAsFields(MockAppCreatorVk),
|
|
274
277
|
});
|
|
275
278
|
const innerWitnessGenResult = await witnessGenMockPrivateKernelInnerCircuit({
|
|
276
279
|
prev_kernel_public_inputs: initWitnessGenResult.publicInputs,
|
|
277
280
|
app_inputs: readerAppWitnessGenResult.publicInputs,
|
|
278
|
-
app_vk: getVkAsFields(MockAppReaderVk),
|
|
279
|
-
kernel_vk: getVkAsFields(MockPrivateKernelInitVk),
|
|
281
|
+
app_vk: await getVkAsFields(MockAppReaderVk),
|
|
282
|
+
kernel_vk: await getVkAsFields(MockPrivateKernelInitVk),
|
|
280
283
|
});
|
|
281
284
|
|
|
282
285
|
const resetWitnessGenResult = await witnessGenMockPrivateKernelResetCircuit({
|
|
@@ -287,12 +290,12 @@ export async function generate6FunctionTestingIVCStack(): Promise<
|
|
|
287
290
|
MOCK_MAX_COMMITMENTS_PER_TX.toString(),
|
|
288
291
|
MOCK_MAX_COMMITMENTS_PER_TX.toString(),
|
|
289
292
|
],
|
|
290
|
-
kernel_vk: getVkAsFields(MockPrivateKernelInnerVk),
|
|
293
|
+
kernel_vk: await getVkAsFields(MockPrivateKernelInnerVk),
|
|
291
294
|
});
|
|
292
295
|
|
|
293
296
|
const tailWitnessGenResult = await witnessGenMockPrivateKernelTailCircuit({
|
|
294
297
|
prev_kernel_public_inputs: resetWitnessGenResult.publicInputs,
|
|
295
|
-
kernel_vk: getVkAsFields(MockPrivateKernelResetVk),
|
|
298
|
+
kernel_vk: await getVkAsFields(MockPrivateKernelResetVk),
|
|
296
299
|
});
|
|
297
300
|
|
|
298
301
|
// Create client IVC proof
|
|
@@ -352,18 +355,6 @@ export function mapVerificationKeyToNoir<N extends number>(
|
|
|
352
355
|
};
|
|
353
356
|
}
|
|
354
357
|
|
|
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
|
-
|
|
367
358
|
export function mapAvmPublicInputsToNoir(
|
|
368
359
|
publicInputs: AvmCircuitPublicInputs,
|
|
369
360
|
): FixedLengthArray<string, typeof AVM_CIRCUIT_PUBLIC_INPUTS_LENGTH> {
|