@aztec/pxe 0.0.1-commit.993d52e → 0.0.1-commit.9badcec54

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 (221) hide show
  1. package/dest/bin/check_oracle_version.js +4 -4
  2. package/dest/block_synchronizer/block_synchronizer.d.ts +6 -2
  3. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  4. package/dest/block_synchronizer/block_synchronizer.js +19 -1
  5. package/dest/config/index.d.ts +2 -2
  6. package/dest/config/index.d.ts.map +1 -1
  7. package/dest/config/index.js +8 -15
  8. package/dest/config/package_info.js +1 -1
  9. package/dest/contract_function_simulator/contract_function_simulator.d.ts +13 -5
  10. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  11. package/dest/contract_function_simulator/contract_function_simulator.js +40 -15
  12. package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
  13. package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
  14. package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
  15. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +5 -5
  16. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  17. package/dest/contract_function_simulator/execution_tagging_index_cache.js +17 -9
  18. package/dest/contract_function_simulator/index.d.ts +2 -1
  19. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  20. package/dest/contract_function_simulator/index.js +1 -0
  21. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +4 -6
  22. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  23. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +8 -10
  24. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +1 -1
  25. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +1 -1
  26. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +2 -2
  27. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  28. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +2 -4
  29. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +4 -7
  30. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  31. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +6 -11
  32. package/dest/contract_function_simulator/oracle/interfaces.d.ts +61 -45
  33. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  34. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +9 -0
  35. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +1 -0
  36. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +47 -0
  37. package/dest/contract_function_simulator/oracle/oracle.d.ts +75 -44
  38. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  39. package/dest/contract_function_simulator/oracle/oracle.js +281 -96
  40. package/dest/contract_function_simulator/oracle/private_execution.js +5 -3
  41. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +25 -50
  42. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  43. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +51 -76
  44. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +94 -60
  45. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  46. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +276 -110
  47. package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
  48. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  49. package/dest/contract_function_simulator/pick_notes.js +20 -3
  50. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +1 -1
  51. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  52. package/dest/contract_function_simulator/proxied_contract_data_source.js +3 -0
  53. package/dest/contract_logging.d.ts +9 -4
  54. package/dest/contract_logging.d.ts.map +1 -1
  55. package/dest/contract_logging.js +21 -6
  56. package/dest/contract_sync/contract_sync_service.d.ts +6 -5
  57. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -1
  58. package/dest/contract_sync/contract_sync_service.js +62 -43
  59. package/dest/contract_sync/helpers.d.ts +2 -3
  60. package/dest/contract_sync/helpers.d.ts.map +1 -1
  61. package/dest/contract_sync/helpers.js +7 -2
  62. package/dest/debug/pxe_debug_utils.d.ts +3 -3
  63. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  64. package/dest/entrypoints/client/bundle/index.d.ts +1 -2
  65. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  66. package/dest/entrypoints/client/bundle/index.js +0 -1
  67. package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
  68. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  69. package/dest/entrypoints/client/bundle/utils.js +2 -2
  70. package/dest/entrypoints/client/lazy/index.d.ts +1 -2
  71. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  72. package/dest/entrypoints/client/lazy/index.js +0 -1
  73. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  74. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  75. package/dest/entrypoints/client/lazy/utils.js +2 -2
  76. package/dest/entrypoints/pxe_creation_options.d.ts +3 -1
  77. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  78. package/dest/entrypoints/pxe_creation_options.js +3 -1
  79. package/dest/entrypoints/server/index.d.ts +2 -3
  80. package/dest/entrypoints/server/index.d.ts.map +1 -1
  81. package/dest/entrypoints/server/index.js +1 -2
  82. package/dest/entrypoints/server/utils.d.ts +2 -2
  83. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  84. package/dest/entrypoints/server/utils.js +2 -2
  85. package/dest/events/event_service.d.ts +3 -2
  86. package/dest/events/event_service.d.ts.map +1 -1
  87. package/dest/events/event_service.js +26 -5
  88. package/dest/events/private_event_filter_validator.d.ts +3 -2
  89. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  90. package/dest/events/private_event_filter_validator.js +15 -0
  91. package/dest/logs/log_service.d.ts +7 -8
  92. package/dest/logs/log_service.d.ts.map +1 -1
  93. package/dest/logs/log_service.js +27 -37
  94. package/dest/messages/message_context_service.d.ts +17 -0
  95. package/dest/messages/message_context_service.d.ts.map +1 -0
  96. package/dest/messages/message_context_service.js +36 -0
  97. package/dest/notes/note_service.d.ts +4 -5
  98. package/dest/notes/note_service.d.ts.map +1 -1
  99. package/dest/notes/note_service.js +14 -5
  100. package/dest/notes_filter.d.ts +2 -3
  101. package/dest/notes_filter.d.ts.map +1 -1
  102. package/dest/oracle_version.d.ts +4 -3
  103. package/dest/oracle_version.d.ts.map +1 -1
  104. package/dest/oracle_version.js +20 -10
  105. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +4 -3
  106. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  107. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +125 -64
  108. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  109. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  110. package/dest/private_kernel/hints/test_utils.js +203 -0
  111. package/dest/private_kernel/private_kernel_execution_prover.d.ts +1 -1
  112. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  113. package/dest/private_kernel/private_kernel_execution_prover.js +17 -12
  114. package/dest/private_kernel/private_kernel_oracle.d.ts +5 -5
  115. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  116. package/dest/private_kernel/private_kernel_oracle.js +12 -15
  117. package/dest/pxe.d.ts +12 -8
  118. package/dest/pxe.d.ts.map +1 -1
  119. package/dest/pxe.js +55 -29
  120. package/dest/storage/anchor_block_store/anchor_block_store.js +1 -1
  121. package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
  122. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  123. package/dest/storage/capsule_store/capsule_service.js +50 -0
  124. package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
  125. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  126. package/dest/storage/capsule_store/capsule_store.js +36 -28
  127. package/dest/storage/capsule_store/index.d.ts +2 -1
  128. package/dest/storage/capsule_store/index.d.ts.map +1 -1
  129. package/dest/storage/capsule_store/index.js +1 -0
  130. package/dest/storage/contract_store/contract_store.d.ts +1 -1
  131. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  132. package/dest/storage/contract_store/contract_store.js +4 -2
  133. package/dest/storage/metadata.d.ts +1 -1
  134. package/dest/storage/metadata.js +1 -1
  135. package/dest/storage/note_store/note_store.d.ts +1 -1
  136. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  137. package/dest/storage/note_store/note_store.js +2 -2
  138. package/dest/storage/private_event_store/private_event_store.d.ts +1 -1
  139. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  140. package/dest/storage/private_event_store/private_event_store.js +3 -0
  141. package/dest/storage/private_event_store/stored_private_event.js +1 -1
  142. package/dest/storage/tagging_store/sender_tagging_store.d.ts +26 -25
  143. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  144. package/dest/storage/tagging_store/sender_tagging_store.js +141 -115
  145. package/dest/tagging/index.d.ts +2 -2
  146. package/dest/tagging/index.d.ts.map +1 -1
  147. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +2 -2
  148. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
  149. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +2 -16
  150. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +1 -1
  151. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  152. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +10 -1
  153. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +4 -3
  154. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  155. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +20 -10
  156. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +2 -1
  157. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  158. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +24 -11
  159. package/package.json +16 -16
  160. package/src/bin/check_oracle_version.ts +4 -4
  161. package/src/block_synchronizer/block_synchronizer.ts +22 -2
  162. package/src/config/index.ts +3 -9
  163. package/src/config/package_info.ts +1 -1
  164. package/src/contract_function_simulator/contract_function_simulator.ts +54 -26
  165. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  166. package/src/contract_function_simulator/execution_tagging_index_cache.ts +16 -11
  167. package/src/contract_function_simulator/index.ts +1 -0
  168. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +9 -9
  169. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +1 -1
  170. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +2 -5
  171. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +4 -10
  172. package/src/contract_function_simulator/oracle/interfaces.ts +82 -54
  173. package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +104 -0
  174. package/src/contract_function_simulator/oracle/oracle.ts +363 -139
  175. package/src/contract_function_simulator/oracle/private_execution.ts +4 -4
  176. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +61 -96
  177. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +451 -147
  178. package/src/contract_function_simulator/pick_notes.ts +22 -3
  179. package/src/contract_function_simulator/proxied_contract_data_source.ts +8 -1
  180. package/src/contract_logging.ts +18 -5
  181. package/src/contract_sync/contract_sync_service.ts +99 -75
  182. package/src/contract_sync/helpers.ts +4 -4
  183. package/src/debug/pxe_debug_utils.ts +3 -3
  184. package/src/entrypoints/client/bundle/index.ts +0 -1
  185. package/src/entrypoints/client/bundle/utils.ts +2 -3
  186. package/src/entrypoints/client/lazy/index.ts +0 -1
  187. package/src/entrypoints/client/lazy/utils.ts +2 -3
  188. package/src/entrypoints/pxe_creation_options.ts +7 -0
  189. package/src/entrypoints/server/index.ts +1 -2
  190. package/src/entrypoints/server/utils.ts +2 -3
  191. package/src/events/event_service.ts +30 -5
  192. package/src/events/private_event_filter_validator.ts +21 -1
  193. package/src/logs/log_service.ts +57 -78
  194. package/src/messages/message_context_service.ts +44 -0
  195. package/src/notes/note_service.ts +18 -8
  196. package/src/notes_filter.ts +1 -3
  197. package/src/oracle_version.ts +20 -10
  198. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +157 -110
  199. package/src/private_kernel/hints/test_utils.ts +325 -0
  200. package/src/private_kernel/private_kernel_execution_prover.ts +17 -15
  201. package/src/private_kernel/private_kernel_oracle.ts +14 -14
  202. package/src/pxe.ts +82 -34
  203. package/src/storage/anchor_block_store/anchor_block_store.ts +1 -1
  204. package/src/storage/capsule_store/capsule_service.ts +90 -0
  205. package/src/storage/capsule_store/capsule_store.ts +44 -26
  206. package/src/storage/capsule_store/index.ts +1 -0
  207. package/src/storage/contract_store/contract_store.ts +8 -6
  208. package/src/storage/metadata.ts +1 -1
  209. package/src/storage/note_store/note_store.ts +2 -5
  210. package/src/storage/private_event_store/private_event_store.ts +4 -0
  211. package/src/storage/private_event_store/stored_private_event.ts +1 -1
  212. package/src/storage/tagging_store/sender_tagging_store.ts +182 -135
  213. package/src/tagging/index.ts +1 -1
  214. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +5 -15
  215. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +19 -1
  216. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +26 -11
  217. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +19 -9
  218. package/dest/access_scopes.d.ts +0 -9
  219. package/dest/access_scopes.d.ts.map +0 -1
  220. package/dest/access_scopes.js +0 -6
  221. package/src/access_scopes.ts +0 -9
@@ -13,5 +13,5 @@ export { syncSenderTaggingIndexes } from './sender_sync/sync_sender_tagging_inde
13
13
  export { UNFINALIZED_TAGGING_INDEXES_WINDOW_LEN } from './constants.js';
14
14
  export { getAllPrivateLogsByTags, getAllPublicLogsByTagsFromContract } from './get_all_logs_by_tags.js';
15
15
  export { ExtendedDirectionalAppTaggingSecret, Tag, SiloedTag } from '@aztec/stdlib/logs';
16
- export { type PreTag } from '@aztec/stdlib/logs';
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90YWdnaW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7R0FTRztBQUVILE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQ3hILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR3hHLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekYsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUMifQ==
16
+ export { type PreTag, type TaggingIndexRange } from '@aztec/stdlib/logs';
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90YWdnaW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7R0FTRztBQUVILE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQ3hILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR3hHLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekYsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tagging/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,qCAAqC,EAAE,MAAM,iEAAiE,CAAC;AACxH,OAAO,EAAE,wBAAwB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,EAAE,sCAAsC,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,kCAAkC,EAAE,MAAM,2BAA2B,CAAC;AAGxG,OAAO,EAAE,mCAAmC,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACzF,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tagging/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,qCAAqC,EAAE,MAAM,iEAAiE,CAAC;AACxH,OAAO,EAAE,wBAAwB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,EAAE,sCAAsC,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,kCAAkC,EAAE,MAAM,2BAA2B,CAAC;AAGxG,OAAO,EAAE,mCAAmC,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACzF,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -10,5 +10,5 @@ import type { RecipientTaggingStore } from '../../storage/tagging_store/recipien
10
10
  * @dev This function can be safely executed "in parallel" for other sender-recipient pairs because the data in
11
11
  * in the tagging data provider is indexed by the secret and hence completely disjoint.
12
12
  */
13
- export declare function loadPrivateLogsForSenderRecipientPair(secret: ExtendedDirectionalAppTaggingSecret, aztecNode: AztecNode, taggingStore: RecipientTaggingStore, anchorBlockNumber: BlockNumber, anchorBlockHash: BlockHash, jobId: string): Promise<TxScopedL2Log[]>;
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZF9wcml2YXRlX2xvZ3NfZm9yX3NlbmRlcl9yZWNpcGllbnRfcGFpci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RhZ2dpbmcvcmVjaXBpZW50X3N5bmMvbG9hZF9wcml2YXRlX2xvZ3NfZm9yX3NlbmRlcl9yZWNpcGllbnRfcGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEtBQUssRUFBRSxtQ0FBbUMsRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU3RixPQUFPLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBS3BHOzs7Ozs7R0FNRztBQUNILHdCQUFzQixxQ0FBcUMsQ0FDekQsTUFBTSxFQUFFLG1DQUFtQyxFQUMzQyxTQUFTLEVBQUUsU0FBUyxFQUNwQixZQUFZLEVBQUUscUJBQXFCLEVBQ25DLGlCQUFpQixFQUFFLFdBQVcsRUFDOUIsZUFBZSxFQUFFLFNBQVMsRUFDMUIsS0FBSyxFQUFFLE1BQU0sR0FDWixPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FtSDFCIn0=
13
+ export declare function loadPrivateLogsForSenderRecipientPair(secret: ExtendedDirectionalAppTaggingSecret, aztecNode: AztecNode, taggingStore: RecipientTaggingStore, anchorBlockNumber: BlockNumber, anchorBlockHash: BlockHash, currentTimestamp: bigint, finalizedBlockNumber: BlockNumber, jobId: string): Promise<TxScopedL2Log[]>;
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZF9wcml2YXRlX2xvZ3NfZm9yX3NlbmRlcl9yZWNpcGllbnRfcGFpci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RhZ2dpbmcvcmVjaXBpZW50X3N5bmMvbG9hZF9wcml2YXRlX2xvZ3NfZm9yX3NlbmRlcl9yZWNpcGllbnRfcGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEtBQUssRUFBRSxtQ0FBbUMsRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU3RixPQUFPLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBS3BHOzs7Ozs7R0FNRztBQUNILHdCQUFzQixxQ0FBcUMsQ0FDekQsTUFBTSxFQUFFLG1DQUFtQyxFQUMzQyxTQUFTLEVBQUUsU0FBUyxFQUNwQixZQUFZLEVBQUUscUJBQXFCLEVBQ25DLGlCQUFpQixFQUFFLFdBQVcsRUFDOUIsZUFBZSxFQUFFLFNBQVMsRUFDMUIsZ0JBQWdCLEVBQUUsTUFBTSxFQUN4QixvQkFBb0IsRUFBRSxXQUFXLEVBQ2pDLEtBQUssRUFBRSxNQUFNLEdBQ1osT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBdUcxQiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"load_private_logs_for_sender_recipient_pair.d.ts","sourceRoot":"","sources":["../../../src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,mCAAmC,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE7F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAKpG;;;;;;GAMG;AACH,wBAAsB,qCAAqC,CACzD,MAAM,EAAE,mCAAmC,EAC3C,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,qBAAqB,EACnC,iBAAiB,EAAE,WAAW,EAC9B,eAAe,EAAE,SAAS,EAC1B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,EAAE,CAAC,CAmH1B"}
1
+ {"version":3,"file":"load_private_logs_for_sender_recipient_pair.d.ts","sourceRoot":"","sources":["../../../src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,mCAAmC,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE7F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAKpG;;;;;;GAMG;AACH,wBAAsB,qCAAqC,CACzD,MAAM,EAAE,mCAAmC,EAC3C,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,qBAAqB,EACnC,iBAAiB,EAAE,WAAW,EAC9B,eAAe,EAAE,SAAS,EAC1B,gBAAgB,EAAE,MAAM,EACxB,oBAAoB,EAAE,WAAW,EACjC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,EAAE,CAAC,CAuG1B"}
@@ -7,7 +7,7 @@ import { loadLogsForRange } from './utils/load_logs_for_range.js';
7
7
  *
8
8
  * @dev This function can be safely executed "in parallel" for other sender-recipient pairs because the data in
9
9
  * in the tagging data provider is indexed by the secret and hence completely disjoint.
10
- */ export async function loadPrivateLogsForSenderRecipientPair(secret, aztecNode, taggingStore, anchorBlockNumber, anchorBlockHash, jobId) {
10
+ */ export async function loadPrivateLogsForSenderRecipientPair(secret, aztecNode, taggingStore, anchorBlockNumber, anchorBlockHash, currentTimestamp, finalizedBlockNumber, jobId) {
11
11
  // # Explanation of how the algorithm works
12
12
  // When we perform the sync we will look at logs that correspond to the tagging index range
13
13
  // (highestAgedIndex, highestFinalizedIndex + WINDOW_LEN]
@@ -45,20 +45,6 @@ import { loadLogsForRange } from './utils/load_logs_for_range.js';
45
45
  // When a sender chooses a tagging index, they will select an index that is at most `WINDOW_LEN` greater than
46
46
  // the highest finalized index. If that index was already used, they will throw an error. For this reason we
47
47
  // don't have to look further than `highestFinalizedIndex + WINDOW_LEN`.
48
- let finalizedBlockNumber, currentTimestamp;
49
- {
50
- const [l2Tips, latestBlockHeader] = await Promise.all([
51
- aztecNode.getL2Tips(),
52
- aztecNode.getBlockHeader('latest')
53
- ]);
54
- if (!latestBlockHeader) {
55
- throw new Error('Node failed to return latest block header when syncing logs');
56
- }
57
- [finalizedBlockNumber, currentTimestamp] = [
58
- l2Tips.finalized.block.number,
59
- latestBlockHeader.globalVariables.timestamp
60
- ];
61
- }
62
48
  let start, end;
63
49
  {
64
50
  const currentHighestAgedIndex = await taggingStore.getHighestAgedIndex(secret, jobId);
@@ -87,7 +73,7 @@ import { loadLogsForRange } from './utils/load_logs_for_range.js';
87
73
  }
88
74
  if (highestAgedIndex !== undefined && highestAgedIndex > highestFinalizedIndex) {
89
75
  // This is just a sanity check as this should never happen.
90
- throw new Error('Highest aged index lower than highest finalized index invariant violated');
76
+ throw new Error(`Highest aged index (${highestAgedIndex}) must not exceed highest finalized index (${highestFinalizedIndex})`);
91
77
  }
92
78
  await taggingStore.updateHighestFinalizedIndex(secret, highestFinalizedIndex, jobId);
93
79
  // For the next iteration we want to look only at indexes for which we have not attempted to load logs yet while
@@ -14,4 +14,4 @@ import type { SenderTaggingStore } from '../../storage/tagging_store/sender_tagg
14
14
  * updates its status accordingly.
15
15
  */
16
16
  export declare function syncSenderTaggingIndexes(secret: ExtendedDirectionalAppTaggingSecret, aztecNode: AztecNode, taggingStore: SenderTaggingStore, anchorBlockHash: BlockHash, jobId: string): Promise<void>;
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luY19zZW5kZXJfdGFnZ2luZ19pbmRleGVzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGFnZ2luZy9zZW5kZXJfc3luYy9zeW5jX3NlbmRlcl90YWdnaW5nX2luZGV4ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxLQUFLLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5RSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBSzlGOzs7Ozs7Ozs7O0dBVUc7QUFDSCx3QkFBc0Isd0JBQXdCLENBQzVDLE1BQU0sRUFBRSxtQ0FBbUMsRUFDM0MsU0FBUyxFQUFFLFNBQVMsRUFDcEIsWUFBWSxFQUFFLGtCQUFrQixFQUNoQyxlQUFlLEVBQUUsU0FBUyxFQUMxQixLQUFLLEVBQUUsTUFBTSxHQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FtRWYifQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luY19zZW5kZXJfdGFnZ2luZ19pbmRleGVzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGFnZ2luZy9zZW5kZXJfc3luYy9zeW5jX3NlbmRlcl90YWdnaW5nX2luZGV4ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxLQUFLLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5RSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBSzlGOzs7Ozs7Ozs7O0dBVUc7QUFDSCx3QkFBc0Isd0JBQXdCLENBQzVDLE1BQU0sRUFBRSxtQ0FBbUMsRUFDM0MsU0FBUyxFQUFFLFNBQVMsRUFDcEIsWUFBWSxFQUFFLGtCQUFrQixFQUNoQyxlQUFlLEVBQUUsU0FBUyxFQUMxQixLQUFLLEVBQUUsTUFBTSxHQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FxRmYifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"sync_sender_tagging_indexes.d.ts","sourceRoot":"","sources":["../../../src/tagging/sender_sync/sync_sender_tagging_indexes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,oBAAoB,CAAC;AAE9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qDAAqD,CAAC;AAK9F;;;;;;;;;;GAUG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,mCAAmC,EAC3C,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,kBAAkB,EAChC,eAAe,EAAE,SAAS,EAC1B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAmEf"}
1
+ {"version":3,"file":"sync_sender_tagging_indexes.d.ts","sourceRoot":"","sources":["../../../src/tagging/sender_sync/sync_sender_tagging_indexes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,oBAAoB,CAAC;AAE9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qDAAqD,CAAC;AAK9F;;;;;;;;;;GAUG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,mCAAmC,EAC3C,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,kBAAkB,EAChC,eAAe,EAAE,SAAS,EAC1B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAqFf"}
@@ -43,9 +43,18 @@ import { loadAndStoreNewTaggingIndexes } from './utils/load_and_store_new_taggin
43
43
  if (pendingTxHashes.length === 0) {
44
44
  break;
45
45
  }
46
- const { txHashesToFinalize, txHashesToDrop } = await getStatusChangeOfPending(pendingTxHashes, aztecNode);
46
+ const { txHashesToFinalize, txHashesToDrop, txHashesWithExecutionReverted } = await getStatusChangeOfPending(pendingTxHashes, aztecNode);
47
47
  await taggingStore.dropPendingIndexes(txHashesToDrop, jobId);
48
48
  await taggingStore.finalizePendingIndexes(txHashesToFinalize, jobId);
49
+ if (txHashesWithExecutionReverted.length > 0) {
50
+ const indexedTxEffects = await Promise.all(txHashesWithExecutionReverted.map((txHash)=>aztecNode.getTxEffect(txHash)));
51
+ for (const indexedTxEffect of indexedTxEffects){
52
+ if (indexedTxEffect === undefined) {
53
+ throw new Error('TxEffect not found for execution-reverted tx. This is either a bug or a reorg has occurred.');
54
+ }
55
+ await taggingStore.finalizePendingIndexesOfAPartiallyRevertedTx(indexedTxEffect.data, jobId);
56
+ }
57
+ }
49
58
  // We check if the finalized index has been updated.
50
59
  newFinalizedIndex = await taggingStore.getLastFinalizedIndex(secret, jobId);
51
60
  if (previousFinalizedIndex !== newFinalizedIndex) {
@@ -1,11 +1,12 @@
1
1
  import type { AztecNode } from '@aztec/stdlib/interfaces/server';
2
2
  import { TxHash } from '@aztec/stdlib/tx';
3
3
  /**
4
- * Based on receipts obtained from `aztecNode` returns which pending transactions changed their status to finalized or
5
- * dropped.
4
+ * Based on receipts obtained from `aztecNode` returns which pending transactions changed their status to finalized,
5
+ * dropped, or execution-reverted (but mined).
6
6
  */
7
7
  export declare function getStatusChangeOfPending(pending: TxHash[], aztecNode: AztecNode): Promise<{
8
8
  txHashesToFinalize: TxHash[];
9
9
  txHashesToDrop: TxHash[];
10
+ txHashesWithExecutionReverted: TxHash[];
10
11
  }>;
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0X3N0YXR1c19jaGFuZ2Vfb2ZfcGVuZGluZy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RhZ2dpbmcvc2VuZGVyX3N5bmMvdXRpbHMvZ2V0X3N0YXR1c19jaGFuZ2Vfb2ZfcGVuZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsTUFBTSxFQUFZLE1BQU0sa0JBQWtCLENBQUM7QUFFcEQ7OztHQUdHO0FBQ0gsd0JBQXNCLHdCQUF3QixDQUM1QyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQ2pCLFNBQVMsRUFBRSxTQUFTLEdBQ25CLE9BQU8sQ0FBQztJQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFBO0NBQUUsQ0FBQyxDQXlCckUifQ==
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0X3N0YXR1c19jaGFuZ2Vfb2ZfcGVuZGluZy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RhZ2dpbmcvc2VuZGVyX3N5bmMvdXRpbHMvZ2V0X3N0YXR1c19jaGFuZ2Vfb2ZfcGVuZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsTUFBTSxFQUFZLE1BQU0sa0JBQWtCLENBQUM7QUFFcEQ7OztHQUdHO0FBQ0gsd0JBQXNCLHdCQUF3QixDQUM1QyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQ2pCLFNBQVMsRUFBRSxTQUFTLEdBQ25CLE9BQU8sQ0FBQztJQUNULGtCQUFrQixFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQzdCLGNBQWMsRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUN6Qiw2QkFBNkIsRUFBRSxNQUFNLEVBQUUsQ0FBQztDQUN6QyxDQUFDLENBb0NEIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"get_status_change_of_pending.d.ts","sourceRoot":"","sources":["../../../../src/tagging/sender_sync/utils/get_status_change_of_pending.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,MAAM,EAAY,MAAM,kBAAkB,CAAC;AAEpD;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,EAAE,EACjB,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC;IAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAyBrE"}
1
+ {"version":3,"file":"get_status_change_of_pending.d.ts","sourceRoot":"","sources":["../../../../src/tagging/sender_sync/utils/get_status_change_of_pending.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,MAAM,EAAY,MAAM,kBAAkB,CAAC;AAEpD;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,EAAE,EACjB,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC;IACT,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,6BAA6B,EAAE,MAAM,EAAE,CAAC;CACzC,CAAC,CAoCD"}
@@ -1,22 +1,31 @@
1
1
  import { TxStatus } from '@aztec/stdlib/tx';
2
2
  /**
3
- * Based on receipts obtained from `aztecNode` returns which pending transactions changed their status to finalized or
4
- * dropped.
3
+ * Based on receipts obtained from `aztecNode` returns which pending transactions changed their status to finalized,
4
+ * dropped, or execution-reverted (but mined).
5
5
  */ export async function getStatusChangeOfPending(pending, aztecNode) {
6
6
  // Get receipts for all pending tx hashes.
7
7
  const receipts = await Promise.all(pending.map((pendingTxHash)=>aztecNode.getTxReceipt(pendingTxHash)));
8
8
  const txHashesToFinalize = [];
9
9
  const txHashesToDrop = [];
10
+ const txHashesWithExecutionReverted = [];
10
11
  for(let i = 0; i < receipts.length; i++){
11
12
  const receipt = receipts[i];
12
13
  const txHash = pending[i];
13
- if (receipt.status === TxStatus.FINALIZED && receipt.hasExecutionSucceeded()) {
14
- // Tx has been included in a block and the corresponding block is finalized --> we mark the indexes as
15
- // finalized.
16
- txHashesToFinalize.push(txHash);
17
- } else if (receipt.isDropped() || receipt.hasExecutionReverted()) {
18
- // Tx was dropped or reverted --> we drop the corresponding pending indexes.
19
- // TODO(#17615): Don't drop pending indexes corresponding to non-revertible phases.
14
+ if (receipt.status === TxStatus.FINALIZED) {
15
+ // Tx has been included in a block and the corresponding block is finalized
16
+ if (receipt.hasExecutionSucceeded()) {
17
+ // No part of execution reverted - we just finalize all the indexes.
18
+ txHashesToFinalize.push(txHash);
19
+ } else if (receipt.hasExecutionReverted()) {
20
+ // Tx was mined but execution reverted (app logic, teardown, or both). Some logs from the non-revertible
21
+ // phase may still be onchain. We check which tags made it onchain and finalize those; drop the rest.
22
+ txHashesWithExecutionReverted.push(txHash);
23
+ } else {
24
+ // Defensive check - this branch should never be triggered
25
+ throw new Error('Both hasExecutionSucceeded and hasExecutionReverted on the receipt returned false. This should never happen and it implies a bug. Please open an issue.');
26
+ }
27
+ } else if (receipt.isDropped()) {
28
+ // Tx was dropped from the mempool --> we drop the corresponding pending indexes.
20
29
  txHashesToDrop.push(txHash);
21
30
  } else {
22
31
  // Tx is still pending, not yet finalized, or was mined successfully but not yet finalized --> we don't do anything.
@@ -24,6 +33,7 @@ import { TxStatus } from '@aztec/stdlib/tx';
24
33
  }
25
34
  return {
26
35
  txHashesToFinalize,
27
- txHashesToDrop
36
+ txHashesToDrop,
37
+ txHashesWithExecutionReverted
28
38
  };
29
39
  }
@@ -11,8 +11,9 @@ import type { SenderTaggingStore } from '../../../storage/tagging_store/sender_t
11
11
  * @param end - The ending index (exclusive) of the window to process.
12
12
  * @param aztecNode - The Aztec node instance to query for logs.
13
13
  * @param taggingStore - The data provider to store pending indexes.
14
+ * @param anchorBlockHash - Hash of a block to use as reference block when querying node.
14
15
  * @param jobId - Job identifier, used to keep writes in-memory until they can be persisted in a data integrity
15
16
  * preserving way.
16
17
  */
17
18
  export declare function loadAndStoreNewTaggingIndexes(extendedSecret: ExtendedDirectionalAppTaggingSecret, start: number, end: number, aztecNode: AztecNode, taggingStore: SenderTaggingStore, anchorBlockHash: BlockHash, jobId: string): Promise<void>;
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZF9hbmRfc3RvcmVfbmV3X3RhZ2dpbmdfaW5kZXhlcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RhZ2dpbmcvc2VuZGVyX3N5bmMvdXRpbHMvbG9hZF9hbmRfc3RvcmVfbmV3X3RhZ2dpbmdfaW5kZXhlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEtBQUssRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSTlFLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFHakc7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCx3QkFBc0IsNkJBQTZCLENBQ2pELGNBQWMsRUFBRSxtQ0FBbUMsRUFDbkQsS0FBSyxFQUFFLE1BQU0sRUFDYixHQUFHLEVBQUUsTUFBTSxFQUNYLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLFlBQVksRUFBRSxrQkFBa0IsRUFDaEMsZUFBZSxFQUFFLFNBQVMsRUFDMUIsS0FBSyxFQUFFLE1BQU0saUJBZWQifQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZF9hbmRfc3RvcmVfbmV3X3RhZ2dpbmdfaW5kZXhlcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RhZ2dpbmcvc2VuZGVyX3N5bmMvdXRpbHMvbG9hZF9hbmRfc3RvcmVfbmV3X3RhZ2dpbmdfaW5kZXhlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEtBQUssRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSTlFLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFHakc7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsd0JBQXNCLDZCQUE2QixDQUNqRCxjQUFjLEVBQUUsbUNBQW1DLEVBQ25ELEtBQUssRUFBRSxNQUFNLEVBQ2IsR0FBRyxFQUFFLE1BQU0sRUFDWCxTQUFTLEVBQUUsU0FBUyxFQUNwQixZQUFZLEVBQUUsa0JBQWtCLEVBQ2hDLGVBQWUsRUFBRSxTQUFTLEVBQzFCLEtBQUssRUFBRSxNQUFNLGlCQWdCZCJ9
@@ -1 +1 @@
1
- {"version":3,"file":"load_and_store_new_tagging_indexes.d.ts","sourceRoot":"","sources":["../../../../src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,oBAAoB,CAAC;AAI9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wDAAwD,CAAC;AAGjG;;;;;;;;;;;GAWG;AACH,wBAAsB,6BAA6B,CACjD,cAAc,EAAE,mCAAmC,EACnD,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,kBAAkB,EAChC,eAAe,EAAE,SAAS,EAC1B,KAAK,EAAE,MAAM,iBAed"}
1
+ {"version":3,"file":"load_and_store_new_tagging_indexes.d.ts","sourceRoot":"","sources":["../../../../src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,oBAAoB,CAAC;AAI9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wDAAwD,CAAC;AAGjG;;;;;;;;;;;;GAYG;AACH,wBAAsB,6BAA6B,CACjD,cAAc,EAAE,mCAAmC,EACnD,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,kBAAkB,EAChC,eAAe,EAAE,SAAS,EAC1B,KAAK,EAAE,MAAM,iBAgBd"}
@@ -10,6 +10,7 @@ import { getAllPrivateLogsByTags } from '../../get_all_logs_by_tags.js';
10
10
  * @param end - The ending index (exclusive) of the window to process.
11
11
  * @param aztecNode - The Aztec node instance to query for logs.
12
12
  * @param taggingStore - The data provider to store pending indexes.
13
+ * @param anchorBlockHash - Hash of a block to use as reference block when querying node.
13
14
  * @param jobId - Job identifier, used to keep writes in-memory until they can be persisted in a data integrity
14
15
  * preserving way.
15
16
  */ export async function loadAndStoreNewTaggingIndexes(extendedSecret, start, end, aztecNode, taggingStore, anchorBlockHash, jobId) {
@@ -21,16 +22,18 @@ import { getAllPrivateLogsByTags } from '../../get_all_logs_by_tags.js';
21
22
  index: start + i
22
23
  })));
23
24
  const txsForTags = await getTxsContainingTags(siloedTagsForWindow, aztecNode, anchorBlockHash);
24
- const highestIndexMap = getTxHighestIndexMap(txsForTags, start, siloedTagsForWindow.length);
25
- // Now we iterate over the map, reconstruct the preTags and tx hash and store them in the db.
26
- for (const [txHashStr, highestIndex] of highestIndexMap.entries()){
25
+ const txIndexesMap = getTxIndexesMap(txsForTags, start, siloedTagsForWindow.length);
26
+ // Now we iterate over the map, construct the tagging index ranges and store them in the db.
27
+ for (const [txHashStr, indexes] of txIndexesMap.entries()){
27
28
  const txHash = TxHash.fromString(txHashStr);
28
- await taggingStore.storePendingIndexes([
29
+ const ranges = [
29
30
  {
30
31
  extendedSecret,
31
- index: highestIndex
32
+ lowestIndex: Math.min(...indexes),
33
+ highestIndex: Math.max(...indexes)
32
34
  }
33
- ], txHash, jobId);
35
+ ];
36
+ await taggingStore.storePendingIndexes(ranges, txHash, jobId);
34
37
  }
35
38
  }
36
39
  // Returns txs that used the given tags. A tag might have been used in multiple txs and for this reason we return
@@ -41,19 +44,29 @@ async function getTxsContainingTags(tags, aztecNode, anchorBlockHash) {
41
44
  const allLogs = await getAllPrivateLogsByTags(aztecNode, tags, anchorBlockHash);
42
45
  return allLogs.map((logs)=>logs.map((log)=>log.txHash));
43
46
  }
44
- // Returns a map of txHash to the highest index for that txHash.
45
- function getTxHighestIndexMap(txHashesForTags, start, count) {
47
+ // Returns a map of txHash to all indexes for that txHash.
48
+ function getTxIndexesMap(txHashesForTags, start, count) {
46
49
  if (txHashesForTags.length !== count) {
47
50
  throw new Error(`Number of tx hashes arrays does not match number of tags. ${txHashesForTags.length} !== ${count}`);
48
51
  }
49
- const highestIndexMap = new Map();
52
+ const indexesMap = new Map();
53
+ // Iterate over indexes
50
54
  for(let i = 0; i < txHashesForTags.length; i++){
51
55
  const taggingIndex = start + i;
52
56
  const txHashesForTag = txHashesForTags[i];
57
+ // iterate over tx hashes that used that index (tag)
53
58
  for (const txHash of txHashesForTag){
54
59
  const key = txHash.toString();
55
- highestIndexMap.set(key, Math.max(highestIndexMap.get(key) ?? 0, taggingIndex));
60
+ const existing = indexesMap.get(key);
61
+ // Add the index to the tx's indexes
62
+ if (existing) {
63
+ existing.push(taggingIndex);
64
+ } else {
65
+ indexesMap.set(key, [
66
+ taggingIndex
67
+ ]);
68
+ }
56
69
  }
57
70
  }
58
- return highestIndexMap;
71
+ return indexesMap;
59
72
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/pxe",
3
- "version": "0.0.1-commit.993d52e",
3
+ "version": "0.0.1-commit.9badcec54",
4
4
  "type": "module",
5
5
  "typedocOptions": {
6
6
  "entryPoints": [
@@ -70,19 +70,19 @@
70
70
  ]
71
71
  },
72
72
  "dependencies": {
73
- "@aztec/bb-prover": "0.0.1-commit.993d52e",
74
- "@aztec/bb.js": "0.0.1-commit.993d52e",
75
- "@aztec/builder": "0.0.1-commit.993d52e",
76
- "@aztec/constants": "0.0.1-commit.993d52e",
77
- "@aztec/ethereum": "0.0.1-commit.993d52e",
78
- "@aztec/foundation": "0.0.1-commit.993d52e",
79
- "@aztec/key-store": "0.0.1-commit.993d52e",
80
- "@aztec/kv-store": "0.0.1-commit.993d52e",
81
- "@aztec/noir-protocol-circuits-types": "0.0.1-commit.993d52e",
82
- "@aztec/noir-types": "0.0.1-commit.993d52e",
83
- "@aztec/protocol-contracts": "0.0.1-commit.993d52e",
84
- "@aztec/simulator": "0.0.1-commit.993d52e",
85
- "@aztec/stdlib": "0.0.1-commit.993d52e",
73
+ "@aztec/bb-prover": "0.0.1-commit.9badcec54",
74
+ "@aztec/bb.js": "0.0.1-commit.9badcec54",
75
+ "@aztec/builder": "0.0.1-commit.9badcec54",
76
+ "@aztec/constants": "0.0.1-commit.9badcec54",
77
+ "@aztec/ethereum": "0.0.1-commit.9badcec54",
78
+ "@aztec/foundation": "0.0.1-commit.9badcec54",
79
+ "@aztec/key-store": "0.0.1-commit.9badcec54",
80
+ "@aztec/kv-store": "0.0.1-commit.9badcec54",
81
+ "@aztec/noir-protocol-circuits-types": "0.0.1-commit.9badcec54",
82
+ "@aztec/noir-types": "0.0.1-commit.9badcec54",
83
+ "@aztec/protocol-contracts": "0.0.1-commit.9badcec54",
84
+ "@aztec/simulator": "0.0.1-commit.9badcec54",
85
+ "@aztec/stdlib": "0.0.1-commit.9badcec54",
86
86
  "koa": "^2.16.1",
87
87
  "koa-router": "^13.1.1",
88
88
  "lodash.omit": "^4.5.0",
@@ -91,8 +91,8 @@
91
91
  "viem": "npm:@aztec/viem@2.38.2"
92
92
  },
93
93
  "devDependencies": {
94
- "@aztec/merkle-tree": "0.0.1-commit.993d52e",
95
- "@aztec/noir-test-contracts.js": "0.0.1-commit.993d52e",
94
+ "@aztec/noir-test-contracts.js": "0.0.1-commit.9badcec54",
95
+ "@aztec/world-state": "0.0.1-commit.9badcec54",
96
96
  "@jest/globals": "^30.0.0",
97
97
  "@types/jest": "^30.0.0",
98
98
  "@types/lodash.omit": "^4.5.7",
@@ -13,8 +13,9 @@ import { ORACLE_INTERFACE_HASH } from '../oracle_version.js';
13
13
  *
14
14
  * The Oracle interface needs to be versioned to ensure compatibility between Aztec.nr and PXE. This function computes
15
15
  * a hash of the Oracle interface and compares it against a known hash. If they don't match, it means the interface has
16
- * changed and the ORACLE_VERSION constant needs to be incremented and the ORACLE_INTERFACE_HASH constant needs to be
17
- * updated.
16
+ * changed and the oracle version needs to be bumped:
17
+ * - If the change is backward-breaking (e.g. removing/renaming an oracle), bump ORACLE_VERSION_MAJOR.
18
+ * - If the change is an oracle addition (non-breaking), bump ORACLE_VERSION_MINOR.
18
19
  *
19
20
  * TODO(#16581): The following only takes into consideration changes to the oracles defined in Oracle.ts and omits TXE
20
21
  * oracles. Ensure this checks TXE oracles as well. This hasn't been implemented yet since we don't have a clean TXE
@@ -26,9 +27,8 @@ function assertOracleInterfaceMatches(): void {
26
27
  // We use keccak256 here just because we already have it in the dependencies.
27
28
  const oracleInterfaceHash = keccak256String(oracleInterfaceSignature);
28
29
  if (oracleInterfaceHash !== ORACLE_INTERFACE_HASH) {
29
- // This check exists only to notify you when you need to update the ORACLE_VERSION constant.
30
30
  throw new Error(
31
- `The Oracle interface has changed, which implies a breaking change in the aztec.nr/PXE oracle interface. Update ORACLE_INTERFACE_HASH to ${oracleInterfaceHash} and bump ORACLE_VERSION in pxe/src/oracle_version.ts.`,
31
+ `The Oracle interface has changed. Update ORACLE_INTERFACE_HASH to ${oracleInterfaceHash} in pxe/src/oracle_version.ts and bump the oracle version (ORACLE_VERSION_MAJOR for breaking changes, ORACLE_VERSION_MINOR for oracle additions).`,
32
32
  );
33
33
  }
34
34
  }
@@ -1,5 +1,6 @@
1
1
  import { BlockNumber } from '@aztec/foundation/branded-types';
2
2
  import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
3
+ import { SerialQueue } from '@aztec/foundation/queue';
3
4
  import type { AztecAsyncKVStore } from '@aztec/kv-store';
4
5
  import type { L2TipsKVStore } from '@aztec/kv-store/stores';
5
6
  import { BlockHash, L2BlockStream, type L2BlockStreamEvent, type L2BlockStreamEventHandler } from '@aztec/stdlib/block';
@@ -20,6 +21,7 @@ import type { PrivateEventStore } from '../storage/private_event_store/private_e
20
21
  export class BlockSynchronizer implements L2BlockStreamEventHandler {
21
22
  private log: Logger;
22
23
  private isSyncing: Promise<void> | undefined;
24
+ private readonly eventQueue = new SerialQueue();
23
25
  protected readonly blockStream: L2BlockStream;
24
26
 
25
27
  constructor(
@@ -35,6 +37,7 @@ export class BlockSynchronizer implements L2BlockStreamEventHandler {
35
37
  ) {
36
38
  this.log = createLogger('pxe:block_synchronizer', bindings);
37
39
  this.blockStream = this.createBlockStream(config);
40
+ this.eventQueue.start();
38
41
  }
39
42
 
40
43
  protected createBlockStream(config: Partial<BlockSynchronizerConfig>): L2BlockStream {
@@ -52,8 +55,12 @@ export class BlockSynchronizer implements L2BlockStreamEventHandler {
52
55
  );
53
56
  }
54
57
 
55
- /** Handle events emitted by the block stream. */
56
- public async handleBlockStreamEvent(event: L2BlockStreamEvent): Promise<void> {
58
+ /** Handle events emitted by the block stream. Serialized to prevent concurrent mutations to anchor state. */
59
+ public handleBlockStreamEvent(event: L2BlockStreamEvent): Promise<void> {
60
+ return this.eventQueue.put(() => this.doHandleBlockStreamEvent(event));
61
+ }
62
+
63
+ private async doHandleBlockStreamEvent(event: L2BlockStreamEvent): Promise<void> {
57
64
  await this.l2TipsStore.handleBlockStreamEvent(event);
58
65
 
59
66
  switch (event.type) {
@@ -77,6 +84,8 @@ export class BlockSynchronizer implements L2BlockStreamEventHandler {
77
84
  const blockHeader = await this.node.getBlockHeader(BlockNumber(event.block.number));
78
85
  if (blockHeader) {
79
86
  await this.updateAnchorBlockHeader(blockHeader);
87
+ } else {
88
+ this.log.warn(`Block header not found for proven block ${event.block.number}, skipping anchor update`);
80
89
  }
81
90
  }
82
91
  break;
@@ -86,6 +95,8 @@ export class BlockSynchronizer implements L2BlockStreamEventHandler {
86
95
  const blockHeader = await this.node.getBlockHeader(BlockNumber(event.block.number));
87
96
  if (blockHeader) {
88
97
  await this.updateAnchorBlockHeader(blockHeader);
98
+ } else {
99
+ this.log.warn(`Block header not found for finalized block ${event.block.number}, skipping anchor update`);
89
100
  }
90
101
  }
91
102
  break;
@@ -152,6 +163,8 @@ export class BlockSynchronizer implements L2BlockStreamEventHandler {
152
163
  }
153
164
 
154
165
  this.log.debug(`Syncing PXE with the node`);
166
+ // Capture the promise locally so we always await the exact promise we created, even if this.isSyncing is modified
167
+ // between assignment and await (e.g. due to future refactors introducing a yield point).
155
168
  const isSyncing = this.doSync();
156
169
  this.isSyncing = isSyncing;
157
170
  try {
@@ -161,6 +174,13 @@ export class BlockSynchronizer implements L2BlockStreamEventHandler {
161
174
  }
162
175
  }
163
176
 
177
+ /** Stops the block synchronizer, waiting for any in-progress sync and queued events to complete. */
178
+ public async stop() {
179
+ await this.isSyncing;
180
+ await this.blockStream.stop();
181
+ await this.eventQueue.end();
182
+ }
183
+
164
184
  private async doSync() {
165
185
  let currentHeader;
166
186
 
@@ -1,12 +1,13 @@
1
1
  import {
2
2
  type ConfigMappingsType,
3
3
  booleanConfigHelper,
4
+ enumConfigHelper,
4
5
  getConfigFromMappings,
5
6
  numberConfigHelper,
6
7
  parseBooleanEnv,
7
8
  } from '@aztec/foundation/config';
8
- import { type DataStoreConfig, dataConfigMappings } from '@aztec/kv-store/config';
9
9
  import { type ChainConfig, chainConfigMappings } from '@aztec/stdlib/config';
10
+ import { type DataStoreConfig, dataConfigMappings } from '@aztec/stdlib/kv-store';
10
11
 
11
12
  export { getPackageInfo } from './package_info.js';
12
13
 
@@ -58,14 +59,7 @@ export const pxeConfigMappings: ConfigMappingsType<PXEConfig> = {
58
59
  syncChainTip: {
59
60
  env: 'PXE_SYNC_CHAIN_TIP',
60
61
  description: 'Which chain tip to sync to (proposed, checkpointed, proven, finalized)',
61
- defaultValue: 'proposed',
62
- parseEnv: (val: string) => {
63
- const allowedValues = ['proposed', 'checkpointed', 'proven', 'finalized'];
64
- if (allowedValues.includes(val)) {
65
- return val;
66
- }
67
- throw new Error(`Invalid value for PXE_SYNC_CHAIN_TIP: ${val}. Allowed values are: ${allowedValues.join(', ')}`);
68
- },
62
+ ...enumConfigHelper(['proposed', 'checkpointed', 'proven', 'finalized'], 'proposed'),
69
63
  },
70
64
  };
71
65
 
@@ -1,3 +1,3 @@
1
1
  export function getPackageInfo() {
2
- return { version: '4.0.4', name: '@aztec/pxe' };
2
+ return { version: '5.0.0', name: '@aztec/pxe' };
3
3
  }