@aztec/pxe 0.40.0 → 0.41.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 (71) hide show
  1. package/dest/database/kv_pxe_database.d.ts +1 -1
  2. package/dest/database/kv_pxe_database.js +2 -2
  3. package/dest/database/pxe_database.d.ts +5 -5
  4. package/dest/kernel_oracle/index.d.ts +7 -4
  5. package/dest/kernel_oracle/index.d.ts.map +1 -1
  6. package/dest/kernel_oracle/index.js +20 -4
  7. package/dest/kernel_prover/kernel_prover.d.ts.map +1 -1
  8. package/dest/kernel_prover/kernel_prover.js +17 -17
  9. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_init_hints.d.ts +3 -0
  10. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_init_hints.d.ts.map +1 -0
  11. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_init_hints.js +11 -0
  12. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_hints.d.ts +4 -0
  13. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_hints.d.ts.map +1 -0
  14. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_hints.js +59 -0
  15. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_outputs.d.ts +4 -0
  16. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_outputs.d.ts.map +1 -0
  17. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_outputs.js +12 -0
  18. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.d.ts +1 -2
  19. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.d.ts.map +1 -1
  20. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.js +7 -53
  21. package/dest/kernel_prover/private_inputs_builders/index.d.ts +3 -1
  22. package/dest/kernel_prover/private_inputs_builders/index.d.ts.map +1 -1
  23. package/dest/kernel_prover/private_inputs_builders/index.js +4 -2
  24. package/dest/kernel_prover/proving_data_oracle.d.ts +8 -6
  25. package/dest/kernel_prover/proving_data_oracle.d.ts.map +1 -1
  26. package/dest/kernel_prover/test/test_circuit_prover.d.ts +2 -1
  27. package/dest/kernel_prover/test/test_circuit_prover.d.ts.map +1 -1
  28. package/dest/kernel_prover/test/test_circuit_prover.js +14 -3
  29. package/dest/note_processor/note_processor.d.ts +2 -1
  30. package/dest/note_processor/note_processor.d.ts.map +1 -1
  31. package/dest/note_processor/note_processor.js +3 -2
  32. package/dest/note_processor/produce_note_dao.js +4 -20
  33. package/dest/pxe_service/create_pxe_service.d.ts +1 -1
  34. package/dest/pxe_service/create_pxe_service.d.ts.map +1 -1
  35. package/dest/pxe_service/create_pxe_service.js +6 -5
  36. package/dest/pxe_service/pxe_service.d.ts +5 -4
  37. package/dest/pxe_service/pxe_service.d.ts.map +1 -1
  38. package/dest/pxe_service/pxe_service.js +10 -12
  39. package/dest/pxe_service/test/pxe_test_suite.js +2 -2
  40. package/dest/simulator/index.d.ts +2 -1
  41. package/dest/simulator/index.d.ts.map +1 -1
  42. package/dest/simulator/index.js +1 -1
  43. package/dest/simulator_oracle/index.d.ts +6 -5
  44. package/dest/simulator_oracle/index.d.ts.map +1 -1
  45. package/dest/simulator_oracle/index.js +7 -8
  46. package/dest/synchronizer/synchronizer.d.ts +2 -1
  47. package/dest/synchronizer/synchronizer.d.ts.map +1 -1
  48. package/dest/synchronizer/synchronizer.js +8 -8
  49. package/package.json +14 -14
  50. package/src/database/kv_pxe_database.ts +2 -2
  51. package/src/database/pxe_database.ts +5 -5
  52. package/src/kernel_oracle/index.ts +29 -4
  53. package/src/kernel_prover/kernel_prover.ts +35 -26
  54. package/src/kernel_prover/private_inputs_builders/build_private_kernel_init_hints.ts +28 -0
  55. package/src/kernel_prover/private_inputs_builders/build_private_kernel_reset_hints.ts +179 -0
  56. package/src/kernel_prover/private_inputs_builders/{build_private_kernel_tail_outputs.ts → build_private_kernel_reset_outputs.ts} +14 -3
  57. package/src/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.ts +17 -126
  58. package/src/kernel_prover/private_inputs_builders/index.ts +3 -1
  59. package/src/kernel_prover/proving_data_oracle.ts +9 -5
  60. package/src/kernel_prover/test/test_circuit_prover.ts +24 -3
  61. package/src/note_processor/note_processor.ts +3 -2
  62. package/src/note_processor/produce_note_dao.ts +3 -19
  63. package/src/pxe_service/create_pxe_service.ts +9 -6
  64. package/src/pxe_service/pxe_service.ts +14 -12
  65. package/src/pxe_service/test/pxe_test_suite.ts +1 -1
  66. package/src/simulator/index.ts +2 -1
  67. package/src/simulator_oracle/index.ts +9 -9
  68. package/src/synchronizer/synchronizer.ts +8 -14
  69. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_tail_outputs.d.ts +0 -4
  70. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_tail_outputs.d.ts.map +0 -1
  71. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_tail_outputs.js +0 -10
@@ -40,7 +40,7 @@ export declare class KVPxeDatabase implements PxeDatabase {
40
40
  getBlockNumber(): number | undefined;
41
41
  getHeader(): Header;
42
42
  addCompleteAddress(completeAddress: CompleteAddress): Promise<boolean>;
43
- getCompleteAddress(address: AztecAddress): Promise<CompleteAddress | undefined>;
43
+ getCompleteAddress(account: AztecAddress): Promise<CompleteAddress | undefined>;
44
44
  getCompleteAddresses(): Promise<CompleteAddress[]>;
45
45
  getSynchedBlockNumberForPublicKey(publicKey: Point): number | undefined;
46
46
  setSynchedBlockNumberForPublicKey(publicKey: Point, blockNumber: number): Promise<void>;
@@ -240,8 +240,8 @@ export class KVPxeDatabase {
240
240
  }
241
241
  });
242
242
  }
243
- getCompleteAddress(address) {
244
- return Promise.resolve(__classPrivateFieldGet(this, _KVPxeDatabase_instances, "m", _KVPxeDatabase_getCompleteAddress).call(this, address));
243
+ getCompleteAddress(account) {
244
+ return Promise.resolve(__classPrivateFieldGet(this, _KVPxeDatabase_instances, "m", _KVPxeDatabase_getCompleteAddress).call(this, account));
245
245
  }
246
246
  getCompleteAddresses() {
247
247
  return Promise.resolve(Array.from(__classPrivateFieldGet(this, _KVPxeDatabase_addresses, "f")).map(v => CompleteAddress.fromBuffer(v)));
@@ -115,13 +115,13 @@ export interface PxeDatabase extends ContractArtifactDatabase, ContractInstanceD
115
115
  */
116
116
  addCompleteAddress(address: CompleteAddress): Promise<boolean>;
117
117
  /**
118
- * Retrieves the complete address corresponding to the provided aztec address.
119
- * @param address - The aztec address of the complete address contract.
120
- * @returns A promise that resolves to a CompleteAddress instance if the address is found, or undefined if not found.
118
+ * Retrieve the complete address associated to a given address.
119
+ * @param account - The account address.
120
+ * @returns A promise that resolves to a CompleteAddress instance if found, or undefined if not found.
121
121
  */
122
- getCompleteAddress(address: AztecAddress): Promise<CompleteAddress | undefined>;
122
+ getCompleteAddress(account: AztecAddress): Promise<CompleteAddress | undefined>;
123
123
  /**
124
- * Retrieves the list of complete address added to this database
124
+ * Retrieves the list of complete addresses added to this database
125
125
  * @returns A promise that resolves to an array of AztecAddress instances.
126
126
  */
127
127
  getCompleteAddresses(): Promise<CompleteAddress[]>;
@@ -1,5 +1,6 @@
1
- import { type AztecNode, type KeyStore } from '@aztec/circuit-types';
2
- import { type AztecAddress, type Fr, type FunctionSelector, MembershipWitness, type NOTE_HASH_TREE_HEIGHT, type Point } from '@aztec/circuits.js';
1
+ import { type AztecNode } from '@aztec/circuit-types';
2
+ import { type AztecAddress, type Fr, type FunctionSelector, type GrumpkinPrivateKey, type KeyGenerator, MembershipWitness, type NOTE_HASH_TREE_HEIGHT, type Point } from '@aztec/circuits.js';
3
+ import { type KeyStore } from '@aztec/key-store';
3
4
  import { type ContractDataOracle } from '../contract_data_oracle/index.js';
4
5
  import { type ProvingDataOracle } from './../kernel_prover/proving_data_oracle.js';
5
6
  /**
@@ -9,7 +10,8 @@ export declare class KernelOracle implements ProvingDataOracle {
9
10
  private contractDataOracle;
10
11
  private keyStore;
11
12
  private node;
12
- constructor(contractDataOracle: ContractDataOracle, keyStore: KeyStore, node: AztecNode);
13
+ private log;
14
+ constructor(contractDataOracle: ContractDataOracle, keyStore: KeyStore, node: AztecNode, log?: import("@aztec/foundation/log").Logger);
13
15
  getContractAddressPreimage(address: AztecAddress): Promise<{
14
16
  version: 1;
15
17
  salt: Fr;
@@ -25,6 +27,7 @@ export declare class KernelOracle implements ProvingDataOracle {
25
27
  getNoteHashMembershipWitness(leafIndex: bigint): Promise<MembershipWitness<typeof NOTE_HASH_TREE_HEIGHT>>;
26
28
  getNullifierMembershipWitness(nullifier: Fr): Promise<import("@aztec/circuit-types").NullifierMembershipWitness | undefined>;
27
29
  getNoteHashTreeRoot(): Promise<Fr>;
28
- getMasterNullifierSecretKey(nullifierPublicKey: Point): Promise<import("@aztec/circuits.js").Fq>;
30
+ getMasterSecretKeyAndAppKeyGenerator(masterPublicKey: Point): Promise<[GrumpkinPrivateKey, KeyGenerator]>;
31
+ getFunctionName(contractAddress: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
29
32
  }
30
33
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/kernel_oracle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,EAAE,EACP,KAAK,gBAAgB,EACrB,iBAAiB,EACjB,KAAK,qBAAqB,EAC1B,KAAK,KAAK,EAGX,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAInF;;GAEG;AACH,qBAAa,YAAa,YAAW,iBAAiB;IACxC,OAAO,CAAC,kBAAkB;IAAsB,OAAO,CAAC,QAAQ;IAAY,OAAO,CAAC,IAAI;gBAAhF,kBAAkB,EAAE,kBAAkB,EAAU,QAAQ,EAAE,QAAQ,EAAU,IAAI,EAAE,SAAS;IAElG,0BAA0B,CAAC,OAAO,EAAE,YAAY;;;;;;;;;IAQhD,0BAA0B,CAAC,eAAe,EAAE,EAAE;IAK9C,4BAA4B,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB;IAItF,sBAAsB;IAI7B,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,qBAAqB,CAAC,CAAC;IAS/G,6BAA6B,CAAC,SAAS,EAAE,EAAE;IAIrC,mBAAmB,IAAI,OAAO,CAAC,EAAE,CAAC;IAKjC,2BAA2B,CAAC,kBAAkB,EAAE,KAAK;CAG7D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/kernel_oracle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,EAAE,EACP,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,iBAAiB,EACjB,KAAK,qBAAqB,EAC1B,KAAK,KAAK,EAGX,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAInF;;GAEG;AACH,qBAAa,YAAa,YAAW,iBAAiB;IAElD,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,GAAG;gBAHH,kBAAkB,EAAE,kBAAkB,EACtC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,SAAS,EACf,GAAG,yCAA+C;IAG/C,0BAA0B,CAAC,OAAO,EAAE,YAAY;;;;;;;;;IAQhD,0BAA0B,CAAC,eAAe,EAAE,EAAE;IAK9C,4BAA4B,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB;IAItF,sBAAsB;IAI7B,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,qBAAqB,CAAC,CAAC;IAS/G,6BAA6B,CAAC,SAAS,EAAE,EAAE;IAIrC,mBAAmB,IAAI,OAAO,CAAC,EAAE,CAAC;IAKjC,oCAAoC,CAAC,eAAe,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;IAInG,eAAe,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAerH"}
@@ -1,14 +1,16 @@
1
1
  import { MembershipWitness, computeContractClassIdPreimage, computeSaltedInitializationHash, } from '@aztec/circuits.js';
2
+ import { createDebugLogger } from '@aztec/foundation/log';
2
3
  // TODO: Block number should not be "latest".
3
4
  // It should be fixed at the time the proof is being simulated. I.e., it should be the same as the value defined in the constant data.
4
5
  /**
5
6
  * A data oracle that provides information needed for simulating a transaction.
6
7
  */
7
8
  export class KernelOracle {
8
- constructor(contractDataOracle, keyStore, node) {
9
+ constructor(contractDataOracle, keyStore, node, log = createDebugLogger('aztec:pxe:kernel_oracle')) {
9
10
  this.contractDataOracle = contractDataOracle;
10
11
  this.keyStore = keyStore;
11
12
  this.node = node;
13
+ this.log = log;
12
14
  }
13
15
  async getContractAddressPreimage(address) {
14
16
  const instance = await this.contractDataOracle.getContractInstance(address);
@@ -38,8 +40,22 @@ export class KernelOracle {
38
40
  const header = await this.node.getHeader();
39
41
  return header.state.partial.noteHashTree.root;
40
42
  }
41
- getMasterNullifierSecretKey(nullifierPublicKey) {
42
- return this.keyStore.getMasterNullifierSecretKeyForPublicKey(nullifierPublicKey);
43
+ getMasterSecretKeyAndAppKeyGenerator(masterPublicKey) {
44
+ return this.keyStore.getMasterSecretKeyAndAppKeyGenerator(masterPublicKey);
45
+ }
46
+ async getFunctionName(contractAddress, selector) {
47
+ try {
48
+ const contractInstance = await this.contractDataOracle.getContractInstance(contractAddress);
49
+ const [contractArtifact, functionArtifact] = await Promise.all([
50
+ this.contractDataOracle.getContractArtifact(contractInstance.contractClassId),
51
+ this.contractDataOracle.getFunctionArtifact(contractAddress, selector),
52
+ ]);
53
+ return `${contractArtifact.name}:${functionArtifact.name}`;
54
+ }
55
+ catch (e) {
56
+ this.log.error(`Failed to get function name for contract ${contractAddress} and selector ${selector}: ${e}`);
57
+ return 'Unknown';
58
+ }
43
59
  }
44
60
  }
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMva2VybmVsX29yYWNsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBSUwsaUJBQWlCLEVBR2pCLDhCQUE4QixFQUM5QiwrQkFBK0IsR0FDaEMsTUFBTSxvQkFBb0IsQ0FBQztBQU01Qiw2Q0FBNkM7QUFDN0Msc0lBQXNJO0FBQ3RJOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFlBQVk7SUFDdkIsWUFBb0Isa0JBQXNDLEVBQVUsUUFBa0IsRUFBVSxJQUFlO1FBQTNGLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBVztJQUFHLENBQUM7SUFFNUcsS0FBSyxDQUFDLDBCQUEwQixDQUFDLE9BQXFCO1FBQzNELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVFLE9BQU87WUFDTCx3QkFBd0IsRUFBRSwrQkFBK0IsQ0FBQyxRQUFRLENBQUM7WUFDbkUsR0FBRyxRQUFRO1NBQ1osQ0FBQztJQUNKLENBQUM7SUFFTSxLQUFLLENBQUMsMEJBQTBCLENBQUMsZUFBbUI7UUFDekQsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdEYsT0FBTyw4QkFBOEIsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRU0sS0FBSyxDQUFDLDRCQUE0QixDQUFDLGVBQTZCLEVBQUUsUUFBMEI7UUFDakcsT0FBTyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw0QkFBNEIsQ0FBQyxlQUFlLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVNLEtBQUssQ0FBQyxzQkFBc0I7UUFDakMsT0FBTyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hFLENBQUM7SUFFRCxLQUFLLENBQUMsNEJBQTRCLENBQUMsU0FBaUI7UUFDbEQsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN6RSxPQUFPLElBQUksaUJBQWlCLENBQzFCLElBQUksQ0FBQyxRQUFRLEVBQ2IsU0FBUyxFQUNULElBQUksQ0FBQyxRQUFRLEVBQTZDLENBQzNELENBQUM7SUFDSixDQUFDO0lBRUQsNkJBQTZCLENBQUMsU0FBYTtRQUN6QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxLQUFLLENBQUMsbUJBQW1CO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMzQyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFDaEQsQ0FBQztJQUVNLDJCQUEyQixDQUFDLGtCQUF5QjtRQUMxRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsdUNBQXVDLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNuRixDQUFDO0NBQ0YifQ==
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMva2VybmVsX29yYWNsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBTUwsaUJBQWlCLEVBR2pCLDhCQUE4QixFQUM5QiwrQkFBK0IsR0FDaEMsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQU8xRCw2Q0FBNkM7QUFDN0Msc0lBQXNJO0FBQ3RJOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFlBQVk7SUFDdkIsWUFDVSxrQkFBc0MsRUFDdEMsUUFBa0IsRUFDbEIsSUFBZSxFQUNmLE1BQU0saUJBQWlCLENBQUMseUJBQXlCLENBQUM7UUFIbEQsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFNBQUksR0FBSixJQUFJLENBQVc7UUFDZixRQUFHLEdBQUgsR0FBRyxDQUErQztJQUN6RCxDQUFDO0lBRUcsS0FBSyxDQUFDLDBCQUEwQixDQUFDLE9BQXFCO1FBQzNELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVFLE9BQU87WUFDTCx3QkFBd0IsRUFBRSwrQkFBK0IsQ0FBQyxRQUFRLENBQUM7WUFDbkUsR0FBRyxRQUFRO1NBQ1osQ0FBQztJQUNKLENBQUM7SUFFTSxLQUFLLENBQUMsMEJBQTBCLENBQUMsZUFBbUI7UUFDekQsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdEYsT0FBTyw4QkFBOEIsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRU0sS0FBSyxDQUFDLDRCQUE0QixDQUFDLGVBQTZCLEVBQUUsUUFBMEI7UUFDakcsT0FBTyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw0QkFBNEIsQ0FBQyxlQUFlLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVNLEtBQUssQ0FBQyxzQkFBc0I7UUFDakMsT0FBTyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hFLENBQUM7SUFFRCxLQUFLLENBQUMsNEJBQTRCLENBQUMsU0FBaUI7UUFDbEQsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN6RSxPQUFPLElBQUksaUJBQWlCLENBQzFCLElBQUksQ0FBQyxRQUFRLEVBQ2IsU0FBUyxFQUNULElBQUksQ0FBQyxRQUFRLEVBQTZDLENBQzNELENBQUM7SUFDSixDQUFDO0lBRUQsNkJBQTZCLENBQUMsU0FBYTtRQUN6QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxLQUFLLENBQUMsbUJBQW1CO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMzQyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFDaEQsQ0FBQztJQUVNLG9DQUFvQyxDQUFDLGVBQXNCO1FBQ2hFLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQ0FBb0MsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxlQUE2QixFQUFFLFFBQTBCO1FBQ3BGLElBQUksQ0FBQztZQUNILE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7WUFFNUYsTUFBTSxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDO2dCQUM3RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDO2dCQUM3RSxJQUFJLENBQUMsa0JBQWtCLENBQUMsbUJBQW1CLENBQUMsZUFBZSxFQUFFLFFBQVEsQ0FBQzthQUN2RSxDQUFDLENBQUM7WUFFSCxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxJQUFJLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdELENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsNENBQTRDLGVBQWUsaUJBQWlCLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzdHLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"kernel_prover.d.ts","sourceRoot":"","sources":["../../src/kernel_prover/kernel_prover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAYL,KAAK,oCAAoC,EAGzC,KAAK,SAAS,EAIf,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAAE,KAAK,eAAe,EAAiE,MAAM,kBAAkB,CAAC;AAOvH,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE;;;;;GAKG;AACH,qBAAa,YAAY;IAGX,OAAO,CAAC,MAAM;IAAqB,OAAO,CAAC,YAAY;IAFnE,OAAO,CAAC,GAAG,CAA4C;gBAEnC,MAAM,EAAE,iBAAiB,EAAU,YAAY,EAAE,YAAY;IAEjF;;;;;;;;;OASG;IACG,KAAK,CACT,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,iBAAiB,CAAC,oCAAoC,CAAC,CAAC;YAuFrD,qBAAqB;CA+CpC"}
1
+ {"version":3,"file":"kernel_prover.d.ts","sourceRoot":"","sources":["../../src/kernel_prover/kernel_prover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAWL,KAAK,oCAAoC,EAGzC,KAAK,SAAS,EAIf,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAAE,KAAK,eAAe,EAAiE,MAAM,kBAAkB,CAAC;AAQvH,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE;;;;;GAKG;AACH,qBAAa,YAAY;IAGX,OAAO,CAAC,MAAM;IAAqB,OAAO,CAAC,YAAY;IAFnE,OAAO,CAAC,GAAG,CAA4C;gBAEnC,MAAM,EAAE,iBAAiB,EAAU,YAAY,EAAE,YAAY;IAEjF;;;;;;;;;OASG;IACG,KAAK,CACT,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,iBAAiB,CAAC,oCAAoC,CAAC,CAAC;YAwGrD,qBAAqB;CAuCpC"}
@@ -1,10 +1,10 @@
1
- import { CallRequest, Fr, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, NESTED_RECURSIVE_PROOF_LENGTH, PrivateCallData, PrivateKernelCircuitPublicInputs, PrivateKernelData, PrivateKernelInitCircuitPrivateInputs, PrivateKernelInnerCircuitPrivateInputs, PrivateKernelTailCircuitPrivateInputs, VK_TREE_HEIGHT, VerificationKeyAsFields, makeRecursiveProof, } from '@aztec/circuits.js';
1
+ import { CallRequest, Fr, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, NESTED_RECURSIVE_PROOF_LENGTH, PrivateCallData, PrivateKernelCircuitPublicInputs, PrivateKernelData, PrivateKernelInitCircuitPrivateInputs, PrivateKernelInnerCircuitPrivateInputs, PrivateKernelTailCircuitPrivateInputs, VK_TREE_HEIGHT, VerificationKeyAsFields, makeRecursiveProof, } from '@aztec/circuits.js';
2
2
  import { padArrayEnd } from '@aztec/foundation/collection';
3
3
  import { createDebugLogger } from '@aztec/foundation/log';
4
4
  import { assertLength } from '@aztec/foundation/serialize';
5
5
  import { pushTestData } from '@aztec/foundation/testing';
6
6
  import { collectNoteHashLeafIndexMap, collectNullifiedNoteHashCounters } from '@aztec/simulator';
7
- import { buildPrivateKernelInnerHints, buildPrivateKernelTailHints, buildPrivateKernelTailOutputs, } from './private_inputs_builders/index.js';
7
+ import { buildPrivateKernelInitHints, buildPrivateKernelInnerHints, buildPrivateKernelResetInputs, buildPrivateKernelTailHints, } from './private_inputs_builders/index.js';
8
8
  /**
9
9
  * The KernelProver class is responsible for generating kernel proofs.
10
10
  * It takes a transaction request, its signature, and the simulation result as inputs, and outputs a proof
@@ -39,21 +39,22 @@ export class KernelProver {
39
39
  const noteHashNullifierCounterMap = collectNullifiedNoteHashCounters(executionResult);
40
40
  while (executionStack.length) {
41
41
  const currentExecution = executionStack.pop();
42
- executionStack.push(...currentExecution.nestedExecutions);
43
- const privateCallRequests = currentExecution.nestedExecutions.map(result => result.callStackItem.toCallRequest(currentExecution.callStackItem.publicInputs.callContext));
42
+ executionStack.push(...[...currentExecution.nestedExecutions].reverse());
44
43
  const publicCallRequests = currentExecution.enqueuedPublicFunctionCalls.map(result => result.toCallRequest());
45
44
  const publicTeardownCallRequest = currentExecution.publicTeardownFunctionCall.isEmpty()
46
45
  ? CallRequest.empty()
47
46
  : currentExecution.publicTeardownFunctionCall.toCallRequest();
48
- const proofOutput = await this.proofCreator.createAppCircuitProof(currentExecution.partialWitness, currentExecution.acir);
49
- const privateCallData = await this.createPrivateCallData(currentExecution, privateCallRequests, publicCallRequests, publicTeardownCallRequest, proofOutput.proof, proofOutput.verificationKey);
50
- const hints = buildPrivateKernelInnerHints(currentExecution.callStackItem.publicInputs, noteHashNullifierCounterMap);
47
+ const functionName = await this.oracle.getFunctionName(currentExecution.callStackItem.contractAddress, currentExecution.callStackItem.functionData.selector);
48
+ const proofOutput = await this.proofCreator.createAppCircuitProof(currentExecution.partialWitness, currentExecution.acir, functionName);
49
+ const privateCallData = await this.createPrivateCallData(currentExecution, publicCallRequests, publicTeardownCallRequest, proofOutput.proof, proofOutput.verificationKey);
51
50
  if (firstIteration) {
51
+ const hints = buildPrivateKernelInitHints(currentExecution.callStackItem.publicInputs, noteHashNullifierCounterMap, currentExecution.callStackItem.publicInputs.privateCallRequests);
52
52
  const proofInput = new PrivateKernelInitCircuitPrivateInputs(txRequest, privateCallData, hints);
53
53
  pushTestData('private-kernel-inputs-init', proofInput);
54
54
  output = await this.proofCreator.createProofInit(proofInput);
55
55
  }
56
56
  else {
57
+ const hints = buildPrivateKernelInnerHints(currentExecution.callStackItem.publicInputs, noteHashNullifierCounterMap);
57
58
  const previousVkMembershipWitness = await this.oracle.getVkMembershipWitness(output.verificationKey);
58
59
  const previousKernelData = new PrivateKernelData(output.publicInputs, output.proof, output.verificationKey, Number(previousVkMembershipWitness.leafIndex), assertLength(previousVkMembershipWitness.siblingPath, VK_TREE_HEIGHT));
59
60
  const proofInput = new PrivateKernelInnerCircuitPrivateInputs(previousKernelData, privateCallData, hints);
@@ -62,19 +63,19 @@ export class KernelProver {
62
63
  }
63
64
  firstIteration = false;
64
65
  }
65
- const previousVkMembershipWitness = await this.oracle.getVkMembershipWitness(output.verificationKey);
66
- const previousKernelData = new PrivateKernelData(output.publicInputs, output.proof, output.verificationKey, Number(previousVkMembershipWitness.leafIndex), assertLength(previousVkMembershipWitness.siblingPath, VK_TREE_HEIGHT));
66
+ let previousVkMembershipWitness = await this.oracle.getVkMembershipWitness(output.verificationKey);
67
+ let previousKernelData = new PrivateKernelData(output.publicInputs, output.proof, output.verificationKey, Number(previousVkMembershipWitness.leafIndex), assertLength(previousVkMembershipWitness.siblingPath, VK_TREE_HEIGHT));
68
+ output = await this.proofCreator.createProofReset(await buildPrivateKernelResetInputs(previousKernelData, noteHashLeafIndexMap, this.oracle));
69
+ previousVkMembershipWitness = await this.oracle.getVkMembershipWitness(output.verificationKey);
70
+ previousKernelData = new PrivateKernelData(output.publicInputs, output.proof, output.verificationKey, Number(previousVkMembershipWitness.leafIndex), assertLength(previousVkMembershipWitness.siblingPath, VK_TREE_HEIGHT));
67
71
  this.log.debug(`Calling private kernel tail with hwm ${previousKernelData.publicInputs.minRevertibleSideEffectCounter}`);
68
- const hints = await buildPrivateKernelTailHints(output.publicInputs, noteHashLeafIndexMap, this.oracle);
69
- const expectedOutputs = buildPrivateKernelTailOutputs(hints.sortedNewNoteHashes, hints.sortedNewNullifiers);
70
- const privateInputs = new PrivateKernelTailCircuitPrivateInputs(previousKernelData, expectedOutputs, hints);
72
+ const hints = buildPrivateKernelTailHints(output.publicInputs);
73
+ const privateInputs = new PrivateKernelTailCircuitPrivateInputs(previousKernelData, hints);
71
74
  pushTestData('private-kernel-inputs-ordering', privateInputs);
72
75
  return await this.proofCreator.createProofTail(privateInputs);
73
76
  }
74
- async createPrivateCallData({ callStackItem }, privateCallRequests, publicCallRequests, publicTeardownCallRequest, proof, vk) {
77
+ async createPrivateCallData({ callStackItem }, publicCallRequests, publicTeardownCallRequest, proof, vk) {
75
78
  const { contractAddress, functionData } = callStackItem;
76
- // Pad with empty items to reach max/const length expected by circuit.
77
- const privateCallStack = padArrayEnd(privateCallRequests, CallRequest.empty(), MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL);
78
79
  const publicCallStack = padArrayEnd(publicCallRequests, CallRequest.empty(), MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL);
79
80
  const functionLeafMembershipWitness = await this.oracle.getFunctionMembershipWitness(contractAddress, functionData.selector);
80
81
  const { contractClassId, publicKeysHash, saltedInitializationHash } = await this.oracle.getContractAddressPreimage(contractAddress);
@@ -84,7 +85,6 @@ export class KernelProver {
84
85
  const acirHash = Fr.fromBuffer(Buffer.alloc(32, 0));
85
86
  return PrivateCallData.from({
86
87
  callStackItem,
87
- privateCallStack,
88
88
  publicCallStack,
89
89
  publicTeardownCallRequest,
90
90
  proof,
@@ -98,4 +98,4 @@ export class KernelProver {
98
98
  });
99
99
  }
100
100
  }
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2VybmVsX3Byb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9rZXJuZWxfcHJvdmVyL2tlcm5lbF9wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLFdBQVcsRUFDWCxFQUFFLEVBQ0Ysc0NBQXNDLEVBQ3RDLHFDQUFxQyxFQUNyQyw2QkFBNkIsRUFDN0IsZUFBZSxFQUNmLGdDQUFnQyxFQUNoQyxpQkFBaUIsRUFDakIscUNBQXFDLEVBQ3JDLHNDQUFzQyxFQUN0QyxxQ0FBcUMsRUFLckMsY0FBYyxFQUNkLHVCQUF1QixFQUN2QixrQkFBa0IsR0FDbkIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQXdCLDJCQUEyQixFQUFFLGdDQUFnQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFdkgsT0FBTyxFQUNMLDRCQUE0QixFQUM1QiwyQkFBMkIsRUFDM0IsNkJBQTZCLEdBQzlCLE1BQU0sb0NBQW9DLENBQUM7QUFHNUM7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUd2QixZQUFvQixNQUF5QixFQUFVLFlBQTBCO1FBQTdELFdBQU0sR0FBTixNQUFNLENBQW1CO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFGekUsUUFBRyxHQUFHLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFFNkIsQ0FBQztJQUVyRjs7Ozs7Ozs7O09BU0c7SUFDSCxLQUFLLENBQUMsS0FBSyxDQUNULFNBQW9CLEVBQ3BCLGVBQWdDO1FBRWhDLE1BQU0sY0FBYyxHQUFHLENBQUMs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
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2VybmVsX3Byb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9rZXJuZWxfcHJvdmVyL2tlcm5lbF9wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLFdBQVcsRUFDWCxFQUFFLEVBQ0YscUNBQXFDLEVBQ3JDLDZCQUE2QixFQUM3QixlQUFlLEVBQ2YsZ0NBQWdDLEVBQ2hDLGlCQUFpQixFQUNqQixxQ0FBcUMsRUFDckMsc0NBQXNDLEVBQ3RDLHFDQUFxQyxFQUtyQyxjQUFjLEVBQ2QsdUJBQXVCLEVBQ3ZCLGtCQUFrQixHQUNuQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBd0IsMkJBQTJCLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV2SCxPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLDRCQUE0QixFQUM1Qiw2QkFBNkIsRUFDN0IsMkJBQTJCLEdBQzVCLE1BQU0sb0NBQW9DLENBQUM7QUFHNUM7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUd2QixZQUFvQixNQUF5QixFQUFVLFlBQTBCO1FBQTdELFdBQU0sR0FBTixNQUFNLENBQW1CO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFGekUsUUFBRyxHQUFHLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFFNkIsQ0FBQztJQUVyRjs7Ozs7Ozs7O09BU0c7SUFDSCxLQUFLLENBQUMsS0FBSyxDQUNULFNBQW9CLEVBQ3BCLGVBQWdDO1FBRWhDLE1BQU0sY0FBYyxHQUFHLENBQUMs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
@@ -0,0 +1,3 @@
1
+ import { type PrivateCallRequest, type PrivateCircuitPublicInputs, PrivateKernelInitHints } from '@aztec/circuits.js';
2
+ export declare function buildPrivateKernelInitHints(publicInputs: PrivateCircuitPublicInputs, noteHashNullifierCounterMap: Map<number, number>, privateCallRequests: PrivateCallRequest[]): PrivateKernelInitHints;
3
+ //# sourceMappingURL=build_private_kernel_init_hints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build_private_kernel_init_hints.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/private_inputs_builders/build_private_kernel_init_hints.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,sBAAsB,EAEvB,MAAM,oBAAoB,CAAC;AAG5B,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,0BAA0B,EACxC,2BAA2B,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAChD,mBAAmB,EAAE,kBAAkB,EAAE,0BAe1C"}
@@ -0,0 +1,11 @@
1
+ import { PrivateKernelInitHints, countAccumulatedItems, } from '@aztec/circuits.js';
2
+ export function buildPrivateKernelInitHints(publicInputs, noteHashNullifierCounterMap, privateCallRequests) {
3
+ const nullifierCounters = publicInputs.newNoteHashes.map(n => noteHashNullifierCounterMap.get(n.counter) ?? 0);
4
+ const minRevertibleCounter = publicInputs.minRevertibleSideEffectCounter.toNumber();
5
+ let firstRevertiblePrivateCallRequestIndex = privateCallRequests.findIndex(r => r.startSideEffectCounter >= minRevertibleCounter);
6
+ if (firstRevertiblePrivateCallRequestIndex === -1) {
7
+ firstRevertiblePrivateCallRequestIndex = countAccumulatedItems(privateCallRequests);
8
+ }
9
+ return new PrivateKernelInitHints(nullifierCounters, firstRevertiblePrivateCallRequestIndex);
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRfcHJpdmF0ZV9rZXJuZWxfaW5pdF9oaW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9rZXJuZWxfcHJvdmVyL3ByaXZhdGVfaW5wdXRzX2J1aWxkZXJzL2J1aWxkX3ByaXZhdGVfa2VybmVsX2luaXRfaGludHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlMLHNCQUFzQixFQUN0QixxQkFBcUIsR0FDdEIsTUFBTSxvQkFBb0IsQ0FBQztBQUc1QixNQUFNLFVBQVUsMkJBQTJCLENBQ3pDLFlBQXdDLEVBQ3hDLDJCQUFnRCxFQUNoRCxtQkFBeUM7SUFFekMsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDdEQsQ0FBQyxDQUFDLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FDQyxDQUFDO0lBRXhELE1BQU0sb0JBQW9CLEdBQUcsWUFBWSxDQUFDLDhCQUE4QixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BGLElBQUksc0NBQXNDLEdBQUcsbUJBQW1CLENBQUMsU0FBUyxDQUN4RSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsSUFBSSxvQkFBb0IsQ0FDdEQsQ0FBQztJQUNGLElBQUksc0NBQXNDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNsRCxzQ0FBc0MsR0FBRyxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRCxPQUFPLElBQUksc0JBQXNCLENBQUMsaUJBQWlCLEVBQUUsc0NBQXNDLENBQUMsQ0FBQztBQUMvRixDQUFDIn0=
@@ -0,0 +1,4 @@
1
+ import { type PrivateKernelData, type PrivateKernelResetCircuitPrivateInputsVariants } from '@aztec/circuits.js';
2
+ import { type ProvingDataOracle } from '../proving_data_oracle.js';
3
+ export declare function buildPrivateKernelResetInputs(previousKernelData: PrivateKernelData, noteHashLeafIndexMap: Map<bigint, bigint>, oracle: ProvingDataOracle): Promise<PrivateKernelResetCircuitPrivateInputsVariants>;
4
+ //# sourceMappingURL=build_private_kernel_reset_hints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build_private_kernel_reset_hints.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/private_inputs_builders/build_private_kernel_reset_hints.ts"],"names":[],"mappings":"AAAA,OAAO,EAYL,KAAK,iBAAiB,EAEtB,KAAK,8CAA8C,EAQpD,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AA0DnE,wBAAsB,6BAA6B,CACjD,kBAAkB,EAAE,iBAAiB,EACrC,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACzC,MAAM,EAAE,iBAAiB,2DA2F1B"}
@@ -0,0 +1,59 @@
1
+ import { Fr, KeyValidationHint, MAX_KEY_VALIDATION_REQUESTS_PER_TX, MAX_NEW_NOTE_HASHES_PER_TX, MAX_NEW_NULLIFIERS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX, MembershipWitness, NULLIFIER_TREE_HEIGHT, PRIVATE_RESET_VARIANTS, PrivateKernelResetCircuitPrivateInputs, PrivateKernelResetHints, buildNoteHashReadRequestHints, buildNullifierReadRequestHints, buildTransientDataHints, } from '@aztec/circuits.js';
2
+ import { makeTuple } from '@aztec/foundation/array';
3
+ import { buildPrivateKernelResetOutputs } from './build_private_kernel_reset_outputs.js';
4
+ function getNullifierReadRequestHints(nullifierReadRequests, nullifiers, oracle, sizePending, sizeSettled) {
5
+ const getNullifierMembershipWitness = async (nullifier) => {
6
+ const res = await oracle.getNullifierMembershipWitness(nullifier);
7
+ if (!res) {
8
+ throw new Error(`Cannot find the leaf for nullifier ${nullifier.toBigInt()}.`);
9
+ }
10
+ const { index, siblingPath, leafPreimage } = res;
11
+ return {
12
+ membershipWitness: new MembershipWitness(NULLIFIER_TREE_HEIGHT, index, siblingPath.toTuple()),
13
+ leafPreimage,
14
+ };
15
+ };
16
+ return buildNullifierReadRequestHints({ getNullifierMembershipWitness }, nullifierReadRequests, nullifiers, sizePending, sizeSettled);
17
+ }
18
+ async function getMasterSecretKeysAndAppKeyGenerators(keyValidationRequests, oracle) {
19
+ const keysHints = makeTuple(MAX_KEY_VALIDATION_REQUESTS_PER_TX, KeyValidationHint.empty);
20
+ let keyIndex = 0;
21
+ for (let i = 0; i < keyValidationRequests.length; ++i) {
22
+ const request = keyValidationRequests[i].request;
23
+ if (request.isEmpty()) {
24
+ break;
25
+ }
26
+ const [secretKeys, appKeyGenerator] = await oracle.getMasterSecretKeyAndAppKeyGenerator(request.masterPublicKey);
27
+ keysHints[keyIndex] = new KeyValidationHint(secretKeys, new Fr(appKeyGenerator), i);
28
+ keyIndex++;
29
+ }
30
+ return {
31
+ keysCount: keyIndex,
32
+ keysHints,
33
+ };
34
+ }
35
+ export async function buildPrivateKernelResetInputs(previousKernelData, noteHashLeafIndexMap, oracle) {
36
+ const publicInputs = previousKernelData.publicInputs;
37
+ // Use max sizes, they will be trimmed down later.
38
+ const { numPendingReadHints: noteHashPendingReadHints, numSettledReadHints: noteHashSettledReadHints, hints: noteHashReadRequestHints, } = await buildNoteHashReadRequestHints(oracle, publicInputs.validationRequests.noteHashReadRequests, publicInputs.end.newNoteHashes, noteHashLeafIndexMap, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_TX);
39
+ const { numPendingReadHints: nullifierPendingReadHints, numSettledReadHints: nullifierSettledReadHints, hints: nullifierReadRequestHints, } = await getNullifierReadRequestHints(publicInputs.validationRequests.nullifierReadRequests, publicInputs.end.newNullifiers, oracle, MAX_NULLIFIER_READ_REQUESTS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX);
40
+ const { keysCount, keysHints } = await getMasterSecretKeysAndAppKeyGenerators(publicInputs.validationRequests.keyValidationRequests, oracle);
41
+ const [transientNullifierIndexesForNoteHashes, transientNoteHashIndexesForNullifiers, transientNoteHashIndexesForLogs,] = buildTransientDataHints(publicInputs.end.newNoteHashes, publicInputs.end.newNullifiers, publicInputs.end.noteEncryptedLogsHashes, MAX_NEW_NOTE_HASHES_PER_TX, MAX_NEW_NULLIFIERS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX);
42
+ const expectedOutputs = buildPrivateKernelResetOutputs(previousKernelData.publicInputs.end.newNoteHashes, previousKernelData.publicInputs.end.newNullifiers, previousKernelData.publicInputs.end.noteEncryptedLogsHashes);
43
+ let privateInputs;
44
+ for (const [sizeTag, hintSizes] of Object.entries(PRIVATE_RESET_VARIANTS)) {
45
+ if (hintSizes.NOTE_HASH_PENDING_AMOUNT >= noteHashPendingReadHints &&
46
+ hintSizes.NOTE_HASH_SETTLED_AMOUNT >= noteHashSettledReadHints &&
47
+ hintSizes.NULLIFIER_PENDING_AMOUNT >= nullifierPendingReadHints &&
48
+ hintSizes.NULLIFIER_SETTLED_AMOUNT >= nullifierSettledReadHints &&
49
+ hintSizes.NULLIFIER_KEYS >= keysCount) {
50
+ privateInputs = new PrivateKernelResetCircuitPrivateInputs(previousKernelData, expectedOutputs, new PrivateKernelResetHints(transientNullifierIndexesForNoteHashes, transientNoteHashIndexesForNullifiers, transientNoteHashIndexesForLogs, noteHashReadRequestHints, nullifierReadRequestHints, keysHints).trimToSizes(hintSizes.NOTE_HASH_PENDING_AMOUNT, hintSizes.NOTE_HASH_SETTLED_AMOUNT, hintSizes.NULLIFIER_PENDING_AMOUNT, hintSizes.NULLIFIER_SETTLED_AMOUNT, hintSizes.NULLIFIER_KEYS), sizeTag);
51
+ break;
52
+ }
53
+ }
54
+ if (!privateInputs) {
55
+ throw new Error('No private inputs found for the given hint sizes.');
56
+ }
57
+ return privateInputs;
58
+ }
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRfcHJpdmF0ZV9rZXJuZWxfcmVzZXRfaGludHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMva2VybmVsX3Byb3Zlci9wcml2YXRlX2lucHV0c19idWlsZGVycy9idWlsZF9wcml2YXRlX2tlcm5lbF9yZXNldF9oaW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsRUFBRSxFQUNGLGlCQUFpQixFQUNqQixrQ0FBa0MsRUFDbEMsMEJBQTBCLEVBQzFCLHlCQUF5QixFQUN6Qiw4QkFBOEIsRUFDOUIsa0NBQWtDLEVBQ2xDLGtDQUFrQyxFQUNsQyxpQkFBaUIsRUFDakIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUV0QixzQ0FBc0MsRUFFdEMsdUJBQXVCLEVBSXZCLDZCQUE2QixFQUM3Qiw4QkFBOEIsRUFDOUIsdUJBQXVCLEdBQ3hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSXBELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRXpGLFNBQVMsNEJBQTRCLENBQ25DLHFCQUEwRixFQUMxRixVQUFvRSxFQUNwRSxNQUF5QixFQUN6QixXQUFvQixFQUNwQixXQUFvQjtJQUVwQixNQUFNLDZCQUE2QixHQUFHLEtBQUssRUFBRSxTQUFhLEVBQUUsRUFBRTtRQUM1RCxNQUFNLEdBQUcsR0FBRyxNQUFNLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxTQUFTLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7UUFFRCxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDakQsT0FBTztZQUNMLGlC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
@@ -0,0 +1,4 @@
1
+ import { MAX_NEW_NOTE_HASHES_PER_TX, MAX_NEW_NULLIFIERS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX, NoteLogHash, PrivateKernelResetOutputs, ScopedNoteHash, ScopedNullifier } from '@aztec/circuits.js';
2
+ import { type Tuple } from '@aztec/foundation/serialize';
3
+ export declare function buildPrivateKernelResetOutputs(prevNoteHashes: Tuple<ScopedNoteHash, typeof MAX_NEW_NOTE_HASHES_PER_TX>, prevNullifiers: Tuple<ScopedNullifier, typeof MAX_NEW_NULLIFIERS_PER_TX>, prevLogs: Tuple<NoteLogHash, typeof MAX_NOTE_ENCRYPTED_LOGS_PER_TX>): PrivateKernelResetOutputs;
4
+ //# sourceMappingURL=build_private_kernel_reset_outputs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build_private_kernel_reset_outputs.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/private_inputs_builders/build_private_kernel_reset_outputs.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,8BAA8B,EAC9B,WAAW,EACX,yBAAyB,EACzB,cAAc,EACd,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEzD,wBAAgB,8BAA8B,CAC5C,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,OAAO,0BAA0B,CAAC,EACxE,cAAc,EAAE,KAAK,CAAC,eAAe,EAAE,OAAO,yBAAyB,CAAC,EACxE,QAAQ,EAAE,KAAK,CAAC,WAAW,EAAE,OAAO,8BAA8B,CAAC,6BAyBpE"}
@@ -0,0 +1,12 @@
1
+ import { MAX_NEW_NOTE_HASHES_PER_TX, MAX_NEW_NULLIFIERS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX, NoteLogHash, PrivateKernelResetOutputs, ScopedNoteHash, ScopedNullifier, } from '@aztec/circuits.js';
2
+ import { padArrayEnd } from '@aztec/foundation/collection';
3
+ export function buildPrivateKernelResetOutputs(prevNoteHashes, prevNullifiers, prevLogs) {
4
+ // Propagate note hashes that are not linked to a nullifier.
5
+ // Note that note hashes can't link to the first nullifier (counter == 0).
6
+ const noteHashes = padArrayEnd(prevNoteHashes.filter(n => !n.nullifierCounter), ScopedNoteHash.empty(), MAX_NEW_NOTE_HASHES_PER_TX);
7
+ const nullifiers = padArrayEnd(prevNullifiers.filter(n => n.nullifiedNoteHash.isZero()), ScopedNullifier.empty(), MAX_NEW_NULLIFIERS_PER_TX);
8
+ const nullifiedNotes = prevNoteHashes.filter(n => !n.isEmpty() && n.nullifierCounter).map(n => n.counter);
9
+ const logs = padArrayEnd(prevLogs.filter(l => !l.isEmpty() && !nullifiedNotes.includes(l.noteHashCounter)), NoteLogHash.empty(), MAX_NOTE_ENCRYPTED_LOGS_PER_TX);
10
+ return new PrivateKernelResetOutputs(noteHashes, nullifiers, logs);
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRfcHJpdmF0ZV9rZXJuZWxfcmVzZXRfb3V0cHV0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9rZXJuZWxfcHJvdmVyL3ByaXZhdGVfaW5wdXRzX2J1aWxkZXJzL2J1aWxkX3ByaXZhdGVfa2VybmVsX3Jlc2V0X291dHB1dHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLDBCQUEwQixFQUMxQix5QkFBeUIsRUFDekIsOEJBQThCLEVBQzlCLFdBQVcsRUFDWCx5QkFBeUIsRUFDekIsY0FBYyxFQUNkLGVBQWUsR0FDaEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHM0QsTUFBTSxVQUFVLDhCQUE4QixDQUM1QyxjQUF3RSxFQUN4RSxjQUF3RSxFQUN4RSxRQUFtRTtJQUVuRSw0REFBNEQ7SUFDNUQsMEVBQTBFO0lBQzFFLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FDNUIsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEVBQy9DLGNBQWMsQ0FBQyxLQUFLLEVBQUUsRUFDdEIsMEJBQTBCLENBQzNCLENBQUM7SUFFRixNQUFNLFVBQVUsR0FBRyxXQUFXLENBQzVCLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFDeEQsZUFBZSxDQUFDLEtBQUssRUFBRSxFQUN2Qix5QkFBeUIsQ0FDMUIsQ0FBQztJQUVGLE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFMUcsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUN0QixRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxFQUNqRixXQUFXLENBQUMsS0FBSyxFQUFFLEVBQ25CLDhCQUE4QixDQUMvQixDQUFDO0lBRUYsT0FBTyxJQUFJLHlCQUF5QixDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDckUsQ0FBQyJ9
@@ -1,4 +1,3 @@
1
1
  import { type PrivateKernelCircuitPublicInputs, PrivateKernelTailHints } from '@aztec/circuits.js';
2
- import { type ProvingDataOracle } from '../proving_data_oracle.js';
3
- export declare function buildPrivateKernelTailHints(publicInputs: PrivateKernelCircuitPublicInputs, noteHashLeafIndexMap: Map<bigint, bigint>, oracle: ProvingDataOracle): Promise<PrivateKernelTailHints>;
2
+ export declare function buildPrivateKernelTailHints(publicInputs: PrivateKernelCircuitPublicInputs): PrivateKernelTailHints;
4
3
  //# sourceMappingURL=build_private_kernel_tail_hints.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build_private_kernel_tail_hints.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.ts"],"names":[],"mappings":"AAAA,OAAO,EAWL,KAAK,gCAAgC,EACrC,sBAAsB,EAUvB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAmEnE,wBAAsB,2BAA2B,CAC/C,YAAY,EAAE,gCAAgC,EAC9C,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACzC,MAAM,EAAE,iBAAiB,mCA8D1B"}
1
+ {"version":3,"file":"build_private_kernel_tail_hints.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/private_inputs_builders/build_private_kernel_tail_hints.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,gCAAgC,EACrC,sBAAsB,EAEvB,MAAM,oBAAoB,CAAC;AAE5B,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,gCAAgC,0BAsCzF"}
@@ -1,56 +1,10 @@
1
- import { GrumpkinScalar, MAX_NEW_NOTE_HASHES_PER_TX, MAX_NEW_NULLIFIERS_PER_TX, MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_TX, MembershipWitness, NULLIFIER_TREE_HEIGHT, PrivateKernelTailHints, buildNoteHashReadRequestHints, buildNullifierReadRequestHints, buildTransientDataHints, sortByCounterGetSortedHints, } from '@aztec/circuits.js';
2
- import { makeTuple } from '@aztec/foundation/array';
3
- /** @deprecated Use sortByCounterGetSortedHints instead */
4
- function sortSideEffects(sideEffects) {
5
- const sorted = sideEffects
6
- .map((sideEffect, index) => ({ sideEffect, index }))
7
- .sort((a, b) => {
8
- // Empty ones go to the right
9
- if (a.sideEffect.isEmpty()) {
10
- return 1;
11
- }
12
- return Number(a.sideEffect.counter.toBigInt() - b.sideEffect.counter.toBigInt());
13
- });
14
- const originalToSorted = sorted.map(() => 0);
15
- sorted.forEach(({ index }, i) => {
16
- originalToSorted[index] = i;
17
- });
18
- return [sorted.map(({ sideEffect }) => sideEffect), originalToSorted];
19
- }
20
- function getNullifierReadRequestHints(nullifierReadRequests, nullifiers, oracle) {
21
- const getNullifierMembershipWitness = async (nullifier) => {
22
- const res = await oracle.getNullifierMembershipWitness(nullifier);
23
- if (!res) {
24
- throw new Error(`Cannot find the leaf for nullifier ${nullifier.toBigInt()}.`);
25
- }
26
- const { index, siblingPath, leafPreimage } = res;
27
- return {
28
- membershipWitness: new MembershipWitness(NULLIFIER_TREE_HEIGHT, index, siblingPath.toTuple()),
29
- leafPreimage,
30
- };
31
- };
32
- return buildNullifierReadRequestHints({ getNullifierMembershipWitness }, nullifierReadRequests, nullifiers);
33
- }
34
- async function getMasterNullifierSecretKeys(nullifierKeyValidationRequests, oracle) {
35
- const keys = makeTuple(MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_TX, GrumpkinScalar.zero);
36
- for (let i = 0; i < nullifierKeyValidationRequests.length; ++i) {
37
- const request = nullifierKeyValidationRequests[i].request;
38
- if (request.isEmpty()) {
39
- break;
40
- }
41
- keys[i] = await oracle.getMasterNullifierSecretKey(request.masterNullifierPublicKey);
42
- }
43
- return keys;
44
- }
45
- export async function buildPrivateKernelTailHints(publicInputs, noteHashLeafIndexMap, oracle) {
46
- const noteHashReadRequestHints = await buildNoteHashReadRequestHints(oracle, publicInputs.validationRequests.noteHashReadRequests, publicInputs.end.newNoteHashes, noteHashLeafIndexMap);
47
- const nullifierReadRequestHints = await getNullifierReadRequestHints(publicInputs.validationRequests.nullifierReadRequests, publicInputs.end.newNullifiers, oracle);
48
- const masterNullifierSecretKeys = await getMasterNullifierSecretKeys(publicInputs.validationRequests.nullifierKeyValidationRequests, oracle);
1
+ import { MAX_ENCRYPTED_LOGS_PER_TX, MAX_NEW_NOTE_HASHES_PER_TX, MAX_NEW_NULLIFIERS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX, MAX_UNENCRYPTED_LOGS_PER_TX, PrivateKernelTailHints, sortByCounterGetSortedHints, } from '@aztec/circuits.js';
2
+ export function buildPrivateKernelTailHints(publicInputs) {
49
3
  const [sortedNoteHashes, sortedNoteHashesIndexes] = sortByCounterGetSortedHints(publicInputs.end.newNoteHashes, MAX_NEW_NOTE_HASHES_PER_TX);
50
4
  const [sortedNullifiers, sortedNullifiersIndexes] = sortByCounterGetSortedHints(publicInputs.end.newNullifiers, MAX_NEW_NULLIFIERS_PER_TX);
51
- const [sortedEncryptedLogHashes, sortedEncryptedLogHashesIndexes] = sortSideEffects(publicInputs.end.encryptedLogsHashes);
52
- const [sortedUnencryptedLogHashes, sortedUnencryptedLogHashesIndexes] = sortSideEffects(publicInputs.end.unencryptedLogsHashes);
53
- const [transientNullifierIndexesForNoteHashes, transientNoteHashIndexesForNullifiers] = buildTransientDataHints(sortedNoteHashes, sortedNullifiers, MAX_NEW_NOTE_HASHES_PER_TX, MAX_NEW_NULLIFIERS_PER_TX);
54
- return new PrivateKernelTailHints(transientNullifierIndexesForNoteHashes, transientNoteHashIndexesForNullifiers, noteHashReadRequestHints, nullifierReadRequestHints, masterNullifierSecretKeys, sortedNoteHashes, sortedNoteHashesIndexes, sortedNullifiers, sortedNullifiersIndexes, sortedEncryptedLogHashes, sortedEncryptedLogHashesIndexes, sortedUnencryptedLogHashes, sortedUnencryptedLogHashesIndexes);
5
+ const [sortedNoteEncryptedLogHashes, sortedNoteEncryptedLogHashesIndexes] = sortByCounterGetSortedHints(publicInputs.end.noteEncryptedLogsHashes, MAX_NOTE_ENCRYPTED_LOGS_PER_TX);
6
+ const [sortedEncryptedLogHashes, sortedEncryptedLogHashesIndexes] = sortByCounterGetSortedHints(publicInputs.end.encryptedLogsHashes, MAX_ENCRYPTED_LOGS_PER_TX);
7
+ const [sortedUnencryptedLogHashes, sortedUnencryptedLogHashesIndexes] = sortByCounterGetSortedHints(publicInputs.end.unencryptedLogsHashes, MAX_UNENCRYPTED_LOGS_PER_TX);
8
+ return new PrivateKernelTailHints(sortedNoteHashes, sortedNoteHashesIndexes, sortedNullifiers, sortedNullifiersIndexes, sortedNoteEncryptedLogHashes, sortedNoteEncryptedLogHashesIndexes, sortedEncryptedLogHashes, sortedEncryptedLogHashesIndexes, sortedUnencryptedLogHashes, sortedUnencryptedLogHashesIndexes);
55
9
  }
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRfcHJpdmF0ZV9rZXJuZWxfdGFpbF9oaW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9rZXJuZWxfcHJvdmVyL3ByaXZhdGVfaW5wdXRzX2J1aWxkZXJzL2J1aWxkX3ByaXZhdGVfa2VybmVsX3RhaWxfaGludHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGNBQWMsRUFFZCwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLDRDQUE0QyxFQUc1QyxpQkFBaUIsRUFDakIscUJBQXFCLEVBRXJCLHNCQUFzQixFQU10Qiw2QkFBNkIsRUFDN0IsOEJBQThCLEVBQzlCLHVCQUF1QixFQUN2QiwyQkFBMkIsR0FDNUIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFLcEQsMERBQTBEO0FBQzFELFNBQVMsZUFBZSxDQUN0QixXQUF3QjtJQUV4QixNQUFNLE1BQU0sR0FBRyxXQUFXO1NBQ3ZCLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNuRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDYiw2QkFBNkI7UUFDN0IsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDM0IsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNuRixDQUFDLENBQUMsQ0FBQztJQUVMLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUM5QixnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBZ0IsRUFBRSxnQkFBb0MsQ0FBQyxDQUFDO0FBQzNHLENBQUM7QUFFRCxTQUFTLDRCQUE0QixDQUNuQyxxQkFBMEYsRUFDMUYsVUFBb0UsRUFDcEUsTUFBeUI7SUFFekIsTUFBTSw2QkFBNkIsR0FBRyxLQUFLLEVBQUUsU0FBYSxFQUFFLEVBQUU7UUFDNUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxNQUFNLENBQUMsNkJBQTZCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsU0FBUyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNqRixDQUFDO1FBRUQsTUFBTSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEdBQUcsR0FBRyxDQUFDO1FBQ2pELE9BQU87WUFDTCxpQkFBaUIsRUFBRSxJQUFJLGlCQUFpQixDQUN0QyxxQkFBcUIsRUFDckIsS0FBSyxFQUNMLFdBQVcsQ0FBQyxPQUFPLEVBQWdDLENBQ3BEO1lBQ0QsWUFBWTtTQUNiLENBQUM7SUFDSixDQUFDLENBQUM7SUFFRixPQUFPLDhCQUE4QixDQUFDLEVBQUUsNkJBQTZCLEVBQUUsRUFBRSxxQkFBcUIsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUM5RyxDQUFDO0FBRUQsS0FBSyxVQUFVLDRCQUE0QixDQUN6Qyw4QkFHQyxFQUNELE1BQXlCO0lBRXpCLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyw0Q0FBNEMsRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUYsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLDhCQUE4QixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQy9ELE1BQU0sT0FBTyxHQUFHLDhCQUE4QixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUMxRCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ3RCLE1BQU07UUFDUixDQUFDO1FBQ0QsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sTUFBTSxDQUFDLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLDJCQUEyQixDQUMvQyxZQUE4QyxFQUM5QyxvQkFBeUMsRUFDekMsTUFBeUI7SUFFekIsTUFBTSx3QkFBd0IsR0FBRyxNQUFNLDZCQUE2QixDQUNsRSxNQUFNLEVBQ04sWUFBWSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixFQUNwRCxZQUFZLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFDOUIsb0JBQW9CLENBQ3JCLENBQUM7SUFFRixNQUFNLHlCQUF5QixHQUFHLE1BQU0sNEJBQTRCLENBQ2xFLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxxQkFBcUIsRUFDckQsWUFBWSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQzlCLE1BQU0sQ0FDUCxDQUFDO0lBRUYsTUFBTSx5QkFBeUIsR0FBRyxNQUFNLDRCQUE0QixDQUNsRSxZQUFZLENBQUMsa0JBQWtCLENBQUMsOEJBQThCLEVBQzlELE1BQU0sQ0FDUCxDQUFDO0lBRUYsTUFBTSxDQUFDLGdCQUFnQixFQUFFLHVCQUF1QixDQUFDLEdBQUcsMkJBQTJCLENBQzdFLFlBQVksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUM5QiwwQkFBMEIsQ0FDM0IsQ0FBQztJQUVGLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSx1QkFBdUIsQ0FBQyxHQUFHLDJCQUEyQixDQUM3RSxZQUFZLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFDOUIseUJBQXlCLENBQzFCLENBQUM7SUFFRixNQUFNLENBQUMsd0JBQXdCLEVBQUUsK0JBQStCLENBQUMsR0FBRyxlQUFlLENBR2pGLFlBQVksQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUV4QyxNQUFNLENBQUMsMEJBQTBCLEVBQUUsaUNBQWlDLENBQUMsR0FBRyxlQUFlLENBR3JGLFlBQVksQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUUxQyxNQUFNLENBQUMsc0NBQXNDLEVBQUUscUNBQXFDLENBQUMsR0FBRyx1QkFBdUIsQ0FDN0csZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQiwwQkFBMEIsRUFDMUIseUJBQXlCLENBQzFCLENBQUM7SUFFRixPQUFPLElBQUksc0JBQXNCLENBQy9CLHNDQUFzQyxFQUN0QyxxQ0FBcUMsRUFDckMsd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsMEJBQTBCLEVBQzFCLGlDQUFpQyxDQUNsQyxDQUFDO0FBQ0osQ0FBQyJ9
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRfcHJpdmF0ZV9rZXJuZWxfdGFpbF9oaW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9rZXJuZWxfcHJvdmVyL3ByaXZhdGVfaW5wdXRzX2J1aWxkZXJzL2J1aWxkX3ByaXZhdGVfa2VybmVsX3RhaWxfaGludHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLDhCQUE4QixFQUM5QiwyQkFBMkIsRUFFM0Isc0JBQXNCLEVBQ3RCLDJCQUEyQixHQUM1QixNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxZQUE4QztJQUN4RixNQUFNLENBQUMsZ0JBQWdCLEVBQUUsdUJBQXVCLENBQUMsR0FBRywyQkFBMkIsQ0FDN0UsWUFBWSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQzlCLDBCQUEwQixDQUMzQixDQUFDO0lBRUYsTUFBTSxDQUFDLGdCQUFnQixFQUFFLHVCQUF1QixDQUFDLEdBQUcsMkJBQTJCLENBQzdFLFlBQVksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUM5Qix5QkFBeUIsQ0FDMUIsQ0FBQztJQUVGLE1BQU0sQ0FBQyw0QkFBNEIsRUFBRSxtQ0FBbUMsQ0FBQyxHQUFHLDJCQUEyQixDQUNyRyxZQUFZLENBQUMsR0FBRyxDQUFDLHVCQUF1QixFQUN4Qyw4QkFBOEIsQ0FDL0IsQ0FBQztJQUVGLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSwrQkFBK0IsQ0FBQyxHQUFHLDJCQUEyQixDQUM3RixZQUFZLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUNwQyx5QkFBeUIsQ0FDMUIsQ0FBQztJQUVGLE1BQU0sQ0FBQywwQkFBMEIsRUFBRSxpQ0FBaUMsQ0FBQyxHQUFHLDJCQUEyQixDQUNqRyxZQUFZLENBQUMsR0FBRyxDQUFDLHFCQUFxQixFQUN0QywyQkFBMkIsQ0FDNUIsQ0FBQztJQUVGLE9BQU8sSUFBSSxzQkFBc0IsQ0FDL0IsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLDRCQUE0QixFQUM1QixtQ0FBbUMsRUFDbkMsd0JBQXdCLEVBQ3hCLCtCQUErQixFQUMvQiwwQkFBMEIsRUFDMUIsaUNBQWlDLENBQ2xDLENBQUM7QUFDSixDQUFDIn0=
@@ -1,4 +1,6 @@
1
+ export { buildPrivateKernelInitHints } from './build_private_kernel_init_hints.js';
1
2
  export { buildPrivateKernelInnerHints } from './build_private_kernel_inner_hints.js';
2
3
  export { buildPrivateKernelTailHints } from './build_private_kernel_tail_hints.js';
3
- export { buildPrivateKernelTailOutputs } from './build_private_kernel_tail_outputs.js';
4
+ export { buildPrivateKernelResetInputs } from './build_private_kernel_reset_hints.js';
5
+ export { buildPrivateKernelResetOutputs } from './build_private_kernel_reset_outputs.js';
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/private_inputs_builders/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/private_inputs_builders/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC"}
@@ -1,4 +1,6 @@
1
+ export { buildPrivateKernelInitHints } from './build_private_kernel_init_hints.js';
1
2
  export { buildPrivateKernelInnerHints } from './build_private_kernel_inner_hints.js';
2
3
  export { buildPrivateKernelTailHints } from './build_private_kernel_tail_hints.js';
3
- export { buildPrivateKernelTailOutputs } from './build_private_kernel_tail_outputs.js';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMva2VybmVsX3Byb3Zlci9wcml2YXRlX2lucHV0c19idWlsZGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNyRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQyJ9
4
+ export { buildPrivateKernelResetInputs } from './build_private_kernel_reset_hints.js';
5
+ export { buildPrivateKernelResetOutputs } from './build_private_kernel_reset_outputs.js';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMva2VybmVsX3Byb3Zlci9wcml2YXRlX2lucHV0c19idWlsZGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNyRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQyJ9
@@ -1,5 +1,5 @@
1
1
  import { type NullifierMembershipWitness } from '@aztec/circuit-types';
2
- import { type FUNCTION_TREE_HEIGHT, type Fr, type FunctionSelector, type GrumpkinPrivateKey, type MembershipWitness, type NOTE_HASH_TREE_HEIGHT, type Point, type VK_TREE_HEIGHT, type VerificationKeyAsFields } from '@aztec/circuits.js';
2
+ import { type FUNCTION_TREE_HEIGHT, type Fr, type FunctionSelector, type GrumpkinPrivateKey, type KeyGenerator, type MembershipWitness, type NOTE_HASH_TREE_HEIGHT, type Point, type VK_TREE_HEIGHT, type VerificationKeyAsFields } from '@aztec/circuits.js';
3
3
  import { type AztecAddress } from '@aztec/foundation/aztec-address';
4
4
  /**
5
5
  * Provides functionality to fetch membership witnesses for verification keys,
@@ -53,11 +53,13 @@ export interface ProvingDataOracle {
53
53
  */
54
54
  getNoteHashTreeRoot(): Promise<Fr>;
55
55
  /**
56
- * Get the master secret key of the nullifier public key.
57
- *
58
- * @param nullifierPublicKey - The nullifier public key.
59
- * @returns the master nullifier secret key.
56
+ * Retrieves the sk_m for the pk_m and a generator index of the key type.
57
+ * @throws If the provided public key is not associated with any of the registered accounts.
58
+ * @param masterPublicKey - The master public key to get secret key for.
59
+ * @returns A Promise that resolves to sk_m and the corresponding app key generator.
60
+ * @dev Used when feeding the sk_m to the kernel circuit for keys verification.
60
61
  */
61
- getMasterNullifierSecretKey(nullifierPublicKey: Point): Promise<GrumpkinPrivateKey>;
62
+ getMasterSecretKeyAndAppKeyGenerator(masterPublicKey: Point): Promise<[GrumpkinPrivateKey, KeyGenerator]>;
63
+ getFunctionName(contractAddress: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
62
64
  }
63
65
  //# sourceMappingURL=proving_data_oracle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"proving_data_oracle.d.ts","sourceRoot":"","sources":["../../src/kernel_prover/proving_data_oracle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,EAAE,EACP,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,KAAK,EACV,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEpE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,8FAA8F;IAC9F,0BAA0B,CACxB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC;QAAE,wBAAwB,EAAE,EAAE,CAAC;QAAC,cAAc,EAAE,EAAE,CAAC;QAAC,eAAe,EAAE,EAAE,CAAA;KAAE,CAAC,CAAC;IAEtF,kFAAkF;IAClF,0BAA0B,CACxB,eAAe,EAAE,EAAE,GAClB,OAAO,CAAC;QAAE,YAAY,EAAE,EAAE,CAAC;QAAC,wBAAwB,EAAE,EAAE,CAAC;QAAC,oBAAoB,EAAE,EAAE,CAAA;KAAE,CAAC,CAAC;IAEzF;;;;;;;;OAQG;IACH,4BAA4B,CAC1B,eAAe,EAAE,YAAY,EAC7B,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,iBAAiB,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC;IAE3D;;;;;;;;OAQG;IACH,sBAAsB,CAAC,EAAE,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;IAEvG;;;;;OAKG;IACH,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC;IAE1G,6BAA6B,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC,CAAC;IAE9F;;;;OAIG;IACH,mBAAmB,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC;IAEnC;;;;;OAKG;IACH,2BAA2B,CAAC,kBAAkB,EAAE,KAAK,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACrF"}
1
+ {"version":3,"file":"proving_data_oracle.d.ts","sourceRoot":"","sources":["../../src/kernel_prover/proving_data_oracle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,EAAE,EACP,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,KAAK,EACV,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEpE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,8FAA8F;IAC9F,0BAA0B,CACxB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC;QAAE,wBAAwB,EAAE,EAAE,CAAC;QAAC,cAAc,EAAE,EAAE,CAAC;QAAC,eAAe,EAAE,EAAE,CAAA;KAAE,CAAC,CAAC;IAEtF,kFAAkF;IAClF,0BAA0B,CACxB,eAAe,EAAE,EAAE,GAClB,OAAO,CAAC;QAAE,YAAY,EAAE,EAAE,CAAC;QAAC,wBAAwB,EAAE,EAAE,CAAC;QAAC,oBAAoB,EAAE,EAAE,CAAA;KAAE,CAAC,CAAC;IAEzF;;;;;;;;OAQG;IACH,4BAA4B,CAC1B,eAAe,EAAE,YAAY,EAC7B,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,iBAAiB,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC;IAE3D;;;;;;;;OAQG;IACH,sBAAsB,CAAC,EAAE,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC;IAEvG;;;;;OAKG;IACH,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC;IAE1G,6BAA6B,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC,CAAC;IAE9F;;;;OAIG;IACH,mBAAmB,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC;IAEnC;;;;;;OAMG;IACH,oCAAoC,CAAC,eAAe,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC,CAAC;IAE1G,eAAe,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACzG"}
@@ -1,6 +1,6 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
2
  import { type AppCircuitProofOutput, type KernelProofOutput, type ProofCreator } from '@aztec/circuit-types';
3
- import { type PrivateCircuitPublicInputs, type PrivateKernelCircuitPublicInputs, type PrivateKernelInitCircuitPrivateInputs, type PrivateKernelInnerCircuitPrivateInputs, type PrivateKernelTailCircuitPrivateInputs, type PrivateKernelTailCircuitPublicInputs } from '@aztec/circuits.js';
3
+ import { type PrivateCircuitPublicInputs, type PrivateKernelCircuitPublicInputs, type PrivateKernelInitCircuitPrivateInputs, type PrivateKernelInnerCircuitPrivateInputs, type PrivateKernelResetCircuitPrivateInputsVariants, type PrivateKernelTailCircuitPrivateInputs, type PrivateKernelTailCircuitPublicInputs } from '@aztec/circuits.js';
4
4
  /**
5
5
  * Test Proof Creator executes circuit simulations and provides fake proofs.
6
6
  */
@@ -10,6 +10,7 @@ export declare class TestProofCreator implements ProofCreator {
10
10
  getSiloedCommitments(publicInputs: PrivateCircuitPublicInputs): Promise<import("@aztec/circuits.js").Fr[]>;
11
11
  createProofInit(privateInputs: PrivateKernelInitCircuitPrivateInputs): Promise<KernelProofOutput<PrivateKernelCircuitPublicInputs>>;
12
12
  createProofInner(privateInputs: PrivateKernelInnerCircuitPrivateInputs): Promise<KernelProofOutput<PrivateKernelCircuitPublicInputs>>;
13
+ createProofReset(privateInputs: PrivateKernelResetCircuitPrivateInputsVariants): Promise<KernelProofOutput<PrivateKernelCircuitPublicInputs>>;
13
14
  createProofTail(privateInputs: PrivateKernelTailCircuitPrivateInputs): Promise<KernelProofOutput<PrivateKernelTailCircuitPublicInputs>>;
14
15
  createAppCircuitProof(_1: Map<number, string>, _2: Buffer): Promise<AppCircuitProofOutput>;
15
16
  private makeEmptyKernelProofOutput;
@@ -1 +1 @@
1
- {"version":3,"file":"test_circuit_prover.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/test/test_circuit_prover.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE7G,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,gCAAgC,EACrC,KAAK,qCAAqC,EAC1C,KAAK,sCAAsC,EAC3C,KAAK,qCAAqC,EAC1C,KAAK,oCAAoC,EAI1C,MAAM,oBAAoB,CAAC;AAM5B;;GAEG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IACvC,OAAO,CAAC,GAAG;gBAAH,GAAG,yCAAgD;IAEhE,oBAAoB,CAAC,YAAY,EAAE,0BAA0B;IAQvD,eAAe,CAC1B,aAAa,EAAE,qCAAqC,GACnD,OAAO,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,CAAC;IAYlD,gBAAgB,CAC3B,aAAa,EAAE,sCAAsC,GACpD,OAAO,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,CAAC;IAYlD,eAAe,CAC1B,aAAa,EAAE,qCAAqC,GACnD,OAAO,CAAC,iBAAiB,CAAC,oCAAoC,CAAC,CAAC;IAenE,qBAAqB,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAQ1F,OAAO,CAAC,0BAA0B;CAQnC"}
1
+ {"version":3,"file":"test_circuit_prover.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/test/test_circuit_prover.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE7G,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,gCAAgC,EACrC,KAAK,qCAAqC,EAC1C,KAAK,sCAAsC,EAC3C,KAAK,8CAA8C,EACnD,KAAK,qCAAqC,EAC1C,KAAK,oCAAoC,EAI1C,MAAM,oBAAoB,CAAC;AAY5B;;GAEG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IACvC,OAAO,CAAC,GAAG;gBAAH,GAAG,yCAAgD;IAEhE,oBAAoB,CAAC,YAAY,EAAE,0BAA0B;IAQvD,eAAe,CAC1B,aAAa,EAAE,qCAAqC,GACnD,OAAO,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,CAAC;IAYlD,gBAAgB,CAC3B,aAAa,EAAE,sCAAsC,GACpD,OAAO,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,CAAC;IAYlD,gBAAgB,CAC3B,aAAa,EAAE,8CAA8C,GAC5D,OAAO,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,CAAC;IAYlD,eAAe,CAC1B,aAAa,EAAE,qCAAqC,GACnD,OAAO,CAAC,iBAAiB,CAAC,oCAAoC,CAAC,CAAC;IAenE,qBAAqB,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAQ1F,OAAO,CAAC,0BAA0B;CAQnC"}