@aztec/pxe 0.47.1 → 0.49.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.
Files changed (67) hide show
  1. package/dest/config/index.d.ts +18 -0
  2. package/dest/config/index.d.ts.map +1 -1
  3. package/dest/config/index.js +72 -8
  4. package/dest/database/incoming_note_dao.d.ts +4 -4
  5. package/dest/database/incoming_note_dao.d.ts.map +1 -1
  6. package/dest/database/incoming_note_dao.js +7 -7
  7. package/dest/database/kv_pxe_database.d.ts +3 -3
  8. package/dest/database/kv_pxe_database.d.ts.map +1 -1
  9. package/dest/database/kv_pxe_database.js +64 -31
  10. package/dest/database/outgoing_note_dao.d.ts +6 -6
  11. package/dest/database/outgoing_note_dao.d.ts.map +1 -1
  12. package/dest/database/outgoing_note_dao.js +8 -8
  13. package/dest/database/pxe_database.d.ts +6 -2
  14. package/dest/database/pxe_database.d.ts.map +1 -1
  15. package/dest/database/pxe_database_test_suite.d.ts.map +1 -1
  16. package/dest/database/pxe_database_test_suite.js +43 -4
  17. package/dest/kernel_prover/{private_inputs_builders → hints}/build_private_kernel_reset_hints.d.ts +1 -1
  18. package/dest/kernel_prover/hints/build_private_kernel_reset_hints.d.ts.map +1 -0
  19. package/dest/kernel_prover/hints/build_private_kernel_reset_hints.js +90 -0
  20. package/dest/kernel_prover/hints/index.d.ts +3 -0
  21. package/dest/kernel_prover/hints/index.d.ts.map +1 -0
  22. package/dest/kernel_prover/hints/index.js +3 -0
  23. package/dest/kernel_prover/hints/needs_reset.d.ts +5 -0
  24. package/dest/kernel_prover/hints/needs_reset.d.ts.map +1 -0
  25. package/dest/kernel_prover/hints/needs_reset.js +38 -0
  26. package/dest/kernel_prover/kernel_prover.d.ts +0 -2
  27. package/dest/kernel_prover/kernel_prover.d.ts.map +1 -1
  28. package/dest/kernel_prover/kernel_prover.js +14 -38
  29. package/dest/note_processor/note_processor.js +2 -2
  30. package/dest/note_processor/produce_note_dao.js +15 -15
  31. package/dest/pxe_http/pxe_http_server.d.ts.map +1 -1
  32. package/dest/pxe_http/pxe_http_server.js +5 -2
  33. package/dest/pxe_service/create_pxe_service.d.ts.map +1 -1
  34. package/dest/pxe_service/create_pxe_service.js +4 -4
  35. package/dest/pxe_service/pxe_service.d.ts +8 -15
  36. package/dest/pxe_service/pxe_service.d.ts.map +1 -1
  37. package/dest/pxe_service/pxe_service.js +66 -66
  38. package/dest/simulator_oracle/index.d.ts +2 -2
  39. package/dest/simulator_oracle/index.d.ts.map +1 -1
  40. package/dest/simulator_oracle/index.js +5 -4
  41. package/dest/synchronizer/synchronizer.d.ts +1 -1
  42. package/dest/synchronizer/synchronizer.d.ts.map +1 -1
  43. package/dest/synchronizer/synchronizer.js +8 -10
  44. package/package.json +14 -14
  45. package/src/config/index.ts +90 -14
  46. package/src/database/incoming_note_dao.ts +5 -5
  47. package/src/database/kv_pxe_database.ts +86 -31
  48. package/src/database/outgoing_note_dao.ts +6 -6
  49. package/src/database/pxe_database.ts +6 -2
  50. package/src/database/pxe_database_test_suite.ts +70 -3
  51. package/src/kernel_prover/{private_inputs_builders → hints}/build_private_kernel_reset_hints.ts +31 -7
  52. package/src/kernel_prover/hints/index.ts +2 -0
  53. package/src/kernel_prover/hints/needs_reset.ts +54 -0
  54. package/src/kernel_prover/kernel_prover.ts +24 -48
  55. package/src/note_processor/note_processor.ts +1 -1
  56. package/src/note_processor/produce_note_dao.ts +14 -14
  57. package/src/pxe_http/pxe_http_server.ts +4 -0
  58. package/src/pxe_service/create_pxe_service.ts +3 -2
  59. package/src/pxe_service/pxe_service.ts +76 -61
  60. package/src/simulator_oracle/index.ts +4 -3
  61. package/src/synchronizer/synchronizer.ts +19 -19
  62. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_hints.d.ts.map +0 -1
  63. package/dest/kernel_prover/private_inputs_builders/build_private_kernel_reset_hints.js +0 -77
  64. package/dest/kernel_prover/private_inputs_builders/index.d.ts +0 -2
  65. package/dest/kernel_prover/private_inputs_builders/index.d.ts.map +0 -1
  66. package/dest/kernel_prover/private_inputs_builders/index.js +0 -2
  67. package/src/kernel_prover/private_inputs_builders/index.ts +0 -1
@@ -289,25 +289,23 @@ _Synchronizer_instances = new WeakSet(), _Synchronizer_reprocessDeferredNotesFor
289
289
  }
290
290
  // keep track of decoded notes
291
291
  const incomingNotes = [];
292
- const outgoingNotes = [];
293
292
  // now process each txHash
294
293
  for (const deferredNotes of txHashToDeferredNotes.values()) {
295
294
  // to be safe, try each note processor in case the deferred notes are for different accounts.
296
295
  for (const processor of this.noteProcessors) {
297
296
  const { incomingNotes: inNotes, outgoingNotes: outNotes } = await processor.decodeDeferredNotes(deferredNotes);
298
297
  incomingNotes.push(...inNotes);
299
- outgoingNotes.push(...outNotes);
298
+ await this.db.addNotes(inNotes, outNotes, processor.account);
299
+ inNotes.forEach(noteDao => {
300
+ this.log.debug(`Decoded deferred incoming note under account ${processor.account.toString()} for contract ${noteDao.contractAddress} at slot ${noteDao.storageSlot} with nullifier ${noteDao.siloedNullifier.toString()}`);
301
+ });
302
+ outNotes.forEach(noteDao => {
303
+ this.log.debug(`Decoded deferred outgoing note under account ${processor.account.toString()} for contract ${noteDao.contractAddress} at slot ${noteDao.storageSlot}`);
304
+ });
300
305
  }
301
306
  }
302
307
  // now drop the deferred notes, and add the decoded notes
303
308
  await this.db.removeDeferredNotesByContract(contractAddress);
304
- await this.db.addNotes(incomingNotes, outgoingNotes);
305
- incomingNotes.forEach(noteDao => {
306
- this.log.debug(`Decoded deferred incoming note for contract ${noteDao.contractAddress} at slot ${noteDao.storageSlot} with nullifier ${noteDao.siloedNullifier.toString()}`);
307
- });
308
- outgoingNotes.forEach(noteDao => {
309
- this.log.debug(`Decoded deferred outgoing note for contract ${noteDao.contractAddress} at slot ${noteDao.storageSlot}`);
310
- });
311
309
  await __classPrivateFieldGet(this, _Synchronizer_instances, "m", _Synchronizer_removeNullifiedNotes).call(this, incomingNotes);
312
310
  }, _Synchronizer_removeNullifiedNotes = async function _Synchronizer_removeNullifiedNotes(notes) {
313
311
  // now group the decoded incoming notes by public key
@@ -331,4 +329,4 @@ _Synchronizer_instances = new WeakSet(), _Synchronizer_reprocessDeferredNotesFor
331
329
  await this.db.removeNullifiedNotes(relevantNullifiers, publicKey);
332
330
  }
333
331
  };
334
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luY2hyb25pemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N5bmNocm9uaXplci9zeW5jaHJvbml6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQWdDLFlBQVksRUFBZSxNQUFNLHNCQUFzQixDQUFDO0FBRS9GLE9BQU8sRUFBOEIsb0JBQW9CLEVBQWtCLE1BQU0sb0JBQW9CLENBQUM7QUFFdEcsT0FBTyxFQUFvQixpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQU9uRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFM0Q7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLFlBQVk7SUFRdkIsWUFBb0IsSUFBZSxFQUFVLEVBQWUsRUFBVSxRQUFxQixFQUFFLFNBQVMsR0FBRyxFQUFFOztRQUF2RixTQUFJLEdBQUosSUFBSSxDQUFXO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQWE7UUFObkYsbUJBQWMsR0FBb0IsRUFBRSxDQUFDO1FBQ3JDLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsMkJBQXNCLEdBQUcsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO1FBRWxELDRCQUF1QixHQUFvQixFQUFFLENBQUM7UUFHcEQsSUFBSSxDQUFDLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUM3RyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxhQUFhLEdBQUcsSUFBSTtRQUNoRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixPQUFPO1FBQ1QsQ0FBQztR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
332
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luY2hyb25pemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N5bmNocm9uaXplci9zeW5jaHJvbml6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQWdDLFlBQVksRUFBZSxNQUFNLHNCQUFzQixDQUFDO0FBRS9GLE9BQU8sRUFBOEIsb0JBQW9CLEVBQWtCLE1BQU0sb0JBQW9CLENBQUM7QUFDdEcsT0FBTyxFQUFvQixpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQU1uRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFM0Q7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLFlBQVk7SUFRdkIsWUFBb0IsSUFBZSxFQUFVLEVBQWUsRUFBVSxRQUFxQixFQUFFLFNBQVMsR0FBRyxFQUFFOztRQUF2RixTQUFJLEdBQUosSUFBSSxDQUFXO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQWE7UUFObkYsbUJBQWMsR0FBb0IsRUFBRSxDQUFDO1FBQ3JDLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsMkJBQXNCLEdBQUcsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO1FBRWxELDRCQUF1QixHQUFvQixFQUFFLENBQUM7UUFHcEQsSUFBSSxDQUFDLEdBQUcsR0FBRyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUM3RyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxhQUFhLEdBQUcsSUFBSTtRQUNoRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixPQUFPO1FBQ1QsQ0FBQztR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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/pxe",
3
- "version": "0.47.1",
3
+ "version": "0.49.2",
4
4
  "type": "module",
5
5
  "exports": "./dest/index.js",
6
6
  "bin": "./dest/bin/index.js",
@@ -56,19 +56,19 @@
56
56
  ]
57
57
  },
58
58
  "dependencies": {
59
- "@aztec/bb-prover": "0.47.1",
60
- "@aztec/bb.js": "0.47.1",
61
- "@aztec/builder": "0.47.1",
62
- "@aztec/circuit-types": "0.47.1",
63
- "@aztec/circuits.js": "0.47.1",
64
- "@aztec/ethereum": "0.47.1",
65
- "@aztec/foundation": "0.47.1",
66
- "@aztec/key-store": "0.47.1",
67
- "@aztec/kv-store": "0.47.1",
68
- "@aztec/noir-protocol-circuits-types": "0.47.1",
69
- "@aztec/protocol-contracts": "0.47.1",
70
- "@aztec/simulator": "0.47.1",
71
- "@aztec/types": "0.47.1",
59
+ "@aztec/bb-prover": "0.49.2",
60
+ "@aztec/bb.js": "0.49.2",
61
+ "@aztec/builder": "0.49.2",
62
+ "@aztec/circuit-types": "0.49.2",
63
+ "@aztec/circuits.js": "0.49.2",
64
+ "@aztec/ethereum": "0.49.2",
65
+ "@aztec/foundation": "0.49.2",
66
+ "@aztec/key-store": "0.49.2",
67
+ "@aztec/kv-store": "0.49.2",
68
+ "@aztec/noir-protocol-circuits-types": "0.49.2",
69
+ "@aztec/protocol-contracts": "0.49.2",
70
+ "@aztec/simulator": "0.49.2",
71
+ "@aztec/types": "0.49.2",
72
72
  "@msgpack/msgpack": "^3.0.0-beta2",
73
73
  "@noir-lang/noirc_abi": "portal:../../noir/packages/noirc_abi",
74
74
  "@noir-lang/types": "workspace:*",
@@ -1,4 +1,11 @@
1
1
  import { INITIAL_L2_BLOCK_NUM } from '@aztec/circuits.js/constants';
2
+ import {
3
+ type ConfigMappingsType,
4
+ booleanConfigHelper,
5
+ getConfigFromMappings,
6
+ numberConfigHelper,
7
+ } from '@aztec/foundation/config';
8
+ import { type Network } from '@aztec/types/network';
2
9
 
3
10
  import { readFileSync } from 'fs';
4
11
  import { dirname, resolve } from 'path';
@@ -10,6 +17,7 @@ import { fileURLToPath } from 'url';
10
17
  export interface BBProverConfig {
11
18
  bbWorkingDirectory?: string;
12
19
  bbBinaryPath?: string;
20
+ bbSkipCleanup?: boolean;
13
21
  }
14
22
 
15
23
  /**
@@ -33,26 +41,94 @@ export interface PXEConfig {
33
41
 
34
42
  export type PXEServiceConfig = PXEConfig & KernelProverConfig & BBProverConfig;
35
43
 
44
+ export type CliPXEOptions = {
45
+ /** External Aztec network to connect to. e.g. devnet */
46
+ network?: Network;
47
+ /** API Key required by the external network's node */
48
+ apiKey?: string;
49
+ /** Custom Aztec Node URL to connect to */
50
+ nodeUrl?: string;
51
+ };
52
+
53
+ export const pxeConfigMappings: ConfigMappingsType<PXEServiceConfig> = {
54
+ l2BlockPollingIntervalMS: {
55
+ env: 'PXE_BLOCK_POLLING_INTERVAL_MS',
56
+ description: 'The interval to wait between polling for new blocks.',
57
+ ...numberConfigHelper(1_000),
58
+ },
59
+ l2StartingBlock: {
60
+ env: 'PXE_L2_STARTING_BLOCK',
61
+ ...numberConfigHelper(INITIAL_L2_BLOCK_NUM),
62
+ description: 'L2 block to start scanning from for new accounts',
63
+ },
64
+ dataDirectory: {
65
+ env: 'PXE_DATA_DIRECTORY',
66
+ description: 'Where to store PXE data. If not set, will store in memory',
67
+ },
68
+ bbBinaryPath: {
69
+ env: 'BB_BINARY_PATH',
70
+ description: 'Path to the BB binary',
71
+ },
72
+ bbWorkingDirectory: {
73
+ env: 'BB_WORKING_DIRECTORY',
74
+ description: 'Working directory for the BB binary',
75
+ },
76
+ bbSkipCleanup: {
77
+ env: 'BB_SKIP_CLEANUP',
78
+ description: 'True to skip cleanup of temporary files for debugging purposes',
79
+ ...booleanConfigHelper(),
80
+ },
81
+ proverEnabled: {
82
+ env: 'PXE_PROVER_ENABLED',
83
+ description: 'Enable real proofs',
84
+ ...booleanConfigHelper(),
85
+ },
86
+ };
87
+
36
88
  /**
37
89
  * Creates an instance of PXEServiceConfig out of environment variables using sensible defaults for integration testing if not set.
38
90
  */
39
91
  export function getPXEServiceConfig(): PXEServiceConfig {
40
- const {
41
- PXE_BLOCK_POLLING_INTERVAL_MS,
42
- PXE_L2_STARTING_BLOCK,
43
- PXE_DATA_DIRECTORY,
44
- BB_BINARY_PATH,
45
- BB_WORKING_DIRECTORY,
46
- PXE_PROVER_ENABLED,
47
- } = process.env;
92
+ return getConfigFromMappings<PXEServiceConfig>(pxeConfigMappings);
93
+ }
94
+
95
+ export const pxeCliConfigMappings: ConfigMappingsType<CliPXEOptions> = {
96
+ network: {
97
+ env: 'NETWORK',
98
+ parseEnv: (val: string) => val as Network,
99
+ description: 'External Aztec network to connect to. e.g. devnet',
100
+ },
101
+ apiKey: {
102
+ env: 'API_KEY',
103
+ description: "API Key required by the external network's node",
104
+ },
105
+ nodeUrl: {
106
+ env: 'AZTEC_NODE_URL',
107
+ description: 'Custom Aztec Node URL to connect to',
108
+ },
109
+ };
48
110
 
111
+ export const allPxeConfigMappings: ConfigMappingsType<CliPXEOptions & PXEServiceConfig> = {
112
+ ...pxeConfigMappings,
113
+ ...pxeCliConfigMappings,
114
+ proverEnabled: {
115
+ env: 'PXE_PROVER_ENABLED',
116
+ parseEnv: (val: string) => ['1', 'true', 'TRUE'].includes(val) || !!process.env.NETWORK,
117
+ description: 'Enable real proofs',
118
+ isBoolean: true,
119
+ },
120
+ };
121
+
122
+ /**
123
+ * Creates an instance of CliPxeOptions out of environment variables
124
+ */
125
+ export function getCliPXEOptions(): CliPXEOptions & PXEServiceConfig {
126
+ const pxeConfig = getPXEServiceConfig();
127
+ const cliOptions = getConfigFromMappings<CliPXEOptions>(pxeCliConfigMappings);
49
128
  return {
50
- l2BlockPollingIntervalMS: PXE_BLOCK_POLLING_INTERVAL_MS ? +PXE_BLOCK_POLLING_INTERVAL_MS : 1000,
51
- l2StartingBlock: PXE_L2_STARTING_BLOCK ? +PXE_L2_STARTING_BLOCK : INITIAL_L2_BLOCK_NUM,
52
- dataDirectory: PXE_DATA_DIRECTORY,
53
- bbBinaryPath: BB_BINARY_PATH,
54
- bbWorkingDirectory: BB_WORKING_DIRECTORY,
55
- proverEnabled: ['1', 'true'].includes(PXE_PROVER_ENABLED!),
129
+ ...pxeConfig,
130
+ ...cliOptions,
131
+ proverEnabled: pxeConfig.proverEnabled || !!cliOptions.network,
56
132
  };
57
133
  }
58
134
 
@@ -23,10 +23,10 @@ export class IncomingNoteDao implements NoteData {
23
23
  /** The nonce of the note. */
24
24
  public nonce: Fr,
25
25
  /**
26
- * Inner note hash of the note. This is customizable by the app circuit.
26
+ * A hash of the note. This is customizable by the app circuit.
27
27
  * We can use this value to compute siloedNoteHash and uniqueSiloedNoteHash.
28
28
  */
29
- public innerNoteHash: Fr,
29
+ public noteHash: Fr,
30
30
  /**
31
31
  * The nullifier of the note (siloed by contract address).
32
32
  * Note: Might be set as 0 if the note was added to PXE as nullified.
@@ -46,7 +46,7 @@ export class IncomingNoteDao implements NoteData {
46
46
  this.noteTypeId,
47
47
  this.txHash.buffer,
48
48
  this.nonce,
49
- this.innerNoteHash,
49
+ this.noteHash,
50
50
  this.siloedNullifier,
51
51
  this.index,
52
52
  this.ivpkM,
@@ -61,7 +61,7 @@ export class IncomingNoteDao implements NoteData {
61
61
  const noteTypeId = reader.readObject(NoteSelector);
62
62
  const txHash = reader.readObject(TxHash);
63
63
  const nonce = Fr.fromBuffer(reader);
64
- const innerNoteHash = Fr.fromBuffer(reader);
64
+ const noteHash = Fr.fromBuffer(reader);
65
65
  const siloedNullifier = Fr.fromBuffer(reader);
66
66
  const index = toBigIntBE(reader.readBytes(32));
67
67
  const publicKey = Point.fromBuffer(reader);
@@ -73,7 +73,7 @@ export class IncomingNoteDao implements NoteData {
73
73
  noteTypeId,
74
74
  txHash,
75
75
  nonce,
76
- innerNoteHash,
76
+ noteHash,
77
77
  siloedNullifier,
78
78
  index,
79
79
  publicKey,
@@ -14,6 +14,7 @@ import {
14
14
  type AztecKVStore,
15
15
  type AztecMap,
16
16
  type AztecMultiMap,
17
+ type AztecSet,
17
18
  type AztecSingleton,
18
19
  } from '@aztec/kv-store';
19
20
  import { contractArtifactFromBuffer, contractArtifactToBuffer } from '@aztec/types/abi';
@@ -36,10 +37,7 @@ export class KVPxeDatabase implements PxeDatabase {
36
37
  #notes: AztecMap<string, Buffer>;
37
38
  #nullifiedNotes: AztecMap<string, Buffer>;
38
39
  #nullifierToNoteId: AztecMap<string, string>;
39
- #notesByContract: AztecMultiMap<string, string>;
40
- #notesByStorageSlot: AztecMultiMap<string, string>;
41
- #notesByTxHash: AztecMultiMap<string, string>;
42
- #notesByIvpkM: AztecMultiMap<string, string>;
40
+
43
41
  #nullifiedNotesByContract: AztecMultiMap<string, string>;
44
42
  #nullifiedNotesByStorageSlot: AztecMultiMap<string, string>;
45
43
  #nullifiedNotesByTxHash: AztecMultiMap<string, string>;
@@ -57,6 +55,12 @@ export class KVPxeDatabase implements PxeDatabase {
57
55
  #outgoingNotesByTxHash: AztecMultiMap<string, string>;
58
56
  #outgoingNotesByOvpkM: AztecMultiMap<string, string>;
59
57
 
58
+ #scopes: AztecSet<string>;
59
+ #notesByContractAndScope: Map<string, AztecMultiMap<string, string>>;
60
+ #notesByStorageSlotAndScope: Map<string, AztecMultiMap<string, string>>;
61
+ #notesByTxHashAndScope: Map<string, AztecMultiMap<string, string>>;
62
+ #notesByIvpkMAndScope: Map<string, AztecMultiMap<string, string>>;
63
+
60
64
  constructor(private db: AztecKVStore) {
61
65
  this.#db = db;
62
66
 
@@ -76,11 +80,6 @@ export class KVPxeDatabase implements PxeDatabase {
76
80
  this.#nullifiedNotes = db.openMap('nullified_notes');
77
81
  this.#nullifierToNoteId = db.openMap('nullifier_to_note');
78
82
 
79
- this.#notesByContract = db.openMultiMap('notes_by_contract');
80
- this.#notesByStorageSlot = db.openMultiMap('notes_by_storage_slot');
81
- this.#notesByTxHash = db.openMultiMap('notes_by_tx_hash');
82
- this.#notesByIvpkM = db.openMultiMap('notes_by_ivpk_m');
83
-
84
83
  this.#nullifiedNotesByContract = db.openMultiMap('nullified_notes_by_contract');
85
84
  this.#nullifiedNotesByStorageSlot = db.openMultiMap('nullified_notes_by_storage_slot');
86
85
  this.#nullifiedNotesByTxHash = db.openMultiMap('nullified_notes_by_tx_hash');
@@ -94,6 +93,19 @@ export class KVPxeDatabase implements PxeDatabase {
94
93
  this.#outgoingNotesByStorageSlot = db.openMultiMap('outgoing_notes_by_storage_slot');
95
94
  this.#outgoingNotesByTxHash = db.openMultiMap('outgoing_notes_by_tx_hash');
96
95
  this.#outgoingNotesByOvpkM = db.openMultiMap('outgoing_notes_by_ovpk_m');
96
+
97
+ this.#scopes = db.openSet('scopes');
98
+ this.#notesByContractAndScope = new Map<string, AztecMultiMap<string, string>>();
99
+ this.#notesByStorageSlotAndScope = new Map<string, AztecMultiMap<string, string>>();
100
+ this.#notesByTxHashAndScope = new Map<string, AztecMultiMap<string, string>>();
101
+ this.#notesByIvpkMAndScope = new Map<string, AztecMultiMap<string, string>>();
102
+
103
+ for (const scope of this.#scopes.entries()) {
104
+ this.#notesByContractAndScope.set(scope, db.openMultiMap(`${scope}:notes_by_contract`));
105
+ this.#notesByStorageSlotAndScope.set(scope, db.openMultiMap(`${scope}:notes_by_storage_slot`));
106
+ this.#notesByTxHashAndScope.set(scope, db.openMultiMap(`${scope}:notes_by_tx_hash`));
107
+ this.#notesByIvpkMAndScope.set(scope, db.openMultiMap(`${scope}:notes_by_ivpk_m`));
108
+ }
97
109
  }
98
110
 
99
111
  public async getContract(
@@ -154,11 +166,19 @@ export class KVPxeDatabase implements PxeDatabase {
154
166
  return val?.map(b => Fr.fromBuffer(b));
155
167
  }
156
168
 
157
- async addNote(note: IncomingNoteDao): Promise<void> {
158
- await this.addNotes([note], []);
169
+ async addNote(note: IncomingNoteDao, scope?: AztecAddress): Promise<void> {
170
+ await this.addNotes([note], [], scope);
159
171
  }
160
172
 
161
- addNotes(incomingNotes: IncomingNoteDao[], outgoingNotes: OutgoingNoteDao[]): Promise<void> {
173
+ async addNotes(
174
+ incomingNotes: IncomingNoteDao[],
175
+ outgoingNotes: OutgoingNoteDao[],
176
+ scope: AztecAddress = AztecAddress.ZERO,
177
+ ): Promise<void> {
178
+ if (!this.#scopes.has(scope.toString())) {
179
+ await this.#addScope(scope);
180
+ }
181
+
162
182
  return this.db.transaction(() => {
163
183
  for (const dao of incomingNotes) {
164
184
  // store notes by their index in the notes hash tree
@@ -168,10 +188,11 @@ export class KVPxeDatabase implements PxeDatabase {
168
188
  const noteIndex = toBufferBE(dao.index, 32).toString('hex');
169
189
  void this.#notes.set(noteIndex, dao.toBuffer());
170
190
  void this.#nullifierToNoteId.set(dao.siloedNullifier.toString(), noteIndex);
171
- void this.#notesByContract.set(dao.contractAddress.toString(), noteIndex);
172
- void this.#notesByStorageSlot.set(dao.storageSlot.toString(), noteIndex);
173
- void this.#notesByTxHash.set(dao.txHash.toString(), noteIndex);
174
- void this.#notesByIvpkM.set(dao.ivpkM.toString(), noteIndex);
191
+
192
+ void this.#notesByContractAndScope.get(scope.toString())!.set(dao.contractAddress.toString(), noteIndex);
193
+ void this.#notesByStorageSlotAndScope.get(scope.toString())!.set(dao.storageSlot.toString(), noteIndex);
194
+ void this.#notesByTxHashAndScope.get(scope.toString())!.set(dao.txHash.toString(), noteIndex);
195
+ void this.#notesByIvpkMAndScope.get(scope.toString())!.set(dao.ivpkM.toString(), noteIndex);
175
196
  }
176
197
 
177
198
  for (const dao of outgoingNotes) {
@@ -244,16 +265,31 @@ export class KVPxeDatabase implements PxeDatabase {
244
265
 
245
266
  const candidateNoteSources = [];
246
267
 
268
+ filter.scopes ??= [...this.#scopes.entries()].map(addressString => AztecAddress.fromString(addressString));
269
+
270
+ const activeNoteIdsPerScope: IterableIterator<string>[] = [];
271
+
272
+ for (const scope of new Set(filter.scopes)) {
273
+ const formattedScopeString = scope.toString();
274
+ if (!this.#scopes.has(formattedScopeString)) {
275
+ throw new Error('Trying to get incoming notes of an scope that is not in the PXE database');
276
+ }
277
+
278
+ activeNoteIdsPerScope.push(
279
+ publicKey
280
+ ? this.#notesByIvpkMAndScope.get(formattedScopeString)!.getValues(publicKey.toString())
281
+ : filter.txHash
282
+ ? this.#notesByTxHashAndScope.get(formattedScopeString)!.getValues(filter.txHash.toString())
283
+ : filter.contractAddress
284
+ ? this.#notesByContractAndScope.get(formattedScopeString)!.getValues(filter.contractAddress.toString())
285
+ : filter.storageSlot
286
+ ? this.#notesByStorageSlotAndScope.get(formattedScopeString)!.getValues(filter.storageSlot.toString())
287
+ : this.#notesByIvpkMAndScope.get(formattedScopeString)!.values(),
288
+ );
289
+ }
290
+
247
291
  candidateNoteSources.push({
248
- ids: publicKey
249
- ? this.#notesByIvpkM.getValues(publicKey.toString())
250
- : filter.txHash
251
- ? this.#notesByTxHash.getValues(filter.txHash.toString())
252
- : filter.contractAddress
253
- ? this.#notesByContract.getValues(filter.contractAddress.toString())
254
- : filter.storageSlot
255
- ? this.#notesByStorageSlot.getValues(filter.storageSlot.toString())
256
- : this.#notes.keys(),
292
+ ids: new Set(activeNoteIdsPerScope.flatMap(iterableIterator => [...iterableIterator])),
257
293
  notes: this.#notes,
258
294
  });
259
295
 
@@ -358,7 +394,7 @@ export class KVPxeDatabase implements PxeDatabase {
358
394
  return Promise.resolve(notes);
359
395
  }
360
396
 
361
- removeNullifiedNotes(nullifiers: Fr[], account: PublicKey): Promise<IncomingNoteDao[]> {
397
+ removeNullifiedNotes(nullifiers: Fr[], accountIvpkM: PublicKey): Promise<IncomingNoteDao[]> {
362
398
  if (nullifiers.length === 0) {
363
399
  return Promise.resolve([]);
364
400
  }
@@ -380,7 +416,7 @@ export class KVPxeDatabase implements PxeDatabase {
380
416
  }
381
417
 
382
418
  const note = IncomingNoteDao.fromBuffer(noteBuffer);
383
- if (!note.ivpkM.equals(account)) {
419
+ if (!note.ivpkM.equals(accountIvpkM)) {
384
420
  // tried to nullify someone else's note
385
421
  continue;
386
422
  }
@@ -388,10 +424,13 @@ export class KVPxeDatabase implements PxeDatabase {
388
424
  nullifiedNotes.push(note);
389
425
 
390
426
  void this.#notes.delete(noteIndex);
391
- void this.#notesByIvpkM.deleteValue(account.toString(), noteIndex);
392
- void this.#notesByTxHash.deleteValue(note.txHash.toString(), noteIndex);
393
- void this.#notesByContract.deleteValue(note.contractAddress.toString(), noteIndex);
394
- void this.#notesByStorageSlot.deleteValue(note.storageSlot.toString(), noteIndex);
427
+
428
+ for (const scope in this.#scopes.entries()) {
429
+ void this.#notesByIvpkMAndScope.get(scope)!.deleteValue(accountIvpkM.toString(), noteIndex);
430
+ void this.#notesByTxHashAndScope.get(scope)!.deleteValue(note.txHash.toString(), noteIndex);
431
+ void this.#notesByContractAndScope.get(scope)!.deleteValue(note.contractAddress.toString(), noteIndex);
432
+ void this.#notesByStorageSlotAndScope.get(scope)!.deleteValue(note.storageSlot.toString(), noteIndex);
433
+ }
395
434
 
396
435
  void this.#nullifiedNotes.set(noteIndex, note.toBuffer());
397
436
  void this.#nullifiedNotesByContract.set(note.contractAddress.toString(), noteIndex);
@@ -440,6 +479,22 @@ export class KVPxeDatabase implements PxeDatabase {
440
479
  return Header.fromBuffer(headerBuffer);
441
480
  }
442
481
 
482
+ async #addScope(scope: AztecAddress): Promise<boolean> {
483
+ const scopeString = scope.toString();
484
+
485
+ if (this.#scopes.has(scopeString)) {
486
+ return false;
487
+ }
488
+
489
+ await this.#scopes.add(scopeString);
490
+ this.#notesByContractAndScope.set(scopeString, this.#db.openMultiMap(`${scopeString}:notes_by_contract`));
491
+ this.#notesByStorageSlotAndScope.set(scopeString, this.#db.openMultiMap(`${scopeString}:notes_by_storage_slot`));
492
+ this.#notesByTxHashAndScope.set(scopeString, this.#db.openMultiMap(`${scopeString}:notes_by_tx_hash`));
493
+ this.#notesByIvpkMAndScope.set(scopeString, this.#db.openMultiMap(`${scopeString}:notes_by_ivpk_m`));
494
+
495
+ return true;
496
+ }
497
+
443
498
  addCompleteAddress(completeAddress: CompleteAddress): Promise<boolean> {
444
499
  return this.#db.transaction(() => {
445
500
  const addressString = completeAddress.address.toString();
@@ -22,10 +22,10 @@ export class OutgoingNoteDao {
22
22
  /** The nonce of the note. */
23
23
  public nonce: Fr,
24
24
  /**
25
- * Inner note hash of the note. This is customizable by the app circuit.
26
- * We can use this value to compute siloedNoteHash and uniqueSiloedNoteHash.
25
+ * A hash of the note. This is customizable by the app circuit.
26
+ * We can use this value to compute unique note hash and then siloed note hash.
27
27
  */
28
- public innerNoteHash: Fr,
28
+ public noteHash: Fr,
29
29
  /** The location of the relevant note in the note hash tree. */
30
30
  public index: bigint,
31
31
  /** The public key with which the note was encrypted. */
@@ -40,7 +40,7 @@ export class OutgoingNoteDao {
40
40
  this.noteTypeId,
41
41
  this.txHash.buffer,
42
42
  this.nonce,
43
- this.innerNoteHash,
43
+ this.noteHash,
44
44
  this.index,
45
45
  this.ovpkM,
46
46
  ]);
@@ -54,7 +54,7 @@ export class OutgoingNoteDao {
54
54
  const noteTypeId = reader.readObject(NoteSelector);
55
55
  const txHash = new TxHash(reader.readBytes(TxHash.SIZE));
56
56
  const nonce = Fr.fromBuffer(reader);
57
- const innerNoteHash = Fr.fromBuffer(reader);
57
+ const noteHash = Fr.fromBuffer(reader);
58
58
  const index = toBigIntBE(reader.readBytes(32));
59
59
  const publicKey = Point.fromBuffer(reader);
60
60
 
@@ -65,7 +65,7 @@ export class OutgoingNoteDao {
65
65
  noteTypeId,
66
66
  txHash,
67
67
  nonce,
68
- innerNoteHash,
68
+ noteHash,
69
69
  index,
70
70
  publicKey,
71
71
  );
@@ -62,8 +62,10 @@ export interface PxeDatabase extends ContractArtifactDatabase, ContractInstanceD
62
62
  /**
63
63
  * Adds a note to DB.
64
64
  * @param note - The note to add.
65
+ * @param scope - The scope to add the note under. Currently optional.
66
+ * @remark - Will create a database for the scope if it does not already exist.
65
67
  */
66
- addNote(note: IncomingNoteDao): Promise<void>;
68
+ addNote(note: IncomingNoteDao, scope?: AztecAddress): Promise<void>;
67
69
 
68
70
  /**
69
71
  * Adds a nullified note to DB.
@@ -78,8 +80,10 @@ export interface PxeDatabase extends ContractArtifactDatabase, ContractInstanceD
78
80
  *
79
81
  * @param incomingNotes - An array of notes which were decrypted as incoming.
80
82
  * @param outgoingNotes - An array of notes which were decrypted as outgoing.
83
+ * @param scope - The scope to add the notes under. Currently optional.
84
+ * @remark - Will create a database for the scope if it does not already exist.
81
85
  */
82
- addNotes(incomingNotes: IncomingNoteDao[], outgoingNotes: OutgoingNoteDao[]): Promise<void>;
86
+ addNotes(incomingNotes: IncomingNoteDao[], outgoingNotes: OutgoingNoteDao[], scope?: AztecAddress): Promise<void>;
83
87
 
84
88
  /**
85
89
  * Add notes to the database that are intended for us, but we don't yet have the contract.