@aztec/pxe 0.0.1-commit.0c875d939 → 0.0.1-commit.10bd49492

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 (156) hide show
  1. package/dest/config/index.d.ts +2 -2
  2. package/dest/config/index.d.ts.map +1 -1
  3. package/dest/config/index.js +1 -1
  4. package/dest/config/package_info.js +1 -1
  5. package/dest/contract_function_simulator/contract_function_simulator.d.ts +4 -1
  6. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  7. package/dest/contract_function_simulator/contract_function_simulator.js +16 -12
  8. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +7 -7
  9. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  10. package/dest/contract_function_simulator/execution_tagging_index_cache.js +19 -11
  11. package/dest/contract_function_simulator/index.d.ts +2 -1
  12. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  13. package/dest/contract_function_simulator/index.js +1 -0
  14. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +2 -3
  15. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  16. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +5 -4
  17. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +1 -1
  18. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  19. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -3
  20. package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts +16 -0
  21. package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts.map +1 -0
  22. package/dest/contract_function_simulator/noir-structs/message_tx_context.js +57 -0
  23. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +2 -4
  24. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  25. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +3 -5
  26. package/dest/contract_function_simulator/oracle/interfaces.d.ts +49 -45
  27. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  28. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +9 -0
  29. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +1 -0
  30. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +52 -0
  31. package/dest/contract_function_simulator/oracle/oracle.d.ts +44 -44
  32. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  33. package/dest/contract_function_simulator/oracle/oracle.js +141 -93
  34. package/dest/contract_function_simulator/oracle/private_execution.js +3 -3
  35. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +23 -37
  36. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  37. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +41 -67
  38. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +40 -34
  39. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  40. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +83 -50
  41. package/dest/contract_logging.d.ts +22 -0
  42. package/dest/contract_logging.d.ts.map +1 -0
  43. package/dest/contract_logging.js +23 -0
  44. package/dest/debug/pxe_debug_utils.d.ts +2 -2
  45. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  46. package/dest/debug/pxe_debug_utils.js +4 -4
  47. package/dest/entrypoints/client/bundle/index.d.ts +2 -1
  48. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  49. package/dest/entrypoints/client/bundle/index.js +1 -0
  50. package/dest/entrypoints/client/lazy/index.d.ts +2 -1
  51. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  52. package/dest/entrypoints/client/lazy/index.js +1 -0
  53. package/dest/logs/log_service.d.ts +1 -1
  54. package/dest/logs/log_service.d.ts.map +1 -1
  55. package/dest/logs/log_service.js +4 -4
  56. package/dest/messages/message_context_service.d.ts +17 -0
  57. package/dest/messages/message_context_service.d.ts.map +1 -0
  58. package/dest/messages/message_context_service.js +36 -0
  59. package/dest/oracle_version.d.ts +2 -2
  60. package/dest/oracle_version.js +3 -3
  61. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  62. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  63. package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
  64. package/dest/private_kernel/hints/index.d.ts +1 -1
  65. package/dest/private_kernel/hints/index.js +1 -1
  66. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +4 -3
  67. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  68. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +129 -68
  69. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  70. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  71. package/dest/private_kernel/hints/test_utils.js +203 -0
  72. package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
  73. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  74. package/dest/private_kernel/private_kernel_execution_prover.js +19 -11
  75. package/dest/private_kernel/private_kernel_oracle.d.ts +6 -2
  76. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  77. package/dest/private_kernel/private_kernel_oracle.js +7 -3
  78. package/dest/pxe.d.ts +9 -7
  79. package/dest/pxe.d.ts.map +1 -1
  80. package/dest/pxe.js +49 -36
  81. package/dest/storage/contract_store/contract_store.d.ts +42 -15
  82. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  83. package/dest/storage/contract_store/contract_store.js +140 -64
  84. package/dest/storage/metadata.d.ts +1 -1
  85. package/dest/storage/metadata.js +1 -1
  86. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  87. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  88. package/dest/storage/tagging_store/sender_tagging_store.d.ts +29 -28
  89. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  90. package/dest/storage/tagging_store/sender_tagging_store.js +141 -115
  91. package/dest/tagging/get_all_logs_by_tags.d.ts +1 -1
  92. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
  93. package/dest/tagging/get_all_logs_by_tags.js +17 -3
  94. package/dest/tagging/index.d.ts +3 -3
  95. package/dest/tagging/index.d.ts.map +1 -1
  96. package/dest/tagging/index.js +1 -1
  97. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +4 -5
  98. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
  99. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +7 -7
  100. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
  101. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +6 -7
  102. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -1
  103. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +12 -11
  104. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +4 -8
  105. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  106. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +13 -7
  107. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +4 -3
  108. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  109. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +20 -10
  110. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +5 -7
  111. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  112. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +36 -24
  113. package/package.json +16 -16
  114. package/src/config/index.ts +1 -1
  115. package/src/config/package_info.ts +1 -1
  116. package/src/contract_function_simulator/contract_function_simulator.ts +25 -21
  117. package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -14
  118. package/src/contract_function_simulator/index.ts +1 -0
  119. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +8 -5
  120. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +1 -4
  121. package/src/contract_function_simulator/noir-structs/message_tx_context.ts +55 -0
  122. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +3 -6
  123. package/src/contract_function_simulator/oracle/interfaces.ts +53 -54
  124. package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +77 -0
  125. package/src/contract_function_simulator/oracle/oracle.ts +154 -137
  126. package/src/contract_function_simulator/oracle/private_execution.ts +3 -3
  127. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +46 -83
  128. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +117 -59
  129. package/src/contract_logging.ts +39 -0
  130. package/src/debug/pxe_debug_utils.ts +4 -4
  131. package/src/entrypoints/client/bundle/index.ts +1 -0
  132. package/src/entrypoints/client/lazy/index.ts +1 -0
  133. package/src/logs/log_service.ts +10 -5
  134. package/src/messages/message_context_service.ts +45 -0
  135. package/src/oracle_version.ts +3 -3
  136. package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
  137. package/src/private_kernel/hints/index.ts +1 -1
  138. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +164 -117
  139. package/src/private_kernel/hints/test_utils.ts +325 -0
  140. package/src/private_kernel/private_kernel_execution_prover.ts +19 -12
  141. package/src/private_kernel/private_kernel_oracle.ts +7 -7
  142. package/src/pxe.ts +53 -40
  143. package/src/storage/contract_store/contract_store.ts +170 -71
  144. package/src/storage/metadata.ts +1 -1
  145. package/src/storage/tagging_store/recipient_tagging_store.ts +9 -5
  146. package/src/storage/tagging_store/sender_tagging_store.ts +185 -138
  147. package/src/tagging/get_all_logs_by_tags.ts +28 -4
  148. package/src/tagging/index.ts +2 -2
  149. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +7 -10
  150. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
  151. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +10 -15
  152. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +23 -10
  153. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +26 -11
  154. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +27 -26
  155. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
  156. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
package/dest/pxe.js CHANGED
@@ -13,12 +13,14 @@ import { BlockSynchronizer } from './block_synchronizer/index.js';
13
13
  import { BenchmarkedNodeFactory } from './contract_function_simulator/benchmarked_node.js';
14
14
  import { ContractFunctionSimulator, generateSimulatedProvingResult } from './contract_function_simulator/contract_function_simulator.js';
15
15
  import { ProxiedContractStoreFactory } from './contract_function_simulator/proxied_contract_data_source.js';
16
+ import { displayDebugLogs } from './contract_logging.js';
16
17
  import { ContractSyncService } from './contract_sync/contract_sync_service.js';
17
18
  import { readCurrentClassId } from './contract_sync/helpers.js';
18
19
  import { PXEDebugUtils } from './debug/pxe_debug_utils.js';
19
20
  import { enrichPublicSimulationError, enrichSimulationError } from './error_enriching.js';
20
21
  import { PrivateEventFilterValidator } from './events/private_event_filter_validator.js';
21
22
  import { JobCoordinator } from './job_coordinator/job_coordinator.js';
23
+ import { MessageContextService } from './messages/message_context_service.js';
22
24
  import { PrivateKernelExecutionProver } from './private_kernel/private_kernel_execution_prover.js';
23
25
  import { PrivateKernelOracle } from './private_kernel/private_kernel_oracle.js';
24
26
  import { AddressStore } from './storage/address_store/address_store.js';
@@ -35,6 +37,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
35
37
  * manage private state of users.
36
38
  */ export class PXE {
37
39
  node;
40
+ db;
38
41
  blockStateSynchronizer;
39
42
  keyStore;
40
43
  contractStore;
@@ -47,6 +50,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
47
50
  addressStore;
48
51
  privateEventStore;
49
52
  contractSyncService;
53
+ messageContextService;
50
54
  simulator;
51
55
  proverEnabled;
52
56
  proofCreator;
@@ -55,8 +59,9 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
55
59
  jobQueue;
56
60
  jobCoordinator;
57
61
  debug;
58
- constructor(node, blockStateSynchronizer, keyStore, contractStore, noteStore, capsuleStore, anchorBlockStore, senderTaggingStore, senderAddressBookStore, recipientTaggingStore, addressStore, privateEventStore, contractSyncService, simulator, proverEnabled, proofCreator, protocolContractsProvider, log, jobQueue, jobCoordinator, debug){
62
+ constructor(node, db, blockStateSynchronizer, keyStore, contractStore, noteStore, capsuleStore, anchorBlockStore, senderTaggingStore, senderAddressBookStore, recipientTaggingStore, addressStore, privateEventStore, contractSyncService, messageContextService, simulator, proverEnabled, proofCreator, protocolContractsProvider, log, jobQueue, jobCoordinator, debug){
59
63
  this.node = node;
64
+ this.db = db;
60
65
  this.blockStateSynchronizer = blockStateSynchronizer;
61
66
  this.keyStore = keyStore;
62
67
  this.contractStore = contractStore;
@@ -69,6 +74,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
69
74
  this.addressStore = addressStore;
70
75
  this.privateEventStore = privateEventStore;
71
76
  this.contractSyncService = contractSyncService;
77
+ this.messageContextService = messageContextService;
72
78
  this.simulator = simulator;
73
79
  this.proverEnabled = proverEnabled;
74
80
  this.proofCreator = proofCreator;
@@ -102,6 +108,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
102
108
  const keyStore = new KeyStore(store);
103
109
  const tipsStore = new L2TipsKVStore(store, 'pxe');
104
110
  const contractSyncService = new ContractSyncService(node, contractStore, noteStore, createLogger('pxe:contract_sync', bindings));
111
+ const messageContextService = new MessageContextService(node);
105
112
  const synchronizer = new BlockSynchronizer(node, store, anchorBlockStore, noteStore, privateEventStore, tipsStore, contractSyncService, config, bindings);
106
113
  const jobCoordinator = new JobCoordinator(store, bindings);
107
114
  jobCoordinator.registerStores([
@@ -114,8 +121,8 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
114
121
  ]);
115
122
  const debugUtils = new PXEDebugUtils(contractSyncService, noteStore, synchronizer, anchorBlockStore);
116
123
  const jobQueue = new SerialQueue();
117
- const pxe = new PXE(node, synchronizer, keyStore, contractStore, noteStore, capsuleStore, anchorBlockStore, senderTaggingStore, senderAddressBookStore, recipientTaggingStore, addressStore, privateEventStore, contractSyncService, simulator, proverEnabled, proofCreator, protocolContractsProvider, log, jobQueue, jobCoordinator, debugUtils);
118
- debugUtils.setPXEHelpers(pxe.#putInJobQueue.bind(pxe), pxe.#getSimulatorForTx.bind(pxe), pxe.#simulateUtility.bind(pxe));
124
+ const pxe = new PXE(node, store, synchronizer, keyStore, contractStore, noteStore, capsuleStore, anchorBlockStore, senderTaggingStore, senderAddressBookStore, recipientTaggingStore, addressStore, privateEventStore, contractSyncService, messageContextService, simulator, proverEnabled, proofCreator, protocolContractsProvider, log, jobQueue, jobCoordinator, debugUtils);
125
+ debugUtils.setPXEHelpers(pxe.#putInJobQueue.bind(pxe), pxe.#getSimulatorForTx.bind(pxe), pxe.#executeUtility.bind(pxe));
119
126
  pxe.jobQueue.start();
120
127
  await pxe.#registerProtocolContracts();
121
128
  log.info(`Started PXE connected to chain ${info.l1ChainId} version ${info.rollupVersion}`);
@@ -136,7 +143,8 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
136
143
  capsuleStore: this.capsuleStore,
137
144
  privateEventStore: this.privateEventStore,
138
145
  simulator: this.simulator,
139
- contractSyncService: this.contractSyncService
146
+ contractSyncService: this.contractSyncService,
147
+ messageContextService: this.messageContextService
140
148
  });
141
149
  }
142
150
  #contextualizeError(err, ...context) {
@@ -180,8 +188,8 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
180
188
  async #registerProtocolContracts() {
181
189
  const registered = {};
182
190
  for (const name of protocolContractNames){
183
- const { address, contractClass, instance, artifact } = await this.protocolContractsProvider.getProtocolContractArtifact(name);
184
- await this.contractStore.addContractArtifact(contractClass.id, artifact);
191
+ const { address, instance, artifact } = await this.protocolContractsProvider.getProtocolContractArtifact(name);
192
+ await this.contractStore.addContractArtifact(artifact);
185
193
  await this.contractStore.addContractInstance(instance);
186
194
  registered[name] = address.toString();
187
195
  }
@@ -193,7 +201,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
193
201
  const { origin: contractAddress, functionSelector } = txRequest;
194
202
  try {
195
203
  const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
196
- await this.contractSyncService.ensureContractSynced(contractAddress, functionSelector, (privateSyncCall, execScopes)=>this.#simulateUtility(contractFunctionSimulator, privateSyncCall, [], execScopes, jobId), anchorBlockHeader, jobId, scopes);
204
+ await this.contractSyncService.ensureContractSynced(contractAddress, functionSelector, (privateSyncCall, execScopes)=>this.#executeUtility(contractFunctionSimulator, privateSyncCall, [], execScopes, jobId), anchorBlockHeader, jobId, scopes);
197
205
  const result = await contractFunctionSimulator.run(txRequest, {
198
206
  contractAddress,
199
207
  selector: functionSelector,
@@ -211,15 +219,15 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
211
219
  }
212
220
  }
213
221
  /**
214
- * Simulate a utility function call on the given contract.
222
+ * Execute a utility function call on the given contract.
215
223
  * @param contractFunctionSimulator - The simulator to use for the function call.
216
224
  * @param call - The function call to execute.
217
225
  * @param authWitnesses - Authentication witnesses required for the function call.
218
226
  * @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
219
227
  * accounts if not specified.
220
228
  * @param jobId - The job ID for staged writes.
221
- * @returns The simulation result containing the outputs of the utility function.
222
- */ async #simulateUtility(contractFunctionSimulator, call, authWitnesses, scopes, jobId) {
229
+ * @returns The execution result containing the outputs of the utility function.
230
+ */ async #executeUtility(contractFunctionSimulator, call, authWitnesses, scopes, jobId) {
223
231
  try {
224
232
  const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
225
233
  return contractFunctionSimulator.runUtility(call, authWitnesses ?? [], anchorBlockHeader, scopes, jobId);
@@ -371,8 +379,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
371
379
  *
372
380
  * @param artifact - The build artifact for the contract class.
373
381
  */ async registerContractClass(artifact) {
374
- const { id: contractClassId } = await getContractClassFromArtifact(artifact);
375
- await this.contractStore.addContractArtifact(contractClassId, artifact);
382
+ const contractClassId = await this.contractStore.addContractArtifact(artifact);
376
383
  this.log.info(`Added contract class ${artifact.name} with id ${contractClassId}`);
377
384
  }
378
385
  /**
@@ -388,15 +395,14 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
388
395
  if (artifact) {
389
396
  // If the user provides an artifact, validate it against the expected class id and register it
390
397
  const contractClass = await getContractClassFromArtifact(artifact);
391
- const contractClassId = contractClass.id;
392
- if (!contractClassId.equals(instance.currentContractClassId)) {
393
- throw new Error(`Artifact does not match expected class id (computed ${contractClassId} but instance refers to ${instance.currentContractClassId})`);
398
+ if (!contractClass.id.equals(instance.currentContractClassId)) {
399
+ throw new Error(`Artifact does not match expected class id (computed ${contractClass.id} but instance refers to ${instance.currentContractClassId})`);
394
400
  }
395
401
  const computedAddress = await computeContractAddressFromInstance(instance);
396
402
  if (!computedAddress.equals(instance.address)) {
397
403
  throw new Error('Added a contract in which the address does not match the contract instance.');
398
404
  }
399
- await this.contractStore.addContractArtifact(contractClass.id, artifact);
405
+ await this.contractStore.addContractArtifact(artifact, contractClass);
400
406
  const publicFunctionSignatures = artifact.functions.filter((fn)=>fn.functionType === FunctionType.PUBLIC).map((fn)=>decodeFunctionSignature(fn.name, fn.parameters));
401
407
  await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
402
408
  } else {
@@ -432,11 +438,13 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
432
438
  if (!contractClass.id.equals(currentClassId)) {
433
439
  throw new Error('Could not update contract to a class different from the current one.');
434
440
  }
435
- await this.contractStore.addContractArtifact(contractClass.id, artifact);
436
441
  const publicFunctionSignatures = artifact.functions.filter((fn)=>fn.functionType === FunctionType.PUBLIC).map((fn)=>decodeFunctionSignature(fn.name, fn.parameters));
437
442
  await this.node.registerContractFunctionSignatures(publicFunctionSignatures);
438
443
  currentInstance.currentContractClassId = contractClass.id;
439
- await this.contractStore.addContractInstance(currentInstance);
444
+ await Promise.all([
445
+ this.contractStore.addContractArtifact(artifact, contractClass),
446
+ this.contractStore.addContractInstance(currentInstance)
447
+ ]);
440
448
  this.log.info(`Updated contract ${artifact.name} at ${contractAddress.toString()} to class ${contractClass.id}`);
441
449
  });
442
450
  }
@@ -497,16 +505,16 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
497
505
  // transaction before this one is included in a block from this PXE, and that transaction contains a log with
498
506
  // a tag derived from the same secret, we would reuse the tag and the transactions would be linked. Hence
499
507
  // storing the tags here prevents linkage of txs sent from the same PXE.
500
- const preTagsUsedInTheTx = privateExecutionResult.entrypoint.preTags;
501
- if (preTagsUsedInTheTx.length > 0) {
508
+ const taggingIndexRangesUsedInTheTx = privateExecutionResult.entrypoint.taggingIndexRanges;
509
+ if (taggingIndexRangesUsedInTheTx.length > 0) {
502
510
  // TODO(benesjan): The following is an expensive operation. Figure out a way to avoid it.
503
511
  const txHash = (await txProvingResult.toTx()).txHash;
504
- await this.senderTaggingStore.storePendingIndexes(preTagsUsedInTheTx, txHash, jobId);
505
- this.log.debug(`Stored used pre-tags as sender for the tx`, {
506
- preTagsUsedInTheTx
512
+ await this.senderTaggingStore.storePendingIndexes(taggingIndexRangesUsedInTheTx, txHash, jobId);
513
+ this.log.debug(`Stored used tagging index ranges as sender for the tx`, {
514
+ taggingIndexRangesUsedInTheTx
507
515
  });
508
516
  } else {
509
- this.log.debug(`No pre-tags used in the tx`);
517
+ this.log.debug(`No tagging index ranges used in the tx`);
510
518
  }
511
519
  return txProvingResult;
512
520
  } catch (err) {
@@ -640,6 +648,9 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
640
648
  const publicSimulationTimer = new Timer();
641
649
  publicOutput = await this.#simulatePublicCalls(simulatedTx, skipFeeEnforcement);
642
650
  publicSimulationTime = publicSimulationTimer.ms();
651
+ if (publicOutput?.debugLogs?.length) {
652
+ await displayDebugLogs(publicOutput.debugLogs, (addr)=>this.contractStore.getDebugContractName(addr));
653
+ }
643
654
  }
644
655
  let validationTime;
645
656
  if (!skipTxValidation) {
@@ -650,7 +661,8 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
650
661
  });
651
662
  validationTime = validationTimer.ms();
652
663
  if (validationResult.result === 'invalid') {
653
- throw new Error('The simulated transaction is unable to be added to state and is invalid.');
664
+ const reason = validationResult.reason.length > 0 ? ` Reason: ${validationResult.reason.join(', ')}` : '';
665
+ throw new Error(`The simulated transaction is unable to be added to state and is invalid.${reason}`);
654
666
  }
655
667
  }
656
668
  const txHash = simulatedTx.getTxHash();
@@ -688,14 +700,14 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
688
700
  });
689
701
  }
690
702
  /**
691
- * Simulates the execution of a contract utility function.
703
+ * Executes a contract utility function.
692
704
  * @param call - The function call containing the function details, arguments, and target contract address.
693
- */ simulateUtility(call, { authwits, scopes } = {
705
+ */ executeUtility(call, { authwits, scopes } = {
694
706
  scopes: 'ALL_SCOPES'
695
707
  }) {
696
- // We disable concurrent simulations since those might execute oracles which read and write to the PXE stores (e.g.
708
+ // We disable concurrent executions since those might execute oracles which read and write to the PXE stores (e.g.
697
709
  // to the capsules), and we need to prevent concurrent runs from interfering with one another (e.g. attempting to
698
- // delete the same read value, or reading values that another simulation is currently modifying).
710
+ // delete the same read value, or reading values that another execution is currently modifying).
699
711
  return this.#putInJobQueue(async (jobId)=>{
700
712
  try {
701
713
  const totalTimer = new Timer();
@@ -705,8 +717,8 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
705
717
  const functionTimer = new Timer();
706
718
  const contractFunctionSimulator = this.#getSimulatorForTx();
707
719
  const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
708
- await this.contractSyncService.ensureContractSynced(call.to, call.selector, (privateSyncCall, execScopes)=>this.#simulateUtility(contractFunctionSimulator, privateSyncCall, [], execScopes, jobId), anchorBlockHeader, jobId, scopes);
709
- const executionResult = await this.#simulateUtility(contractFunctionSimulator, call, authwits ?? [], scopes, jobId);
720
+ await this.contractSyncService.ensureContractSynced(call.to, call.selector, (privateSyncCall, execScopes)=>this.#executeUtility(contractFunctionSimulator, privateSyncCall, [], execScopes, jobId), anchorBlockHeader, jobId, scopes);
721
+ const executionResult = await this.#executeUtility(contractFunctionSimulator, call, authwits ?? [], scopes, jobId);
710
722
  const functionTime = functionTimer.ms();
711
723
  const totalTime = totalTimer.ms();
712
724
  const perFunction = [
@@ -732,7 +744,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
732
744
  } catch (err) {
733
745
  const { to, name, args } = call;
734
746
  const stringifiedArgs = args.map((arg)=>arg.toString()).join(', ');
735
- throw this.#contextualizeError(err, `simulateUtility ${to}:${name}(${stringifiedArgs})`, `scopes=${scopes === 'ALL_SCOPES' ? scopes : scopes.map((s)=>s.toString()).join(', ')}`);
747
+ throw this.#contextualizeError(err, `executeUtility ${to}:${name}(${stringifiedArgs})`, `scopes=${scopes === 'ALL_SCOPES' ? scopes : scopes.map((s)=>s.toString()).join(', ')}`);
736
748
  }
737
749
  });
738
750
  }
@@ -755,7 +767,7 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
755
767
  const anchorBlockHeader = await this.anchorBlockStore.getBlockHeader();
756
768
  anchorBlockNumber = anchorBlockHeader.getBlockNumber();
757
769
  const contractFunctionSimulator = this.#getSimulatorForTx();
758
- await this.contractSyncService.ensureContractSynced(filter.contractAddress, null, async (privateSyncCall, execScopes)=>await this.#simulateUtility(contractFunctionSimulator, privateSyncCall, [], execScopes, jobId), anchorBlockHeader, jobId, filter.scopes);
770
+ await this.contractSyncService.ensureContractSynced(filter.contractAddress, null, async (privateSyncCall, execScopes)=>await this.#executeUtility(contractFunctionSimulator, privateSyncCall, [], execScopes, jobId), anchorBlockHeader, jobId, filter.scopes);
759
771
  });
760
772
  // anchorBlockNumber is set during the job and fixed to whatever it is after a block sync
761
773
  const sanitizedFilter = new PrivateEventFilterValidator(anchorBlockNumber).validate(filter);
@@ -763,8 +775,9 @@ import { SenderTaggingStore } from './storage/tagging_store/sender_tagging_store
763
775
  return this.privateEventStore.getPrivateEvents(eventSelector, sanitizedFilter);
764
776
  }
765
777
  /**
766
- * Stops the PXE's job queue.
767
- */ stop() {
768
- return this.jobQueue.end();
778
+ * Stops the PXE's job queue and closes the backing store.
779
+ */ async stop() {
780
+ await this.jobQueue.end();
781
+ await this.db.close();
769
782
  }
770
783
  }
@@ -1,10 +1,37 @@
1
1
  import type { FUNCTION_TREE_HEIGHT } from '@aztec/constants';
2
- import type { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
+ import { BufferReader } from '@aztec/foundation/serialize';
3
4
  import type { MembershipWitness } from '@aztec/foundation/trees';
4
5
  import type { AztecAsyncKVStore } from '@aztec/kv-store';
5
6
  import { type ContractArtifact, type FunctionAbi, type FunctionArtifactWithContractName, FunctionCall, type FunctionDebugMetadata, FunctionSelector } from '@aztec/stdlib/abi';
6
7
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
7
- import { type ContractClass, type ContractInstanceWithAddress } from '@aztec/stdlib/contract';
8
+ import { type ContractClassIdPreimage, type ContractClassWithId, type ContractInstanceWithAddress } from '@aztec/stdlib/contract';
9
+ /**
10
+ * All contract class data except the large packedBytecode.
11
+ * The expensive data from the ContractClass is precomputed and stored in this format to avoid redundant hashing.
12
+ * Since we have to store the artifacts anyway, the final ContractClass is reconstructed by combining this data
13
+ * with the packedBytecode obtained from the former. That way we can have quick class lookups without wasted storage.
14
+ */
15
+ export declare class SerializableContractClassData {
16
+ readonly version: 1;
17
+ readonly id: Fr;
18
+ readonly artifactHash: Fr;
19
+ readonly privateFunctionsRoot: Fr;
20
+ readonly publicBytecodeCommitment: Fr;
21
+ readonly privateFunctions: {
22
+ selector: FunctionSelector;
23
+ vkHash: Fr;
24
+ }[];
25
+ constructor(data: ContractClassIdPreimage & {
26
+ id: Fr;
27
+ privateFunctions: {
28
+ selector: FunctionSelector;
29
+ vkHash: Fr;
30
+ }[];
31
+ });
32
+ toBuffer(): Buffer;
33
+ static fromBuffer(bufferOrReader: Buffer | BufferReader): SerializableContractClassData;
34
+ }
8
35
  /**
9
36
  * ContractStore serves as a data manager and retriever for Aztec.nr contracts.
10
37
  * It provides methods to obtain contract addresses, function ABI, bytecode, and membership witnesses
@@ -15,19 +42,24 @@ import { type ContractClass, type ContractInstanceWithAddress } from '@aztec/std
15
42
  export declare class ContractStore {
16
43
  #private;
17
44
  constructor(store: AztecAsyncKVStore);
18
- addContractArtifact(id: Fr, contract: ContractArtifact): Promise<void>;
45
+ /**
46
+ * Registers a new contract artifact and its corresponding class data.
47
+ * IMPORTANT: This method does not verify that the provided artifact matches the class data or that the class id matches the artifact.
48
+ * It is the caller's responsibility to ensure the consistency and correctness of the provided data.
49
+ * This is done to avoid redundant, expensive contract class computations
50
+ */
51
+ addContractArtifact(contract: ContractArtifact, contractClassWithIdAndPreimage?: ContractClassWithId & ContractClassIdPreimage): Promise<Fr>;
19
52
  addContractInstance(contract: ContractInstanceWithAddress): Promise<void>;
20
53
  getContractsAddresses(): Promise<AztecAddress[]>;
21
- /** Returns a contract instance for a given address. Throws if not found. */
54
+ /** Returns a contract instance for a given address. */
22
55
  getContractInstance(contractAddress: AztecAddress): Promise<ContractInstanceWithAddress | undefined>;
56
+ /** Returns the raw contract artifact for a given class id. */
23
57
  getContractArtifact(contractClassId: Fr): Promise<ContractArtifact | undefined>;
24
- /** Returns a contract class for a given class id. Throws if not found. */
25
- getContractClass(contractClassId: Fr): Promise<ContractClass | undefined>;
58
+ /** Returns a contract class for a given class id. */
59
+ getContractClassWithPreimage(contractClassId: Fr): Promise<(ContractClassWithId & ContractClassIdPreimage) | undefined>;
26
60
  getContract(address: AztecAddress): Promise<(ContractInstanceWithAddress & ContractArtifact) | undefined>;
27
61
  /**
28
62
  * Retrieves the artifact of a specified function within a given contract.
29
- * The function is identified by its selector, which is a unique code generated from the function's signature.
30
- * Throws an error if the contract address or function selector are invalid or not found.
31
63
  *
32
64
  * @param contractAddress - The AztecAddress representing the contract containing the function.
33
65
  * @param selector - The function selector.
@@ -39,20 +71,15 @@ export declare class ContractStore {
39
71
  getFunctionAbi(contractAddress: AztecAddress, selector: FunctionSelector): Promise<FunctionAbi | undefined>;
40
72
  /**
41
73
  * Retrieves the debug metadata of a specified function within a given contract.
42
- * The function is identified by its selector, which is a unique code generated from the function's signature.
43
- * Returns undefined if the debug metadata for the given function is not found.
44
- * Throws if the contract has not been added to the database.
45
74
  *
46
75
  * @param contractAddress - The AztecAddress representing the contract containing the function.
47
76
  * @param selector - The function selector.
48
- * @returns The corresponding function's artifact as an object.
77
+ * @returns The corresponding function's debug metadata, or undefined.
49
78
  */
50
79
  getFunctionDebugMetadata(contractAddress: AztecAddress, selector: FunctionSelector): Promise<FunctionDebugMetadata | undefined>;
51
80
  getPublicFunctionDebugMetadata(contractAddress: AztecAddress): Promise<FunctionDebugMetadata | undefined>;
52
81
  /**
53
82
  * Retrieve the function membership witness for the given contract class and function selector.
54
- * The function membership witness represents a proof that the function belongs to the specified contract.
55
- * Throws an error if the contract address or function selector is unknown.
56
83
  *
57
84
  * @param contractClassId - The id of the class.
58
85
  * @param selector - The function selector.
@@ -63,4 +90,4 @@ export declare class ContractStore {
63
90
  getDebugFunctionName(contractAddress: AztecAddress, selector: FunctionSelector): Promise<string>;
64
91
  getFunctionCall(functionName: string, args: any[], to: AztecAddress): Promise<FunctionCall>;
65
92
  }
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3Rfc3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yYWdlL2NvbnRyYWN0X3N0b3JlL2NvbnRyYWN0X3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0QsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFekQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBaUIsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQ0wsS0FBSyxnQkFBZ0IsRUFDckIsS0FBSyxXQUFXLEVBRWhCLEtBQUssZ0NBQWdDLEVBQ3JDLFlBQVksRUFDWixLQUFLLHFCQUFxQixFQUMxQixnQkFBZ0IsRUFNakIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUNMLEtBQUssYUFBYSxFQUNsQixLQUFLLDJCQUEyQixFQUdqQyxNQUFNLHdCQUF3QixDQUFDO0FBSWhDOzs7Ozs7R0FNRztBQUNILHFCQUFhLGFBQWE7O0lBWXhCLFlBQVksS0FBSyxFQUFFLGlCQUFpQixFQUluQztJQUlZLG1CQUFtQixDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FxQmxGO0lBRUssbUJBQW1CLENBQUMsUUFBUSxFQUFFLDJCQUEyQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FPOUU7SUE0Q0QscUJBQXFCLElBQUksT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLENBSy9DO0lBRUQsNEVBQTRFO0lBQ3JFLG1CQUFtQixDQUFDLGVBQWUsRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLDJCQUEyQixHQUFHLFNBQVMsQ0FBQyxDQUsxRztJQUVNLG1CQUFtQixDQUFDLGVBQWUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxDQU1yRjtJQUVELDBFQUEwRTtJQUM3RCxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLENBR3JGO0lBRVksV0FBVyxDQUN0QixPQUFPLEVBQUUsWUFBWSxHQUNwQixPQUFPLENBQUMsQ0FBQywyQkFBMkIsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQVV2RTtJQUVEOzs7Ozs7OztPQVFHO0lBQ1UsbUJBQW1CLENBQzlCLGVBQWUsRUFBRSxZQUFZLEVBQzdCLFFBQVEsRUFBRSxnQkFBZ0IsR0FDekIsT0FBTyxDQUFDLGdDQUFnQyxHQUFHLFNBQVMsQ0FBQyxDQUl2RDtJQUVZLG9DQUFvQyxDQUMvQyxlQUFlLEVBQUUsWUFBWSxFQUM3QixRQUFRLEVBQUUsZ0JBQWdCLEdBQ3pCLE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQVUzQztJQUVZLHlCQUF5QixDQUNwQyxlQUFlLEVBQUUsWUFBWSxHQUM1QixPQUFPLENBQUMsZ0NBQWdDLEdBQUcsU0FBUyxDQUFDLENBSXZEO0lBRVksY0FBYyxDQUN6QixlQUFlLEVBQUUsWUFBWSxFQUM3QixRQUFRLEVBQUUsZ0JBQWdCLEdBQ3pCLE9BQU8sQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLENBR2xDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ1Usd0JBQXdCLENBQ25DLGVBQWUsRUFBRSxZQUFZLEVBQzdCLFFBQVEsRUFBRSxnQkFBZ0IsR0FDekIsT0FBTyxDQUFDLHFCQUFxQixHQUFHLFNBQVMsQ0FBQyxDQUk1QztJQUVZLDhCQUE4QixDQUN6QyxlQUFlLEVBQUUsWUFBWSxHQUM1QixPQUFPLENBQUMscUJBQXFCLEdBQUcsU0FBUyxDQUFDLENBSTVDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDVSw0QkFBNEIsQ0FDdkMsZUFBZSxFQUFFLEVBQUUsRUFDbkIsUUFBUSxFQUFFLGdCQUFnQixHQUN6QixPQUFPLENBQUMsaUJBQWlCLENBQUMsT0FBTyxvQkFBb0IsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUdyRTtJQUVZLG9CQUFvQixDQUFDLGVBQWUsRUFBRSxZQUFZLCtCQUc5RDtJQUVZLG9CQUFvQixDQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixtQkFJMUY7SUE4QlksZUFBZSxDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQXVCdkc7Q0FDRiJ9
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3Rfc3RvcmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdG9yYWdlL2NvbnRyYWN0X3N0b3JlL2NvbnRyYWN0X3N0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQWlDLE1BQU0sNkJBQTZCLENBQUM7QUFDMUYsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBaUIsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQ0wsS0FBSyxnQkFBZ0IsRUFDckIsS0FBSyxXQUFXLEVBRWhCLEtBQUssZ0NBQWdDLEVBQ3JDLFlBQVksRUFDWixLQUFLLHFCQUFxQixFQUMxQixnQkFBZ0IsRUFNakIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUNMLEtBQUssdUJBQXVCLEVBQzVCLEtBQUssbUJBQW1CLEVBQ3hCLEtBQUssMkJBQTJCLEVBR2pDLE1BQU0sd0JBQXdCLENBQUM7QUFNaEM7Ozs7O0dBS0c7QUFDSCxxQkFBYSw2QkFBNkI7SUFDeEMsU0FBZ0IsT0FBTyxJQUFXO0lBQ2xDLFNBQWdCLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDdkIsU0FBZ0IsWUFBWSxFQUFFLEVBQUUsQ0FBQztJQUNqQyxTQUFnQixvQkFBb0IsRUFBRSxFQUFFLENBQUM7SUFDekMsU0FBZ0Isd0JBQXdCLEVBQUUsRUFBRSxDQUFDO0lBQzdDLFNBQWdCLGdCQUFnQixFQUFFO1FBQUUsUUFBUSxFQUFFLGdCQUFnQixDQUFDO1FBQUMsTUFBTSxFQUFFLEVBQUUs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
@@ -1 +1 @@
1
- {"version":3,"file":"contract_store.d.ts","sourceRoot":"","sources":["../../../src/storage/contract_store/contract_store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,iBAAiB,CAAC;AACxE,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAEhB,KAAK,gCAAgC,EACrC,YAAY,EACZ,KAAK,qBAAqB,EAC1B,gBAAgB,EAMjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,2BAA2B,EAGjC,MAAM,wBAAwB,CAAC;AAIhC;;;;;;GAMG;AACH,qBAAa,aAAa;;IAYxB,YAAY,KAAK,EAAE,iBAAiB,EAInC;IAIY,mBAAmB,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBlF;IAEK,mBAAmB,CAAC,QAAQ,EAAE,2BAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAO9E;IA4CD,qBAAqB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAK/C;IAED,4EAA4E;IACrE,mBAAmB,CAAC,eAAe,EAAE,YAAY,GAAG,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC,CAK1G;IAEM,mBAAmB,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAMrF;IAED,0EAA0E;IAC7D,gBAAgB,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAGrF;IAEY,WAAW,CACtB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,CAAC,2BAA2B,GAAG,gBAAgB,CAAC,GAAG,SAAS,CAAC,CAUvE;IAED;;;;;;;;OAQG;IACU,mBAAmB,CAC9B,eAAe,EAAE,YAAY,EAC7B,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,gCAAgC,GAAG,SAAS,CAAC,CAIvD;IAEY,oCAAoC,CAC/C,eAAe,EAAE,YAAY,EAC7B,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,gCAAgC,CAAC,CAU3C;IAEY,yBAAyB,CACpC,eAAe,EAAE,YAAY,GAC5B,OAAO,CAAC,gCAAgC,GAAG,SAAS,CAAC,CAIvD;IAEY,cAAc,CACzB,eAAe,EAAE,YAAY,EAC7B,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAGlC;IAED;;;;;;;;;OASG;IACU,wBAAwB,CACnC,eAAe,EAAE,YAAY,EAC7B,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAI5C;IAEY,8BAA8B,CACzC,eAAe,EAAE,YAAY,GAC5B,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAI5C;IAED;;;;;;;;OAQG;IACU,4BAA4B,CACvC,eAAe,EAAE,EAAE,EACnB,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,iBAAiB,CAAC,OAAO,oBAAoB,CAAC,GAAG,SAAS,CAAC,CAGrE;IAEY,oBAAoB,CAAC,eAAe,EAAE,YAAY,+BAG9D;IAEY,oBAAoB,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,mBAI1F;IA8BY,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAuBvG;CACF"}
1
+ {"version":3,"file":"contract_store.d.ts","sourceRoot":"","sources":["../../../src/storage/contract_store/contract_store.ts"],"names":[],"mappings":"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"}