@aztec/pxe 0.77.1 → 0.78.1

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 (180) hide show
  1. package/dest/bin/index.js +1 -1
  2. package/dest/config/index.d.ts +1 -0
  3. package/dest/config/index.d.ts.map +1 -1
  4. package/dest/config/index.js +1 -0
  5. package/dest/entrypoints/client/bundle/index.d.ts +6 -0
  6. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -0
  7. package/dest/entrypoints/client/bundle/index.js +5 -0
  8. package/dest/entrypoints/client/bundle/utils.d.ts +16 -0
  9. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -0
  10. package/dest/entrypoints/client/bundle/utils.js +30 -0
  11. package/dest/entrypoints/client/lazy/index.d.ts +6 -0
  12. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -0
  13. package/dest/entrypoints/client/lazy/index.js +5 -0
  14. package/dest/entrypoints/client/lazy/utils.d.ts +15 -0
  15. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -0
  16. package/dest/entrypoints/client/lazy/utils.js +29 -0
  17. package/dest/entrypoints/client/pxe_creation_options.d.ts +11 -0
  18. package/dest/entrypoints/client/pxe_creation_options.d.ts.map +1 -0
  19. package/dest/entrypoints/server/index.d.ts +7 -0
  20. package/dest/entrypoints/server/index.d.ts.map +1 -0
  21. package/dest/entrypoints/server/index.js +6 -0
  22. package/dest/{utils/create_pxe_service.d.ts → entrypoints/server/utils.d.ts} +4 -4
  23. package/dest/entrypoints/server/utils.d.ts.map +1 -0
  24. package/dest/{utils/create_pxe_service.js → entrypoints/server/utils.js} +5 -11
  25. package/dest/kernel_oracle/index.d.ts +2 -1
  26. package/dest/kernel_oracle/index.d.ts.map +1 -1
  27. package/dest/kernel_prover/kernel_prover.d.ts.map +1 -1
  28. package/dest/kernel_prover/kernel_prover.js +0 -28
  29. package/dest/note_decryption_utils/add_public_values_to_payload.d.ts +2 -2
  30. package/dest/note_decryption_utils/add_public_values_to_payload.d.ts.map +1 -1
  31. package/dest/note_decryption_utils/add_public_values_to_payload.js +3 -3
  32. package/dest/{pxe_data_provider → pxe_oracle_interface}/index.d.ts +17 -9
  33. package/dest/pxe_oracle_interface/index.d.ts.map +1 -0
  34. package/dest/{pxe_data_provider → pxe_oracle_interface}/index.js +104 -61
  35. package/dest/pxe_oracle_interface/tagging_utils.d.ts.map +1 -0
  36. package/dest/pxe_service/error_enriching.d.ts +3 -4
  37. package/dest/pxe_service/error_enriching.d.ts.map +1 -1
  38. package/dest/pxe_service/error_enriching.js +4 -4
  39. package/dest/pxe_service/pxe_service.d.ts +18 -14
  40. package/dest/pxe_service/pxe_service.d.ts.map +1 -1
  41. package/dest/pxe_service/pxe_service.js +118 -65
  42. package/dest/storage/address_data_provider/address_data_provider.d.ts +13 -0
  43. package/dest/storage/address_data_provider/address_data_provider.d.ts.map +1 -0
  44. package/dest/storage/address_data_provider/address_data_provider.js +50 -0
  45. package/dest/storage/address_data_provider/index.d.ts +2 -0
  46. package/dest/storage/address_data_provider/index.d.ts.map +1 -0
  47. package/dest/storage/address_data_provider/index.js +1 -0
  48. package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.d.ts +11 -0
  49. package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.d.ts.map +1 -0
  50. package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.js +20 -0
  51. package/dest/storage/auth_witness_data_provider/index.d.ts +2 -0
  52. package/dest/storage/auth_witness_data_provider/index.d.ts.map +1 -0
  53. package/dest/storage/auth_witness_data_provider/index.js +1 -0
  54. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +16 -0
  55. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +1 -0
  56. package/dest/storage/capsule_data_provider/capsule_data_provider.js +57 -0
  57. package/dest/storage/capsule_data_provider/index.d.ts +2 -0
  58. package/dest/storage/capsule_data_provider/index.d.ts.map +1 -0
  59. package/dest/storage/capsule_data_provider/index.js +1 -0
  60. package/dest/{contract_data_provider → storage/contract_data_provider}/contract_data_provider.d.ts +38 -33
  61. package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +1 -0
  62. package/dest/{contract_data_provider → storage/contract_data_provider}/contract_data_provider.js +87 -42
  63. package/dest/storage/contract_data_provider/index.d.ts.map +1 -0
  64. package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +1 -0
  65. package/dest/storage/data_provider.d.ts +4 -0
  66. package/dest/storage/data_provider.d.ts.map +1 -0
  67. package/dest/storage/data_provider.js +1 -0
  68. package/dest/storage/index.d.ts +10 -0
  69. package/dest/storage/index.d.ts.map +1 -0
  70. package/dest/storage/index.js +9 -0
  71. package/dest/storage/note_data_provider/index.d.ts +3 -0
  72. package/dest/storage/note_data_provider/index.d.ts.map +1 -0
  73. package/dest/storage/note_data_provider/index.js +2 -0
  74. package/dest/storage/note_data_provider/note_dao.d.ts.map +1 -0
  75. package/dest/storage/note_data_provider/note_data_provider.d.ts +20 -0
  76. package/dest/storage/note_data_provider/note_data_provider.d.ts.map +1 -0
  77. package/dest/storage/note_data_provider/note_data_provider.js +249 -0
  78. package/dest/storage/sync_data_provider/index.d.ts +2 -0
  79. package/dest/storage/sync_data_provider/index.d.ts.map +1 -0
  80. package/dest/storage/sync_data_provider/index.js +1 -0
  81. package/dest/storage/sync_data_provider/sync_data_provider.d.ts +12 -0
  82. package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +1 -0
  83. package/dest/storage/sync_data_provider/sync_data_provider.js +29 -0
  84. package/dest/storage/tagging_data_provider/index.d.ts +2 -0
  85. package/dest/storage/tagging_data_provider/index.d.ts.map +1 -0
  86. package/dest/storage/tagging_data_provider/index.js +1 -0
  87. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +18 -0
  88. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +1 -0
  89. package/dest/storage/tagging_data_provider/tagging_data_provider.js +65 -0
  90. package/dest/synchronizer/synchronizer.d.ts +7 -3
  91. package/dest/synchronizer/synchronizer.d.ts.map +1 -1
  92. package/dest/synchronizer/synchronizer.js +16 -11
  93. package/dest/test/pxe_test_suite.d.ts.map +1 -0
  94. package/dest/{pxe_service/test → test}/pxe_test_suite.js +2 -6
  95. package/package.json +19 -26
  96. package/src/bin/index.ts +1 -1
  97. package/src/config/index.ts +2 -0
  98. package/src/entrypoints/client/bundle/index.ts +5 -0
  99. package/src/entrypoints/client/bundle/utils.ts +58 -0
  100. package/src/entrypoints/client/lazy/index.ts +5 -0
  101. package/src/entrypoints/client/lazy/utils.ts +53 -0
  102. package/src/entrypoints/client/pxe_creation_options.ts +7 -0
  103. package/src/entrypoints/server/index.ts +6 -0
  104. package/src/{utils/create_pxe_service.ts → entrypoints/server/utils.ts} +7 -18
  105. package/src/kernel_oracle/index.ts +1 -1
  106. package/src/kernel_prover/kernel_prover.ts +0 -51
  107. package/src/note_decryption_utils/add_public_values_to_payload.ts +4 -4
  108. package/src/{pxe_data_provider → pxe_oracle_interface}/index.ts +128 -96
  109. package/src/pxe_service/error_enriching.ts +8 -6
  110. package/src/pxe_service/pxe_service.ts +155 -89
  111. package/src/storage/address_data_provider/address_data_provider.ts +71 -0
  112. package/src/storage/address_data_provider/index.ts +1 -0
  113. package/src/storage/auth_witness_data_provider/auth_witness_data_provider.ts +34 -0
  114. package/src/storage/auth_witness_data_provider/index.ts +1 -0
  115. package/src/storage/capsule_data_provider/capsule_data_provider.ts +80 -0
  116. package/src/storage/capsule_data_provider/index.ts +1 -0
  117. package/src/{contract_data_provider → storage/contract_data_provider}/contract_data_provider.ts +128 -48
  118. package/src/storage/data_provider.ts +3 -0
  119. package/src/storage/index.ts +10 -0
  120. package/src/storage/note_data_provider/index.ts +2 -0
  121. package/src/storage/note_data_provider/note_data_provider.ts +345 -0
  122. package/src/storage/sync_data_provider/index.ts +1 -0
  123. package/src/storage/sync_data_provider/sync_data_provider.ts +40 -0
  124. package/src/storage/tagging_data_provider/index.ts +1 -0
  125. package/src/storage/tagging_data_provider/tagging_data_provider.ts +92 -0
  126. package/src/synchronizer/synchronizer.ts +15 -10
  127. package/src/{pxe_service/test → test}/pxe_test_suite.ts +2 -9
  128. package/dest/contract_data_provider/contract_data_provider.d.ts.map +0 -1
  129. package/dest/contract_data_provider/index.d.ts.map +0 -1
  130. package/dest/contract_data_provider/private_functions_tree.d.ts.map +0 -1
  131. package/dest/database/index.d.ts +0 -3
  132. package/dest/database/index.d.ts.map +0 -1
  133. package/dest/database/index.js +0 -2
  134. package/dest/database/interfaces/contract_artifact_db.d.ts +0 -20
  135. package/dest/database/interfaces/contract_artifact_db.d.ts.map +0 -1
  136. package/dest/database/interfaces/contract_artifact_db.js +0 -3
  137. package/dest/database/interfaces/contract_instance_db.d.ts +0 -20
  138. package/dest/database/interfaces/contract_instance_db.d.ts.map +0 -1
  139. package/dest/database/interfaces/contract_instance_db.js +0 -3
  140. package/dest/database/interfaces/index.d.ts +0 -4
  141. package/dest/database/interfaces/index.d.ts.map +0 -1
  142. package/dest/database/interfaces/pxe_database.d.ts +0 -211
  143. package/dest/database/interfaces/pxe_database.d.ts.map +0 -1
  144. package/dest/database/interfaces/pxe_database.js +0 -4
  145. package/dest/database/interfaces/pxe_database_test_suite.d.ts +0 -7
  146. package/dest/database/interfaces/pxe_database_test_suite.d.ts.map +0 -1
  147. package/dest/database/interfaces/pxe_database_test_suite.js +0 -557
  148. package/dest/database/kv_pxe_database.d.ts +0 -58
  149. package/dest/database/kv_pxe_database.d.ts.map +0 -1
  150. package/dest/database/kv_pxe_database.js +0 -480
  151. package/dest/database/note_dao.d.ts.map +0 -1
  152. package/dest/index.d.ts +0 -9
  153. package/dest/index.d.ts.map +0 -1
  154. package/dest/index.js +0 -8
  155. package/dest/pxe_data_provider/index.d.ts.map +0 -1
  156. package/dest/pxe_data_provider/tagging_utils.d.ts.map +0 -1
  157. package/dest/pxe_service/test/pxe_test_suite.d.ts.map +0 -1
  158. package/dest/utils/create_pxe_service.d.ts.map +0 -1
  159. package/src/database/index.ts +0 -2
  160. package/src/database/interfaces/contract_artifact_db.ts +0 -20
  161. package/src/database/interfaces/contract_instance_db.ts +0 -21
  162. package/src/database/interfaces/index.ts +0 -3
  163. package/src/database/interfaces/pxe_database.ts +0 -240
  164. package/src/database/interfaces/pxe_database_test_suite.ts +0 -558
  165. package/src/database/kv_pxe_database.ts +0 -670
  166. package/src/index.ts +0 -9
  167. /package/dest/{database/interfaces/index.js → entrypoints/client/pxe_creation_options.js} +0 -0
  168. /package/dest/{pxe_data_provider → pxe_oracle_interface}/tagging_utils.d.ts +0 -0
  169. /package/dest/{pxe_data_provider → pxe_oracle_interface}/tagging_utils.js +0 -0
  170. /package/dest/{contract_data_provider → storage/contract_data_provider}/index.d.ts +0 -0
  171. /package/dest/{contract_data_provider → storage/contract_data_provider}/index.js +0 -0
  172. /package/dest/{contract_data_provider → storage/contract_data_provider}/private_functions_tree.d.ts +0 -0
  173. /package/dest/{contract_data_provider → storage/contract_data_provider}/private_functions_tree.js +0 -0
  174. /package/dest/{database → storage/note_data_provider}/note_dao.d.ts +0 -0
  175. /package/dest/{database → storage/note_data_provider}/note_dao.js +0 -0
  176. /package/dest/{pxe_service/test → test}/pxe_test_suite.d.ts +0 -0
  177. /package/src/{pxe_data_provider → pxe_oracle_interface}/tagging_utils.ts +0 -0
  178. /package/src/{contract_data_provider → storage/contract_data_provider}/index.ts +0 -0
  179. /package/src/{contract_data_provider → storage/contract_data_provider}/private_functions_tree.ts +0 -0
  180. /package/src/{database → storage/note_data_provider}/note_dao.ts +0 -0
@@ -0,0 +1,29 @@
1
+ import { BlockHeader } from '@aztec/stdlib/tx';
2
+ export class SyncDataProvider {
3
+ #store;
4
+ #synchronizedHeader;
5
+ constructor(store){
6
+ this.#store = store;
7
+ this.#synchronizedHeader = this.#store.openSingleton('header');
8
+ }
9
+ async setHeader(header) {
10
+ await this.#synchronizedHeader.set(header.toBuffer());
11
+ }
12
+ async getBlockNumber() {
13
+ const headerBuffer = await this.#synchronizedHeader.getAsync();
14
+ if (!headerBuffer) {
15
+ return undefined;
16
+ }
17
+ return Number(BlockHeader.fromBuffer(headerBuffer).globalVariables.blockNumber.toBigInt());
18
+ }
19
+ async getBlockHeader() {
20
+ const headerBuffer = await this.#synchronizedHeader.getAsync();
21
+ if (!headerBuffer) {
22
+ throw new Error(`Header not set`);
23
+ }
24
+ return BlockHeader.fromBuffer(headerBuffer);
25
+ }
26
+ async getSize() {
27
+ return (await this.#synchronizedHeader.getAsync())?.length ?? 0;
28
+ }
29
+ }
@@ -0,0 +1,2 @@
1
+ export { TaggingDataProvider } from './tagging_data_provider.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storage/tagging_data_provider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1 @@
1
+ export { TaggingDataProvider } from './tagging_data_provider.js';
@@ -0,0 +1,18 @@
1
+ import type { Fr } from '@aztec/foundation/fields';
2
+ import type { AztecAsyncKVStore } from '@aztec/kv-store';
3
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
+ import type { IndexedTaggingSecret } from '@aztec/stdlib/logs';
5
+ export declare class TaggingDataProvider {
6
+ #private;
7
+ constructor(store: AztecAsyncKVStore);
8
+ setTaggingSecretsIndexesAsSender(indexedSecrets: IndexedTaggingSecret[]): Promise<void>;
9
+ setTaggingSecretsIndexesAsRecipient(indexedSecrets: IndexedTaggingSecret[]): Promise<void>;
10
+ getTaggingSecretsIndexesAsRecipient(appTaggingSecrets: Fr[]): Promise<number[]>;
11
+ getTaggingSecretsIndexesAsSender(appTaggingSecrets: Fr[]): Promise<number[]>;
12
+ resetNoteSyncData(): Promise<void>;
13
+ addSenderAddress(address: AztecAddress): Promise<boolean>;
14
+ getSenderAddresses(): Promise<AztecAddress[]>;
15
+ removeSenderAddress(address: AztecAddress): Promise<boolean>;
16
+ getSize(): Promise<number>;
17
+ }
18
+ //# sourceMappingURL=tagging_data_provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tagging_data_provider.d.ts","sourceRoot":"","sources":["../../../src/storage/tagging_data_provider/tagging_data_provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,qBAAa,mBAAmB;;gBAUlB,KAAK,EAAE,iBAAiB;IAS9B,gCAAgC,CAAC,cAAc,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvF,mCAAmC,CAAC,cAAc,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1F,mCAAmC,CAAC,iBAAiB,EAAE,EAAE,EAAE;IAI3D,gCAAgC,CAAC,iBAAiB,EAAE,EAAE,EAAE;IAQ9D,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAUzD,kBAAkB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAI7C,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAU5D,OAAO;CAKd"}
@@ -0,0 +1,65 @@
1
+ import { toArray } from '@aztec/foundation/iterable';
2
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
3
+ export class TaggingDataProvider {
4
+ #store;
5
+ #addressBook;
6
+ // Stores the last index used for each tagging secret, taking direction into account
7
+ // This is necessary to avoid reusing the same index for the same secret, which happens if
8
+ // sender and recipient are the same
9
+ #taggingSecretIndexesForSenders;
10
+ #taggingSecretIndexesForRecipients;
11
+ constructor(store){
12
+ this.#store = store;
13
+ this.#addressBook = this.#store.openMap('address_book');
14
+ this.#taggingSecretIndexesForSenders = this.#store.openMap('tagging_secret_indexes_for_senders');
15
+ this.#taggingSecretIndexesForRecipients = this.#store.openMap('tagging_secret_indexes_for_recipients');
16
+ }
17
+ async setTaggingSecretsIndexesAsSender(indexedSecrets) {
18
+ await this.#setTaggingSecretsIndexes(indexedSecrets, this.#taggingSecretIndexesForSenders);
19
+ }
20
+ async setTaggingSecretsIndexesAsRecipient(indexedSecrets) {
21
+ await this.#setTaggingSecretsIndexes(indexedSecrets, this.#taggingSecretIndexesForRecipients);
22
+ }
23
+ async #setTaggingSecretsIndexes(indexedSecrets, storageMap) {
24
+ await Promise.all(indexedSecrets.map((indexedSecret)=>storageMap.set(indexedSecret.appTaggingSecret.toString(), indexedSecret.index)));
25
+ }
26
+ async getTaggingSecretsIndexesAsRecipient(appTaggingSecrets) {
27
+ return await this.#getTaggingSecretsIndexes(appTaggingSecrets, this.#taggingSecretIndexesForRecipients);
28
+ }
29
+ async getTaggingSecretsIndexesAsSender(appTaggingSecrets) {
30
+ return await this.#getTaggingSecretsIndexes(appTaggingSecrets, this.#taggingSecretIndexesForSenders);
31
+ }
32
+ #getTaggingSecretsIndexes(appTaggingSecrets, storageMap) {
33
+ return Promise.all(appTaggingSecrets.map(async (secret)=>await storageMap.getAsync(`${secret.toString()}`) ?? 0));
34
+ }
35
+ resetNoteSyncData() {
36
+ return this.#store.transactionAsync(async ()=>{
37
+ const recipients = await toArray(this.#taggingSecretIndexesForRecipients.keysAsync());
38
+ await Promise.all(recipients.map((recipient)=>this.#taggingSecretIndexesForRecipients.delete(recipient)));
39
+ const senders = await toArray(this.#taggingSecretIndexesForSenders.keysAsync());
40
+ await Promise.all(senders.map((sender)=>this.#taggingSecretIndexesForSenders.delete(sender)));
41
+ });
42
+ }
43
+ async addSenderAddress(address) {
44
+ if (await this.#addressBook.hasAsync(address.toString())) {
45
+ return false;
46
+ }
47
+ await this.#addressBook.set(address.toString(), true);
48
+ return true;
49
+ }
50
+ async getSenderAddresses() {
51
+ return (await toArray(this.#addressBook.keysAsync())).map(AztecAddress.fromString);
52
+ }
53
+ async removeSenderAddress(address) {
54
+ if (!await this.#addressBook.hasAsync(address.toString())) {
55
+ return false;
56
+ }
57
+ await this.#addressBook.delete(address.toString());
58
+ return true;
59
+ }
60
+ async getSize() {
61
+ const addressesCount = (await toArray(this.#addressBook.keysAsync())).length;
62
+ // All keys are addresses
63
+ return 3 * addressesCount * AztecAddress.SIZE_IN_BYTES;
64
+ }
65
+ }
@@ -3,7 +3,9 @@ import type { L2TipsStore } from '@aztec/kv-store/stores';
3
3
  import { L2BlockStream, type L2BlockStreamEvent, type L2BlockStreamEventHandler } from '@aztec/stdlib/block';
4
4
  import type { AztecNode } from '@aztec/stdlib/interfaces/client';
5
5
  import type { PXEConfig } from '../config/index.js';
6
- import type { PxeDatabase } from '../database/index.js';
6
+ import type { NoteDataProvider } from '../storage/note_data_provider/note_data_provider.js';
7
+ import type { SyncDataProvider } from '../storage/sync_data_provider/sync_data_provider.js';
8
+ import type { TaggingDataProvider } from '../storage/tagging_data_provider/tagging_data_provider.js';
7
9
  /**
8
10
  * The Synchronizer class manages the synchronization with the aztec node, allowing PXE to retrieve the
9
11
  * latest block header and handle reorgs.
@@ -12,13 +14,15 @@ import type { PxeDatabase } from '../database/index.js';
12
14
  */
13
15
  export declare class Synchronizer implements L2BlockStreamEventHandler {
14
16
  private node;
15
- private db;
17
+ private syncDataProvider;
18
+ private noteDataProvider;
19
+ private taggingDataProvider;
16
20
  private l2TipsStore;
17
21
  private initialSyncBlockNumber;
18
22
  private log;
19
23
  private isSyncing;
20
24
  protected readonly blockStream: L2BlockStream;
21
- constructor(node: AztecNode, db: PxeDatabase, l2TipsStore: L2TipsStore, config?: Partial<Pick<PXEConfig, 'l2StartingBlock'>>, loggerOrSuffix?: string | Logger);
25
+ constructor(node: AztecNode, syncDataProvider: SyncDataProvider, noteDataProvider: NoteDataProvider, taggingDataProvider: TaggingDataProvider, l2TipsStore: L2TipsStore, config?: Partial<Pick<PXEConfig, 'l2StartingBlock'>>, loggerOrSuffix?: string | Logger);
22
26
  protected createBlockStream(config: Partial<Pick<PXEConfig, 'l2StartingBlock'>>): L2BlockStream;
23
27
  /** Handle events emitted by the block stream. */
24
28
  handleBlockStreamEvent(event: L2BlockStreamEvent): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"synchronizer.d.ts","sourceRoot":"","sources":["../../src/synchronizer/synchronizer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAC7G,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD;;;;;GAKG;AACH,qBAAa,YAAa,YAAW,yBAAyB;IAO1D,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,WAAW;IARrB,OAAO,CAAC,sBAAsB,CAA4B;IAC1D,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,SAAS,CAA4B;IAC7C,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;gBAGpC,IAAI,EAAE,SAAS,EACf,EAAE,EAAE,WAAW,EACf,WAAW,EAAE,WAAW,EAChC,MAAM,GAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAM,EACxD,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM;IASlC,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAM/E,iDAAiD;IACpC,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC7E;;;OAGG;IACU,IAAI;YAiBH,MAAM;IAeP,qBAAqB;CAGnC"}
1
+ {"version":3,"file":"synchronizer.d.ts","sourceRoot":"","sources":["../../src/synchronizer/synchronizer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAC7G,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qDAAqD,CAAC;AAC5F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qDAAqD,CAAC;AAC5F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2DAA2D,CAAC;AAErG;;;;;GAKG;AACH,qBAAa,YAAa,YAAW,yBAAyB;IAO1D,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,mBAAmB;IAC3B,OAAO,CAAC,WAAW;IAVrB,OAAO,CAAC,sBAAsB,CAA4B;IAC1D,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,SAAS,CAA4B;IAC7C,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC;gBAGpC,IAAI,EAAE,SAAS,EACf,gBAAgB,EAAE,gBAAgB,EAClC,gBAAgB,EAAE,gBAAgB,EAClC,mBAAmB,EAAE,mBAAmB,EACxC,WAAW,EAAE,WAAW,EAChC,MAAM,GAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAM,EACxD,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM;IASlC,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAM/E,iDAAiD;IACpC,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC7E;;;OAGG;IACU,IAAI;YAiBH,MAAM;IAeP,qBAAqB;CAGnC"}
@@ -8,15 +8,19 @@ import { L2BlockStream } from '@aztec/stdlib/block';
8
8
  * details, and fetch transactions by hash.
9
9
  */ export class Synchronizer {
10
10
  node;
11
- db;
11
+ syncDataProvider;
12
+ noteDataProvider;
13
+ taggingDataProvider;
12
14
  l2TipsStore;
13
15
  initialSyncBlockNumber;
14
16
  log;
15
17
  isSyncing;
16
18
  blockStream;
17
- constructor(node, db, l2TipsStore, config = {}, loggerOrSuffix){
19
+ constructor(node, syncDataProvider, noteDataProvider, taggingDataProvider, l2TipsStore, config = {}, loggerOrSuffix){
18
20
  this.node = node;
19
- this.db = db;
21
+ this.syncDataProvider = syncDataProvider;
22
+ this.noteDataProvider = noteDataProvider;
23
+ this.taggingDataProvider = taggingDataProvider;
20
24
  this.l2TipsStore = l2TipsStore;
21
25
  this.initialSyncBlockNumber = INITIAL_L2_BLOCK_NUM - 1;
22
26
  this.log = !loggerOrSuffix || typeof loggerOrSuffix === 'string' ? createLogger(loggerOrSuffix ? `pxe:synchronizer:${loggerOrSuffix}` : `pxe:synchronizer`) : loggerOrSuffix;
@@ -38,24 +42,25 @@ import { L2BlockStream } from '@aztec/stdlib/block';
38
42
  archive: lastBlock.archive.root.toString(),
39
43
  header: lastBlock.header.toInspect()
40
44
  });
41
- await this.db.setHeader(lastBlock.header);
45
+ await this.syncDataProvider.setHeader(lastBlock.header);
42
46
  break;
43
47
  }
44
48
  case 'chain-pruned':
45
49
  {
46
50
  this.log.warn(`Pruning data after block ${event.blockNumber} due to reorg`);
47
51
  // We first unnullify and then remove so that unnullified notes that were created after the block number end up deleted.
48
- await this.db.unnullifyNotesAfter(event.blockNumber);
49
- await this.db.removeNotesAfter(event.blockNumber);
52
+ const lastSynchedBlockNumber = await this.syncDataProvider.getBlockNumber();
53
+ await this.noteDataProvider.unnullifyNotesAfter(event.blockNumber, lastSynchedBlockNumber);
54
+ await this.noteDataProvider.removeNotesAfter(event.blockNumber);
50
55
  // Remove all note tagging indexes to force a full resync. This is suboptimal, but unless we track the
51
56
  // block number in which each index is used it's all we can do.
52
- await this.db.resetNoteSyncData();
57
+ await this.taggingDataProvider.resetNoteSyncData();
53
58
  // Update the header to the last block.
54
59
  const newHeader = await this.node.getBlockHeader(event.blockNumber);
55
60
  if (!newHeader) {
56
61
  this.log.error(`Block header not found for block number ${event.blockNumber} during chain prune`);
57
62
  } else {
58
- await this.db.setHeader(newHeader);
63
+ await this.syncDataProvider.setHeader(newHeader);
59
64
  }
60
65
  break;
61
66
  }
@@ -82,17 +87,17 @@ import { L2BlockStream } from '@aztec/stdlib/block';
82
87
  async doSync() {
83
88
  let currentHeader;
84
89
  try {
85
- currentHeader = await this.db.getBlockHeader();
90
+ currentHeader = await this.syncDataProvider.getBlockHeader();
86
91
  } catch (e) {
87
92
  this.log.debug('Header is not set, requesting from the node');
88
93
  }
89
94
  if (!currentHeader) {
90
95
  // REFACTOR: We should know the header of the genesis block without having to request it from the node.
91
- await this.db.setHeader(await this.node.getBlockHeader(0));
96
+ await this.syncDataProvider.setHeader(await this.node.getBlockHeader(0));
92
97
  }
93
98
  await this.blockStream.sync();
94
99
  }
95
100
  async getSynchedBlockNumber() {
96
- return await this.db.getBlockNumber() ?? this.initialSyncBlockNumber;
101
+ return await this.syncDataProvider.getBlockNumber() ?? this.initialSyncBlockNumber;
97
102
  }
98
103
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pxe_test_suite.d.ts","sourceRoot":"","sources":["../../src/test/pxe_test_suite.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iCAAiC,CAAC;AAS3D,eAAO,MAAM,YAAY,aAAc,MAAM,YAAY,MAAM,QAAQ,GAAG,CAAC,SAiG1E,CAAC"}
@@ -69,7 +69,7 @@ export const pxeTestSuite = (testName, pxeSetup)=>{
69
69
  const instance = await randomContractInstanceWithAddress();
70
70
  await expect(pxe.registerContract({
71
71
  instance
72
- })).rejects.toThrow(/Missing contract artifact/i);
72
+ })).rejects.toThrow(/DB has no contract class with id/i);
73
73
  });
74
74
  it('refuses to register a contract with an artifact with mismatching class id', async ()=>{
75
75
  const artifact = randomContractArtifact();
@@ -81,11 +81,7 @@ export const pxeTestSuite = (testName, pxeSetup)=>{
81
81
  });
82
82
  // Note: Not testing a successful run of `proveTx`, `sendTx`, `getTxReceipt` and `simulateUnconstrained` here as it requires
83
83
  // a larger setup and it's sufficiently tested in the e2e tests.
84
- it('throws when getting public storage for non-existent contract', async ()=>{
85
- const contract = await AztecAddress.random();
86
- await expect(async ()=>await pxe.getPublicStorageAt(contract, new Fr(0n))).rejects.toThrow(`Contract ${contract.toString()} is not deployed`);
87
- });
88
- // Note: Not testing `getContractData` and `getPublicLogs` here as these
84
+ // Note: Not testing `getContractData`, `getPublicLogs` and `getPublicStorageAt` here as these
89
85
  // functions only call AztecNode and these methods are frequently used by the e2e tests.
90
86
  it('successfully gets a block number', async ()=>{
91
87
  const blockNum = await pxe.getBlockNumber();
package/package.json CHANGED
@@ -1,22 +1,15 @@
1
1
  {
2
2
  "name": "@aztec/pxe",
3
- "version": "0.77.1",
3
+ "version": "0.78.1",
4
4
  "type": "module",
5
5
  "exports": {
6
- ".": "./dest/index.js",
7
- "./service": "./dest/pxe_service/index.js",
6
+ "./server": "./dest/entrypoints/server/index.js",
7
+ "./client/lazy": "./dest/entrypoints/client/lazy/index.js",
8
+ "./client/bundle": "./dest/entrypoints/client/bundle/index.js",
8
9
  "./config": "./dest/config/index.js",
9
- "./database": "./dest/database/index.js",
10
- "./kernel_prover": "./dest/kernel_prover/index.js"
10
+ "./testing": "./dest/test/pxe_test_suite.js"
11
11
  },
12
12
  "bin": "./dest/bin/index.js",
13
- "typedocOptions": {
14
- "entryPoints": [
15
- "./src/index.ts"
16
- ],
17
- "name": "Wallet",
18
- "tsconfig": "./tsconfig.json"
19
- },
20
13
  "scripts": {
21
14
  "build": "yarn clean && yarn generate && tsc -b",
22
15
  "build:dev": "tsc -b --watch",
@@ -66,18 +59,18 @@
66
59
  ]
67
60
  },
68
61
  "dependencies": {
69
- "@aztec/bb-prover": "0.77.1",
70
- "@aztec/bb.js": "0.77.1",
71
- "@aztec/builder": "0.77.1",
72
- "@aztec/constants": "0.77.1",
73
- "@aztec/ethereum": "0.77.1",
74
- "@aztec/foundation": "0.77.1",
75
- "@aztec/key-store": "0.77.1",
76
- "@aztec/kv-store": "0.77.1",
77
- "@aztec/noir-protocol-circuits-types": "0.77.1",
78
- "@aztec/protocol-contracts": "0.77.1",
79
- "@aztec/simulator": "0.77.1",
80
- "@aztec/stdlib": "0.77.1",
62
+ "@aztec/bb-prover": "0.78.1",
63
+ "@aztec/bb.js": "0.78.1",
64
+ "@aztec/builder": "0.78.1",
65
+ "@aztec/constants": "0.78.1",
66
+ "@aztec/ethereum": "0.78.1",
67
+ "@aztec/foundation": "0.78.1",
68
+ "@aztec/key-store": "0.78.1",
69
+ "@aztec/kv-store": "0.78.1",
70
+ "@aztec/noir-protocol-circuits-types": "0.78.1",
71
+ "@aztec/protocol-contracts": "0.78.1",
72
+ "@aztec/simulator": "0.78.1",
73
+ "@aztec/stdlib": "0.78.1",
81
74
  "@msgpack/msgpack": "^3.0.0-beta2",
82
75
  "koa": "^2.14.2",
83
76
  "koa-router": "^12.0.0",
@@ -85,10 +78,10 @@
85
78
  "sha3": "^2.1.4",
86
79
  "tslib": "^2.4.0",
87
80
  "viem": "2.22.8",
88
- "@aztec/noir-types": "0.77.1"
81
+ "@aztec/noir-types": "0.78.1"
89
82
  },
90
83
  "devDependencies": {
91
- "@aztec/noir-contracts.js": "0.77.1",
84
+ "@aztec/noir-contracts.js": "0.78.1",
92
85
  "@jest/globals": "^29.5.0",
93
86
  "@types/jest": "^29.5.0",
94
87
  "@types/lodash.omit": "^4.5.7",
package/src/bin/index.ts CHANGED
@@ -3,8 +3,8 @@ import { createLogger } from '@aztec/foundation/log';
3
3
  import { createAztecNodeClient } from '@aztec/stdlib/interfaces/client';
4
4
 
5
5
  import { getPXEServiceConfig } from '../config/index.js';
6
+ import { createPXEService } from '../entrypoints/server/utils.js';
6
7
  import { startPXEHttpServer } from '../pxe_http/index.js';
7
- import { createPXEService } from '../utils/create_pxe_service.js';
8
8
 
9
9
  const { PXE_PORT = 8080, AZTEC_NODE_URL = 'http://localhost:8079' } = process.env;
10
10
 
@@ -10,6 +10,8 @@ import { type DataStoreConfig, dataConfigMappings } from '@aztec/kv-store/config
10
10
  import { type ChainConfig, chainConfigMappings } from '@aztec/stdlib/config';
11
11
  import type { Network } from '@aztec/stdlib/network';
12
12
 
13
+ export { getPackageInfo } from './package_info.js';
14
+
13
15
  /**
14
16
  * Temporary configuration until WASM can be used instead of native
15
17
  */
@@ -0,0 +1,5 @@
1
+ export * from '../../../pxe_service/index.js';
2
+ export * from '../../../config/index.js';
3
+ export * from '../../../storage/index.js';
4
+ export * from './utils.js';
5
+ export { PXEOracleInterface } from '../../../pxe_oracle_interface/index.js';
@@ -0,0 +1,58 @@
1
+ import { BBWASMBundlePrivateKernelProver } from '@aztec/bb-prover/wasm/bundle';
2
+ import { createLogger } from '@aztec/foundation/log';
3
+ import { createStore } from '@aztec/kv-store/indexeddb';
4
+ import { BundledProtocolContractsProvider } from '@aztec/protocol-contracts/providers/bundle';
5
+ import { WASMSimulator } from '@aztec/simulator/client';
6
+ import type { AztecNode } from '@aztec/stdlib/interfaces/client';
7
+
8
+ import type { PXEServiceConfig } from '../../../config/index.js';
9
+ import { PXEService } from '../../../pxe_service/pxe_service.js';
10
+ import type { PXECreationOptions } from '../pxe_creation_options.js';
11
+
12
+ /**
13
+ * Create and start an PXEService instance with the given AztecNode.
14
+ * If no keyStore or database is provided, it will use KeyStore and MemoryDB as default values.
15
+ * Returns a Promise that resolves to the started PXEService instance.
16
+ *
17
+ * @param aztecNode - The AztecNode instance to be used by the server.
18
+ * @param config - The PXE Service Config to use
19
+ * @param options - (Optional) Optional information for creating an PXEService.
20
+ * @returns A Promise that resolves to the started PXEService instance.
21
+ */
22
+ export async function createPXEService(
23
+ aztecNode: AztecNode,
24
+ config: PXEServiceConfig,
25
+ options: PXECreationOptions = { loggers: {} },
26
+ ) {
27
+ const l1Contracts = await aztecNode.getL1ContractAddresses();
28
+ const configWithContracts = {
29
+ ...config,
30
+ l1Contracts,
31
+ } as PXEServiceConfig;
32
+
33
+ const store = await createStore(
34
+ 'pxe_data',
35
+ configWithContracts,
36
+ options.loggers.store ?? createLogger('pxe:data:indexeddb'),
37
+ );
38
+
39
+ const simulationProvider = new WASMSimulator();
40
+ const prover =
41
+ options.prover ??
42
+ new BBWASMBundlePrivateKernelProver(
43
+ simulationProvider,
44
+ 16,
45
+ options.loggers.prover ?? createLogger('bb:wasm:bundle'),
46
+ );
47
+ const protocolContractsProvider = new BundledProtocolContractsProvider();
48
+ const pxe = await PXEService.create(
49
+ aztecNode,
50
+ store,
51
+ prover,
52
+ simulationProvider,
53
+ protocolContractsProvider,
54
+ config,
55
+ options.loggers.pxe ?? createLogger('pxe:service'),
56
+ );
57
+ return pxe;
58
+ }
@@ -0,0 +1,5 @@
1
+ export * from '../../../pxe_service/index.js';
2
+ export * from '../../../config/index.js';
3
+ export * from '../../../storage/index.js';
4
+ export * from './utils.js';
5
+ export { PXEOracleInterface } from '../../../pxe_oracle_interface/index.js';
@@ -0,0 +1,53 @@
1
+ import { BBWASMLazyPrivateKernelProver } from '@aztec/bb-prover/wasm/lazy';
2
+ import { createLogger } from '@aztec/foundation/log';
3
+ import { createStore } from '@aztec/kv-store/indexeddb';
4
+ import { LazyProtocolContractsProvider } from '@aztec/protocol-contracts/providers/lazy';
5
+ import { WASMSimulator } from '@aztec/simulator/client';
6
+ import type { AztecNode } from '@aztec/stdlib/interfaces/client';
7
+
8
+ import type { PXEServiceConfig } from '../../../config/index.js';
9
+ import { PXEService } from '../../../pxe_service/pxe_service.js';
10
+ import type { PXECreationOptions } from '../pxe_creation_options.js';
11
+
12
+ /**
13
+ * Create and start an PXEService instance with the given AztecNode.
14
+ * Returns a Promise that resolves to the started PXEService instance.
15
+ *
16
+ * @param aztecNode - The AztecNode instance to be used by the server.
17
+ * @param config - The PXE Service Config to use
18
+ * @param
19
+ * @returns A Promise that resolves to the started PXEService instance.
20
+ */
21
+ export async function createPXEService(
22
+ aztecNode: AztecNode,
23
+ config: PXEServiceConfig,
24
+ options: PXECreationOptions = { loggers: {} },
25
+ ) {
26
+ const l1Contracts = await aztecNode.getL1ContractAddresses();
27
+ const configWithContracts = {
28
+ ...config,
29
+ l1Contracts,
30
+ } as PXEServiceConfig;
31
+
32
+ const store = await createStore(
33
+ 'pxe_data',
34
+ configWithContracts,
35
+ options.loggers.store ?? createLogger('pxe:data:indexeddb'),
36
+ );
37
+
38
+ const simulationProvider = new WASMSimulator();
39
+ const prover =
40
+ options.prover ??
41
+ new BBWASMLazyPrivateKernelProver(simulationProvider, 16, options.loggers.prover ?? createLogger('bb:wasm:lazy'));
42
+ const protocolContractsProvider = new LazyProtocolContractsProvider();
43
+ const pxe = await PXEService.create(
44
+ aztecNode,
45
+ store,
46
+ prover,
47
+ simulationProvider,
48
+ protocolContractsProvider,
49
+ config,
50
+ options.loggers.pxe ?? createLogger('pxe:service'),
51
+ );
52
+ return pxe;
53
+ }
@@ -0,0 +1,7 @@
1
+ import type { Logger } from '@aztec/foundation/log';
2
+ import type { PrivateKernelProver } from '@aztec/stdlib/interfaces/client';
3
+
4
+ export type PXECreationOptions = {
5
+ loggers: { store?: Logger; pxe?: Logger; prover?: Logger };
6
+ prover?: PrivateKernelProver;
7
+ };
@@ -0,0 +1,6 @@
1
+ export * from '../../pxe_service/index.js';
2
+ export * from '../../pxe_http/index.js';
3
+ export * from '../../config/index.js';
4
+ export * from '../../storage/index.js';
5
+ export * from './utils.js';
6
+ export { PXEOracleInterface } from '../../pxe_oracle_interface/index.js';
@@ -2,16 +2,14 @@ import { BBNativePrivateKernelProver } from '@aztec/bb-prover';
2
2
  import { BBWASMBundlePrivateKernelProver } from '@aztec/bb-prover/wasm/bundle';
3
3
  import { randomBytes } from '@aztec/foundation/crypto';
4
4
  import { createLogger } from '@aztec/foundation/log';
5
- import { KeyStore } from '@aztec/key-store';
6
5
  import { createStore } from '@aztec/kv-store/lmdb-v2';
7
- import { L2TipsStore } from '@aztec/kv-store/stores';
8
6
  import { BundledProtocolContractsProvider } from '@aztec/protocol-contracts/providers/bundle';
9
7
  import { type SimulationProvider, WASMSimulator } from '@aztec/simulator/client';
10
8
  import type { AztecNode, PrivateKernelProver } from '@aztec/stdlib/interfaces/client';
11
9
 
12
- import type { PXEServiceConfig } from '../config/index.js';
13
- import { KVPxeDatabase } from '../database/kv_pxe_database.js';
14
- import { PXEService } from '../pxe_service/pxe_service.js';
10
+ import type { PXEServiceConfig } from '../../config/index.js';
11
+ import { PXEService } from '../../pxe_service/pxe_service.js';
12
+ import { PXE_DATA_SCHEMA_VERSION } from './index.js';
15
13
 
16
14
  /**
17
15
  * Create and start an PXEService instance with the given AztecNode.
@@ -20,7 +18,7 @@ import { PXEService } from '../pxe_service/pxe_service.js';
20
18
  *
21
19
  * @param aztecNode - The AztecNode instance to be used by the server.
22
20
  * @param config - The PXE Service Config to use
23
- * @param options - (Optional) Optional information for creating an PXEService.
21
+ * @param useLogSuffix - (Optional) Log suffix for PXE's logger.
24
22
  * @param proofCreator - An optional proof creator to use in place of any other configuration
25
23
  * @returns A Promise that resolves to the started PXEService instance.
26
24
  */
@@ -39,34 +37,25 @@ export async function createPXEService(
39
37
  l1Contracts,
40
38
  } as PXEServiceConfig;
41
39
 
42
- const keyStore = new KeyStore(
43
- await createStore('pxe_key_store', KeyStore.SCHEMA_VERSION, configWithContracts, createLogger('pxe:keystore:lmdb')),
44
- );
45
-
46
40
  const store = await createStore(
47
41
  'pxe_data',
48
- KVPxeDatabase.SCHEMA_VERSION,
42
+ PXE_DATA_SCHEMA_VERSION,
49
43
  configWithContracts,
50
44
  createLogger('pxe:data:lmdb'),
51
45
  );
52
46
 
53
- const db = await KVPxeDatabase.create(store);
54
- const tips = new L2TipsStore(store, 'pxe');
55
47
  const simulationProvider = new WASMSimulator();
56
48
  const prover = proofCreator ?? (await createProver(config, simulationProvider, logSuffix));
57
49
  const protocolContractsProvider = new BundledProtocolContractsProvider();
58
- const pxe = new PXEService(
59
- keyStore,
50
+ const pxe = await PXEService.create(
60
51
  aztecNode,
61
- db,
62
- tips,
52
+ store,
63
53
  prover,
64
54
  simulationProvider,
65
55
  protocolContractsProvider,
66
56
  config,
67
57
  logSuffix,
68
58
  );
69
- await pxe.init();
70
59
  return pxe;
71
60
  }
72
61
 
@@ -17,7 +17,7 @@ import { SharedMutableValues, SharedMutableValuesWithHash } from '@aztec/stdlib/
17
17
  import type { NullifierMembershipWitness } from '@aztec/stdlib/trees';
18
18
  import type { VerificationKeyAsFields } from '@aztec/stdlib/vks';
19
19
 
20
- import type { ContractDataProvider } from '../contract_data_provider/index.js';
20
+ import type { ContractDataProvider } from '../storage/contract_data_provider/contract_data_provider.js';
21
21
  import type { ProvingDataOracle } from './../kernel_prover/proving_data_oracle.js';
22
22
 
23
23
  // TODO: Block number should not be "latest".