@aztec/ivc-integration 0.85.0 → 0.86.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 (39) 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 +3 -19
  4. package/artifacts/keys/app_reader.vk.data.json +3 -19
  5. package/artifacts/keys/mock_private_kernel_init.vk.data.json +1 -17
  6. package/artifacts/keys/mock_private_kernel_inner.vk.data.json +1 -17
  7. package/artifacts/keys/mock_private_kernel_reset.vk.data.json +69 -85
  8. package/artifacts/keys/mock_private_kernel_tail.vk.data.json +1 -17
  9. package/artifacts/keys/mock_rollup_base_private.vk.data.json +85 -111
  10. package/artifacts/keys/mock_rollup_base_public.vk.data.json +85 -111
  11. package/artifacts/keys/mock_rollup_merge.vk.data.json +85 -111
  12. package/artifacts/keys/mock_rollup_root.vk.data.json +86 -102
  13. package/artifacts/keys/mock_rollup_root_verifier.sol +42 -42
  14. package/artifacts/mock_private_kernel_init.json +1 -1
  15. package/artifacts/mock_private_kernel_inner.json +1 -1
  16. package/artifacts/mock_private_kernel_reset.json +1 -1
  17. package/artifacts/mock_private_kernel_tail.json +1 -1
  18. package/artifacts/mock_rollup_base_private.json +1 -1
  19. package/artifacts/mock_rollup_base_public.json +1 -1
  20. package/artifacts/mock_rollup_merge.json +1 -1
  21. package/artifacts/mock_rollup_root.json +1 -1
  22. package/dest/bb_working_directory.d.ts +2 -0
  23. package/dest/bb_working_directory.d.ts.map +1 -0
  24. package/dest/bb_working_directory.js +10 -0
  25. package/dest/prove_native.d.ts.map +1 -1
  26. package/dest/prove_native.js +15 -4
  27. package/dest/prove_wasm.d.ts +2 -0
  28. package/dest/prove_wasm.d.ts.map +1 -1
  29. package/dest/prove_wasm.js +20 -1
  30. package/dest/types/index.d.ts +10 -10
  31. package/dest/witgen.d.ts +0 -3
  32. package/dest/witgen.d.ts.map +1 -1
  33. package/dest/witgen.js +0 -42
  34. package/package.json +19 -21
  35. package/src/bb_working_directory.ts +9 -0
  36. package/src/prove_native.ts +13 -8
  37. package/src/prove_wasm.ts +26 -1
  38. package/src/types/index.ts +10 -10
  39. package/src/witgen.ts +0 -26
package/src/prove_wasm.ts CHANGED
@@ -1,9 +1,33 @@
1
+ import { createLogger } from '@aztec/foundation/log';
2
+ import { ClientIvcProof } from '@aztec/stdlib/proofs';
3
+
4
+ import os from 'os';
1
5
  import { ungzip } from 'pako';
2
6
 
7
+ const logger = createLogger('ivc-integration:prove_wasm');
8
+
3
9
  function base64ToUint8Array(base64: string): Uint8Array {
4
10
  return Uint8Array.from(atob(base64), c => c.charCodeAt(0));
5
11
  }
6
12
 
13
+ export async function proveClientIVC(
14
+ bytecodes: string[],
15
+ witnessStack: Uint8Array[],
16
+ threads?: number,
17
+ ): Promise<ClientIvcProof> {
18
+ const { AztecClientBackend } = await import('@aztec/bb.js');
19
+ const backend = new AztecClientBackend(
20
+ bytecodes.map(base64ToUint8Array).map((arr: Uint8Array) => ungzip(arr)),
21
+ { threads: threads || Math.min(os.cpus().length, 16), logger: logger.info },
22
+ );
23
+ try {
24
+ const [proof] = await backend.prove(witnessStack.map((arr: Uint8Array) => ungzip(arr)));
25
+ return new ClientIvcProof(Buffer.from(proof));
26
+ } finally {
27
+ await backend.destroy();
28
+ }
29
+ }
30
+
7
31
  export async function proveThenVerifyAztecClient(
8
32
  bytecodes: string[],
9
33
  witnessStack: Uint8Array[],
@@ -12,9 +36,10 @@ export async function proveThenVerifyAztecClient(
12
36
  const { AztecClientBackend } = await import('@aztec/bb.js');
13
37
  const backend = new AztecClientBackend(
14
38
  bytecodes.map(base64ToUint8Array).map((arr: Uint8Array) => ungzip(arr)),
15
- { threads },
39
+ { threads: threads || Math.min(os.cpus().length, 16), logger: logger.info },
16
40
  );
17
41
  try {
42
+ // These are optional - easier not to pass them.
18
43
  const [proof, vk] = await backend.prove(witnessStack.map((arr: Uint8Array) => ungzip(arr)));
19
44
  const verified = await backend.verify(proof, vk);
20
45
  return verified;
@@ -37,7 +37,7 @@ export type TubeData = {
37
37
  }
38
38
 
39
39
  export type VerificationKey = {
40
- key: FixedLengthArray<Field, 139>;
40
+ key: FixedLengthArray<Field, 113>;
41
41
  hash: Field;
42
42
  }
43
43
 
@@ -81,13 +81,13 @@ export async function AppReader(commitments_to_read: FixedLengthArray<Field, 2>,
81
81
  export type MockPrivateKernelInitInputType = {
82
82
  tx: TxRequest;
83
83
  app_inputs: AppPublicInputs;
84
- app_vk: FixedLengthArray<Field, 143>;
84
+ app_vk: FixedLengthArray<Field, 127>;
85
85
  }
86
86
 
87
87
  export type MockPrivateKernelInitReturnType = PrivateKernelPublicInputs;
88
88
 
89
89
 
90
- export async function MockPrivateKernelInit(tx: TxRequest, app_inputs: AppPublicInputs, app_vk: FixedLengthArray<Field, 143>, MockPrivateKernelInit_circuit: CompiledCircuit, foreignCallHandler?: ForeignCallHandler): Promise<PrivateKernelPublicInputs> {
90
+ export async function MockPrivateKernelInit(tx: TxRequest, app_inputs: AppPublicInputs, app_vk: FixedLengthArray<Field, 127>, MockPrivateKernelInit_circuit: CompiledCircuit, foreignCallHandler?: ForeignCallHandler): Promise<PrivateKernelPublicInputs> {
91
91
  const program = new Noir(MockPrivateKernelInit_circuit);
92
92
  const args: InputMap = { tx, app_inputs, app_vk };
93
93
  const { returnValue } = await program.execute(args, foreignCallHandler);
@@ -95,15 +95,15 @@ export async function MockPrivateKernelInit(tx: TxRequest, app_inputs: AppPublic
95
95
  }
96
96
  export type MockPrivateKernelInnerInputType = {
97
97
  prev_kernel_public_inputs: PrivateKernelPublicInputs;
98
- kernel_vk: FixedLengthArray<Field, 143>;
98
+ kernel_vk: FixedLengthArray<Field, 127>;
99
99
  app_inputs: AppPublicInputs;
100
- app_vk: FixedLengthArray<Field, 143>;
100
+ app_vk: FixedLengthArray<Field, 127>;
101
101
  }
102
102
 
103
103
  export type MockPrivateKernelInnerReturnType = PrivateKernelPublicInputs;
104
104
 
105
105
 
106
- export async function MockPrivateKernelInner(prev_kernel_public_inputs: PrivateKernelPublicInputs, kernel_vk: FixedLengthArray<Field, 143>, app_inputs: AppPublicInputs, app_vk: FixedLengthArray<Field, 143>, MockPrivateKernelInner_circuit: CompiledCircuit, foreignCallHandler?: ForeignCallHandler): Promise<PrivateKernelPublicInputs> {
106
+ 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> {
107
107
  const program = new Noir(MockPrivateKernelInner_circuit);
108
108
  const args: InputMap = { prev_kernel_public_inputs, kernel_vk, app_inputs, app_vk };
109
109
  const { returnValue } = await program.execute(args, foreignCallHandler);
@@ -111,14 +111,14 @@ export async function MockPrivateKernelInner(prev_kernel_public_inputs: PrivateK
111
111
  }
112
112
  export type MockPrivateKernelResetInputType = {
113
113
  prev_kernel_public_inputs: PrivateKernelPublicInputs;
114
- kernel_vk: FixedLengthArray<Field, 143>;
114
+ kernel_vk: FixedLengthArray<Field, 127>;
115
115
  commitment_read_hints: FixedLengthArray<u32, 4>;
116
116
  }
117
117
 
118
118
  export type MockPrivateKernelResetReturnType = PrivateKernelPublicInputs;
119
119
 
120
120
 
121
- export async function MockPrivateKernelReset(prev_kernel_public_inputs: PrivateKernelPublicInputs, kernel_vk: FixedLengthArray<Field, 143>, commitment_read_hints: FixedLengthArray<u32, 4>, MockPrivateKernelReset_circuit: CompiledCircuit, foreignCallHandler?: ForeignCallHandler): Promise<PrivateKernelPublicInputs> {
121
+ 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> {
122
122
  const program = new Noir(MockPrivateKernelReset_circuit);
123
123
  const args: InputMap = { prev_kernel_public_inputs, kernel_vk, commitment_read_hints };
124
124
  const { returnValue } = await program.execute(args, foreignCallHandler);
@@ -126,13 +126,13 @@ export async function MockPrivateKernelReset(prev_kernel_public_inputs: PrivateK
126
126
  }
127
127
  export type MockPrivateKernelTailInputType = {
128
128
  prev_kernel_public_inputs: PrivateKernelPublicInputs;
129
- kernel_vk: FixedLengthArray<Field, 143>;
129
+ kernel_vk: FixedLengthArray<Field, 127>;
130
130
  }
131
131
 
132
132
  export type MockPrivateKernelTailReturnType = KernelPublicInputs;
133
133
 
134
134
 
135
- export async function MockPrivateKernelTail(prev_kernel_public_inputs: PrivateKernelPublicInputs, kernel_vk: FixedLengthArray<Field, 143>, MockPrivateKernelTail_circuit: CompiledCircuit, foreignCallHandler?: ForeignCallHandler): Promise<KernelPublicInputs> {
135
+ export async function MockPrivateKernelTail(prev_kernel_public_inputs: PrivateKernelPublicInputs, kernel_vk: FixedLengthArray<Field, 127>, MockPrivateKernelTail_circuit: CompiledCircuit, foreignCallHandler?: ForeignCallHandler): Promise<KernelPublicInputs> {
136
136
  const program = new Noir(MockPrivateKernelTail_circuit);
137
137
  const args: InputMap = { prev_kernel_public_inputs, kernel_vk };
138
138
  const { returnValue } = await program.execute(args, foreignCallHandler);
package/src/witgen.ts CHANGED
@@ -6,10 +6,7 @@ import {
6
6
  } from '@aztec/constants';
7
7
  import { Fr } from '@aztec/foundation/fields';
8
8
  import { type ForeignCallOutput, Noir } from '@aztec/noir-noir_js';
9
- import type { PublicTxSimulationTester } from '@aztec/simulator/server';
10
9
  import type { AvmCircuitPublicInputs } from '@aztec/stdlib/avm';
11
- import { AztecAddress } from '@aztec/stdlib/aztec-address';
12
- import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
13
10
  import type { RecursiveProof } from '@aztec/stdlib/proofs';
14
11
  import type { VerificationKeyAsFields } from '@aztec/stdlib/vks';
15
12
 
@@ -348,26 +345,3 @@ export function mapAvmPublicInputsToNoir(
348
345
  }
349
346
  return serialized.map(x => x.toString()) as FixedLengthArray<string, typeof AVM_V2_PUBLIC_INPUTS_FLATTENED_SIZE>;
350
347
  }
351
-
352
- export async function simulateAvmBulkTesting(
353
- simTester: PublicTxSimulationTester,
354
- contractInstance: ContractInstanceWithAddress,
355
- ) {
356
- const argsField = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => new Fr(x));
357
- const argsU8 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => new Fr(x));
358
- const args = [
359
- argsField,
360
- argsU8,
361
- /*getInstanceForAddress=*/ contractInstance.address.toField(),
362
- /*expectedDeployer=*/ contractInstance.deployer.toField(),
363
- /*expectedClassId=*/ contractInstance.currentContractClassId.toField(),
364
- /*expectedInitializationHash=*/ contractInstance.initializationHash.toField(),
365
- ];
366
-
367
- return await simTester.simulateTx(
368
- /*sender=*/ AztecAddress.fromNumber(42),
369
- /*setupCalls=*/ [],
370
- /*appCalls=*/ [{ address: contractInstance.address, fnName: 'bulk_testing', args }],
371
- /*teardownCall=*/ undefined,
372
- );
373
- }