@aztec/stdlib 0.0.1-commit.fce3e4f → 0.0.1-commit.fffb133c

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 (1034) hide show
  1. package/dest/abi/abi.d.ts +603 -5
  2. package/dest/abi/abi.d.ts.map +1 -1
  3. package/dest/abi/abi.js +7 -7
  4. package/dest/abi/authorization_selector.d.ts +2 -2
  5. package/dest/abi/authorization_selector.d.ts.map +1 -1
  6. package/dest/abi/authorization_selector.js +2 -1
  7. package/dest/abi/buffer.d.ts +2 -2
  8. package/dest/abi/buffer.d.ts.map +1 -1
  9. package/dest/abi/buffer.js +1 -1
  10. package/dest/abi/contract_artifact.d.ts +2 -2
  11. package/dest/abi/contract_artifact.d.ts.map +1 -1
  12. package/dest/abi/contract_artifact.js +1 -1
  13. package/dest/abi/decoder.d.ts +2 -2
  14. package/dest/abi/decoder.d.ts.map +1 -1
  15. package/dest/abi/encoder.d.ts +2 -2
  16. package/dest/abi/encoder.d.ts.map +1 -1
  17. package/dest/abi/encoder.js +1 -1
  18. package/dest/abi/event_selector.d.ts +2 -2
  19. package/dest/abi/event_selector.d.ts.map +1 -1
  20. package/dest/abi/event_selector.js +2 -1
  21. package/dest/abi/function_call.d.ts +10 -2
  22. package/dest/abi/function_call.d.ts.map +1 -1
  23. package/dest/abi/function_selector.d.ts +3 -2
  24. package/dest/abi/function_selector.d.ts.map +1 -1
  25. package/dest/abi/function_selector.js +9 -1
  26. package/dest/abi/note_selector.d.ts +2 -2
  27. package/dest/abi/note_selector.d.ts.map +1 -1
  28. package/dest/abi/note_selector.js +2 -2
  29. package/dest/abi/selector.d.ts +2 -2
  30. package/dest/abi/selector.d.ts.map +1 -1
  31. package/dest/abi/selector.js +4 -2
  32. package/dest/abi/utils.d.ts +7 -1
  33. package/dest/abi/utils.d.ts.map +1 -1
  34. package/dest/abi/utils.js +7 -0
  35. package/dest/auth_witness/auth_witness.d.ts +3 -2
  36. package/dest/auth_witness/auth_witness.d.ts.map +1 -1
  37. package/dest/auth_witness/auth_witness.js +2 -2
  38. package/dest/avm/avm.d.ts +598 -386
  39. package/dest/avm/avm.d.ts.map +1 -1
  40. package/dest/avm/avm.js +238 -22
  41. package/dest/avm/avm_accumulated_data.d.ts +31 -4
  42. package/dest/avm/avm_accumulated_data.d.ts.map +1 -1
  43. package/dest/avm/avm_accumulated_data.js +6 -3
  44. package/dest/avm/avm_circuit_public_inputs.d.ts +14 -12
  45. package/dest/avm/avm_circuit_public_inputs.d.ts.map +1 -1
  46. package/dest/avm/avm_circuit_public_inputs.js +4 -2
  47. package/dest/avm/avm_proving_request.d.ts +306 -302
  48. package/dest/avm/avm_proving_request.d.ts.map +1 -1
  49. package/dest/avm/contract_storage_read.d.ts +14 -2
  50. package/dest/avm/contract_storage_read.d.ts.map +1 -1
  51. package/dest/avm/contract_storage_read.js +1 -1
  52. package/dest/avm/contract_storage_update_request.d.ts +14 -2
  53. package/dest/avm/contract_storage_update_request.d.ts.map +1 -1
  54. package/dest/avm/contract_storage_update_request.js +1 -1
  55. package/dest/avm/message_pack.d.ts +1 -1
  56. package/dest/avm/message_pack.d.ts.map +1 -1
  57. package/dest/avm/message_pack.js +2 -1
  58. package/dest/avm/public_call_stack_item_compressed.d.ts +4 -2
  59. package/dest/avm/public_call_stack_item_compressed.d.ts.map +1 -1
  60. package/dest/avm/public_call_stack_item_compressed.js +1 -1
  61. package/dest/avm/public_data_read.d.ts +11 -2
  62. package/dest/avm/public_data_read.d.ts.map +1 -1
  63. package/dest/avm/public_data_read.js +1 -1
  64. package/dest/avm/public_data_update_request.d.ts +11 -2
  65. package/dest/avm/public_data_update_request.d.ts.map +1 -1
  66. package/dest/avm/public_data_update_request.js +4 -2
  67. package/dest/avm/public_data_write.d.ts +8 -2
  68. package/dest/avm/public_data_write.d.ts.map +1 -1
  69. package/dest/avm/public_data_write.js +1 -1
  70. package/dest/avm/public_inner_call_request.d.ts +5 -2
  71. package/dest/avm/public_inner_call_request.d.ts.map +1 -1
  72. package/dest/avm/public_inner_call_request.js +3 -1
  73. package/dest/avm/revert_code.d.ts +5 -5
  74. package/dest/avm/revert_code.d.ts.map +1 -1
  75. package/dest/avm/revert_code.js +4 -2
  76. package/dest/aztec-address/index.d.ts +3 -2
  77. package/dest/aztec-address/index.d.ts.map +1 -1
  78. package/dest/aztec-address/index.js +5 -2
  79. package/dest/block/attestation_info.d.ts +5 -5
  80. package/dest/block/attestation_info.d.ts.map +1 -1
  81. package/dest/block/attestation_info.js +5 -5
  82. package/dest/block/block_hash.d.ts +10 -3
  83. package/dest/block/block_hash.d.ts.map +1 -1
  84. package/dest/block/block_hash.js +16 -1
  85. package/dest/block/block_parameter.d.ts +6 -0
  86. package/dest/block/block_parameter.d.ts.map +1 -0
  87. package/dest/block/block_parameter.js +8 -0
  88. package/dest/block/body.d.ts +1 -1
  89. package/dest/block/body.d.ts.map +1 -1
  90. package/dest/block/body.js +5 -2
  91. package/dest/block/checkpointed_l2_block.d.ts +150 -0
  92. package/dest/block/checkpointed_l2_block.d.ts.map +1 -0
  93. package/dest/block/checkpointed_l2_block.js +46 -0
  94. package/dest/block/in_block.d.ts +31 -12
  95. package/dest/block/in_block.d.ts.map +1 -1
  96. package/dest/block/in_block.js +17 -8
  97. package/dest/block/index.d.ts +3 -5
  98. package/dest/block/index.d.ts.map +1 -1
  99. package/dest/block/index.js +2 -4
  100. package/dest/block/l2_block.d.ts +58 -59
  101. package/dest/block/l2_block.d.ts.map +1 -1
  102. package/dest/block/l2_block.js +69 -109
  103. package/dest/block/l2_block_info.d.ts +16 -11
  104. package/dest/block/l2_block_info.d.ts.map +1 -1
  105. package/dest/block/l2_block_info.js +8 -7
  106. package/dest/block/l2_block_source.d.ts +369 -150
  107. package/dest/block/l2_block_source.d.ts.map +1 -1
  108. package/dest/block/l2_block_source.js +29 -16
  109. package/dest/block/l2_block_stream/index.d.ts +2 -1
  110. package/dest/block/l2_block_stream/index.d.ts.map +1 -1
  111. package/dest/block/l2_block_stream/index.js +1 -0
  112. package/dest/block/l2_block_stream/interfaces.d.ts +15 -5
  113. package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
  114. package/dest/block/l2_block_stream/l2_block_stream.d.ts +13 -3
  115. package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
  116. package/dest/block/l2_block_stream/l2_block_stream.js +116 -32
  117. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts +24 -15
  118. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts.map +1 -1
  119. package/dest/block/l2_block_stream/l2_tips_memory_store.js +55 -59
  120. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +49 -0
  121. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -0
  122. package/dest/block/l2_block_stream/l2_tips_store_base.js +179 -0
  123. package/dest/block/proposal/attestations_and_signers.d.ts +2 -2
  124. package/dest/block/proposal/attestations_and_signers.d.ts.map +1 -1
  125. package/dest/block/proposal/committee_attestation.d.ts +2 -2
  126. package/dest/block/proposal/committee_attestation.d.ts.map +1 -1
  127. package/dest/block/test/l2_tips_store_test_suite.d.ts +1 -1
  128. package/dest/block/test/l2_tips_store_test_suite.d.ts.map +1 -1
  129. package/dest/block/test/l2_tips_store_test_suite.js +482 -43
  130. package/dest/block/validate_block_result.d.ts +24 -24
  131. package/dest/block/validate_block_result.d.ts.map +1 -1
  132. package/dest/block/validate_block_result.js +18 -17
  133. package/dest/checkpoint/checkpoint.d.ts +57 -15
  134. package/dest/checkpoint/checkpoint.d.ts.map +1 -1
  135. package/dest/checkpoint/checkpoint.js +61 -10
  136. package/dest/checkpoint/checkpoint_info.d.ts +38 -0
  137. package/dest/checkpoint/checkpoint_info.d.ts.map +1 -0
  138. package/dest/checkpoint/checkpoint_info.js +34 -0
  139. package/dest/checkpoint/index.d.ts +2 -1
  140. package/dest/checkpoint/index.d.ts.map +1 -1
  141. package/dest/checkpoint/index.js +1 -0
  142. package/dest/checkpoint/published_checkpoint.d.ts +42 -14
  143. package/dest/checkpoint/published_checkpoint.d.ts.map +1 -1
  144. package/dest/checkpoint/published_checkpoint.js +15 -4
  145. package/dest/config/node-rpc-config.js +1 -1
  146. package/dest/contract/artifact_hash.d.ts +2 -2
  147. package/dest/contract/artifact_hash.d.ts.map +1 -1
  148. package/dest/contract/artifact_hash.js +2 -2
  149. package/dest/contract/complete_address.d.ts +5 -2
  150. package/dest/contract/complete_address.d.ts.map +1 -1
  151. package/dest/contract/complete_address.js +1 -1
  152. package/dest/contract/contract_address.d.ts +2 -2
  153. package/dest/contract/contract_address.d.ts.map +1 -1
  154. package/dest/contract/contract_address.js +2 -2
  155. package/dest/contract/contract_class.d.ts +2 -2
  156. package/dest/contract/contract_class.d.ts.map +1 -1
  157. package/dest/contract/contract_class.js +1 -1
  158. package/dest/contract/contract_class_id.d.ts +2 -2
  159. package/dest/contract/contract_class_id.d.ts.map +1 -1
  160. package/dest/contract/contract_class_id.js +3 -3
  161. package/dest/contract/contract_deployment_data.d.ts +5 -5
  162. package/dest/contract/contract_instance.d.ts +2 -2
  163. package/dest/contract/contract_instance.d.ts.map +1 -1
  164. package/dest/contract/contract_instance.js +1 -1
  165. package/dest/contract/contract_instance_update.d.ts +2 -2
  166. package/dest/contract/contract_instance_update.d.ts.map +1 -1
  167. package/dest/contract/contract_instance_update.js +1 -1
  168. package/dest/contract/deployment_info.d.ts +2 -2
  169. package/dest/contract/deployment_info.d.ts.map +1 -1
  170. package/dest/contract/index.d.ts +1 -3
  171. package/dest/contract/index.d.ts.map +1 -1
  172. package/dest/contract/index.js +0 -2
  173. package/dest/contract/interfaces/contract_class.d.ts +19 -14
  174. package/dest/contract/interfaces/contract_class.d.ts.map +1 -1
  175. package/dest/contract/interfaces/contract_class.js +35 -18
  176. package/dest/contract/interfaces/contract_data_source.d.ts +4 -3
  177. package/dest/contract/interfaces/contract_data_source.d.ts.map +1 -1
  178. package/dest/contract/interfaces/contract_instance.d.ts +40 -31
  179. package/dest/contract/interfaces/contract_instance.d.ts.map +1 -1
  180. package/dest/contract/interfaces/contract_instance.js +30 -5
  181. package/dest/contract/interfaces/contract_instance_update.d.ts +7 -8
  182. package/dest/contract/interfaces/contract_instance_update.d.ts.map +1 -1
  183. package/dest/contract/interfaces/contract_instance_update.js +5 -5
  184. package/dest/contract/partial_address.d.ts +2 -2
  185. package/dest/contract/partial_address.d.ts.map +1 -1
  186. package/dest/contract/private_function.d.ts +2 -2
  187. package/dest/contract/private_function.d.ts.map +1 -1
  188. package/dest/contract/private_function.js +3 -3
  189. package/dest/contract/private_function_membership_proof.js +2 -2
  190. package/dest/contract/utility_function_membership_proof.js +1 -1
  191. package/dest/database-version/version_manager.d.ts +4 -2
  192. package/dest/database-version/version_manager.d.ts.map +1 -1
  193. package/dest/database-version/version_manager.js +3 -1
  194. package/dest/delayed_public_mutable/delayed_public_mutable_values.d.ts +3 -3
  195. package/dest/delayed_public_mutable/delayed_public_mutable_values.d.ts.map +1 -1
  196. package/dest/delayed_public_mutable/delayed_public_mutable_values.js +9 -12
  197. package/dest/delayed_public_mutable/delayed_public_mutable_values_with_hash.d.ts +2 -2
  198. package/dest/delayed_public_mutable/delayed_public_mutable_values_with_hash.d.ts.map +1 -1
  199. package/dest/delayed_public_mutable/delayed_public_mutable_values_with_hash.js +1 -1
  200. package/dest/delayed_public_mutable/scheduled_value_change.d.ts +2 -2
  201. package/dest/delayed_public_mutable/scheduled_value_change.d.ts.map +1 -1
  202. package/dest/delayed_public_mutable/scheduled_value_change.js +1 -1
  203. package/dest/deserialization/index.d.ts +11 -0
  204. package/dest/deserialization/index.d.ts.map +1 -0
  205. package/dest/deserialization/index.js +10 -0
  206. package/dest/epoch-helpers/index.d.ts +1 -1
  207. package/dest/epoch-helpers/index.d.ts.map +1 -1
  208. package/dest/epoch-helpers/index.js +4 -4
  209. package/dest/errors/proving_error.d.ts +2 -2
  210. package/dest/errors/proving_error.d.ts.map +1 -1
  211. package/dest/errors/simulation_error.d.ts +2 -2
  212. package/dest/errors/simulation_error.d.ts.map +1 -1
  213. package/dest/fees/transaction_fee.d.ts +2 -2
  214. package/dest/fees/transaction_fee.d.ts.map +1 -1
  215. package/dest/gas/gas.d.ts +2 -2
  216. package/dest/gas/gas.d.ts.map +1 -1
  217. package/dest/gas/gas.js +4 -2
  218. package/dest/gas/gas_fees.d.ts +2 -2
  219. package/dest/gas/gas_fees.d.ts.map +1 -1
  220. package/dest/gas/gas_fees.js +3 -1
  221. package/dest/gas/gas_settings.d.ts +2 -2
  222. package/dest/gas/gas_settings.d.ts.map +1 -1
  223. package/dest/gas/gas_settings.js +1 -1
  224. package/dest/hash/hash.d.ts +2 -10
  225. package/dest/hash/hash.d.ts.map +1 -1
  226. package/dest/hash/hash.js +3 -14
  227. package/dest/hash/map_slot.d.ts +2 -2
  228. package/dest/hash/map_slot.d.ts.map +1 -1
  229. package/dest/hash/map_slot.js +1 -1
  230. package/dest/interfaces/allowed_element.d.ts +8 -9
  231. package/dest/interfaces/allowed_element.d.ts.map +1 -1
  232. package/dest/interfaces/allowed_element.js +3 -3
  233. package/dest/interfaces/api_limit.d.ts +3 -1
  234. package/dest/interfaces/api_limit.d.ts.map +1 -1
  235. package/dest/interfaces/api_limit.js +2 -0
  236. package/dest/interfaces/archiver.d.ts +12 -7
  237. package/dest/interfaces/archiver.d.ts.map +1 -1
  238. package/dest/interfaces/archiver.js +33 -20
  239. package/dest/interfaces/aztec-node-admin.d.ts +96 -41
  240. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  241. package/dest/interfaces/aztec-node-admin.js +3 -3
  242. package/dest/interfaces/aztec-node.d.ts +86 -70
  243. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  244. package/dest/interfaces/aztec-node.js +35 -32
  245. package/dest/interfaces/block-builder.d.ts +18 -14
  246. package/dest/interfaces/block-builder.d.ts.map +1 -1
  247. package/dest/interfaces/block-builder.js +9 -1
  248. package/dest/interfaces/configs.d.ts +56 -27
  249. package/dest/interfaces/configs.d.ts.map +1 -1
  250. package/dest/interfaces/configs.js +12 -6
  251. package/dest/interfaces/epoch-prover.d.ts +5 -5
  252. package/dest/interfaces/epoch-prover.d.ts.map +1 -1
  253. package/dest/interfaces/get_logs_response.d.ts +23 -6
  254. package/dest/interfaces/get_logs_response.d.ts.map +1 -1
  255. package/dest/interfaces/get_logs_response.js +5 -4
  256. package/dest/interfaces/l2_logs_source.d.ts +21 -15
  257. package/dest/interfaces/l2_logs_source.d.ts.map +1 -1
  258. package/dest/interfaces/merkle_tree_operations.d.ts +5 -4
  259. package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
  260. package/dest/interfaces/p2p.d.ts +7 -9
  261. package/dest/interfaces/p2p.d.ts.map +1 -1
  262. package/dest/interfaces/p2p.js +3 -4
  263. package/dest/interfaces/prover-client.d.ts +14 -3
  264. package/dest/interfaces/prover-client.d.ts.map +1 -1
  265. package/dest/interfaces/prover-client.js +11 -4
  266. package/dest/interfaces/proving-job.d.ts +192 -188
  267. package/dest/interfaces/proving-job.d.ts.map +1 -1
  268. package/dest/interfaces/proving-job.js +1 -7
  269. package/dest/interfaces/public_state_source.d.ts +2 -2
  270. package/dest/interfaces/public_state_source.d.ts.map +1 -1
  271. package/dest/interfaces/server_circuit_prover.d.ts +4 -3
  272. package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
  273. package/dest/interfaces/slasher.d.ts +1 -1
  274. package/dest/interfaces/slasher.d.ts.map +1 -1
  275. package/dest/interfaces/slasher.js +3 -3
  276. package/dest/interfaces/validator.d.ts +115 -26
  277. package/dest/interfaces/validator.d.ts.map +1 -1
  278. package/dest/interfaces/validator.js +9 -7
  279. package/dest/interfaces/world_state.d.ts +23 -31
  280. package/dest/interfaces/world_state.d.ts.map +1 -1
  281. package/dest/interfaces/world_state.js +4 -3
  282. package/dest/kernel/claimed_length_array.d.ts +2 -2
  283. package/dest/kernel/claimed_length_array.d.ts.map +1 -1
  284. package/dest/kernel/claimed_length_array.js +3 -1
  285. package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts +6 -5
  286. package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts.map +1 -1
  287. package/dest/kernel/hints/build_note_hash_read_request_hints.js +19 -10
  288. package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts +4 -4
  289. package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts.map +1 -1
  290. package/dest/kernel/hints/build_nullifier_read_request_hints.js +16 -8
  291. package/dest/kernel/hints/find_private_kernel_reset_dimensions.d.ts +1 -1
  292. package/dest/kernel/hints/find_private_kernel_reset_dimensions.d.ts.map +1 -1
  293. package/dest/kernel/hints/find_private_kernel_reset_dimensions.js +1 -3
  294. package/dest/kernel/hints/key_validation_hint.d.ts +3 -2
  295. package/dest/kernel/hints/key_validation_hint.d.ts.map +1 -1
  296. package/dest/kernel/hints/key_validation_hint.js +1 -1
  297. package/dest/kernel/hints/key_validation_request.d.ts +5 -3
  298. package/dest/kernel/hints/key_validation_request.d.ts.map +1 -1
  299. package/dest/kernel/hints/key_validation_request.js +2 -1
  300. package/dest/kernel/hints/key_validation_request_and_generator.d.ts +7 -2
  301. package/dest/kernel/hints/key_validation_request_and_generator.d.ts.map +1 -1
  302. package/dest/kernel/hints/key_validation_request_and_generator.js +1 -1
  303. package/dest/kernel/hints/note_hash_read_request_hints.d.ts +2 -2
  304. package/dest/kernel/hints/note_hash_read_request_hints.d.ts.map +1 -1
  305. package/dest/kernel/hints/note_hash_read_request_hints.js +1 -1
  306. package/dest/kernel/hints/private_kernel_reset_hints.d.ts +13 -1
  307. package/dest/kernel/hints/private_kernel_reset_hints.d.ts.map +1 -1
  308. package/dest/kernel/hints/read_request.d.ts +8 -2
  309. package/dest/kernel/hints/read_request.d.ts.map +1 -1
  310. package/dest/kernel/hints/read_request.js +1 -1
  311. package/dest/kernel/hints/read_request_hints.d.ts +7 -1
  312. package/dest/kernel/hints/read_request_hints.d.ts.map +1 -1
  313. package/dest/kernel/hints/scoped_key_validation_request_and_generator.d.ts +2 -2
  314. package/dest/kernel/hints/scoped_key_validation_request_and_generator.d.ts.map +1 -1
  315. package/dest/kernel/hints/scoped_value_cache.d.ts +2 -2
  316. package/dest/kernel/hints/scoped_value_cache.d.ts.map +1 -1
  317. package/dest/kernel/hints/transient_data_squashing_hint.d.ts +2 -2
  318. package/dest/kernel/hints/transient_data_squashing_hint.d.ts.map +1 -1
  319. package/dest/kernel/hints/transient_data_squashing_hint.js +4 -2
  320. package/dest/kernel/hints/tree_leaf_read_request.d.ts +2 -2
  321. package/dest/kernel/hints/tree_leaf_read_request.d.ts.map +1 -1
  322. package/dest/kernel/hints/tree_leaf_read_request.js +1 -1
  323. package/dest/kernel/log_hash.d.ts +2 -2
  324. package/dest/kernel/log_hash.d.ts.map +1 -1
  325. package/dest/kernel/log_hash.js +4 -2
  326. package/dest/kernel/note_hash.d.ts +2 -2
  327. package/dest/kernel/note_hash.d.ts.map +1 -1
  328. package/dest/kernel/note_hash.js +1 -1
  329. package/dest/kernel/nullifier.d.ts +2 -2
  330. package/dest/kernel/nullifier.d.ts.map +1 -1
  331. package/dest/kernel/nullifier.js +1 -1
  332. package/dest/kernel/padded_side_effects.d.ts +2 -2
  333. package/dest/kernel/padded_side_effects.d.ts.map +1 -1
  334. package/dest/kernel/padded_side_effects.js +1 -1
  335. package/dest/kernel/private_accumulated_data.d.ts +23 -1
  336. package/dest/kernel/private_accumulated_data.d.ts.map +1 -1
  337. package/dest/kernel/private_call_data.d.ts +26 -2
  338. package/dest/kernel/private_call_data.d.ts.map +1 -1
  339. package/dest/kernel/private_call_data.js +1 -1
  340. package/dest/kernel/private_call_request.d.ts +17 -2
  341. package/dest/kernel/private_call_request.d.ts.map +1 -1
  342. package/dest/kernel/private_call_request.js +1 -1
  343. package/dest/kernel/private_circuit_public_inputs.d.ts +121 -48
  344. package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
  345. package/dest/kernel/private_circuit_public_inputs.js +60 -60
  346. package/dest/kernel/private_context_inputs.d.ts +2 -2
  347. package/dest/kernel/private_context_inputs.d.ts.map +1 -1
  348. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts +32 -2
  349. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts.map +1 -1
  350. package/dest/kernel/private_kernel_circuit_public_inputs.js +1 -1
  351. package/dest/kernel/private_kernel_data.d.ts +7 -1
  352. package/dest/kernel/private_kernel_data.d.ts.map +1 -1
  353. package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts +23 -2
  354. package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts.map +1 -1
  355. package/dest/kernel/private_kernel_init_circuit_private_inputs.js +1 -1
  356. package/dest/kernel/private_kernel_inner_circuit_private_inputs.d.ts +7 -1
  357. package/dest/kernel/private_kernel_inner_circuit_private_inputs.d.ts.map +1 -1
  358. package/dest/kernel/private_kernel_reset_circuit_private_inputs.d.ts +4 -1
  359. package/dest/kernel/private_kernel_reset_circuit_private_inputs.d.ts.map +1 -1
  360. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts +10 -1
  361. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts.map +1 -1
  362. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts +24 -2
  363. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts.map +1 -1
  364. package/dest/kernel/private_kernel_tail_circuit_public_inputs.js +1 -1
  365. package/dest/kernel/private_log_data.d.ts +2 -2
  366. package/dest/kernel/private_log_data.d.ts.map +1 -1
  367. package/dest/kernel/private_log_data.js +5 -2
  368. package/dest/kernel/private_to_avm_accumulated_data.d.ts +4 -4
  369. package/dest/kernel/private_to_avm_accumulated_data.d.ts.map +1 -1
  370. package/dest/kernel/private_to_avm_accumulated_data.js +6 -3
  371. package/dest/kernel/private_to_public_accumulated_data.d.ts +2 -2
  372. package/dest/kernel/private_to_public_accumulated_data.d.ts.map +1 -1
  373. package/dest/kernel/private_to_public_accumulated_data.js +4 -2
  374. package/dest/kernel/private_to_public_accumulated_data_builder.d.ts +2 -2
  375. package/dest/kernel/private_to_public_accumulated_data_builder.d.ts.map +1 -1
  376. package/dest/kernel/private_to_public_accumulated_data_builder.js +1 -1
  377. package/dest/kernel/private_to_public_kernel_circuit_public_inputs.d.ts +2 -2
  378. package/dest/kernel/private_to_public_kernel_circuit_public_inputs.d.ts.map +1 -1
  379. package/dest/kernel/private_to_public_kernel_circuit_public_inputs.js +1 -1
  380. package/dest/kernel/private_to_rollup_accumulated_data.d.ts +18 -2
  381. package/dest/kernel/private_to_rollup_accumulated_data.d.ts.map +1 -1
  382. package/dest/kernel/private_to_rollup_accumulated_data.js +4 -2
  383. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts +17 -2
  384. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts.map +1 -1
  385. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.js +1 -1
  386. package/dest/kernel/private_validation_requests.d.ts +10 -1
  387. package/dest/kernel/private_validation_requests.d.ts.map +1 -1
  388. package/dest/kernel/private_validation_requests.js +3 -1
  389. package/dest/kernel/public_call_request.d.ts +23 -2
  390. package/dest/kernel/public_call_request.d.ts.map +1 -1
  391. package/dest/kernel/public_call_request.js +6 -3
  392. package/dest/kernel/utils/optional_number.d.ts +8 -2
  393. package/dest/kernel/utils/optional_number.d.ts.map +1 -1
  394. package/dest/keys/derivation.d.ts +4 -3
  395. package/dest/keys/derivation.d.ts.map +1 -1
  396. package/dest/keys/derivation.js +5 -2
  397. package/dest/keys/public_key.d.ts +2 -2
  398. package/dest/keys/public_key.d.ts.map +1 -1
  399. package/dest/keys/public_keys.d.ts +7 -2
  400. package/dest/keys/public_keys.d.ts.map +1 -1
  401. package/dest/keys/public_keys.js +3 -2
  402. package/dest/l1-contracts/slash_factory.d.ts +3 -2
  403. package/dest/l1-contracts/slash_factory.d.ts.map +1 -1
  404. package/dest/l1-contracts/slash_factory.js +1 -1
  405. package/dest/logs/contract_class_log.d.ts +2 -2
  406. package/dest/logs/contract_class_log.d.ts.map +1 -1
  407. package/dest/logs/contract_class_log.js +5 -3
  408. package/dest/logs/debug_log.d.ts +2 -2
  409. package/dest/logs/debug_log.d.ts.map +1 -1
  410. package/dest/logs/debug_log.js +1 -1
  411. package/dest/logs/directional_app_tagging_secret.d.ts +2 -2
  412. package/dest/logs/directional_app_tagging_secret.d.ts.map +1 -1
  413. package/dest/logs/directional_app_tagging_secret.js +3 -2
  414. package/dest/logs/extended_contract_class_log.d.ts +3 -1
  415. package/dest/logs/extended_contract_class_log.d.ts.map +1 -1
  416. package/dest/logs/extended_public_log.d.ts +14 -4
  417. package/dest/logs/extended_public_log.d.ts.map +1 -1
  418. package/dest/logs/index.d.ts +3 -2
  419. package/dest/logs/index.d.ts.map +1 -1
  420. package/dest/logs/index.js +2 -1
  421. package/dest/logs/log_id.d.ts +20 -5
  422. package/dest/logs/log_id.d.ts.map +1 -1
  423. package/dest/logs/log_id.js +19 -11
  424. package/dest/logs/message_context.d.ts +2 -2
  425. package/dest/logs/message_context.d.ts.map +1 -1
  426. package/dest/logs/message_context.js +1 -1
  427. package/dest/logs/pending_tagged_log.d.ts +2 -2
  428. package/dest/logs/pending_tagged_log.d.ts.map +1 -1
  429. package/dest/logs/pending_tagged_log.js +1 -1
  430. package/dest/logs/private_log.d.ts +2 -2
  431. package/dest/logs/private_log.d.ts.map +1 -1
  432. package/dest/logs/private_log.js +6 -3
  433. package/dest/logs/public_log.d.ts +3 -2
  434. package/dest/logs/public_log.d.ts.map +1 -1
  435. package/dest/logs/public_log.js +7 -2
  436. package/dest/logs/shared_secret_derivation.d.ts +2 -2
  437. package/dest/logs/shared_secret_derivation.d.ts.map +1 -1
  438. package/dest/logs/shared_secret_derivation.js +1 -1
  439. package/dest/logs/siloed_tag.d.ts +23 -0
  440. package/dest/logs/siloed_tag.d.ts.map +1 -0
  441. package/dest/logs/siloed_tag.js +30 -0
  442. package/dest/logs/tag.d.ts +21 -0
  443. package/dest/logs/tag.d.ts.map +1 -0
  444. package/dest/logs/tag.js +30 -0
  445. package/dest/logs/tx_scoped_l2_log.d.ts +32 -38
  446. package/dest/logs/tx_scoped_l2_log.d.ts.map +1 -1
  447. package/dest/logs/tx_scoped_l2_log.js +40 -45
  448. package/dest/messaging/in_hash.d.ts +5 -3
  449. package/dest/messaging/in_hash.d.ts.map +1 -1
  450. package/dest/messaging/in_hash.js +4 -2
  451. package/dest/messaging/inbox_leaf.d.ts +10 -7
  452. package/dest/messaging/inbox_leaf.d.ts.map +1 -1
  453. package/dest/messaging/inbox_leaf.js +10 -9
  454. package/dest/messaging/l1_actor.d.ts +8 -2
  455. package/dest/messaging/l1_actor.d.ts.map +1 -1
  456. package/dest/messaging/l1_actor.js +2 -2
  457. package/dest/messaging/l1_to_l2_message.d.ts +7 -2
  458. package/dest/messaging/l1_to_l2_message.d.ts.map +1 -1
  459. package/dest/messaging/l1_to_l2_message.js +2 -2
  460. package/dest/messaging/l1_to_l2_message_source.d.ts +6 -10
  461. package/dest/messaging/l1_to_l2_message_source.d.ts.map +1 -1
  462. package/dest/messaging/l2_actor.d.ts +8 -2
  463. package/dest/messaging/l2_actor.d.ts.map +1 -1
  464. package/dest/messaging/l2_actor.js +2 -2
  465. package/dest/messaging/l2_to_l1_membership.d.ts +89 -6
  466. package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -1
  467. package/dest/messaging/l2_to_l1_membership.js +161 -43
  468. package/dest/messaging/l2_to_l1_message.d.ts +3 -2
  469. package/dest/messaging/l2_to_l1_message.d.ts.map +1 -1
  470. package/dest/messaging/l2_to_l1_message.js +4 -1
  471. package/dest/messaging/out_hash.d.ts +42 -4
  472. package/dest/messaging/out_hash.d.ts.map +1 -1
  473. package/dest/messaging/out_hash.js +55 -20
  474. package/dest/note/note.d.ts +2 -2
  475. package/dest/note/note.d.ts.map +1 -1
  476. package/dest/note/note.js +5 -2
  477. package/dest/note/note_dao.d.ts +48 -9
  478. package/dest/note/note_dao.d.ts.map +1 -1
  479. package/dest/note/note_dao.js +29 -15
  480. package/dest/note/notes_filter.d.ts +4 -2
  481. package/dest/note/notes_filter.d.ts.map +1 -1
  482. package/dest/note/notes_filter.js +1 -0
  483. package/dest/p2p/attestation_utils.d.ts +3 -3
  484. package/dest/p2p/attestation_utils.d.ts.map +1 -1
  485. package/dest/p2p/attestation_utils.js +1 -1
  486. package/dest/p2p/block_proposal.d.ts +94 -22
  487. package/dest/p2p/block_proposal.d.ts.map +1 -1
  488. package/dest/p2p/block_proposal.js +142 -40
  489. package/dest/p2p/checkpoint_attestation.d.ts +81 -0
  490. package/dest/p2p/checkpoint_attestation.d.ts.map +1 -0
  491. package/dest/p2p/{block_attestation.js → checkpoint_attestation.js} +24 -20
  492. package/dest/p2p/checkpoint_proposal.d.ts +160 -0
  493. package/dest/p2p/checkpoint_proposal.d.ts.map +1 -0
  494. package/dest/p2p/checkpoint_proposal.js +229 -0
  495. package/dest/p2p/consensus_payload.d.ts +10 -10
  496. package/dest/p2p/consensus_payload.d.ts.map +1 -1
  497. package/dest/p2p/consensus_payload.js +4 -6
  498. package/dest/p2p/constants.d.ts +3 -0
  499. package/dest/p2p/constants.d.ts.map +1 -0
  500. package/dest/p2p/constants.js +2 -0
  501. package/dest/p2p/gossipable.d.ts +4 -3
  502. package/dest/p2p/gossipable.d.ts.map +1 -1
  503. package/dest/p2p/gossipable.js +16 -5
  504. package/dest/p2p/index.d.ts +5 -2
  505. package/dest/p2p/index.d.ts.map +1 -1
  506. package/dest/p2p/index.js +4 -1
  507. package/dest/p2p/message_validator.d.ts +18 -3
  508. package/dest/p2p/message_validator.d.ts.map +1 -1
  509. package/dest/p2p/message_validator.js +2 -1
  510. package/dest/p2p/signature_utils.d.ts +5 -3
  511. package/dest/p2p/signature_utils.d.ts.map +1 -1
  512. package/dest/p2p/signature_utils.js +5 -2
  513. package/dest/p2p/signed_txs.d.ts +42 -0
  514. package/dest/p2p/signed_txs.d.ts.map +1 -0
  515. package/dest/p2p/signed_txs.js +75 -0
  516. package/dest/p2p/topic_type.d.ts +3 -2
  517. package/dest/p2p/topic_type.d.ts.map +1 -1
  518. package/dest/p2p/topic_type.js +10 -3
  519. package/dest/parity/parity_base_private_inputs.d.ts +4 -2
  520. package/dest/parity/parity_base_private_inputs.d.ts.map +1 -1
  521. package/dest/parity/parity_base_private_inputs.js +1 -1
  522. package/dest/parity/parity_public_inputs.d.ts +5 -2
  523. package/dest/parity/parity_public_inputs.d.ts.map +1 -1
  524. package/dest/parity/parity_public_inputs.js +1 -1
  525. package/dest/parity/parity_root_private_inputs.d.ts +2 -1
  526. package/dest/parity/parity_root_private_inputs.d.ts.map +1 -1
  527. package/dest/proofs/chonk_proof.d.ts +2 -2
  528. package/dest/proofs/chonk_proof.d.ts.map +1 -1
  529. package/dest/proofs/chonk_proof.js +11 -6
  530. package/dest/proofs/proof.d.ts +5 -2
  531. package/dest/proofs/proof.d.ts.map +1 -1
  532. package/dest/proofs/proof.js +1 -1
  533. package/dest/proofs/proof_data.d.ts +13 -1
  534. package/dest/proofs/proof_data.d.ts.map +1 -1
  535. package/dest/proofs/proof_data.js +17 -0
  536. package/dest/proofs/recursive_proof.d.ts +11 -2
  537. package/dest/proofs/recursive_proof.d.ts.map +1 -1
  538. package/dest/proofs/recursive_proof.js +1 -1
  539. package/dest/rollup/avm_proof_data.d.ts +3 -5
  540. package/dest/rollup/avm_proof_data.d.ts.map +1 -1
  541. package/dest/rollup/avm_proof_data.js +1 -9
  542. package/dest/rollup/base_rollup_hints.d.ts +35 -2
  543. package/dest/rollup/base_rollup_hints.d.ts.map +1 -1
  544. package/dest/rollup/base_rollup_hints.js +1 -1
  545. package/dest/rollup/block_constant_data.d.ts +13 -2
  546. package/dest/rollup/block_constant_data.d.ts.map +1 -1
  547. package/dest/rollup/block_constant_data.js +1 -1
  548. package/dest/rollup/block_headers_hash.d.ts +2 -2
  549. package/dest/rollup/block_headers_hash.d.ts.map +1 -1
  550. package/dest/rollup/block_headers_hash.js +2 -2
  551. package/dest/rollup/block_merge_rollup_private_inputs.d.ts +4 -1
  552. package/dest/rollup/block_merge_rollup_private_inputs.d.ts.map +1 -1
  553. package/dest/rollup/block_rollup_public_inputs.d.ts +48 -12
  554. package/dest/rollup/block_rollup_public_inputs.d.ts.map +1 -1
  555. package/dest/rollup/block_rollup_public_inputs.js +9 -13
  556. package/dest/rollup/block_root_rollup_private_inputs.d.ts +65 -2
  557. package/dest/rollup/block_root_rollup_private_inputs.d.ts.map +1 -1
  558. package/dest/rollup/block_root_rollup_private_inputs.js +1 -1
  559. package/dest/rollup/checkpoint_constant_data.d.ts +12 -2
  560. package/dest/rollup/checkpoint_constant_data.d.ts.map +1 -1
  561. package/dest/rollup/checkpoint_constant_data.js +5 -2
  562. package/dest/rollup/checkpoint_header.d.ts +47 -13
  563. package/dest/rollup/checkpoint_header.d.ts.map +1 -1
  564. package/dest/rollup/checkpoint_header.js +55 -22
  565. package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts +4 -1
  566. package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts.map +1 -1
  567. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +42 -2
  568. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -1
  569. package/dest/rollup/checkpoint_rollup_public_inputs.js +11 -3
  570. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts +46 -4
  571. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts.map +1 -1
  572. package/dest/rollup/checkpoint_root_rollup_private_inputs.js +15 -3
  573. package/dest/rollup/epoch_constant_data.d.ts +17 -2
  574. package/dest/rollup/epoch_constant_data.d.ts.map +1 -1
  575. package/dest/rollup/epoch_constant_data.js +1 -1
  576. package/dest/rollup/public_chonk_verifier_private_inputs.d.ts +2 -2
  577. package/dest/rollup/public_chonk_verifier_private_inputs.d.ts.map +1 -1
  578. package/dest/rollup/public_chonk_verifier_private_inputs.js +1 -1
  579. package/dest/rollup/public_chonk_verifier_public_inputs.d.ts +2 -2
  580. package/dest/rollup/public_chonk_verifier_public_inputs.d.ts.map +1 -1
  581. package/dest/rollup/public_chonk_verifier_public_inputs.js +1 -1
  582. package/dest/rollup/public_tx_base_rollup_private_inputs.d.ts +1 -1
  583. package/dest/rollup/public_tx_base_rollup_private_inputs.d.ts.map +1 -1
  584. package/dest/rollup/public_tx_base_rollup_private_inputs.js +2 -2
  585. package/dest/rollup/root_rollup_private_inputs.d.ts +6 -1
  586. package/dest/rollup/root_rollup_private_inputs.d.ts.map +1 -1
  587. package/dest/rollup/root_rollup_public_inputs.d.ts +19 -4
  588. package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -1
  589. package/dest/rollup/root_rollup_public_inputs.js +10 -4
  590. package/dest/rollup/tree_snapshot_diff_hints.d.ts +25 -2
  591. package/dest/rollup/tree_snapshot_diff_hints.d.ts.map +1 -1
  592. package/dest/rollup/tree_snapshot_diff_hints.js +1 -1
  593. package/dest/rollup/tx_merge_rollup_private_inputs.d.ts +4 -1
  594. package/dest/rollup/tx_merge_rollup_private_inputs.d.ts.map +1 -1
  595. package/dest/rollup/tx_rollup_public_inputs.d.ts +30 -2
  596. package/dest/rollup/tx_rollup_public_inputs.d.ts.map +1 -1
  597. package/dest/rollup/tx_rollup_public_inputs.js +1 -1
  598. package/dest/schemas/schemas.d.ts +7 -4
  599. package/dest/schemas/schemas.d.ts.map +1 -1
  600. package/dest/schemas/schemas.js +2 -1
  601. package/dest/slashing/types.d.ts +4 -5
  602. package/dest/slashing/types.d.ts.map +1 -1
  603. package/dest/slashing/types.js +5 -5
  604. package/dest/snapshots/types.d.ts +1 -1
  605. package/dest/snapshots/types.d.ts.map +1 -1
  606. package/dest/snapshots/types.js +5 -5
  607. package/dest/stats/stats.d.ts +10 -6
  608. package/dest/stats/stats.d.ts.map +1 -1
  609. package/dest/tests/factories.d.ts +42 -12
  610. package/dest/tests/factories.d.ts.map +1 -1
  611. package/dest/tests/factories.js +99 -32
  612. package/dest/tests/jest.js +1 -1
  613. package/dest/tests/mocks.d.ts +82 -18
  614. package/dest/tests/mocks.d.ts.map +1 -1
  615. package/dest/tests/mocks.js +178 -54
  616. package/dest/trees/append_only_tree_snapshot.d.ts +14 -2
  617. package/dest/trees/append_only_tree_snapshot.d.ts.map +1 -1
  618. package/dest/trees/append_only_tree_snapshot.js +4 -2
  619. package/dest/trees/database_public_state_source.d.ts +2 -2
  620. package/dest/trees/database_public_state_source.d.ts.map +1 -1
  621. package/dest/trees/database_public_state_source.js +1 -1
  622. package/dest/trees/nullifier_leaf.d.ts +14 -2
  623. package/dest/trees/nullifier_leaf.d.ts.map +1 -1
  624. package/dest/trees/nullifier_leaf.js +1 -1
  625. package/dest/trees/nullifier_membership_witness.d.ts +11 -2
  626. package/dest/trees/nullifier_membership_witness.d.ts.map +1 -1
  627. package/dest/trees/nullifier_membership_witness.js +1 -1
  628. package/dest/trees/public_data_leaf.d.ts +17 -2
  629. package/dest/trees/public_data_leaf.d.ts.map +1 -1
  630. package/dest/trees/public_data_leaf.js +1 -1
  631. package/dest/trees/public_data_witness.d.ts +12 -2
  632. package/dest/trees/public_data_witness.d.ts.map +1 -1
  633. package/dest/trees/public_data_witness.js +1 -1
  634. package/dest/tx/block_header.d.ts +25 -12
  635. package/dest/tx/block_header.d.ts.map +1 -1
  636. package/dest/tx/block_header.js +15 -4
  637. package/dest/tx/call_context.d.ts +14 -2
  638. package/dest/tx/call_context.d.ts.map +1 -1
  639. package/dest/tx/call_context.js +3 -1
  640. package/dest/tx/capsule.d.ts +5 -2
  641. package/dest/tx/capsule.d.ts.map +1 -1
  642. package/dest/tx/capsule.js +1 -1
  643. package/dest/tx/execution_payload.d.ts +9 -1
  644. package/dest/tx/execution_payload.d.ts.map +1 -1
  645. package/dest/tx/function_data.d.ts +5 -3
  646. package/dest/tx/function_data.d.ts.map +1 -1
  647. package/dest/tx/function_data.js +1 -1
  648. package/dest/tx/global_variable_builder.d.ts +5 -3
  649. package/dest/tx/global_variable_builder.d.ts.map +1 -1
  650. package/dest/tx/global_variables.d.ts +27 -12
  651. package/dest/tx/global_variables.d.ts.map +1 -1
  652. package/dest/tx/global_variables.js +11 -9
  653. package/dest/tx/hashed_values.d.ts +8 -2
  654. package/dest/tx/hashed_values.d.ts.map +1 -1
  655. package/dest/tx/hashed_values.js +1 -1
  656. package/dest/tx/in_tx.d.ts +26 -0
  657. package/dest/tx/in_tx.d.ts.map +1 -0
  658. package/dest/tx/in_tx.js +14 -0
  659. package/dest/tx/index.d.ts +2 -2
  660. package/dest/tx/index.d.ts.map +1 -1
  661. package/dest/tx/index.js +1 -1
  662. package/dest/tx/indexed_tx_effect.d.ts +12 -8
  663. package/dest/tx/indexed_tx_effect.d.ts.map +1 -1
  664. package/dest/tx/indexed_tx_effect.js +5 -4
  665. package/dest/tx/offchain_effect.d.ts +2 -2
  666. package/dest/tx/offchain_effect.d.ts.map +1 -1
  667. package/dest/tx/offchain_effect.js +1 -1
  668. package/dest/tx/partial_state_reference.d.ts +5 -2
  669. package/dest/tx/partial_state_reference.d.ts.map +1 -1
  670. package/dest/tx/private_execution_result.d.ts +27 -10
  671. package/dest/tx/private_execution_result.d.ts.map +1 -1
  672. package/dest/tx/private_execution_result.js +6 -23
  673. package/dest/tx/private_tx_constant_data.d.ts +17 -2
  674. package/dest/tx/private_tx_constant_data.d.ts.map +1 -1
  675. package/dest/tx/private_tx_constant_data.js +1 -1
  676. package/dest/tx/processed_tx.d.ts +5 -4
  677. package/dest/tx/processed_tx.d.ts.map +1 -1
  678. package/dest/tx/processed_tx.js +8 -7
  679. package/dest/tx/profiling.d.ts +150 -27
  680. package/dest/tx/profiling.d.ts.map +1 -1
  681. package/dest/tx/profiling.js +45 -8
  682. package/dest/tx/protocol_contracts.d.ts +3 -3
  683. package/dest/tx/protocol_contracts.d.ts.map +1 -1
  684. package/dest/tx/protocol_contracts.js +1 -1
  685. package/dest/tx/public_call_request_with_calldata.d.ts +8 -2
  686. package/dest/tx/public_call_request_with_calldata.d.ts.map +1 -1
  687. package/dest/tx/public_call_request_with_calldata.js +4 -2
  688. package/dest/tx/public_simulation_output.d.ts +2 -2
  689. package/dest/tx/public_simulation_output.d.ts.map +1 -1
  690. package/dest/tx/public_simulation_output.js +1 -1
  691. package/dest/tx/simulated_tx.d.ts +1031 -7
  692. package/dest/tx/simulated_tx.d.ts.map +1 -1
  693. package/dest/tx/state_reference.d.ts +4 -2
  694. package/dest/tx/state_reference.d.ts.map +1 -1
  695. package/dest/tx/state_reference.js +3 -1
  696. package/dest/tx/tree_snapshots.d.ts +2 -2
  697. package/dest/tx/tree_snapshots.d.ts.map +1 -1
  698. package/dest/tx/tree_snapshots.js +3 -1
  699. package/dest/tx/tx.d.ts +35 -5
  700. package/dest/tx/tx.d.ts.map +1 -1
  701. package/dest/tx/tx.js +20 -7
  702. package/dest/tx/tx_constant_data.d.ts +2 -2
  703. package/dest/tx/tx_constant_data.d.ts.map +1 -1
  704. package/dest/tx/tx_constant_data.js +1 -1
  705. package/dest/tx/tx_context.d.ts +3 -2
  706. package/dest/tx/tx_context.d.ts.map +1 -1
  707. package/dest/tx/tx_context.js +1 -1
  708. package/dest/tx/tx_effect.d.ts +33 -7
  709. package/dest/tx/tx_effect.d.ts.map +1 -1
  710. package/dest/tx/tx_effect.js +8 -11
  711. package/dest/tx/tx_execution_request.d.ts +31 -2
  712. package/dest/tx/tx_execution_request.d.ts.map +1 -1
  713. package/dest/tx/tx_execution_request.js +7 -3
  714. package/dest/tx/tx_hash.d.ts +3 -2
  715. package/dest/tx/tx_hash.d.ts.map +1 -1
  716. package/dest/tx/tx_hash.js +1 -1
  717. package/dest/tx/tx_receipt.d.ts +47 -12
  718. package/dest/tx/tx_receipt.d.ts.map +1 -1
  719. package/dest/tx/tx_receipt.js +46 -14
  720. package/dest/tx/tx_request.d.ts +7 -2
  721. package/dest/tx/tx_request.d.ts.map +1 -1
  722. package/dest/tx/tx_request.js +2 -2
  723. package/dest/tx/validator/error_texts.d.ts +2 -1
  724. package/dest/tx/validator/error_texts.d.ts.map +1 -1
  725. package/dest/tx/validator/error_texts.js +2 -0
  726. package/dest/tx/validator/tx_validator.d.ts +1 -4
  727. package/dest/tx/validator/tx_validator.d.ts.map +1 -1
  728. package/dest/tx/validator/tx_validator.js +4 -4
  729. package/dest/types/shared.d.ts +4 -1
  730. package/dest/types/shared.d.ts.map +1 -1
  731. package/dest/update-checker/update-checker.d.ts +2 -2
  732. package/dest/update-checker/update-checker.d.ts.map +1 -1
  733. package/dest/update-checker/update-checker.js +1 -1
  734. package/dest/validators/errors.d.ts +2 -2
  735. package/dest/validators/errors.d.ts.map +1 -1
  736. package/dest/validators/schemas.d.ts +9 -9
  737. package/dest/validators/schemas.d.ts.map +1 -1
  738. package/dest/validators/schemas.js +13 -13
  739. package/dest/versioning/versioning.d.ts +2 -2
  740. package/dest/versioning/versioning.d.ts.map +1 -1
  741. package/dest/vks/verification_key.d.ts +23 -2
  742. package/dest/vks/verification_key.d.ts.map +1 -1
  743. package/dest/vks/verification_key.js +1 -1
  744. package/dest/vks/vk_data.d.ts +8 -2
  745. package/dest/vks/vk_data.d.ts.map +1 -1
  746. package/dest/vks/vk_data.js +1 -1
  747. package/dest/zkpassport/index.d.ts +4 -5
  748. package/dest/zkpassport/index.d.ts.map +1 -1
  749. package/dest/zkpassport/index.js +11 -11
  750. package/package.json +18 -11
  751. package/src/abi/abi.ts +40 -34
  752. package/src/abi/authorization_selector.ts +3 -2
  753. package/src/abi/buffer.ts +1 -1
  754. package/src/abi/contract_artifact.ts +10 -10
  755. package/src/abi/decoder.ts +1 -1
  756. package/src/abi/encoder.ts +1 -1
  757. package/src/abi/event_selector.ts +3 -2
  758. package/src/abi/function_call.ts +1 -1
  759. package/src/abi/function_selector.ts +11 -2
  760. package/src/abi/note_selector.ts +2 -2
  761. package/src/abi/selector.ts +1 -1
  762. package/src/abi/utils.ts +17 -0
  763. package/src/auth_witness/auth_witness.ts +2 -2
  764. package/src/avm/avm.ts +338 -20
  765. package/src/avm/avm_accumulated_data.ts +1 -1
  766. package/src/avm/avm_circuit_public_inputs.ts +1 -1
  767. package/src/avm/contract_storage_read.ts +1 -1
  768. package/src/avm/contract_storage_update_request.ts +1 -1
  769. package/src/avm/message_pack.ts +2 -1
  770. package/src/avm/public_call_stack_item_compressed.ts +1 -1
  771. package/src/avm/public_data_read.ts +1 -1
  772. package/src/avm/public_data_update_request.ts +1 -1
  773. package/src/avm/public_data_write.ts +1 -1
  774. package/src/avm/public_inner_call_request.ts +1 -1
  775. package/src/avm/revert_code.ts +1 -1
  776. package/src/aztec-address/index.ts +2 -1
  777. package/src/block/attestation_info.ts +10 -7
  778. package/src/block/block_hash.ts +28 -2
  779. package/src/block/block_parameter.ts +10 -0
  780. package/src/block/body.ts +2 -1
  781. package/src/block/checkpointed_l2_block.ts +70 -0
  782. package/src/block/in_block.ts +25 -12
  783. package/src/block/index.ts +2 -4
  784. package/src/block/l2_block.ts +106 -140
  785. package/src/block/l2_block_info.ts +11 -10
  786. package/src/block/l2_block_source.ts +194 -70
  787. package/src/block/l2_block_stream/index.ts +1 -0
  788. package/src/block/l2_block_stream/interfaces.ts +15 -4
  789. package/src/block/l2_block_stream/l2_block_stream.ts +142 -37
  790. package/src/block/l2_block_stream/l2_tips_memory_store.ts +63 -54
  791. package/src/block/l2_block_stream/l2_tips_store_base.ts +226 -0
  792. package/src/block/proposal/attestations_and_signers.ts +1 -1
  793. package/src/block/proposal/committee_attestation.ts +1 -1
  794. package/src/block/test/l2_tips_store_test_suite.ts +486 -36
  795. package/src/block/validate_block_result.ts +40 -35
  796. package/src/checkpoint/checkpoint.ts +88 -18
  797. package/src/checkpoint/checkpoint_info.ts +52 -0
  798. package/src/checkpoint/index.ts +1 -0
  799. package/src/checkpoint/published_checkpoint.ts +23 -8
  800. package/src/config/node-rpc-config.ts +1 -1
  801. package/src/contract/artifact_hash.ts +2 -2
  802. package/src/contract/complete_address.ts +1 -1
  803. package/src/contract/contract_address.ts +2 -2
  804. package/src/contract/contract_class.ts +2 -2
  805. package/src/contract/contract_class_id.ts +3 -3
  806. package/src/contract/contract_instance.ts +1 -1
  807. package/src/contract/contract_instance_update.ts +1 -1
  808. package/src/contract/deployment_info.ts +1 -1
  809. package/src/contract/index.ts +0 -2
  810. package/src/contract/interfaces/contract_class.ts +78 -47
  811. package/src/contract/interfaces/contract_data_source.ts +3 -2
  812. package/src/contract/interfaces/contract_instance.ts +48 -16
  813. package/src/contract/interfaces/contract_instance_update.ts +12 -10
  814. package/src/contract/partial_address.ts +1 -1
  815. package/src/contract/private_function.ts +3 -3
  816. package/src/contract/private_function_membership_proof.ts +2 -2
  817. package/src/contract/utility_function_membership_proof.ts +1 -1
  818. package/src/delayed_public_mutable/delayed_public_mutable_values.ts +11 -12
  819. package/src/delayed_public_mutable/delayed_public_mutable_values_with_hash.ts +1 -1
  820. package/src/delayed_public_mutable/scheduled_value_change.ts +1 -1
  821. package/src/deserialization/index.ts +21 -0
  822. package/src/epoch-helpers/index.ts +12 -10
  823. package/src/errors/simulation_error.ts +1 -1
  824. package/src/fees/transaction_fee.ts +1 -1
  825. package/src/gas/gas.ts +1 -1
  826. package/src/gas/gas_fees.ts +1 -1
  827. package/src/gas/gas_settings.ts +1 -1
  828. package/src/hash/hash.ts +3 -13
  829. package/src/hash/map_slot.ts +2 -2
  830. package/src/interfaces/allowed_element.ts +10 -8
  831. package/src/interfaces/api_limit.ts +2 -0
  832. package/src/interfaces/archiver.ts +47 -28
  833. package/src/interfaces/aztec-node-admin.ts +7 -4
  834. package/src/interfaces/aztec-node.ts +155 -119
  835. package/src/interfaces/block-builder.ts +40 -22
  836. package/src/interfaces/configs.ts +67 -33
  837. package/src/interfaces/epoch-prover.ts +4 -4
  838. package/src/interfaces/get_logs_response.ts +13 -9
  839. package/src/interfaces/l2_logs_source.ts +24 -14
  840. package/src/interfaces/merkle_tree_operations.ts +7 -3
  841. package/src/interfaces/p2p.ts +8 -12
  842. package/src/interfaces/prover-client.ts +28 -10
  843. package/src/interfaces/proving-job.ts +2 -11
  844. package/src/interfaces/public_state_source.ts +1 -1
  845. package/src/interfaces/server_circuit_prover.ts +3 -3
  846. package/src/interfaces/slasher.ts +24 -22
  847. package/src/interfaces/validator.ts +84 -31
  848. package/src/interfaces/world_state.ts +26 -18
  849. package/src/kernel/claimed_length_array.ts +1 -1
  850. package/src/kernel/hints/build_note_hash_read_request_hints.ts +20 -12
  851. package/src/kernel/hints/build_nullifier_read_request_hints.ts +18 -15
  852. package/src/kernel/hints/find_private_kernel_reset_dimensions.ts +2 -4
  853. package/src/kernel/hints/key_validation_hint.ts +1 -1
  854. package/src/kernel/hints/key_validation_request.ts +2 -1
  855. package/src/kernel/hints/key_validation_request_and_generator.ts +1 -1
  856. package/src/kernel/hints/note_hash_read_request_hints.ts +1 -1
  857. package/src/kernel/hints/read_request.ts +1 -1
  858. package/src/kernel/hints/scoped_key_validation_request_and_generator.ts +1 -1
  859. package/src/kernel/hints/scoped_value_cache.ts +1 -1
  860. package/src/kernel/hints/transient_data_squashing_hint.ts +1 -1
  861. package/src/kernel/hints/tree_leaf_read_request.ts +1 -1
  862. package/src/kernel/log_hash.ts +1 -1
  863. package/src/kernel/note_hash.ts +1 -1
  864. package/src/kernel/nullifier.ts +1 -1
  865. package/src/kernel/padded_side_effects.ts +1 -1
  866. package/src/kernel/private_call_data.ts +1 -1
  867. package/src/kernel/private_call_request.ts +1 -1
  868. package/src/kernel/private_circuit_public_inputs.ts +86 -86
  869. package/src/kernel/private_context_inputs.ts +1 -1
  870. package/src/kernel/private_kernel_circuit_public_inputs.ts +1 -1
  871. package/src/kernel/private_kernel_init_circuit_private_inputs.ts +1 -1
  872. package/src/kernel/private_kernel_tail_circuit_public_inputs.ts +1 -1
  873. package/src/kernel/private_log_data.ts +1 -1
  874. package/src/kernel/private_to_avm_accumulated_data.ts +1 -1
  875. package/src/kernel/private_to_public_accumulated_data.ts +1 -1
  876. package/src/kernel/private_to_public_accumulated_data_builder.ts +1 -1
  877. package/src/kernel/private_to_public_kernel_circuit_public_inputs.ts +2 -2
  878. package/src/kernel/private_to_rollup_accumulated_data.ts +1 -1
  879. package/src/kernel/private_to_rollup_kernel_circuit_public_inputs.ts +2 -2
  880. package/src/kernel/public_call_request.ts +1 -1
  881. package/src/kernel/utils/optional_number.ts +1 -1
  882. package/src/keys/derivation.ts +5 -2
  883. package/src/keys/public_key.ts +1 -1
  884. package/src/keys/public_keys.ts +3 -2
  885. package/src/l1-contracts/slash_factory.ts +3 -1
  886. package/src/logs/contract_class_log.ts +2 -2
  887. package/src/logs/debug_log.ts +1 -1
  888. package/src/logs/directional_app_tagging_secret.ts +4 -2
  889. package/src/logs/index.ts +2 -1
  890. package/src/logs/log_id.ts +22 -11
  891. package/src/logs/message_context.ts +1 -1
  892. package/src/logs/pending_tagged_log.ts +1 -1
  893. package/src/logs/private_log.ts +3 -2
  894. package/src/logs/public_log.ts +8 -1
  895. package/src/logs/shared_secret_derivation.ts +2 -2
  896. package/src/logs/siloed_tag.ts +44 -0
  897. package/src/logs/tag.ts +42 -0
  898. package/src/logs/tx_scoped_l2_log.ts +48 -45
  899. package/src/messaging/in_hash.ts +4 -2
  900. package/src/messaging/inbox_leaf.ts +11 -10
  901. package/src/messaging/l1_actor.ts +2 -2
  902. package/src/messaging/l1_to_l2_message.ts +3 -2
  903. package/src/messaging/l1_to_l2_message_source.ts +5 -10
  904. package/src/messaging/l2_actor.ts +2 -2
  905. package/src/messaging/l2_to_l1_membership.ts +179 -52
  906. package/src/messaging/l2_to_l1_message.ts +5 -1
  907. package/src/messaging/out_hash.ts +63 -22
  908. package/src/note/note.ts +5 -2
  909. package/src/note/note_dao.ts +51 -15
  910. package/src/note/notes_filter.ts +4 -1
  911. package/src/p2p/attestation_utils.ts +3 -3
  912. package/src/p2p/block_proposal.ts +207 -46
  913. package/src/p2p/{block_attestation.ts → checkpoint_attestation.ts} +33 -26
  914. package/src/p2p/checkpoint_proposal.ts +348 -0
  915. package/src/p2p/consensus_payload.ts +6 -8
  916. package/src/p2p/constants.ts +3 -0
  917. package/src/p2p/gossipable.ts +14 -4
  918. package/src/p2p/index.ts +4 -1
  919. package/src/p2p/message_validator.ts +14 -2
  920. package/src/p2p/signature_utils.ts +5 -2
  921. package/src/p2p/signed_txs.ts +88 -0
  922. package/src/p2p/topic_type.ts +4 -3
  923. package/src/parity/parity_base_private_inputs.ts +1 -1
  924. package/src/parity/parity_public_inputs.ts +1 -1
  925. package/src/proofs/chonk_proof.ts +11 -7
  926. package/src/proofs/proof.ts +1 -1
  927. package/src/proofs/proof_data.ts +24 -0
  928. package/src/proofs/recursive_proof.ts +1 -1
  929. package/src/rollup/avm_proof_data.ts +2 -9
  930. package/src/rollup/base_rollup_hints.ts +1 -1
  931. package/src/rollup/block_constant_data.ts +1 -1
  932. package/src/rollup/block_headers_hash.ts +2 -2
  933. package/src/rollup/block_rollup_public_inputs.ts +6 -12
  934. package/src/rollup/block_root_rollup_private_inputs.ts +1 -1
  935. package/src/rollup/checkpoint_constant_data.ts +2 -1
  936. package/src/rollup/checkpoint_header.ts +69 -20
  937. package/src/rollup/checkpoint_rollup_public_inputs.ts +13 -1
  938. package/src/rollup/checkpoint_root_rollup_private_inputs.ts +16 -2
  939. package/src/rollup/epoch_constant_data.ts +1 -1
  940. package/src/rollup/public_chonk_verifier_private_inputs.ts +1 -1
  941. package/src/rollup/public_chonk_verifier_public_inputs.ts +1 -1
  942. package/src/rollup/public_tx_base_rollup_private_inputs.ts +2 -2
  943. package/src/rollup/root_rollup_public_inputs.ts +10 -1
  944. package/src/rollup/tree_snapshot_diff_hints.ts +1 -1
  945. package/src/rollup/tx_rollup_public_inputs.ts +1 -1
  946. package/src/schemas/schemas.ts +6 -1
  947. package/src/slashing/types.ts +24 -20
  948. package/src/snapshots/types.ts +33 -29
  949. package/src/stats/stats.ts +10 -5
  950. package/src/tests/factories.ts +129 -47
  951. package/src/tests/jest.ts +1 -1
  952. package/src/tests/mocks.ts +274 -78
  953. package/src/trees/append_only_tree_snapshot.ts +1 -1
  954. package/src/trees/database_public_state_source.ts +1 -1
  955. package/src/trees/nullifier_leaf.ts +1 -1
  956. package/src/trees/nullifier_membership_witness.ts +1 -1
  957. package/src/trees/public_data_leaf.ts +1 -1
  958. package/src/trees/public_data_witness.ts +1 -1
  959. package/src/tx/block_header.ts +26 -12
  960. package/src/tx/call_context.ts +1 -1
  961. package/src/tx/capsule.ts +1 -1
  962. package/src/tx/function_data.ts +1 -1
  963. package/src/tx/global_variable_builder.ts +9 -2
  964. package/src/tx/global_variables.ts +16 -10
  965. package/src/tx/hashed_values.ts +1 -1
  966. package/src/tx/in_tx.ts +24 -0
  967. package/src/tx/index.ts +1 -1
  968. package/src/tx/indexed_tx_effect.ts +6 -5
  969. package/src/tx/offchain_effect.ts +1 -1
  970. package/src/tx/partial_state_reference.ts +1 -1
  971. package/src/tx/private_execution_result.ts +6 -21
  972. package/src/tx/private_tx_constant_data.ts +1 -1
  973. package/src/tx/processed_tx.ts +19 -16
  974. package/src/tx/profiling.ts +47 -5
  975. package/src/tx/protocol_contracts.ts +2 -2
  976. package/src/tx/public_call_request_with_calldata.ts +1 -1
  977. package/src/tx/public_simulation_output.ts +1 -1
  978. package/src/tx/state_reference.ts +1 -1
  979. package/src/tx/tree_snapshots.ts +1 -1
  980. package/src/tx/tx.ts +22 -13
  981. package/src/tx/tx_constant_data.ts +1 -1
  982. package/src/tx/tx_context.ts +1 -1
  983. package/src/tx/tx_effect.ts +5 -12
  984. package/src/tx/tx_execution_request.ts +3 -1
  985. package/src/tx/tx_hash.ts +1 -1
  986. package/src/tx/tx_receipt.ts +75 -17
  987. package/src/tx/tx_request.ts +2 -2
  988. package/src/tx/validator/error_texts.ts +3 -0
  989. package/src/tx/validator/tx_validator.ts +8 -6
  990. package/src/update-checker/update-checker.ts +2 -1
  991. package/src/validators/errors.ts +1 -1
  992. package/src/validators/schemas.ts +54 -48
  993. package/src/versioning/versioning.ts +1 -1
  994. package/src/vks/verification_key.ts +1 -1
  995. package/src/vks/vk_data.ts +1 -1
  996. package/src/zkpassport/index.ts +13 -14
  997. package/dest/block/l2_block_code_to_purge.d.ts +0 -12
  998. package/dest/block/l2_block_code_to_purge.d.ts.map +0 -1
  999. package/dest/block/l2_block_code_to_purge.js +0 -61
  1000. package/dest/block/l2_block_header.d.ts +0 -98
  1001. package/dest/block/l2_block_header.d.ts.map +0 -1
  1002. package/dest/block/l2_block_header.js +0 -153
  1003. package/dest/block/l2_block_new.d.ts +0 -108
  1004. package/dest/block/l2_block_new.d.ts.map +0 -1
  1005. package/dest/block/l2_block_new.js +0 -135
  1006. package/dest/block/l2_block_number.d.ts +0 -5
  1007. package/dest/block/l2_block_number.d.ts.map +0 -1
  1008. package/dest/block/l2_block_number.js +0 -6
  1009. package/dest/block/published_l2_block.d.ts +0 -130
  1010. package/dest/block/published_l2_block.d.ts.map +0 -1
  1011. package/dest/block/published_l2_block.js +0 -48
  1012. package/dest/contract/contract_class_metadata.d.ts +0 -8
  1013. package/dest/contract/contract_class_metadata.d.ts.map +0 -1
  1014. package/dest/contract/contract_class_metadata.js +0 -1
  1015. package/dest/contract/contract_metadata.d.ts +0 -7
  1016. package/dest/contract/contract_metadata.d.ts.map +0 -1
  1017. package/dest/contract/contract_metadata.js +0 -1
  1018. package/dest/logs/log_with_tx_data.d.ts +0 -19
  1019. package/dest/logs/log_with_tx_data.d.ts.map +0 -1
  1020. package/dest/logs/log_with_tx_data.js +0 -49
  1021. package/dest/p2p/block_attestation.d.ts +0 -80
  1022. package/dest/p2p/block_attestation.d.ts.map +0 -1
  1023. package/dest/tx/content_commitment.d.ts +0 -48
  1024. package/dest/tx/content_commitment.d.ts.map +0 -1
  1025. package/dest/tx/content_commitment.js +0 -82
  1026. package/src/block/l2_block_code_to_purge.ts +0 -88
  1027. package/src/block/l2_block_header.ts +0 -246
  1028. package/src/block/l2_block_new.ts +0 -171
  1029. package/src/block/l2_block_number.ts +0 -8
  1030. package/src/block/published_l2_block.ts +0 -65
  1031. package/src/contract/contract_class_metadata.ts +0 -8
  1032. package/src/contract/contract_metadata.ts +0 -7
  1033. package/src/logs/log_with_tx_data.ts +0 -46
  1034. package/src/tx/content_commitment.ts +0 -104
@@ -1,10 +1,15 @@
1
+ import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
1
2
  import { AbortError } from '@aztec/foundation/error';
2
3
  import { createLogger } from '@aztec/foundation/log';
3
4
  import { RunningPromise } from '@aztec/foundation/running-promise';
4
5
 
6
+ import type { PublishedCheckpoint } from '../../checkpoint/published_checkpoint.js';
5
7
  import { type L2BlockId, type L2BlockSource, makeL2BlockId } from '../l2_block_source.js';
6
8
  import type { L2BlockStreamEvent, L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider } from './interfaces.js';
7
9
 
10
+ /** Maximum number of checkpoints to prefetch at once during sync. Matches MAX_RPC_CHECKPOINTS_LEN. */
11
+ export const CHECKPOINT_PREFETCH_LIMIT = 50;
12
+
8
13
  /** Creates a stream of events for new blocks, chain tips updates, and reorgs, out of polling an archiver or a node. */
9
14
  export class L2BlockStream {
10
15
  private readonly runningPromise: RunningPromise;
@@ -12,19 +17,29 @@ export class L2BlockStream {
12
17
  private hasStarted = false;
13
18
 
14
19
  constructor(
15
- private l2BlockSource: Pick<L2BlockSource, 'getPublishedBlocks' | 'getBlockHeader' | 'getL2Tips'>,
20
+ private l2BlockSource: Pick<
21
+ L2BlockSource,
22
+ 'getBlocks' | 'getBlockHeader' | 'getL2Tips' | 'getCheckpoints' | 'getCheckpointedBlocks'
23
+ >,
16
24
  private localData: L2BlockStreamLocalDataProvider,
17
25
  private handler: L2BlockStreamEventHandler,
18
26
  private readonly log = createLogger('types:block_stream'),
19
27
  private opts: {
20
- proven?: boolean;
21
28
  pollIntervalMS?: number;
22
29
  batchSize?: number;
23
30
  startingBlock?: number;
24
31
  /** Instead of downloading all blocks, only fetch the smallest subset that results in reliable reorg detection. */
25
32
  skipFinalized?: boolean;
33
+ /** When true, checkpoint events will not be emitted. Blocks are still fetched via checkpoints but only blocks-added events are emitted. */
34
+ ignoreCheckpoints?: boolean;
35
+ /** Maximum number of checkpoints to prefetch at once during sync. Defaults to CHECKPOINT_PREFETCH_LIMIT (50). */
36
+ checkpointPrefetchLimit?: number;
26
37
  } = {},
27
38
  ) {
39
+ // Note that RunningPromise is in stopped state by default. This promise won't run until someone invokes `start`,
40
+ // which makes it run periodically, or `sync`, which triggers it once.
41
+ // Users of L2BlockStream decide what mode to run it in (_periodically_ vs _manually triggered_).
42
+ // The default is _manually triggered_.
28
43
  this.runningPromise = new RunningPromise(() => this.work(), log, this.opts.pollIntervalMS ?? 1000);
29
44
  }
30
45
 
@@ -41,6 +56,11 @@ export class L2BlockStream {
41
56
  return this.runningPromise.isRunning();
42
57
  }
43
58
 
59
+ /**
60
+ * Runs the synchronization process once.
61
+ *
62
+ * If you want to run this process continuously use `start` and `stop` instead.
63
+ */
44
64
  public async sync() {
45
65
  this.isSyncing = true;
46
66
  await this.runningPromise.trigger();
@@ -51,41 +71,34 @@ export class L2BlockStream {
51
71
  try {
52
72
  const sourceTips = await this.l2BlockSource.getL2Tips();
53
73
  const localTips = await this.localData.getL2Tips();
54
- this.log.trace(`Running L2 block stream`, {
55
- sourceLatest: sourceTips.latest.number,
56
- localLatest: localTips.latest.number,
57
- sourceFinalized: sourceTips.finalized.number,
58
- localFinalized: localTips.finalized.number,
59
- sourceProven: sourceTips.proven.number,
60
- localProven: localTips.proven.number,
61
- sourceLatestHash: sourceTips.latest.hash,
62
- localLatestHash: localTips.latest.hash,
63
- sourceProvenHash: sourceTips.proven.hash,
64
- localProvenHash: localTips.proven.hash,
65
- sourceFinalizedHash: sourceTips.finalized.hash,
66
- localFinalizedHash: localTips.finalized.hash,
67
- });
74
+ this.log.trace(`Running L2 block stream`, { sourceTips, localTips });
68
75
 
69
76
  // Check if there was a reorg and emit a chain-pruned event if so.
70
- let latestBlockNumber = localTips.latest.number;
71
- const sourceCache = new BlockHashCache([sourceTips.latest]);
77
+ let latestBlockNumber = localTips.proposed.number;
78
+ const sourceCache = new BlockHashCache([sourceTips.proposed]);
72
79
  while (!(await this.areBlockHashesEqualAt(latestBlockNumber, { sourceCache }))) {
73
80
  latestBlockNumber--;
74
81
  }
75
82
 
76
- if (latestBlockNumber < localTips.latest.number) {
77
- latestBlockNumber = Math.min(latestBlockNumber, sourceTips.latest.number); // see #13471
83
+ if (latestBlockNumber < localTips.proposed.number) {
84
+ latestBlockNumber = BlockNumber(Math.min(latestBlockNumber, sourceTips.proposed.number)); // see #13471
78
85
  const hash = sourceCache.get(latestBlockNumber) ?? (await this.getBlockHashFromSource(latestBlockNumber));
79
86
  if (latestBlockNumber !== 0 && !hash) {
80
87
  throw new Error(`Block hash not found in block source for block number ${latestBlockNumber}`);
81
88
  }
82
- this.log.verbose(`Reorg detected. Pruning blocks from ${latestBlockNumber + 1} to ${localTips.latest.number}.`);
83
- await this.emitEvent({ type: 'chain-pruned', block: makeL2BlockId(latestBlockNumber, hash) });
89
+ this.log.verbose(
90
+ `Reorg detected. Pruning blocks from ${latestBlockNumber + 1} to ${localTips.proposed.number}.`,
91
+ );
92
+ await this.emitEvent({
93
+ type: 'chain-pruned',
94
+ block: makeL2BlockId(latestBlockNumber, hash),
95
+ checkpoint: sourceTips.checkpointed.checkpoint,
96
+ });
84
97
  }
85
98
 
86
99
  // If we are just starting, use the starting block number from the options.
87
100
  if (latestBlockNumber === 0 && this.opts.startingBlock !== undefined) {
88
- latestBlockNumber = Math.max(this.opts.startingBlock - 1, 0);
101
+ latestBlockNumber = BlockNumber(Math.max(this.opts.startingBlock - 1, 0));
89
102
  }
90
103
 
91
104
  // Only log this entry once (for sanity)
@@ -95,36 +108,128 @@ export class L2BlockStream {
95
108
  }
96
109
 
97
110
  let nextBlockNumber = latestBlockNumber + 1;
111
+ let nextCheckpointToEmit = CheckpointNumber(localTips.checkpointed.checkpoint.number + 1);
98
112
  if (this.opts.skipFinalized) {
99
113
  // When skipping finalized blocks we need to provide reliable reorg detection while fetching as few blocks as
100
114
  // possible. Finalized blocks cannot be reorged by definition, so we can skip most of them. We do need the very
101
115
  // last finalized block however in order to guarantee that we will eventually find a block in which our local
102
116
  // store matches the source.
103
117
  // If the last finalized block is behind our local tip, there is nothing to skip.
104
- nextBlockNumber = Math.max(sourceTips.finalized.number, nextBlockNumber);
118
+ nextBlockNumber = Math.max(sourceTips.finalized.block.number, nextBlockNumber);
119
+ // If the next checkpoint to emit is behind the finalized tip then skip forward
120
+ nextCheckpointToEmit = CheckpointNumber(Math.max(nextCheckpointToEmit, sourceTips.finalized.checkpoint.number));
121
+ }
122
+
123
+ // Loop 1: Emit checkpoint events for checkpoints whose blocks are already in local storage.
124
+ // This handles the case where blocks were synced as uncheckpointed and later became checkpointed.
125
+ // The guard `lastBlockInCheckpoint.number > localTips.proposed.number` ensures we don't emit
126
+ // checkpoints for blocks we don't have (e.g., when startingBlock skips earlier blocks).
127
+ // Since only one checkpoint can ever be uncheckpointed, this loop should iterate at most once.
128
+ if (!this.opts.ignoreCheckpoints) {
129
+ let loop1Iterations = 0;
130
+ while (nextCheckpointToEmit <= sourceTips.checkpointed.checkpoint.number) {
131
+ const checkpoints = await this.l2BlockSource.getCheckpoints(nextCheckpointToEmit, 1);
132
+ if (checkpoints.length === 0) {
133
+ break;
134
+ }
135
+ const lastBlockInCheckpoint = checkpoints[0].checkpoint.blocks.at(-1)!;
136
+ // If this checkpoint has blocks we haven't seen yet, stop - they need to be fetched first
137
+ if (lastBlockInCheckpoint.number > localTips.proposed.number) {
138
+ break;
139
+ }
140
+ loop1Iterations++;
141
+ if (loop1Iterations > 1) {
142
+ this.log.warn(
143
+ `Emitting multiple checkpoints (${loop1Iterations}) for already-local blocks. ` +
144
+ `Next checkpoint: ${nextCheckpointToEmit}, source checkpointed: ${sourceTips.checkpointed.checkpoint.number}`,
145
+ );
146
+ }
147
+ const lastBlockHash = await lastBlockInCheckpoint.hash();
148
+ await this.emitEvent({
149
+ type: 'chain-checkpointed',
150
+ checkpoint: checkpoints[0],
151
+ block: makeL2BlockId(lastBlockInCheckpoint.number, lastBlockHash.toString()),
152
+ });
153
+ nextCheckpointToEmit = CheckpointNumber(nextCheckpointToEmit + 1);
154
+ }
155
+ }
156
+
157
+ // Loop 2: Fetch new checkpointed blocks. For each checkpoint, emit all blocks
158
+ // from that checkpoint that we need, then emit the checkpoint event.
159
+ // We prefetch multiple checkpoints, then process them one by one.
160
+ let prefetchedCheckpoints: PublishedCheckpoint[] = [];
161
+ let prefetchIdx = 0;
162
+ let nextCheckpointNumber: CheckpointNumber | undefined;
163
+
164
+ // Find the starting checkpoint number
165
+ if (nextBlockNumber <= sourceTips.checkpointed.block.number) {
166
+ const blocks = await this.l2BlockSource.getCheckpointedBlocks(BlockNumber(nextBlockNumber), 1);
167
+ if (blocks.length > 0) {
168
+ nextCheckpointNumber = blocks[0].checkpointNumber;
169
+ }
170
+ }
171
+
172
+ while (nextBlockNumber <= sourceTips.checkpointed.block.number && nextCheckpointNumber !== undefined) {
173
+ // Refill the prefetch buffer when exhausted
174
+ if (prefetchIdx >= prefetchedCheckpoints.length) {
175
+ const prefetchLimit = this.opts.checkpointPrefetchLimit ?? CHECKPOINT_PREFETCH_LIMIT;
176
+ prefetchedCheckpoints = await this.l2BlockSource.getCheckpoints(nextCheckpointNumber, prefetchLimit);
177
+ prefetchIdx = 0;
178
+ if (prefetchedCheckpoints.length === 0) {
179
+ break;
180
+ }
181
+ }
182
+
183
+ const checkpoint = prefetchedCheckpoints[prefetchIdx]!;
184
+
185
+ // Get all blocks from this checkpoint that we need, respecting batchSize
186
+ const limit = Math.min(this.opts.batchSize ?? 50, sourceTips.checkpointed.block.number - nextBlockNumber + 1);
187
+ const blocksForCheckpoint = checkpoint.checkpoint.blocks
188
+ .filter(b => b.number >= nextBlockNumber)
189
+ .slice(0, limit);
190
+ if (blocksForCheckpoint.length === 0) {
191
+ break;
192
+ }
193
+ await this.emitEvent({ type: 'blocks-added', blocks: blocksForCheckpoint });
194
+ nextBlockNumber = blocksForCheckpoint.at(-1)!.number + 1;
195
+
196
+ // If we've reached the end of this checkpoint, emit the checkpoint event and move to next
197
+ const lastBlockInCheckpoint = checkpoint.checkpoint.blocks.at(-1)!;
198
+ if (nextBlockNumber > lastBlockInCheckpoint.number) {
199
+ if (!this.opts.ignoreCheckpoints) {
200
+ const lastBlockHash = await lastBlockInCheckpoint.hash();
201
+ await this.emitEvent({
202
+ type: 'chain-checkpointed',
203
+ checkpoint,
204
+ block: makeL2BlockId(lastBlockInCheckpoint.number, lastBlockHash.toString()),
205
+ });
206
+ }
207
+ prefetchIdx++;
208
+ nextCheckpointNumber = CheckpointNumber(nextCheckpointNumber + 1);
209
+ }
105
210
  }
106
211
 
107
- // Request new blocks from the source.
108
- while (nextBlockNumber <= sourceTips.latest.number) {
109
- const limit = Math.min(this.opts.batchSize ?? 50, sourceTips.latest.number - nextBlockNumber + 1);
110
- this.log.trace(`Requesting blocks from ${nextBlockNumber} limit ${limit} proven=${this.opts.proven}`);
111
- const blocks = await this.l2BlockSource.getPublishedBlocks(nextBlockNumber, limit, this.opts.proven);
212
+ // Loop 3: Fetch any remaining uncheckpointed (proposed) blocks.
213
+ while (nextBlockNumber <= sourceTips.proposed.number) {
214
+ const limit = Math.min(this.opts.batchSize ?? 50, sourceTips.proposed.number - nextBlockNumber + 1);
215
+ this.log.trace(`Requesting blocks from ${nextBlockNumber} limit ${limit}`);
216
+ const blocks = await this.l2BlockSource.getBlocks(BlockNumber(nextBlockNumber), BlockNumber(limit));
112
217
  if (blocks.length === 0) {
113
218
  break;
114
219
  }
115
220
  await this.emitEvent({ type: 'blocks-added', blocks });
116
- nextBlockNumber = blocks.at(-1)!.block.number + 1;
221
+ nextBlockNumber = blocks.at(-1)!.number + 1;
117
222
  }
118
223
 
119
224
  // Update the proven and finalized tips.
120
- if (localTips.proven !== undefined && sourceTips.proven.number !== localTips.proven.number) {
225
+ if (localTips.proven !== undefined && sourceTips.proven.block.number !== localTips.proven.block.number) {
121
226
  await this.emitEvent({
122
227
  type: 'chain-proven',
123
- block: sourceTips.proven,
228
+ block: sourceTips.proven.block,
124
229
  });
125
230
  }
126
- if (localTips.finalized !== undefined && sourceTips.finalized.number !== localTips.finalized.number) {
127
- await this.emitEvent({ type: 'chain-finalized', block: sourceTips.finalized });
231
+ if (localTips.finalized !== undefined && sourceTips.finalized.block.number !== localTips.finalized.block.number) {
232
+ await this.emitEvent({ type: 'chain-finalized', block: sourceTips.finalized.block });
128
233
  }
129
234
  } catch (err: any) {
130
235
  if (err.name === 'AbortError') {
@@ -139,7 +244,7 @@ export class L2BlockStream {
139
244
  * @param blockNumber - The block number to test.
140
245
  * @param args - A cache of data already requested from source, to avoid re-requesting it.
141
246
  */
142
- private async areBlockHashesEqualAt(blockNumber: number, args: { sourceCache: BlockHashCache }) {
247
+ private async areBlockHashesEqualAt(blockNumber: BlockNumber, args: { sourceCache: BlockHashCache }) {
143
248
  if (blockNumber === 0) {
144
249
  return true;
145
250
  }
@@ -163,7 +268,7 @@ export class L2BlockStream {
163
268
  return localBlockHash === sourceBlockHash;
164
269
  }
165
270
 
166
- private getBlockHashFromSource(blockNumber: number) {
271
+ private getBlockHashFromSource(blockNumber: BlockNumber) {
167
272
  return this.l2BlockSource
168
273
  .getBlockHeader(blockNumber)
169
274
  .then(h => h?.hash())
@@ -172,7 +277,7 @@ export class L2BlockStream {
172
277
 
173
278
  private async emitEvent(event: L2BlockStreamEvent) {
174
279
  this.log.debug(
175
- `Emitting ${event.type} (${event.type === 'blocks-added' ? event.blocks.length : event.block.number})`,
280
+ `Emitting ${event.type} (${event.type === 'blocks-added' ? event.blocks.length : event.type === 'chain-checkpointed' ? event.checkpoint.checkpoint.number : event.block.number})`,
176
281
  );
177
282
  await this.handler.handleBlockStreamEvent(event);
178
283
  if (!this.isRunning() && !this.isSyncing) {
@@ -1,75 +1,84 @@
1
- import type { L2Block } from '../l2_block.js';
2
- import type { L2BlockId, L2BlockTag, L2Tips } from '../l2_block_source.js';
3
- import type { L2BlockStreamEvent, L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider } from './interfaces.js';
1
+ import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
2
+
3
+ import type { PublishedCheckpoint } from '../../checkpoint/published_checkpoint.js';
4
+ import type { L2BlockTag } from '../l2_block_source.js';
5
+ import { L2TipsStoreBase } from './l2_tips_store_base.js';
4
6
 
5
7
  /**
6
- * Stores currently synced L2 tips and unfinalized block hashes.
7
- * @dev tests in kv-store/src/stores/l2_tips_memory_store.test.ts
8
+ * In-memory implementation of L2 tips store. Useful for testing and lightweight clients.
9
+ * @dev Tests in kv-store/src/stores/l2_tips_memory_store.test.ts
8
10
  */
9
- export class L2TipsMemoryStore implements L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider {
10
- protected readonly l2TipsStore: Map<L2BlockTag, number> = new Map();
11
- protected readonly l2BlockHashesStore: Map<number, string> = new Map();
11
+ export class L2TipsMemoryStore extends L2TipsStoreBase {
12
+ private readonly tips = new Map<L2BlockTag, BlockNumber>();
13
+ private readonly blockHashes = new Map<number, string>();
14
+ private readonly blockToCheckpoint = new Map<number, CheckpointNumber>();
15
+ private readonly checkpoints = new Map<number, PublishedCheckpoint>();
12
16
 
13
- public getL2BlockHash(number: number): Promise<string | undefined> {
14
- return Promise.resolve(this.l2BlockHashesStore.get(number));
17
+ protected getTip(tag: L2BlockTag): Promise<BlockNumber | undefined> {
18
+ return Promise.resolve(this.tips.get(tag));
15
19
  }
16
20
 
17
- public getL2Tips(): Promise<L2Tips> {
18
- return Promise.resolve({
19
- latest: this.getL2Tip('latest'),
20
- finalized: this.getL2Tip('finalized'),
21
- proven: this.getL2Tip('proven'),
22
- });
21
+ protected setTip(tag: L2BlockTag, blockNumber: BlockNumber): Promise<void> {
22
+ this.tips.set(tag, blockNumber);
23
+ return Promise.resolve();
23
24
  }
24
25
 
25
- private getL2Tip(tag: L2BlockTag): L2BlockId {
26
- const blockNumber = this.l2TipsStore.get(tag);
27
- if (blockNumber === undefined || blockNumber === 0) {
28
- return { number: 0, hash: undefined };
29
- }
30
- const blockHash = this.l2BlockHashesStore.get(blockNumber);
31
- if (!blockHash) {
32
- throw new Error(`Block hash not found for block number ${blockNumber}`);
26
+ protected getStoredBlockHash(blockNumber: BlockNumber): Promise<string | undefined> {
27
+ return Promise.resolve(this.blockHashes.get(blockNumber));
28
+ }
29
+
30
+ protected setBlockHash(blockNumber: BlockNumber, hash: string): Promise<void> {
31
+ this.blockHashes.set(blockNumber, hash);
32
+ return Promise.resolve();
33
+ }
34
+
35
+ protected deleteBlockHashesBefore(blockNumber: BlockNumber): Promise<void> {
36
+ for (const key of this.blockHashes.keys()) {
37
+ if (key < blockNumber) {
38
+ this.blockHashes.delete(key);
39
+ }
33
40
  }
41
+ return Promise.resolve();
42
+ }
34
43
 
35
- return { number: blockNumber, hash: blockHash };
44
+ protected getCheckpointNumberForBlock(blockNumber: BlockNumber): Promise<CheckpointNumber | undefined> {
45
+ return Promise.resolve(this.blockToCheckpoint.get(blockNumber));
36
46
  }
37
47
 
38
- public async handleBlockStreamEvent(event: L2BlockStreamEvent): Promise<void> {
39
- switch (event.type) {
40
- case 'blocks-added': {
41
- const blocks = event.blocks.map(b => b.block);
42
- for (const block of blocks) {
43
- this.l2BlockHashesStore.set(block.number, await this.computeBlockHash(block));
44
- }
45
- this.l2TipsStore.set('latest', blocks.at(-1)!.number);
46
- break;
48
+ protected setCheckpointNumberForBlock(blockNumber: BlockNumber, checkpointNumber: CheckpointNumber): Promise<void> {
49
+ this.blockToCheckpoint.set(blockNumber, checkpointNumber);
50
+ return Promise.resolve();
51
+ }
52
+
53
+ protected deleteBlockToCheckpointBefore(blockNumber: BlockNumber): Promise<void> {
54
+ for (const key of this.blockToCheckpoint.keys()) {
55
+ if (key < blockNumber) {
56
+ this.blockToCheckpoint.delete(key);
47
57
  }
48
- case 'chain-pruned':
49
- this.saveTag('latest', event.block);
50
- break;
51
- case 'chain-proven':
52
- this.saveTag('proven', event.block);
53
- break;
54
- case 'chain-finalized':
55
- this.saveTag('finalized', event.block);
56
- for (const key of this.l2BlockHashesStore.keys()) {
57
- if (key < event.block.number) {
58
- this.l2BlockHashesStore.delete(key);
59
- }
60
- }
61
- break;
62
58
  }
59
+ return Promise.resolve();
60
+ }
61
+
62
+ protected getCheckpoint(checkpointNumber: CheckpointNumber): Promise<PublishedCheckpoint | undefined> {
63
+ return Promise.resolve(this.checkpoints.get(checkpointNumber));
63
64
  }
64
65
 
65
- protected saveTag(name: L2BlockTag, block: L2BlockId) {
66
- this.l2TipsStore.set(name, block.number);
67
- if (block.hash) {
68
- this.l2BlockHashesStore.set(block.number, block.hash);
66
+ protected saveCheckpointData(checkpoint: PublishedCheckpoint): Promise<void> {
67
+ this.checkpoints.set(checkpoint.checkpoint.number, checkpoint);
68
+ return Promise.resolve();
69
+ }
70
+
71
+ protected deleteCheckpointsBefore(checkpointNumber: CheckpointNumber): Promise<void> {
72
+ for (const key of this.checkpoints.keys()) {
73
+ if (key < checkpointNumber) {
74
+ this.checkpoints.delete(key);
75
+ }
69
76
  }
77
+ return Promise.resolve();
70
78
  }
71
79
 
72
- protected computeBlockHash(block: L2Block) {
73
- return block.hash().then(hash => hash.toString());
80
+ protected runInTransaction<T>(fn: () => Promise<T>): Promise<T> {
81
+ // Memory store doesn't need transactions - just execute immediately
82
+ return fn();
74
83
  }
75
84
  }
@@ -0,0 +1,226 @@
1
+ import { GENESIS_BLOCK_HEADER_HASH } from '@aztec/constants';
2
+ import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
3
+
4
+ import type { PublishedCheckpoint } from '../../checkpoint/published_checkpoint.js';
5
+ import type { L2Block } from '../l2_block.js';
6
+ import {
7
+ type CheckpointId,
8
+ GENESIS_CHECKPOINT_HEADER_HASH,
9
+ type L2BlockId,
10
+ type L2BlockTag,
11
+ type L2Tips,
12
+ } from '../l2_block_source.js';
13
+ import type { L2BlockStreamEvent, L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider } from './interfaces.js';
14
+
15
+ /**
16
+ * Abstract base class for L2 tips stores. Provides common event handling logic
17
+ * while delegating storage operations to subclasses.
18
+ */
19
+ export abstract class L2TipsStoreBase implements L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider {
20
+ // Abstract storage primitives - subclasses implement these based on their backing store
21
+
22
+ /** Gets the block number for a given tag. */
23
+ protected abstract getTip(tag: L2BlockTag): Promise<BlockNumber | undefined>;
24
+
25
+ /** Sets the block number for a given tag. */
26
+ protected abstract setTip(tag: L2BlockTag, blockNumber: BlockNumber): Promise<void>;
27
+
28
+ /** Gets the block hash for a given block number. */
29
+ protected abstract getStoredBlockHash(blockNumber: BlockNumber): Promise<string | undefined>;
30
+
31
+ /** Sets the block hash for a given block number. */
32
+ protected abstract setBlockHash(blockNumber: BlockNumber, hash: string): Promise<void>;
33
+
34
+ /** Deletes all block hashes for blocks before the given block number. */
35
+ protected abstract deleteBlockHashesBefore(blockNumber: BlockNumber): Promise<void>;
36
+
37
+ /** Gets the checkpoint number for a given block number. */
38
+ protected abstract getCheckpointNumberForBlock(blockNumber: BlockNumber): Promise<CheckpointNumber | undefined>;
39
+
40
+ /** Sets the checkpoint number for a given block number. */
41
+ protected abstract setCheckpointNumberForBlock(
42
+ blockNumber: BlockNumber,
43
+ checkpointNumber: CheckpointNumber,
44
+ ): Promise<void>;
45
+
46
+ /** Deletes all block-to-checkpoint mappings for blocks before the given block number. */
47
+ protected abstract deleteBlockToCheckpointBefore(blockNumber: BlockNumber): Promise<void>;
48
+
49
+ /** Gets a checkpoint by its number. */
50
+ protected abstract getCheckpoint(checkpointNumber: CheckpointNumber): Promise<PublishedCheckpoint | undefined>;
51
+
52
+ /** Saves a checkpoint. */
53
+ protected abstract saveCheckpointData(checkpoint: PublishedCheckpoint): Promise<void>;
54
+
55
+ /** Deletes all checkpoints before the given checkpoint number. */
56
+ protected abstract deleteCheckpointsBefore(checkpointNumber: CheckpointNumber): Promise<void>;
57
+
58
+ /** Runs the given function in a transaction. Memory stores can just execute immediately. */
59
+ protected abstract runInTransaction<T>(fn: () => Promise<T>): Promise<T>;
60
+
61
+ // Public interface implementation
62
+
63
+ public getL2BlockHash(number: BlockNumber): Promise<string | undefined> {
64
+ return this.getStoredBlockHash(number);
65
+ }
66
+
67
+ public getL2Tips(): Promise<L2Tips> {
68
+ return this.runInTransaction(async () => {
69
+ const [proposedBlockId, finalizedBlockId, provenBlockId, checkpointedBlockId] = await Promise.all([
70
+ this.getBlockId('proposed'),
71
+ this.getBlockId('finalized'),
72
+ this.getBlockId('proven'),
73
+ this.getBlockId('checkpointed'),
74
+ ]);
75
+
76
+ const [finalizedCheckpointId, provenCheckpointId, checkpointedCheckpointId] = await Promise.all([
77
+ this.getCheckpointId('finalized'),
78
+ this.getCheckpointId('proven'),
79
+ this.getCheckpointId('checkpointed'),
80
+ ]);
81
+
82
+ return {
83
+ proposed: proposedBlockId,
84
+ finalized: { block: finalizedBlockId, checkpoint: finalizedCheckpointId },
85
+ proven: { block: provenBlockId, checkpoint: provenCheckpointId },
86
+ checkpointed: { block: checkpointedBlockId, checkpoint: checkpointedCheckpointId },
87
+ };
88
+ });
89
+ }
90
+
91
+ public async handleBlockStreamEvent(event: L2BlockStreamEvent): Promise<void> {
92
+ switch (event.type) {
93
+ case 'blocks-added':
94
+ await this.handleBlocksAdded(event);
95
+ break;
96
+ case 'chain-checkpointed':
97
+ await this.handleChainCheckpointed(event);
98
+ break;
99
+ case 'chain-pruned':
100
+ await this.handleChainPruned(event);
101
+ break;
102
+ case 'chain-proven':
103
+ await this.handleChainProven(event);
104
+ break;
105
+ case 'chain-finalized':
106
+ await this.handleChainFinalized(event);
107
+ break;
108
+ }
109
+ }
110
+
111
+ // Protected helper that subclasses can override for block hash computation
112
+ protected computeBlockHash(block: L2Block): Promise<string> {
113
+ return block.hash().then(hash => hash.toString());
114
+ }
115
+
116
+ // Private implementation
117
+
118
+ private async getBlockId(tag: L2BlockTag): Promise<L2BlockId> {
119
+ const blockNumber = await this.getTip(tag);
120
+ if (blockNumber === undefined || blockNumber === 0) {
121
+ return { number: BlockNumber.ZERO, hash: GENESIS_BLOCK_HEADER_HASH.toString() };
122
+ }
123
+ const blockHash = await this.getStoredBlockHash(blockNumber);
124
+ if (!blockHash) {
125
+ throw new Error(`Block hash not found for block number ${blockNumber}`);
126
+ }
127
+ return { number: blockNumber, hash: blockHash };
128
+ }
129
+
130
+ private async getCheckpointId(tag: L2BlockTag): Promise<CheckpointId> {
131
+ const blockNumber = await this.getTip(tag);
132
+ if (blockNumber === undefined || blockNumber === 0) {
133
+ return { number: CheckpointNumber.ZERO, hash: GENESIS_CHECKPOINT_HEADER_HASH.toString() };
134
+ }
135
+ const checkpointNumber = await this.getCheckpointNumberForBlock(blockNumber);
136
+ if (checkpointNumber === undefined) {
137
+ // No checkpoint associated with this block yet
138
+ return { number: CheckpointNumber.ZERO, hash: GENESIS_CHECKPOINT_HEADER_HASH.toString() };
139
+ }
140
+ const checkpoint = await this.getCheckpoint(checkpointNumber);
141
+ if (!checkpoint) {
142
+ throw new Error(`Checkpoint not found for checkpoint number ${checkpointNumber}`);
143
+ }
144
+ return { number: checkpointNumber, hash: checkpoint.checkpoint.hash().toString() };
145
+ }
146
+
147
+ private async handleBlocksAdded(event: L2BlockStreamEvent): Promise<void> {
148
+ if (event.type !== 'blocks-added') {
149
+ return;
150
+ }
151
+ await this.runInTransaction(async () => {
152
+ const blocks = event.blocks;
153
+ for (const block of blocks) {
154
+ await this.setBlockHash(block.number, await this.computeBlockHash(block));
155
+ }
156
+ await this.setTip('proposed', blocks.at(-1)!.number);
157
+ });
158
+ }
159
+
160
+ private async handleChainCheckpointed(event: L2BlockStreamEvent): Promise<void> {
161
+ if (event.type !== 'chain-checkpointed') {
162
+ return;
163
+ }
164
+ await this.runInTransaction(async () => {
165
+ await this.saveTag('checkpointed', event.block);
166
+ await this.saveCheckpoint(event.checkpoint);
167
+ });
168
+ }
169
+
170
+ private async handleChainPruned(event: L2BlockStreamEvent): Promise<void> {
171
+ if (event.type !== 'chain-pruned') {
172
+ return;
173
+ }
174
+ await this.runInTransaction(async () => {
175
+ await this.saveTag('proposed', event.block);
176
+ await this.saveTag('checkpointed', event.block);
177
+ const storeProven = await this.getBlockId('proven');
178
+ if (storeProven.number > event.block.number) {
179
+ await this.saveTag('proven', event.block);
180
+ }
181
+ });
182
+ }
183
+
184
+ private async handleChainProven(event: L2BlockStreamEvent): Promise<void> {
185
+ if (event.type !== 'chain-proven') {
186
+ return;
187
+ }
188
+ await this.runInTransaction(async () => {
189
+ await this.saveTag('proven', event.block);
190
+ });
191
+ }
192
+
193
+ private async handleChainFinalized(event: L2BlockStreamEvent): Promise<void> {
194
+ if (event.type !== 'chain-finalized') {
195
+ return;
196
+ }
197
+ await this.runInTransaction(async () => {
198
+ await this.saveTag('finalized', event.block);
199
+ const finalizedCheckpointNumber = await this.getCheckpointNumberForBlock(event.block.number);
200
+
201
+ await this.deleteBlockHashesBefore(event.block.number);
202
+ await this.deleteBlockToCheckpointBefore(event.block.number);
203
+
204
+ if (finalizedCheckpointNumber !== undefined) {
205
+ await this.deleteCheckpointsBefore(finalizedCheckpointNumber);
206
+ }
207
+ });
208
+ }
209
+
210
+ private async saveTag(name: L2BlockTag, block: L2BlockId): Promise<void> {
211
+ await this.setTip(name, block.number);
212
+ if (block.hash) {
213
+ await this.setBlockHash(block.number, block.hash);
214
+ }
215
+ }
216
+
217
+ private async saveCheckpoint(publishedCheckpoint: PublishedCheckpoint): Promise<void> {
218
+ const checkpoint = publishedCheckpoint.checkpoint;
219
+ const lastBlock = checkpoint.blocks.at(-1)!;
220
+ // Only store the mapping for the last block since tips only point to checkpoint boundaries
221
+ await Promise.all([
222
+ this.setCheckpointNumberForBlock(lastBlock.number, checkpoint.number),
223
+ this.saveCheckpointData(publishedCheckpoint),
224
+ ]);
225
+ }
226
+ }
@@ -1,4 +1,4 @@
1
- import type { ViemCommitteeAttestations } from '@aztec/ethereum';
1
+ import type { ViemCommitteeAttestations } from '@aztec/ethereum/contracts';
2
2
  import { hexToBuffer } from '@aztec/foundation/string';
3
3
 
4
4
  import { encodeAbiParameters, parseAbiParameters } from 'viem';
@@ -1,4 +1,4 @@
1
- import type { ViemCommitteeAttestation, ViemCommitteeAttestations } from '@aztec/ethereum';
1
+ import type { ViemCommitteeAttestation, ViemCommitteeAttestations } from '@aztec/ethereum/contracts';
2
2
  import { EthAddress } from '@aztec/foundation/eth-address';
3
3
  import { Signature } from '@aztec/foundation/eth-signature';
4
4
  import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';