@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
@@ -5,7 +5,7 @@ import {
5
5
  EncryptedTxL2Logs,
6
6
  type EventMetadata,
7
7
  EventType,
8
- ExtendedNote,
8
+ type ExtendedNote,
9
9
  type FunctionCall,
10
10
  type GetUnencryptedLogsResponse,
11
11
  type IncomingNotesFilter,
@@ -26,6 +26,7 @@ import {
26
26
  type TxHash,
27
27
  type TxReceipt,
28
28
  UnencryptedTxL2Logs,
29
+ UniqueNote,
29
30
  isNoirCallStackUnresolved,
30
31
  } from '@aztec/circuit-types';
31
32
  import {
@@ -44,11 +45,11 @@ import {
44
45
  encodeArguments,
45
46
  } from '@aztec/foundation/abi';
46
47
  import { type Fq, Fr, type Point } from '@aztec/foundation/fields';
47
- import { SerialQueue } from '@aztec/foundation/fifo';
48
48
  import { type DebugLogger, createDebugLogger } from '@aztec/foundation/log';
49
+ import { SerialQueue } from '@aztec/foundation/queue';
49
50
  import { type KeyStore } from '@aztec/key-store';
50
51
  import { ClassRegistererAddress } from '@aztec/protocol-contracts/class-registerer';
51
- import { getCanonicalGasToken } from '@aztec/protocol-contracts/gas-token';
52
+ import { getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
52
53
  import { getCanonicalInstanceDeployer } from '@aztec/protocol-contracts/instance-deployer';
53
54
  import { getCanonicalKeyRegistryAddress } from '@aztec/protocol-contracts/key-registry';
54
55
  import { getCanonicalMultiCallEntrypointAddress } from '@aztec/protocol-contracts/multi-call-entrypoint';
@@ -296,7 +297,7 @@ export class PXEService implements PXE {
296
297
  return await this.node.getPublicStorageAt(contract, slot, 'latest');
297
298
  }
298
299
 
299
- public async getIncomingNotes(filter: IncomingNotesFilter): Promise<ExtendedNote[]> {
300
+ public async getIncomingNotes(filter: IncomingNotesFilter): Promise<UniqueNote[]> {
300
301
  const noteDaos = await this.db.getIncomingNotes(filter);
301
302
 
302
303
  // TODO(#6531): Refactor --> This type conversion is ugly but I decided to keep it this way for now because
@@ -312,12 +313,20 @@ export class PXEService implements PXE {
312
313
  }
313
314
  owner = completeAddresses.address;
314
315
  }
315
- return new ExtendedNote(dao.note, owner, dao.contractAddress, dao.storageSlot, dao.noteTypeId, dao.txHash);
316
+ return new UniqueNote(
317
+ dao.note,
318
+ owner,
319
+ dao.contractAddress,
320
+ dao.storageSlot,
321
+ dao.noteTypeId,
322
+ dao.txHash,
323
+ dao.nonce,
324
+ );
316
325
  });
317
326
  return Promise.all(extendedNotes);
318
327
  }
319
328
 
320
- public async getOutgoingNotes(filter: OutgoingNotesFilter): Promise<ExtendedNote[]> {
329
+ public async getOutgoingNotes(filter: OutgoingNotesFilter): Promise<UniqueNote[]> {
321
330
  const noteDaos = await this.db.getOutgoingNotes(filter);
322
331
 
323
332
  // TODO(#6532): Refactor --> This type conversion is ugly but I decided to keep it this way for now because
@@ -333,32 +342,39 @@ export class PXEService implements PXE {
333
342
  }
334
343
  owner = completeAddresses.address;
335
344
  }
336
- return new ExtendedNote(dao.note, owner, dao.contractAddress, dao.storageSlot, dao.noteTypeId, dao.txHash);
345
+ return new UniqueNote(
346
+ dao.note,
347
+ owner,
348
+ dao.contractAddress,
349
+ dao.storageSlot,
350
+ dao.noteTypeId,
351
+ dao.txHash,
352
+ dao.nonce,
353
+ );
337
354
  });
338
355
  return Promise.all(extendedNotes);
339
356
  }
340
357
 
341
- public async addNote(note: ExtendedNote) {
358
+ public async addNote(note: ExtendedNote, scope?: AztecAddress) {
342
359
  const owner = await this.db.getCompleteAddress(note.owner);
343
360
  if (!owner) {
344
361
  throw new Error(`Unknown account: ${note.owner.toString()}`);
345
362
  }
346
363
 
347
- const nonces = await this.getNoteNonces(note);
364
+ const nonces = await this.#getNoteNonces(note);
348
365
  if (nonces.length === 0) {
349
366
  throw new Error(`Cannot find the note in tx: ${note.txHash}.`);
350
367
  }
351
368
 
352
369
  for (const nonce of nonces) {
353
- const { innerNoteHash, siloedNoteHash, innerNullifier } =
354
- await this.simulator.computeNoteHashAndOptionallyANullifier(
355
- note.contractAddress,
356
- nonce,
357
- note.storageSlot,
358
- note.noteTypeId,
359
- true,
360
- note.note,
361
- );
370
+ const { noteHash, siloedNoteHash, innerNullifier } = await this.simulator.computeNoteHashAndOptionallyANullifier(
371
+ note.contractAddress,
372
+ nonce,
373
+ note.storageSlot,
374
+ note.noteTypeId,
375
+ true,
376
+ note.note,
377
+ );
362
378
 
363
379
  const index = await this.node.findLeafIndex('latest', MerkleTreeId.NOTE_HASH_TREE, siloedNoteHash);
364
380
  if (index === undefined) {
@@ -379,11 +395,12 @@ export class PXEService implements PXE {
379
395
  note.noteTypeId,
380
396
  note.txHash,
381
397
  nonce,
382
- innerNoteHash,
398
+ noteHash,
383
399
  siloedNullifier,
384
400
  index,
385
401
  owner.publicKeys.masterIncomingViewingPublicKey,
386
402
  ),
403
+ scope,
387
404
  );
388
405
  }
389
406
  }
@@ -394,21 +411,20 @@ export class PXEService implements PXE {
394
411
  throw new Error(`Unknown account: ${note.owner.toString()}`);
395
412
  }
396
413
 
397
- const nonces = await this.getNoteNonces(note);
414
+ const nonces = await this.#getNoteNonces(note);
398
415
  if (nonces.length === 0) {
399
416
  throw new Error(`Cannot find the note in tx: ${note.txHash}.`);
400
417
  }
401
418
 
402
419
  for (const nonce of nonces) {
403
- const { innerNoteHash, siloedNoteHash, innerNullifier } =
404
- await this.simulator.computeNoteHashAndOptionallyANullifier(
405
- note.contractAddress,
406
- nonce,
407
- note.storageSlot,
408
- note.noteTypeId,
409
- false,
410
- note.note,
411
- );
420
+ const { noteHash, siloedNoteHash, innerNullifier } = await this.simulator.computeNoteHashAndOptionallyANullifier(
421
+ note.contractAddress,
422
+ nonce,
423
+ note.storageSlot,
424
+ note.noteTypeId,
425
+ false,
426
+ note.note,
427
+ );
412
428
 
413
429
  if (!innerNullifier.equals(Fr.ZERO)) {
414
430
  throw new Error('Unexpectedly received non-zero nullifier.');
@@ -427,7 +443,7 @@ export class PXEService implements PXE {
427
443
  note.noteTypeId,
428
444
  note.txHash,
429
445
  nonce,
430
- innerNoteHash,
446
+ noteHash,
431
447
  Fr.ZERO, // We are not able to derive
432
448
  index,
433
449
  owner.publicKeys.masterIncomingViewingPublicKey,
@@ -441,33 +457,14 @@ export class PXEService implements PXE {
441
457
  * @param note - The note to find the nonces for.
442
458
  * @returns The nonces of the note.
443
459
  * @remarks More than a single nonce may be returned since there might be more than one nonce for a given note.
444
- * TODO(#4956): Un-expose this
445
460
  */
446
- public async getNoteNonces(note: ExtendedNote): Promise<Fr[]> {
461
+ async #getNoteNonces(note: ExtendedNote): Promise<Fr[]> {
447
462
  const tx = await this.node.getTxEffect(note.txHash);
448
463
  if (!tx) {
449
464
  throw new Error(`Unknown tx: ${note.txHash}`);
450
465
  }
451
466
 
452
467
  const nonces: Fr[] = [];
453
-
454
- // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1386)
455
- // Remove this once notes added from public also include nonces.
456
- {
457
- const publicNoteNonce = Fr.ZERO;
458
- const { siloedNoteHash } = await this.simulator.computeNoteHashAndOptionallyANullifier(
459
- note.contractAddress,
460
- publicNoteNonce,
461
- note.storageSlot,
462
- note.noteTypeId,
463
- false,
464
- note.note,
465
- );
466
- if (tx.noteHashes.some(hash => hash.equals(siloedNoteHash))) {
467
- nonces.push(publicNoteNonce);
468
- }
469
- }
470
-
471
468
  const firstNullifier = tx.nullifiers[0];
472
469
  const hashes = tx.noteHashes;
473
470
  for (let i = 0; i < hashes.length; ++i) {
@@ -501,9 +498,9 @@ export class PXEService implements PXE {
501
498
  return await this.node.getBlock(blockNumber);
502
499
  }
503
500
 
504
- public proveTx(txRequest: TxExecutionRequest, simulatePublic: boolean): Promise<Tx> {
501
+ public proveTx(txRequest: TxExecutionRequest, simulatePublic: boolean, scopes?: AztecAddress[]): Promise<Tx> {
505
502
  return this.jobQueue.put(async () => {
506
- const simulatedTx = await this.#simulateAndProve(txRequest, this.proofCreator, undefined);
503
+ const simulatedTx = await this.#simulateAndProve(txRequest, this.proofCreator, undefined, scopes);
507
504
  if (simulatePublic) {
508
505
  simulatedTx.publicOutput = await this.#simulatePublicCalls(simulatedTx.tx);
509
506
  }
@@ -516,13 +513,21 @@ export class PXEService implements PXE {
516
513
  txRequest: TxExecutionRequest,
517
514
  simulatePublic: boolean,
518
515
  msgSender: AztecAddress | undefined = undefined,
516
+ skipTxValidation: boolean = true, // TODO(#7956): make the default be false
517
+ scopes?: AztecAddress[],
519
518
  ): Promise<SimulatedTx> {
520
519
  return await this.jobQueue.put(async () => {
521
- const simulatedTx = await this.#simulateAndProve(txRequest, this.fakeProofCreator, msgSender);
520
+ const simulatedTx = await this.#simulateAndProve(txRequest, this.fakeProofCreator, msgSender, scopes);
522
521
  if (simulatePublic) {
523
522
  simulatedTx.publicOutput = await this.#simulatePublicCalls(simulatedTx.tx);
524
523
  }
525
524
 
525
+ if (!skipTxValidation) {
526
+ if (!(await this.node.isValidTx(simulatedTx.tx))) {
527
+ throw new Error('The simulated transaction is unable to be added to state and is invalid.');
528
+ }
529
+ }
530
+
526
531
  // We log only if the msgSender is undefined, as simulating with a different msgSender
527
532
  // is unlikely to be a real transaction, and likely to be only used to read data.
528
533
  // Meaning that it will not necessarily have produced a nullifier (and thus have no TxHash)
@@ -549,12 +554,13 @@ export class PXEService implements PXE {
549
554
  args: any[],
550
555
  to: AztecAddress,
551
556
  _from?: AztecAddress,
557
+ scopes?: AztecAddress[],
552
558
  ): Promise<DecodedReturn> {
553
559
  // all simulations must be serialized w.r.t. the synchronizer
554
560
  return await this.jobQueue.put(async () => {
555
561
  // TODO - Should check if `from` has the permission to call the view function.
556
562
  const functionCall = await this.#getFunctionCall(functionName, args, to);
557
- const executionResult = await this.#simulateUnconstrained(functionCall);
563
+ const executionResult = await this.#simulateUnconstrained(functionCall, scopes);
558
564
 
559
565
  // TODO - Return typed result based on the function artifact.
560
566
  return executionResult;
@@ -635,7 +641,7 @@ export class PXEService implements PXE {
635
641
  pxeVersion: this.packageVersion,
636
642
  protocolContractAddresses: {
637
643
  classRegisterer: ClassRegistererAddress,
638
- gasToken: getCanonicalGasToken().address,
644
+ feeJuice: getCanonicalFeeJuice().address,
639
645
  instanceDeployer: getCanonicalInstanceDeployer().address,
640
646
  keyRegistry: getCanonicalKeyRegistryAddress(),
641
647
  multiCallEntrypoint: getCanonicalMultiCallEntrypointAddress(),
@@ -666,14 +672,18 @@ export class PXEService implements PXE {
666
672
  };
667
673
  }
668
674
 
669
- async #simulate(txRequest: TxExecutionRequest, msgSender?: AztecAddress): Promise<ExecutionResult> {
675
+ async #simulate(
676
+ txRequest: TxExecutionRequest,
677
+ msgSender?: AztecAddress,
678
+ scopes?: AztecAddress[],
679
+ ): Promise<ExecutionResult> {
670
680
  // TODO - Pause syncing while simulating.
671
681
 
672
682
  const { contractAddress, functionArtifact } = await this.#getSimulationParameters(txRequest);
673
683
 
674
684
  this.log.debug('Executing simulator...');
675
685
  try {
676
- const result = await this.simulator.run(txRequest, functionArtifact, contractAddress, msgSender);
686
+ const result = await this.simulator.run(txRequest, functionArtifact, contractAddress, msgSender, scopes);
677
687
  this.log.verbose(`Simulation completed for ${contractAddress.toString()}:${functionArtifact.name}`);
678
688
  return result;
679
689
  } catch (err) {
@@ -690,14 +700,15 @@ export class PXEService implements PXE {
690
700
  * Returns the simulation result containing the outputs of the unconstrained function.
691
701
  *
692
702
  * @param execRequest - The transaction request object containing the target contract and function data.
703
+ * @param scopes - The accounts whose notes we can access in this call. Currently optional and will default to all.
693
704
  * @returns The simulation result containing the outputs of the unconstrained function.
694
705
  */
695
- async #simulateUnconstrained(execRequest: FunctionCall) {
706
+ async #simulateUnconstrained(execRequest: FunctionCall, scopes?: AztecAddress[]) {
696
707
  const { contractAddress, functionArtifact } = await this.#getSimulationParameters(execRequest);
697
708
 
698
709
  this.log.debug('Executing unconstrained simulator...');
699
710
  try {
700
- const result = await this.simulator.runUnconstrained(execRequest, functionArtifact, contractAddress);
711
+ const result = await this.simulator.runUnconstrained(execRequest, functionArtifact, contractAddress, scopes);
701
712
  this.log.verbose(`Unconstrained simulation for ${contractAddress}.${functionArtifact.name} completed`);
702
713
 
703
714
  return result;
@@ -730,7 +741,9 @@ export class PXEService implements PXE {
730
741
  const noirCallStack = err.getNoirCallStack();
731
742
  if (debugInfo && isNoirCallStackUnresolved(noirCallStack)) {
732
743
  try {
733
- const parsedCallStack = resolveOpcodeLocations(noirCallStack, debugInfo);
744
+ // Public functions are simulated as a single Brillig entry point.
745
+ // Thus, we can safely assume here that the Brillig function id is `0`.
746
+ const parsedCallStack = resolveOpcodeLocations(noirCallStack, debugInfo, 0);
734
747
  err.setNoirCallStack(parsedCallStack);
735
748
  } catch (err) {
736
749
  this.log.warn(
@@ -755,6 +768,7 @@ export class PXEService implements PXE {
755
768
  * @param txExecutionRequest - The transaction request to be simulated and proved.
756
769
  * @param proofCreator - The proof creator to use for proving the execution.
757
770
  * @param msgSender - (Optional) The message sender to use for the simulation.
771
+ * @param scopes - The accounts whose notes we can access in this call. Currently optional and will default to all.
758
772
  * @returns An object that contains:
759
773
  * A private transaction object containing the proof, public inputs, and encrypted logs.
760
774
  * The return values of the private execution
@@ -763,9 +777,10 @@ export class PXEService implements PXE {
763
777
  txExecutionRequest: TxExecutionRequest,
764
778
  proofCreator: PrivateKernelProver,
765
779
  msgSender?: AztecAddress,
780
+ scopes?: AztecAddress[],
766
781
  ): Promise<SimulatedTx> {
767
782
  // Get values that allow us to reconstruct the block hash
768
- const executionResult = await this.#simulate(txExecutionRequest, msgSender);
783
+ const executionResult = await this.#simulate(txExecutionRequest, msgSender, scopes);
769
784
 
770
785
  const kernelOracle = new KernelOracle(this.contractDataOracle, this.keyStore, this.node);
771
786
  const kernelProver = new KernelProver(kernelOracle, proofCreator);
@@ -77,18 +77,19 @@ export class SimulatorOracle implements DBOracle {
77
77
  return capsule;
78
78
  }
79
79
 
80
- async getNotes(contractAddress: AztecAddress, storageSlot: Fr, status: NoteStatus) {
80
+ async getNotes(contractAddress: AztecAddress, storageSlot: Fr, status: NoteStatus, scopes?: AztecAddress[]) {
81
81
  const noteDaos = await this.db.getIncomingNotes({
82
82
  contractAddress,
83
83
  storageSlot,
84
84
  status,
85
+ scopes,
85
86
  });
86
- return noteDaos.map(({ contractAddress, storageSlot, nonce, note, innerNoteHash, siloedNullifier, index }) => ({
87
+ return noteDaos.map(({ contractAddress, storageSlot, nonce, note, noteHash, siloedNullifier, index }) => ({
87
88
  contractAddress,
88
89
  storageSlot,
89
90
  nonce,
90
91
  note,
91
- innerNoteHash,
92
+ noteHash,
92
93
  siloedNullifier,
93
94
  // PXE can use this index to get full MembershipWitness
94
95
  index,
@@ -1,15 +1,14 @@
1
1
  import { type AztecNode, type L2Block, MerkleTreeId, type TxHash } from '@aztec/circuit-types';
2
2
  import { type NoteProcessorCaughtUpStats } from '@aztec/circuit-types/stats';
3
3
  import { type AztecAddress, type Fr, INITIAL_L2_BLOCK_NUM, type PublicKey } from '@aztec/circuits.js';
4
- import { type SerialQueue } from '@aztec/foundation/fifo';
5
4
  import { type DebugLogger, createDebugLogger } from '@aztec/foundation/log';
5
+ import { type SerialQueue } from '@aztec/foundation/queue';
6
6
  import { RunningPromise } from '@aztec/foundation/running-promise';
7
7
  import { type KeyStore } from '@aztec/key-store';
8
8
 
9
9
  import { type DeferredNoteDao } from '../database/deferred_note_dao.js';
10
10
  import { type IncomingNoteDao } from '../database/incoming_note_dao.js';
11
11
  import { type PxeDatabase } from '../database/index.js';
12
- import { type OutgoingNoteDao } from '../database/outgoing_note_dao.js';
13
12
  import { NoteProcessor } from '../note_processor/index.js';
14
13
 
15
14
  /**
@@ -334,7 +333,6 @@ export class Synchronizer {
334
333
 
335
334
  // keep track of decoded notes
336
335
  const incomingNotes: IncomingNoteDao[] = [];
337
- const outgoingNotes: OutgoingNoteDao[] = [];
338
336
 
339
337
  // now process each txHash
340
338
  for (const deferredNotes of txHashToDeferredNotes.values()) {
@@ -342,27 +340,29 @@ export class Synchronizer {
342
340
  for (const processor of this.noteProcessors) {
343
341
  const { incomingNotes: inNotes, outgoingNotes: outNotes } = await processor.decodeDeferredNotes(deferredNotes);
344
342
  incomingNotes.push(...inNotes);
345
- outgoingNotes.push(...outNotes);
343
+
344
+ await this.db.addNotes(inNotes, outNotes, processor.account);
345
+
346
+ inNotes.forEach(noteDao => {
347
+ this.log.debug(
348
+ `Decoded deferred incoming note under account ${processor.account.toString()} for contract ${
349
+ noteDao.contractAddress
350
+ } at slot ${noteDao.storageSlot} with nullifier ${noteDao.siloedNullifier.toString()}`,
351
+ );
352
+ });
353
+
354
+ outNotes.forEach(noteDao => {
355
+ this.log.debug(
356
+ `Decoded deferred outgoing note under account ${processor.account.toString()} for contract ${
357
+ noteDao.contractAddress
358
+ } at slot ${noteDao.storageSlot}`,
359
+ );
360
+ });
346
361
  }
347
362
  }
348
363
 
349
364
  // now drop the deferred notes, and add the decoded notes
350
365
  await this.db.removeDeferredNotesByContract(contractAddress);
351
- await this.db.addNotes(incomingNotes, outgoingNotes);
352
-
353
- incomingNotes.forEach(noteDao => {
354
- this.log.debug(
355
- `Decoded deferred incoming note for contract ${noteDao.contractAddress} at slot ${
356
- noteDao.storageSlot
357
- } with nullifier ${noteDao.siloedNullifier.toString()}`,
358
- );
359
- });
360
-
361
- outgoingNotes.forEach(noteDao => {
362
- this.log.debug(
363
- `Decoded deferred outgoing note for contract ${noteDao.contractAddress} at slot ${noteDao.storageSlot}`,
364
- );
365
- });
366
366
 
367
367
  await this.#removeNullifiedNotes(incomingNotes);
368
368
  }
@@ -1 +0,0 @@
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,EAWL,KAAK,iBAAiB,EAEtB,KAAK,8CAA8C,EAWpD,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AA2DnE,wBAAsB,6BAA6B,CACjD,cAAc,EAAE,eAAe,EAAE,EACjC,kBAAkB,EAAE,iBAAiB,EACrC,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACzC,2BAA2B,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAChD,MAAM,EAAE,iBAAiB,2DA4G1B"}
@@ -1,77 +0,0 @@
1
- import { KeyValidationHint, MAX_KEY_VALIDATION_REQUESTS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX, MembershipWitness, NULLIFIER_TREE_HEIGHT, PRIVATE_RESET_VARIANTS, PrivateKernelResetCircuitPrivateInputs, PrivateKernelResetHints, ScopedNoteHash, ScopedNullifier, ScopedReadRequest, buildNoteHashReadRequestHints, buildNullifierReadRequestHints, buildTransientDataHints, getNonEmptyItems, } from '@aztec/circuits.js';
2
- import { makeTuple } from '@aztec/foundation/array';
3
- function getNullifierReadRequestHints(nullifierReadRequests, nullifiers, oracle, sizePending, sizeSettled, futureNullifiers) {
4
- const getNullifierMembershipWitness = async (nullifier) => {
5
- const res = await oracle.getNullifierMembershipWitness(nullifier);
6
- if (!res) {
7
- throw new Error(`Cannot find the leaf for nullifier ${nullifier.toBigInt()}.`);
8
- }
9
- const { index, siblingPath, leafPreimage } = res;
10
- return {
11
- membershipWitness: new MembershipWitness(NULLIFIER_TREE_HEIGHT, index, siblingPath.toTuple()),
12
- leafPreimage,
13
- };
14
- };
15
- return buildNullifierReadRequestHints({ getNullifierMembershipWitness }, nullifierReadRequests, nullifiers, sizePending, sizeSettled, futureNullifiers);
16
- }
17
- async function getMasterSecretKeysAndAppKeyGenerators(keyValidationRequests, oracle) {
18
- const keysHints = makeTuple(MAX_KEY_VALIDATION_REQUESTS_PER_TX, KeyValidationHint.empty);
19
- let keyIndex = 0;
20
- for (let i = 0; i < keyValidationRequests.length; ++i) {
21
- const request = keyValidationRequests[i].request;
22
- if (request.isEmpty()) {
23
- break;
24
- }
25
- const secretKeys = await oracle.getMasterSecretKey(request.request.pkM);
26
- keysHints[keyIndex] = new KeyValidationHint(secretKeys, i);
27
- keyIndex++;
28
- }
29
- return {
30
- keysCount: keyIndex,
31
- keysHints,
32
- };
33
- }
34
- export async function buildPrivateKernelResetInputs(executionStack, previousKernelData, noteHashLeafIndexMap, noteHashNullifierCounterMap, oracle) {
35
- const publicInputs = previousKernelData.publicInputs;
36
- // Use max sizes, they will be trimmed down later.
37
- const futureNoteHashes = collectNested(executionStack, executionResult => {
38
- const nonEmptyNoteHashes = getNonEmptyItems(executionResult.callStackItem.publicInputs.noteHashes);
39
- return nonEmptyNoteHashes.map(noteHash => new ScopedNoteHash(noteHash, executionResult.callStackItem.publicInputs.callContext.storageContractAddress));
40
- });
41
- const { numPendingReadHints: noteHashPendingReadHints, numSettledReadHints: noteHashSettledReadHints, hints: noteHashReadRequestHints, } = await buildNoteHashReadRequestHints(oracle, publicInputs.validationRequests.noteHashReadRequests, publicInputs.end.noteHashes, noteHashLeafIndexMap, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, futureNoteHashes);
42
- const futureNullifiers = collectNested(executionStack, executionResult => {
43
- const nonEmptyNullifiers = getNonEmptyItems(executionResult.callStackItem.publicInputs.nullifiers);
44
- return nonEmptyNullifiers.map(nullifier => new ScopedNullifier(nullifier, executionResult.callStackItem.publicInputs.callContext.storageContractAddress));
45
- });
46
- const { numPendingReadHints: nullifierPendingReadHints, numSettledReadHints: nullifierSettledReadHints, hints: nullifierReadRequestHints, } = await getNullifierReadRequestHints(publicInputs.validationRequests.nullifierReadRequests, publicInputs.end.nullifiers, oracle, MAX_NULLIFIER_READ_REQUESTS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX, futureNullifiers);
47
- const { keysCount, keysHints } = await getMasterSecretKeysAndAppKeyGenerators(publicInputs.validationRequests.scopedKeyValidationRequestsAndGenerators, oracle);
48
- const futureNoteHashReads = collectNestedReadRequests(executionStack, executionResult => executionResult.callStackItem.publicInputs.noteHashReadRequests);
49
- const futureNullifierReads = collectNestedReadRequests(executionStack, executionResult => executionResult.callStackItem.publicInputs.nullifierReadRequests);
50
- const [transientNullifierIndexesForNoteHashes, transientNoteHashIndexesForNullifiers] = buildTransientDataHints(publicInputs.end.noteHashes, publicInputs.end.nullifiers, futureNoteHashReads, futureNullifierReads, noteHashNullifierCounterMap, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX);
51
- let privateInputs;
52
- for (const [sizeTag, hintSizes] of Object.entries(PRIVATE_RESET_VARIANTS)) {
53
- if (hintSizes.NOTE_HASH_PENDING_AMOUNT >= noteHashPendingReadHints &&
54
- hintSizes.NOTE_HASH_SETTLED_AMOUNT >= noteHashSettledReadHints &&
55
- hintSizes.NULLIFIER_PENDING_AMOUNT >= nullifierPendingReadHints &&
56
- hintSizes.NULLIFIER_SETTLED_AMOUNT >= nullifierSettledReadHints &&
57
- hintSizes.NULLIFIER_KEYS >= keysCount) {
58
- privateInputs = new PrivateKernelResetCircuitPrivateInputs(previousKernelData, new PrivateKernelResetHints(transientNullifierIndexesForNoteHashes, transientNoteHashIndexesForNullifiers, 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);
59
- break;
60
- }
61
- }
62
- if (!privateInputs) {
63
- throw new Error('No private inputs found for the given hint sizes.');
64
- }
65
- return privateInputs;
66
- }
67
- function collectNested(executionStack, extractExecutionItems) {
68
- const thisExecutionReads = executionStack.flatMap(extractExecutionItems);
69
- return thisExecutionReads.concat(executionStack.flatMap(({ nestedExecutions }) => collectNested(nestedExecutions, extractExecutionItems)));
70
- }
71
- function collectNestedReadRequests(executionStack, extractReadRequests) {
72
- return collectNested(executionStack, executionResult => {
73
- const nonEmptyReadRequests = getNonEmptyItems(extractReadRequests(executionResult));
74
- return nonEmptyReadRequests.map(readRequest => new ScopedReadRequest(readRequest, executionResult.callStackItem.publicInputs.callContext.storageContractAddress));
75
- });
76
- }
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRfcHJpdmF0ZV9rZXJuZWxfcmVzZXRfaGludHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMva2VybmVsX3Byb3Zlci9wcml2YXRlX2lucHV0c19idWlsZGVycy9idWlsZF9wcml2YXRlX2tlcm5lbF9yZXNldF9oaW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLGtDQUFrQyxFQUNsQyxzQkFBc0IsRUFDdEIsa0NBQWtDLEVBQ2xDLHFCQUFxQixFQUNyQixrQ0FBa0MsRUFDbEMsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixzQkFBc0IsRUFFdEIsc0NBQXNDLEVBRXRDLHVCQUF1QixFQUd2QixjQUFjLEVBQ2QsZUFBZSxFQUNmLGlCQUFpQixFQUNqQiw2QkFBNkIsRUFDN0IsOEJBQThCLEVBQzlCLHVCQUF1QixFQUN2QixnQkFBZ0IsR0FDakIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFNcEQsU0FBUyw0QkFBNEIsQ0FDbkMscUJBQTBGLEVBQzFGLFVBQWdFLEVBQ2hFLE1BQXlCLEVBQ3pCLFdBQW9CLEVBQ3BCLFdBQW9CLEVBQ3BCLGdCQUFtQztJQUVuQyxNQUFNLDZCQUE2QixHQUFHLEtBQUssRUFBRSxTQUFhLEVBQUUsRUFBRTtRQUM1RCxNQUFNLEdBQUcsR0FBRyxNQUFNLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxTQUFTLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7UUFFRCxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDakQsT0FBTztZQUNMLGlCQUFpQixFQUFF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
@@ -1,2 +0,0 @@
1
- export { buildPrivateKernelResetInputs } from './build_private_kernel_reset_hints.js';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/kernel_prover/private_inputs_builders/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC"}
@@ -1,2 +0,0 @@
1
- export { buildPrivateKernelResetInputs } from './build_private_kernel_reset_hints.js';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMva2VybmVsX3Byb3Zlci9wcml2YXRlX2lucHV0c19idWlsZGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQyJ9
@@ -1 +0,0 @@
1
- export { buildPrivateKernelResetInputs } from './build_private_kernel_reset_hints.js';