@aztec/pxe 0.81.0 → 0.82.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 (72) hide show
  1. package/dest/config/package_info.js +1 -1
  2. package/dest/entrypoints/server/utils.d.ts +15 -7
  3. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  4. package/dest/entrypoints/server/utils.js +17 -9
  5. package/dest/{kernel_prover → private_kernel}/hints/build_private_kernel_reset_private_inputs.d.ts +2 -2
  6. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +1 -0
  7. package/dest/private_kernel/hints/index.d.ts.map +1 -0
  8. package/dest/private_kernel/index.d.ts +3 -0
  9. package/dest/private_kernel/index.d.ts.map +1 -0
  10. package/dest/private_kernel/index.js +2 -0
  11. package/dest/{kernel_prover/kernel_prover.d.ts → private_kernel/private_kernel_execution_prover.d.ts} +13 -14
  12. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -0
  13. package/dest/{kernel_prover/kernel_prover.js → private_kernel/private_kernel_execution_prover.js} +64 -64
  14. package/dest/{kernel_prover/proving_data_oracle.d.ts → private_kernel/private_kernel_oracle.d.ts} +17 -28
  15. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -0
  16. package/dest/private_kernel/private_kernel_oracle.js +4 -0
  17. package/dest/{kernel_oracle/index.d.ts → private_kernel/private_kernel_oracle_impl.d.ts} +5 -5
  18. package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +1 -0
  19. package/dest/{kernel_oracle/index.js → private_kernel/private_kernel_oracle_impl.js} +2 -2
  20. package/dest/pxe_oracle_interface/pxe_oracle_interface.d.ts +7 -16
  21. package/dest/pxe_oracle_interface/pxe_oracle_interface.d.ts.map +1 -1
  22. package/dest/pxe_oracle_interface/pxe_oracle_interface.js +11 -32
  23. package/dest/pxe_service/pxe_service.d.ts +13 -27
  24. package/dest/pxe_service/pxe_service.d.ts.map +1 -1
  25. package/dest/pxe_service/pxe_service.js +207 -235
  26. package/dest/storage/contract_data_provider/contract_data_provider.d.ts +2 -2
  27. package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +1 -1
  28. package/dest/storage/contract_data_provider/contract_data_provider.js +6 -1
  29. package/dest/storage/contract_data_provider/private_functions_tree.d.ts +2 -2
  30. package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +1 -1
  31. package/dest/storage/index.d.ts +1 -2
  32. package/dest/storage/index.d.ts.map +1 -1
  33. package/dest/storage/index.js +1 -2
  34. package/dest/storage/metadata.d.ts +2 -0
  35. package/dest/storage/metadata.d.ts.map +1 -0
  36. package/dest/storage/metadata.js +1 -0
  37. package/package.json +15 -15
  38. package/src/config/package_info.ts +1 -1
  39. package/src/entrypoints/server/utils.ts +25 -11
  40. package/src/{kernel_prover → private_kernel}/hints/build_private_kernel_reset_private_inputs.ts +4 -4
  41. package/src/private_kernel/index.ts +2 -0
  42. package/src/{kernel_prover/kernel_prover.ts → private_kernel/private_kernel_execution_prover.ts} +76 -71
  43. package/src/{kernel_prover/proving_data_oracle.ts → private_kernel/private_kernel_oracle.ts} +17 -29
  44. package/src/{kernel_oracle/index.ts → private_kernel/private_kernel_oracle_impl.ts} +6 -5
  45. package/src/pxe_oracle_interface/pxe_oracle_interface.ts +25 -40
  46. package/src/pxe_service/pxe_service.ts +279 -293
  47. package/src/storage/contract_data_provider/contract_data_provider.ts +11 -2
  48. package/src/storage/contract_data_provider/private_functions_tree.ts +2 -2
  49. package/src/storage/index.ts +1 -3
  50. package/src/storage/metadata.ts +1 -0
  51. package/dest/kernel_oracle/index.d.ts.map +0 -1
  52. package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
  53. package/dest/kernel_prover/hints/index.d.ts.map +0 -1
  54. package/dest/kernel_prover/index.d.ts +0 -3
  55. package/dest/kernel_prover/index.d.ts.map +0 -1
  56. package/dest/kernel_prover/index.js +0 -2
  57. package/dest/kernel_prover/kernel_prover.d.ts.map +0 -1
  58. package/dest/kernel_prover/proving_data_oracle.d.ts.map +0 -1
  59. package/dest/kernel_prover/proving_data_oracle.js +0 -4
  60. package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.d.ts +0 -11
  61. package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.d.ts.map +0 -1
  62. package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.js +0 -20
  63. package/dest/storage/auth_witness_data_provider/index.d.ts +0 -2
  64. package/dest/storage/auth_witness_data_provider/index.d.ts.map +0 -1
  65. package/dest/storage/auth_witness_data_provider/index.js +0 -1
  66. package/src/kernel_prover/index.ts +0 -2
  67. package/src/storage/auth_witness_data_provider/auth_witness_data_provider.ts +0 -34
  68. package/src/storage/auth_witness_data_provider/index.ts +0 -1
  69. /package/dest/{kernel_prover → private_kernel}/hints/build_private_kernel_reset_private_inputs.js +0 -0
  70. /package/dest/{kernel_prover → private_kernel}/hints/index.d.ts +0 -0
  71. /package/dest/{kernel_prover → private_kernel}/hints/index.js +0 -0
  72. /package/src/{kernel_prover → private_kernel}/hints/index.ts +0 -0
@@ -12,6 +12,7 @@ import {
12
12
  } from '@aztec/simulator/client';
13
13
  import {
14
14
  type FunctionArtifact,
15
+ type FunctionArtifactWithContractName,
15
16
  FunctionCall,
16
17
  FunctionSelector,
17
18
  FunctionType,
@@ -33,7 +34,6 @@ import type { BlockHeader } from '@aztec/stdlib/tx';
33
34
  import { TxHash } from '@aztec/stdlib/tx';
34
35
 
35
36
  import type { AddressDataProvider } from '../storage/address_data_provider/address_data_provider.js';
36
- import type { AuthWitnessDataProvider } from '../storage/auth_witness_data_provider/auth_witness_data_provider.js';
37
37
  import type { CapsuleDataProvider } from '../storage/capsule_data_provider/capsule_data_provider.js';
38
38
  import type { ContractDataProvider } from '../storage/contract_data_provider/contract_data_provider.js';
39
39
  import { NoteDao } from '../storage/note_data_provider/note_dao.js';
@@ -56,8 +56,7 @@ export class PXEOracleInterface implements ExecutionDataProvider {
56
56
  private syncDataProvider: SyncDataProvider,
57
57
  private taggingDataProvider: TaggingDataProvider,
58
58
  private addressDataProvider: AddressDataProvider,
59
- private authWitnessDataProvider: AuthWitnessDataProvider,
60
- private log = createLogger('pxe:pxe_data_manager'),
59
+ private log = createLogger('pxe:pxe_oracle_interface'),
61
60
  ) {}
62
61
 
63
62
  getKeyValidationRequest(pkMHash: Fr, contractAddress: AztecAddress): Promise<KeyValidationRequest> {
@@ -83,11 +82,6 @@ export class PXEOracleInterface implements ExecutionDataProvider {
83
82
  return instance;
84
83
  }
85
84
 
86
- async getAuthWitness(messageHash: Fr): Promise<Fr[] | undefined> {
87
- const witness = await this.authWitnessDataProvider.getAuthWitness(messageHash);
88
- return witness;
89
- }
90
-
91
85
  async getNotes(contractAddress: AztecAddress, storageSlot: Fr, status: NoteStatus, scopes?: AztecAddress[]) {
92
86
  const noteDaos = await this.noteDataProvider.getNotes({
93
87
  contractAddress,
@@ -107,7 +101,10 @@ export class PXEOracleInterface implements ExecutionDataProvider {
107
101
  }));
108
102
  }
109
103
 
110
- async getFunctionArtifact(contractAddress: AztecAddress, selector: FunctionSelector): Promise<FunctionArtifact> {
104
+ async getFunctionArtifact(
105
+ contractAddress: AztecAddress,
106
+ selector: FunctionSelector,
107
+ ): Promise<FunctionArtifactWithContractName> {
111
108
  const artifact = await this.contractDataProvider.getFunctionArtifact(contractAddress, selector);
112
109
  const debug = await this.contractDataProvider.getFunctionDebugMetadata(contractAddress, selector);
113
110
  return {
@@ -119,7 +116,7 @@ export class PXEOracleInterface implements ExecutionDataProvider {
119
116
  async getFunctionArtifactByName(
120
117
  contractAddress: AztecAddress,
121
118
  functionName: string,
122
- ): Promise<FunctionArtifact | undefined> {
119
+ ): Promise<FunctionArtifactWithContractName | undefined> {
123
120
  const instance = await this.contractDataProvider.getContractInstance(contractAddress);
124
121
  const artifact = await this.contractDataProvider.getContractArtifact(instance.currentContractClassId);
125
122
  return artifact && getFunctionArtifact(artifact, functionName);
@@ -150,21 +147,12 @@ export class PXEOracleInterface implements ExecutionDataProvider {
150
147
  }
151
148
 
152
149
  // Only used in public.
153
- public getL1ToL2LeafValue(_leafIndex: bigint): Promise<Fr | undefined> {
150
+ public getL1ToL2MessageHash(_leafIndex: bigint): Promise<Fr | undefined> {
154
151
  throw new Error('Unimplemented in private!');
155
152
  }
156
153
 
157
- /**
158
- * Gets the index of a commitment in the note hash tree.
159
- * @param commitment - The commitment.
160
- * @returns - The index of the commitment. Undefined if it does not exist in the tree.
161
- */
162
- async getCommitmentIndex(commitment: Fr) {
163
- return await this.#findLeafIndex('latest', MerkleTreeId.NOTE_HASH_TREE, commitment);
164
- }
165
-
166
154
  // We need this in public as part of the EXISTS calls - but isn't used in private
167
- public getCommitmentValue(_leafIndex: bigint): Promise<Fr | undefined> {
155
+ public getNoteHash(_leafIndex: bigint): Promise<Fr | undefined> {
168
156
  throw new Error('Unimplemented in private!');
169
157
  }
170
158
 
@@ -174,7 +162,7 @@ export class PXEOracleInterface implements ExecutionDataProvider {
174
162
 
175
163
  async #findLeafIndex(blockNumber: L2BlockNumber, treeId: MerkleTreeId, leafValue: Fr): Promise<bigint | undefined> {
176
164
  const [leafIndex] = await this.aztecNode.findLeavesIndexes(blockNumber, treeId, [leafValue]);
177
- return leafIndex;
165
+ return leafIndex?.data;
178
166
  }
179
167
 
180
168
  public async getMembershipWitness(blockNumber: number, treeId: MerkleTreeId, leafValue: Fr): Promise<Fr[]> {
@@ -225,8 +213,8 @@ export class PXEOracleInterface implements ExecutionDataProvider {
225
213
  return await this.aztecNode.getBlock(blockNumber);
226
214
  }
227
215
 
228
- public async getPublicDataTreeWitness(blockNumber: number, leafSlot: Fr): Promise<PublicDataWitness | undefined> {
229
- return await this.aztecNode.getPublicDataTreeWitness(blockNumber, leafSlot);
216
+ public async getPublicDataWitness(blockNumber: number, leafSlot: Fr): Promise<PublicDataWitness | undefined> {
217
+ return await this.aztecNode.getPublicDataWitness(blockNumber, leafSlot);
230
218
  }
231
219
 
232
220
  public async getPublicStorageAt(blockNumber: number, contract: AztecAddress, slot: Fr): Promise<Fr> {
@@ -667,26 +655,17 @@ export class PXEOracleInterface implements ExecutionDataProvider {
667
655
 
668
656
  // We store notes by their index in the global note hash tree, which has the convenient side effect of validating
669
657
  // note existence in said tree.
670
- const [uniqueNoteHashTreeIndex] = await this.aztecNode.findLeavesIndexes(
658
+ const [uniqueNoteHashTreeIndexInBlock] = await this.aztecNode.findLeavesIndexes(
671
659
  syncedBlockNumber,
672
660
  MerkleTreeId.NOTE_HASH_TREE,
673
661
  [uniqueNoteHash],
674
662
  );
675
- if (uniqueNoteHashTreeIndex === undefined) {
663
+ if (uniqueNoteHashTreeIndexInBlock === undefined) {
676
664
  throw new Error(
677
665
  `Note hash ${noteHash} (uniqued as ${uniqueNoteHash}) is not present on the tree at block ${syncedBlockNumber} (from tx ${txHash})`,
678
666
  );
679
667
  }
680
668
 
681
- // TODO (#12550): findLeavesIndexes should probably return an InBlock, same as findNullifiersIndexesWithBlock. This
682
- // would save us from having to then query the tx receipt in order to get the block hash and number. Note regardless
683
- // that we're not validating that the note was indeed created in this tx (which would require inspecting the tx
684
- // effects), so maybe what we really want is an InTx.
685
- const txReceipt = await this.aztecNode.getTxReceipt(new TxHash(txHash));
686
- if (txReceipt === undefined) {
687
- throw new Error(`Failed to fetch tx receipt for tx hash ${txHash} when searching for note hashes`);
688
- }
689
-
690
669
  const noteDao = new NoteDao(
691
670
  new Note(content),
692
671
  contractAddress,
@@ -695,9 +674,9 @@ export class PXEOracleInterface implements ExecutionDataProvider {
695
674
  noteHash,
696
675
  siloedNullifier,
697
676
  new TxHash(txHash),
698
- txReceipt.blockNumber!,
699
- txReceipt.blockHash!.toString(),
700
- uniqueNoteHashTreeIndex,
677
+ uniqueNoteHashTreeIndexInBlock?.l2BlockNumber,
678
+ uniqueNoteHashTreeIndexInBlock?.l2BlockHash,
679
+ uniqueNoteHashTreeIndexInBlock?.data,
701
680
  recipient,
702
681
  );
703
682
 
@@ -709,7 +688,9 @@ export class PXEOracleInterface implements ExecutionDataProvider {
709
688
  nullifier: noteDao.siloedNullifier.toString(),
710
689
  });
711
690
 
712
- const [nullifierIndex] = await this.aztecNode.findNullifiersIndexesWithBlock(syncedBlockNumber, [siloedNullifier]);
691
+ const [nullifierIndex] = await this.aztecNode.findLeavesIndexes(syncedBlockNumber, MerkleTreeId.NULLIFIER_TREE, [
692
+ siloedNullifier,
693
+ ]);
713
694
  if (nullifierIndex !== undefined) {
714
695
  const { data: _, ...blockHashAndNum } = nullifierIndex;
715
696
  await this.noteDataProvider.removeNullifiedNotes([{ data: siloedNullifier, ...blockHashAndNum }], recipient);
@@ -766,7 +747,11 @@ export class PXEOracleInterface implements ExecutionDataProvider {
766
747
  for (const recipient of await this.keyStore.getAccounts()) {
767
748
  const currentNotesForRecipient = await this.noteDataProvider.getNotes({ contractAddress, recipient });
768
749
  const nullifiersToCheck = currentNotesForRecipient.map(note => note.siloedNullifier);
769
- const nullifierIndexes = await this.aztecNode.findNullifiersIndexesWithBlock('latest', nullifiersToCheck);
750
+ const nullifierIndexes = await this.aztecNode.findLeavesIndexes(
751
+ 'latest',
752
+ MerkleTreeId.NULLIFIER_TREE,
753
+ nullifiersToCheck,
754
+ );
770
755
 
771
756
  const foundNullifiers = nullifiersToCheck
772
757
  .map((nullifier, i) => {