@aztec/stdlib 0.0.1-commit.d3ec352c → 0.0.1-commit.e61ad554

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 (1030) 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 +418 -369
  39. package/dest/avm/avm.d.ts.map +1 -1
  40. package/dest/avm/avm.js +87 -25
  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 +11 -11
  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 +299 -299
  48. package/dest/avm/contract_storage_read.d.ts +14 -2
  49. package/dest/avm/contract_storage_read.d.ts.map +1 -1
  50. package/dest/avm/contract_storage_read.js +1 -1
  51. package/dest/avm/contract_storage_update_request.d.ts +14 -2
  52. package/dest/avm/contract_storage_update_request.d.ts.map +1 -1
  53. package/dest/avm/contract_storage_update_request.js +1 -1
  54. package/dest/avm/message_pack.d.ts +1 -1
  55. package/dest/avm/message_pack.d.ts.map +1 -1
  56. package/dest/avm/message_pack.js +2 -1
  57. package/dest/avm/public_call_stack_item_compressed.d.ts +4 -2
  58. package/dest/avm/public_call_stack_item_compressed.d.ts.map +1 -1
  59. package/dest/avm/public_call_stack_item_compressed.js +1 -1
  60. package/dest/avm/public_data_read.d.ts +11 -2
  61. package/dest/avm/public_data_read.d.ts.map +1 -1
  62. package/dest/avm/public_data_read.js +1 -1
  63. package/dest/avm/public_data_update_request.d.ts +11 -2
  64. package/dest/avm/public_data_update_request.d.ts.map +1 -1
  65. package/dest/avm/public_data_update_request.js +4 -2
  66. package/dest/avm/public_data_write.d.ts +8 -2
  67. package/dest/avm/public_data_write.d.ts.map +1 -1
  68. package/dest/avm/public_data_write.js +1 -1
  69. package/dest/avm/public_inner_call_request.d.ts +5 -2
  70. package/dest/avm/public_inner_call_request.d.ts.map +1 -1
  71. package/dest/avm/public_inner_call_request.js +3 -1
  72. package/dest/avm/revert_code.d.ts +5 -5
  73. package/dest/avm/revert_code.d.ts.map +1 -1
  74. package/dest/avm/revert_code.js +4 -2
  75. package/dest/aztec-address/index.d.ts +3 -2
  76. package/dest/aztec-address/index.d.ts.map +1 -1
  77. package/dest/aztec-address/index.js +5 -2
  78. package/dest/block/attestation_info.d.ts +5 -5
  79. package/dest/block/attestation_info.d.ts.map +1 -1
  80. package/dest/block/attestation_info.js +5 -5
  81. package/dest/block/block_hash.d.ts +10 -3
  82. package/dest/block/block_hash.d.ts.map +1 -1
  83. package/dest/block/block_hash.js +16 -1
  84. package/dest/block/block_parameter.d.ts +4 -3
  85. package/dest/block/block_parameter.d.ts.map +1 -1
  86. package/dest/block/block_parameter.js +2 -0
  87. package/dest/block/body.d.ts +1 -1
  88. package/dest/block/body.d.ts.map +1 -1
  89. package/dest/block/body.js +5 -2
  90. package/dest/block/checkpointed_l2_block.d.ts +150 -0
  91. package/dest/block/checkpointed_l2_block.d.ts.map +1 -0
  92. package/dest/block/checkpointed_l2_block.js +46 -0
  93. package/dest/block/in_block.d.ts +23 -7
  94. package/dest/block/in_block.d.ts.map +1 -1
  95. package/dest/block/in_block.js +14 -5
  96. package/dest/block/index.d.ts +2 -4
  97. package/dest/block/index.d.ts.map +1 -1
  98. package/dest/block/index.js +1 -3
  99. package/dest/block/l2_block.d.ts +57 -58
  100. package/dest/block/l2_block.d.ts.map +1 -1
  101. package/dest/block/l2_block.js +68 -109
  102. package/dest/block/l2_block_info.d.ts +2 -2
  103. package/dest/block/l2_block_info.d.ts.map +1 -1
  104. package/dest/block/l2_block_info.js +1 -1
  105. package/dest/block/l2_block_source.d.ts +343 -90
  106. package/dest/block/l2_block_source.d.ts.map +1 -1
  107. package/dest/block/l2_block_source.js +25 -6
  108. package/dest/block/l2_block_stream/index.d.ts +2 -1
  109. package/dest/block/l2_block_stream/index.d.ts.map +1 -1
  110. package/dest/block/l2_block_stream/index.js +1 -0
  111. package/dest/block/l2_block_stream/interfaces.d.ts +15 -5
  112. package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
  113. package/dest/block/l2_block_stream/l2_block_stream.d.ts +13 -3
  114. package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
  115. package/dest/block/l2_block_stream/l2_block_stream.js +115 -32
  116. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts +24 -16
  117. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts.map +1 -1
  118. package/dest/block/l2_block_stream/l2_tips_memory_store.js +55 -61
  119. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +49 -0
  120. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -0
  121. package/dest/block/l2_block_stream/l2_tips_store_base.js +179 -0
  122. package/dest/block/proposal/attestations_and_signers.d.ts +2 -2
  123. package/dest/block/proposal/attestations_and_signers.d.ts.map +1 -1
  124. package/dest/block/proposal/committee_attestation.d.ts +2 -2
  125. package/dest/block/proposal/committee_attestation.d.ts.map +1 -1
  126. package/dest/block/test/l2_tips_store_test_suite.d.ts +1 -1
  127. package/dest/block/test/l2_tips_store_test_suite.d.ts.map +1 -1
  128. package/dest/block/test/l2_tips_store_test_suite.js +479 -42
  129. package/dest/block/validate_block_result.d.ts +24 -24
  130. package/dest/block/validate_block_result.d.ts.map +1 -1
  131. package/dest/block/validate_block_result.js +18 -17
  132. package/dest/checkpoint/checkpoint.d.ts +54 -15
  133. package/dest/checkpoint/checkpoint.d.ts.map +1 -1
  134. package/dest/checkpoint/checkpoint.js +60 -9
  135. package/dest/checkpoint/checkpoint_info.d.ts +38 -0
  136. package/dest/checkpoint/checkpoint_info.d.ts.map +1 -0
  137. package/dest/checkpoint/checkpoint_info.js +34 -0
  138. package/dest/checkpoint/index.d.ts +2 -1
  139. package/dest/checkpoint/index.d.ts.map +1 -1
  140. package/dest/checkpoint/index.js +1 -0
  141. package/dest/checkpoint/published_checkpoint.d.ts +39 -13
  142. package/dest/checkpoint/published_checkpoint.d.ts.map +1 -1
  143. package/dest/checkpoint/published_checkpoint.js +15 -4
  144. package/dest/config/node-rpc-config.js +1 -1
  145. package/dest/contract/artifact_hash.d.ts +2 -2
  146. package/dest/contract/artifact_hash.d.ts.map +1 -1
  147. package/dest/contract/artifact_hash.js +2 -2
  148. package/dest/contract/complete_address.d.ts +5 -2
  149. package/dest/contract/complete_address.d.ts.map +1 -1
  150. package/dest/contract/complete_address.js +1 -1
  151. package/dest/contract/contract_address.d.ts +2 -2
  152. package/dest/contract/contract_address.d.ts.map +1 -1
  153. package/dest/contract/contract_address.js +2 -2
  154. package/dest/contract/contract_class.d.ts +2 -2
  155. package/dest/contract/contract_class.d.ts.map +1 -1
  156. package/dest/contract/contract_class.js +1 -1
  157. package/dest/contract/contract_class_id.d.ts +2 -2
  158. package/dest/contract/contract_class_id.d.ts.map +1 -1
  159. package/dest/contract/contract_class_id.js +3 -3
  160. package/dest/contract/contract_deployment_data.d.ts +5 -5
  161. package/dest/contract/contract_instance.d.ts +2 -2
  162. package/dest/contract/contract_instance.d.ts.map +1 -1
  163. package/dest/contract/contract_instance.js +1 -1
  164. package/dest/contract/contract_instance_update.d.ts +2 -2
  165. package/dest/contract/contract_instance_update.d.ts.map +1 -1
  166. package/dest/contract/contract_instance_update.js +1 -1
  167. package/dest/contract/deployment_info.d.ts +2 -2
  168. package/dest/contract/deployment_info.d.ts.map +1 -1
  169. package/dest/contract/index.d.ts +1 -3
  170. package/dest/contract/index.d.ts.map +1 -1
  171. package/dest/contract/index.js +0 -2
  172. package/dest/contract/interfaces/contract_class.d.ts +19 -14
  173. package/dest/contract/interfaces/contract_class.d.ts.map +1 -1
  174. package/dest/contract/interfaces/contract_class.js +35 -18
  175. package/dest/contract/interfaces/contract_data_source.d.ts +2 -2
  176. package/dest/contract/interfaces/contract_data_source.d.ts.map +1 -1
  177. package/dest/contract/interfaces/contract_instance.d.ts +40 -31
  178. package/dest/contract/interfaces/contract_instance.d.ts.map +1 -1
  179. package/dest/contract/interfaces/contract_instance.js +30 -5
  180. package/dest/contract/interfaces/contract_instance_update.d.ts +7 -8
  181. package/dest/contract/interfaces/contract_instance_update.d.ts.map +1 -1
  182. package/dest/contract/interfaces/contract_instance_update.js +5 -5
  183. package/dest/contract/partial_address.d.ts +2 -2
  184. package/dest/contract/partial_address.d.ts.map +1 -1
  185. package/dest/contract/private_function.d.ts +2 -2
  186. package/dest/contract/private_function.d.ts.map +1 -1
  187. package/dest/contract/private_function.js +3 -3
  188. package/dest/contract/private_function_membership_proof.js +2 -2
  189. package/dest/contract/utility_function_membership_proof.js +1 -1
  190. package/dest/database-version/version_manager.d.ts +4 -2
  191. package/dest/database-version/version_manager.d.ts.map +1 -1
  192. package/dest/database-version/version_manager.js +3 -1
  193. package/dest/delayed_public_mutable/delayed_public_mutable_values.d.ts +3 -3
  194. package/dest/delayed_public_mutable/delayed_public_mutable_values.d.ts.map +1 -1
  195. package/dest/delayed_public_mutable/delayed_public_mutable_values.js +9 -12
  196. package/dest/delayed_public_mutable/delayed_public_mutable_values_with_hash.d.ts +2 -2
  197. package/dest/delayed_public_mutable/delayed_public_mutable_values_with_hash.d.ts.map +1 -1
  198. package/dest/delayed_public_mutable/delayed_public_mutable_values_with_hash.js +1 -1
  199. package/dest/delayed_public_mutable/scheduled_value_change.d.ts +2 -2
  200. package/dest/delayed_public_mutable/scheduled_value_change.d.ts.map +1 -1
  201. package/dest/delayed_public_mutable/scheduled_value_change.js +1 -1
  202. package/dest/deserialization/index.d.ts +11 -0
  203. package/dest/deserialization/index.d.ts.map +1 -0
  204. package/dest/deserialization/index.js +10 -0
  205. package/dest/epoch-helpers/index.d.ts +1 -1
  206. package/dest/epoch-helpers/index.d.ts.map +1 -1
  207. package/dest/epoch-helpers/index.js +4 -4
  208. package/dest/errors/proving_error.d.ts +2 -2
  209. package/dest/errors/proving_error.d.ts.map +1 -1
  210. package/dest/errors/simulation_error.d.ts +2 -2
  211. package/dest/errors/simulation_error.d.ts.map +1 -1
  212. package/dest/fees/transaction_fee.d.ts +2 -2
  213. package/dest/fees/transaction_fee.d.ts.map +1 -1
  214. package/dest/gas/gas.d.ts +2 -2
  215. package/dest/gas/gas.d.ts.map +1 -1
  216. package/dest/gas/gas.js +4 -2
  217. package/dest/gas/gas_fees.d.ts +2 -2
  218. package/dest/gas/gas_fees.d.ts.map +1 -1
  219. package/dest/gas/gas_fees.js +3 -1
  220. package/dest/gas/gas_settings.d.ts +2 -2
  221. package/dest/gas/gas_settings.d.ts.map +1 -1
  222. package/dest/gas/gas_settings.js +1 -1
  223. package/dest/hash/hash.d.ts +2 -10
  224. package/dest/hash/hash.d.ts.map +1 -1
  225. package/dest/hash/hash.js +3 -14
  226. package/dest/hash/map_slot.d.ts +2 -2
  227. package/dest/hash/map_slot.d.ts.map +1 -1
  228. package/dest/hash/map_slot.js +1 -1
  229. package/dest/interfaces/allowed_element.d.ts +8 -9
  230. package/dest/interfaces/allowed_element.d.ts.map +1 -1
  231. package/dest/interfaces/allowed_element.js +3 -3
  232. package/dest/interfaces/api_limit.d.ts +3 -1
  233. package/dest/interfaces/api_limit.d.ts.map +1 -1
  234. package/dest/interfaces/api_limit.js +2 -0
  235. package/dest/interfaces/archiver.d.ts +12 -7
  236. package/dest/interfaces/archiver.d.ts.map +1 -1
  237. package/dest/interfaces/archiver.js +25 -18
  238. package/dest/interfaces/aztec-node-admin.d.ts +96 -41
  239. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  240. package/dest/interfaces/aztec-node-admin.js +3 -3
  241. package/dest/interfaces/aztec-node.d.ts +74 -63
  242. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  243. package/dest/interfaces/aztec-node.js +15 -14
  244. package/dest/interfaces/block-builder.d.ts +17 -14
  245. package/dest/interfaces/block-builder.d.ts.map +1 -1
  246. package/dest/interfaces/block-builder.js +9 -1
  247. package/dest/interfaces/configs.d.ts +56 -27
  248. package/dest/interfaces/configs.d.ts.map +1 -1
  249. package/dest/interfaces/configs.js +12 -6
  250. package/dest/interfaces/epoch-prover.d.ts +2 -2
  251. package/dest/interfaces/epoch-prover.d.ts.map +1 -1
  252. package/dest/interfaces/get_logs_response.d.ts +20 -5
  253. package/dest/interfaces/get_logs_response.d.ts.map +1 -1
  254. package/dest/interfaces/get_logs_response.js +5 -4
  255. package/dest/interfaces/l2_logs_source.d.ts +19 -14
  256. package/dest/interfaces/l2_logs_source.d.ts.map +1 -1
  257. package/dest/interfaces/merkle_tree_operations.d.ts +3 -3
  258. package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
  259. package/dest/interfaces/p2p.d.ts +7 -9
  260. package/dest/interfaces/p2p.d.ts.map +1 -1
  261. package/dest/interfaces/p2p.js +3 -4
  262. package/dest/interfaces/prover-client.d.ts +14 -3
  263. package/dest/interfaces/prover-client.d.ts.map +1 -1
  264. package/dest/interfaces/prover-client.js +11 -4
  265. package/dest/interfaces/proving-job.d.ts +184 -184
  266. package/dest/interfaces/proving-job.d.ts.map +1 -1
  267. package/dest/interfaces/proving-job.js +1 -7
  268. package/dest/interfaces/public_state_source.d.ts +2 -2
  269. package/dest/interfaces/public_state_source.d.ts.map +1 -1
  270. package/dest/interfaces/server_circuit_prover.d.ts +4 -3
  271. package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
  272. package/dest/interfaces/slasher.d.ts +1 -1
  273. package/dest/interfaces/slasher.d.ts.map +1 -1
  274. package/dest/interfaces/slasher.js +3 -3
  275. package/dest/interfaces/tx_provider.d.ts +3 -3
  276. package/dest/interfaces/tx_provider.d.ts.map +1 -1
  277. package/dest/interfaces/validator.d.ts +115 -26
  278. package/dest/interfaces/validator.d.ts.map +1 -1
  279. package/dest/interfaces/validator.js +9 -7
  280. package/dest/interfaces/world_state.d.ts +17 -8
  281. package/dest/interfaces/world_state.d.ts.map +1 -1
  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 +11 -3
  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 +13 -1
  422. package/dest/logs/log_id.d.ts.map +1 -1
  423. package/dest/logs/log_id.js +15 -8
  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 +24 -33
  446. package/dest/logs/tx_scoped_l2_log.d.ts.map +1 -1
  447. package/dest/logs/tx_scoped_l2_log.js +37 -43
  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 +4 -15
  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 -7
  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 +41 -6
  478. package/dest/note/note_dao.d.ts.map +1 -1
  479. package/dest/note/note_dao.js +21 -12
  480. package/dest/note/notes_filter.d.ts +2 -2
  481. package/dest/note/notes_filter.d.ts.map +1 -1
  482. package/dest/p2p/attestation_utils.d.ts +3 -3
  483. package/dest/p2p/attestation_utils.d.ts.map +1 -1
  484. package/dest/p2p/attestation_utils.js +1 -1
  485. package/dest/p2p/block_proposal.d.ts +94 -22
  486. package/dest/p2p/block_proposal.d.ts.map +1 -1
  487. package/dest/p2p/block_proposal.js +142 -40
  488. package/dest/p2p/checkpoint_attestation.d.ts +81 -0
  489. package/dest/p2p/checkpoint_attestation.d.ts.map +1 -0
  490. package/dest/p2p/{block_attestation.js → checkpoint_attestation.js} +24 -20
  491. package/dest/p2p/checkpoint_proposal.d.ts +160 -0
  492. package/dest/p2p/checkpoint_proposal.d.ts.map +1 -0
  493. package/dest/p2p/checkpoint_proposal.js +229 -0
  494. package/dest/p2p/consensus_payload.d.ts +10 -10
  495. package/dest/p2p/consensus_payload.d.ts.map +1 -1
  496. package/dest/p2p/consensus_payload.js +4 -6
  497. package/dest/p2p/constants.d.ts +3 -0
  498. package/dest/p2p/constants.d.ts.map +1 -0
  499. package/dest/p2p/constants.js +2 -0
  500. package/dest/p2p/gossipable.d.ts +4 -3
  501. package/dest/p2p/gossipable.d.ts.map +1 -1
  502. package/dest/p2p/gossipable.js +16 -5
  503. package/dest/p2p/index.d.ts +5 -2
  504. package/dest/p2p/index.d.ts.map +1 -1
  505. package/dest/p2p/index.js +4 -1
  506. package/dest/p2p/message_validator.d.ts +18 -3
  507. package/dest/p2p/message_validator.d.ts.map +1 -1
  508. package/dest/p2p/message_validator.js +2 -1
  509. package/dest/p2p/signature_utils.d.ts +5 -3
  510. package/dest/p2p/signature_utils.d.ts.map +1 -1
  511. package/dest/p2p/signature_utils.js +5 -2
  512. package/dest/p2p/signed_txs.d.ts +42 -0
  513. package/dest/p2p/signed_txs.d.ts.map +1 -0
  514. package/dest/p2p/signed_txs.js +75 -0
  515. package/dest/p2p/topic_type.d.ts +3 -2
  516. package/dest/p2p/topic_type.d.ts.map +1 -1
  517. package/dest/p2p/topic_type.js +10 -3
  518. package/dest/parity/parity_base_private_inputs.d.ts +4 -2
  519. package/dest/parity/parity_base_private_inputs.d.ts.map +1 -1
  520. package/dest/parity/parity_base_private_inputs.js +1 -1
  521. package/dest/parity/parity_public_inputs.d.ts +5 -2
  522. package/dest/parity/parity_public_inputs.d.ts.map +1 -1
  523. package/dest/parity/parity_public_inputs.js +1 -1
  524. package/dest/parity/parity_root_private_inputs.d.ts +2 -1
  525. package/dest/parity/parity_root_private_inputs.d.ts.map +1 -1
  526. package/dest/proofs/chonk_proof.d.ts +2 -2
  527. package/dest/proofs/chonk_proof.d.ts.map +1 -1
  528. package/dest/proofs/chonk_proof.js +11 -6
  529. package/dest/proofs/proof.d.ts +5 -2
  530. package/dest/proofs/proof.d.ts.map +1 -1
  531. package/dest/proofs/proof.js +1 -1
  532. package/dest/proofs/proof_data.d.ts +13 -1
  533. package/dest/proofs/proof_data.d.ts.map +1 -1
  534. package/dest/proofs/proof_data.js +17 -0
  535. package/dest/proofs/recursive_proof.d.ts +11 -2
  536. package/dest/proofs/recursive_proof.d.ts.map +1 -1
  537. package/dest/proofs/recursive_proof.js +1 -1
  538. package/dest/rollup/avm_proof_data.d.ts +3 -5
  539. package/dest/rollup/avm_proof_data.d.ts.map +1 -1
  540. package/dest/rollup/avm_proof_data.js +1 -9
  541. package/dest/rollup/base_rollup_hints.d.ts +35 -2
  542. package/dest/rollup/base_rollup_hints.d.ts.map +1 -1
  543. package/dest/rollup/base_rollup_hints.js +1 -1
  544. package/dest/rollup/block_constant_data.d.ts +13 -2
  545. package/dest/rollup/block_constant_data.d.ts.map +1 -1
  546. package/dest/rollup/block_constant_data.js +1 -1
  547. package/dest/rollup/block_headers_hash.d.ts +2 -2
  548. package/dest/rollup/block_headers_hash.d.ts.map +1 -1
  549. package/dest/rollup/block_headers_hash.js +2 -2
  550. package/dest/rollup/block_merge_rollup_private_inputs.d.ts +4 -1
  551. package/dest/rollup/block_merge_rollup_private_inputs.d.ts.map +1 -1
  552. package/dest/rollup/block_rollup_public_inputs.d.ts +48 -12
  553. package/dest/rollup/block_rollup_public_inputs.d.ts.map +1 -1
  554. package/dest/rollup/block_rollup_public_inputs.js +9 -13
  555. package/dest/rollup/block_root_rollup_private_inputs.d.ts +65 -2
  556. package/dest/rollup/block_root_rollup_private_inputs.d.ts.map +1 -1
  557. package/dest/rollup/block_root_rollup_private_inputs.js +1 -1
  558. package/dest/rollup/checkpoint_constant_data.d.ts +12 -2
  559. package/dest/rollup/checkpoint_constant_data.d.ts.map +1 -1
  560. package/dest/rollup/checkpoint_constant_data.js +5 -2
  561. package/dest/rollup/checkpoint_header.d.ts +48 -14
  562. package/dest/rollup/checkpoint_header.d.ts.map +1 -1
  563. package/dest/rollup/checkpoint_header.js +55 -22
  564. package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts +4 -1
  565. package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts.map +1 -1
  566. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +42 -2
  567. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -1
  568. package/dest/rollup/checkpoint_rollup_public_inputs.js +11 -3
  569. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts +46 -4
  570. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts.map +1 -1
  571. package/dest/rollup/checkpoint_root_rollup_private_inputs.js +15 -3
  572. package/dest/rollup/epoch_constant_data.d.ts +17 -2
  573. package/dest/rollup/epoch_constant_data.d.ts.map +1 -1
  574. package/dest/rollup/epoch_constant_data.js +1 -1
  575. package/dest/rollup/public_chonk_verifier_private_inputs.d.ts +2 -2
  576. package/dest/rollup/public_chonk_verifier_private_inputs.d.ts.map +1 -1
  577. package/dest/rollup/public_chonk_verifier_private_inputs.js +1 -1
  578. package/dest/rollup/public_chonk_verifier_public_inputs.d.ts +2 -2
  579. package/dest/rollup/public_chonk_verifier_public_inputs.d.ts.map +1 -1
  580. package/dest/rollup/public_chonk_verifier_public_inputs.js +1 -1
  581. package/dest/rollup/public_tx_base_rollup_private_inputs.d.ts +1 -1
  582. package/dest/rollup/public_tx_base_rollup_private_inputs.d.ts.map +1 -1
  583. package/dest/rollup/public_tx_base_rollup_private_inputs.js +2 -2
  584. package/dest/rollup/root_rollup_private_inputs.d.ts +6 -1
  585. package/dest/rollup/root_rollup_private_inputs.d.ts.map +1 -1
  586. package/dest/rollup/root_rollup_public_inputs.d.ts +19 -4
  587. package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -1
  588. package/dest/rollup/root_rollup_public_inputs.js +10 -4
  589. package/dest/rollup/tree_snapshot_diff_hints.d.ts +25 -2
  590. package/dest/rollup/tree_snapshot_diff_hints.d.ts.map +1 -1
  591. package/dest/rollup/tree_snapshot_diff_hints.js +1 -1
  592. package/dest/rollup/tx_merge_rollup_private_inputs.d.ts +4 -1
  593. package/dest/rollup/tx_merge_rollup_private_inputs.d.ts.map +1 -1
  594. package/dest/rollup/tx_rollup_public_inputs.d.ts +30 -2
  595. package/dest/rollup/tx_rollup_public_inputs.d.ts.map +1 -1
  596. package/dest/rollup/tx_rollup_public_inputs.js +1 -1
  597. package/dest/schemas/schemas.d.ts +7 -4
  598. package/dest/schemas/schemas.d.ts.map +1 -1
  599. package/dest/schemas/schemas.js +2 -1
  600. package/dest/slashing/types.d.ts +4 -5
  601. package/dest/slashing/types.d.ts.map +1 -1
  602. package/dest/slashing/types.js +5 -5
  603. package/dest/snapshots/types.d.ts +1 -1
  604. package/dest/snapshots/types.d.ts.map +1 -1
  605. package/dest/snapshots/types.js +5 -5
  606. package/dest/stats/stats.d.ts +10 -6
  607. package/dest/stats/stats.d.ts.map +1 -1
  608. package/dest/tests/factories.d.ts +42 -12
  609. package/dest/tests/factories.d.ts.map +1 -1
  610. package/dest/tests/factories.js +98 -31
  611. package/dest/tests/jest.js +1 -1
  612. package/dest/tests/mocks.d.ts +82 -18
  613. package/dest/tests/mocks.d.ts.map +1 -1
  614. package/dest/tests/mocks.js +177 -54
  615. package/dest/trees/append_only_tree_snapshot.d.ts +14 -2
  616. package/dest/trees/append_only_tree_snapshot.d.ts.map +1 -1
  617. package/dest/trees/append_only_tree_snapshot.js +4 -2
  618. package/dest/trees/database_public_state_source.d.ts +2 -2
  619. package/dest/trees/database_public_state_source.d.ts.map +1 -1
  620. package/dest/trees/database_public_state_source.js +1 -1
  621. package/dest/trees/nullifier_leaf.d.ts +14 -2
  622. package/dest/trees/nullifier_leaf.d.ts.map +1 -1
  623. package/dest/trees/nullifier_leaf.js +1 -1
  624. package/dest/trees/nullifier_membership_witness.d.ts +11 -2
  625. package/dest/trees/nullifier_membership_witness.d.ts.map +1 -1
  626. package/dest/trees/nullifier_membership_witness.js +1 -1
  627. package/dest/trees/public_data_leaf.d.ts +17 -2
  628. package/dest/trees/public_data_leaf.d.ts.map +1 -1
  629. package/dest/trees/public_data_leaf.js +1 -1
  630. package/dest/trees/public_data_witness.d.ts +12 -2
  631. package/dest/trees/public_data_witness.d.ts.map +1 -1
  632. package/dest/trees/public_data_witness.js +1 -1
  633. package/dest/tx/block_header.d.ts +22 -9
  634. package/dest/tx/block_header.d.ts.map +1 -1
  635. package/dest/tx/block_header.js +15 -4
  636. package/dest/tx/call_context.d.ts +14 -2
  637. package/dest/tx/call_context.d.ts.map +1 -1
  638. package/dest/tx/call_context.js +3 -1
  639. package/dest/tx/capsule.d.ts +5 -2
  640. package/dest/tx/capsule.d.ts.map +1 -1
  641. package/dest/tx/capsule.js +1 -1
  642. package/dest/tx/execution_payload.d.ts +9 -1
  643. package/dest/tx/execution_payload.d.ts.map +1 -1
  644. package/dest/tx/function_data.d.ts +5 -3
  645. package/dest/tx/function_data.d.ts.map +1 -1
  646. package/dest/tx/function_data.js +1 -1
  647. package/dest/tx/global_variable_builder.d.ts +5 -3
  648. package/dest/tx/global_variable_builder.d.ts.map +1 -1
  649. package/dest/tx/global_variables.d.ts +15 -2
  650. package/dest/tx/global_variables.d.ts.map +1 -1
  651. package/dest/tx/global_variables.js +5 -3
  652. package/dest/tx/hashed_values.d.ts +8 -2
  653. package/dest/tx/hashed_values.d.ts.map +1 -1
  654. package/dest/tx/hashed_values.js +1 -1
  655. package/dest/tx/in_tx.d.ts +26 -0
  656. package/dest/tx/in_tx.d.ts.map +1 -0
  657. package/dest/tx/in_tx.js +14 -0
  658. package/dest/tx/index.d.ts +2 -2
  659. package/dest/tx/index.d.ts.map +1 -1
  660. package/dest/tx/index.js +1 -1
  661. package/dest/tx/indexed_tx_effect.d.ts +5 -4
  662. package/dest/tx/indexed_tx_effect.d.ts.map +1 -1
  663. package/dest/tx/indexed_tx_effect.js +3 -3
  664. package/dest/tx/offchain_effect.d.ts +2 -2
  665. package/dest/tx/offchain_effect.d.ts.map +1 -1
  666. package/dest/tx/offchain_effect.js +1 -1
  667. package/dest/tx/partial_state_reference.d.ts +5 -2
  668. package/dest/tx/partial_state_reference.d.ts.map +1 -1
  669. package/dest/tx/private_execution_result.d.ts +25 -8
  670. package/dest/tx/private_execution_result.d.ts.map +1 -1
  671. package/dest/tx/private_execution_result.js +6 -23
  672. package/dest/tx/private_tx_constant_data.d.ts +17 -2
  673. package/dest/tx/private_tx_constant_data.d.ts.map +1 -1
  674. package/dest/tx/private_tx_constant_data.js +1 -1
  675. package/dest/tx/processed_tx.d.ts +4 -3
  676. package/dest/tx/processed_tx.d.ts.map +1 -1
  677. package/dest/tx/processed_tx.js +4 -6
  678. package/dest/tx/profiling.d.ts +150 -27
  679. package/dest/tx/profiling.d.ts.map +1 -1
  680. package/dest/tx/profiling.js +45 -8
  681. package/dest/tx/protocol_contracts.d.ts +3 -3
  682. package/dest/tx/protocol_contracts.d.ts.map +1 -1
  683. package/dest/tx/protocol_contracts.js +1 -1
  684. package/dest/tx/public_call_request_with_calldata.d.ts +8 -2
  685. package/dest/tx/public_call_request_with_calldata.d.ts.map +1 -1
  686. package/dest/tx/public_call_request_with_calldata.js +4 -2
  687. package/dest/tx/public_simulation_output.d.ts +2 -2
  688. package/dest/tx/public_simulation_output.d.ts.map +1 -1
  689. package/dest/tx/public_simulation_output.js +1 -1
  690. package/dest/tx/simulated_tx.d.ts +1031 -7
  691. package/dest/tx/simulated_tx.d.ts.map +1 -1
  692. package/dest/tx/state_reference.d.ts +4 -2
  693. package/dest/tx/state_reference.d.ts.map +1 -1
  694. package/dest/tx/state_reference.js +3 -1
  695. package/dest/tx/tree_snapshots.d.ts +2 -2
  696. package/dest/tx/tree_snapshots.d.ts.map +1 -1
  697. package/dest/tx/tree_snapshots.js +3 -1
  698. package/dest/tx/tx.d.ts +34 -4
  699. package/dest/tx/tx.d.ts.map +1 -1
  700. package/dest/tx/tx.js +19 -7
  701. package/dest/tx/tx_constant_data.d.ts +2 -2
  702. package/dest/tx/tx_constant_data.d.ts.map +1 -1
  703. package/dest/tx/tx_constant_data.js +1 -1
  704. package/dest/tx/tx_context.d.ts +3 -2
  705. package/dest/tx/tx_context.d.ts.map +1 -1
  706. package/dest/tx/tx_context.js +1 -1
  707. package/dest/tx/tx_effect.d.ts +33 -7
  708. package/dest/tx/tx_effect.d.ts.map +1 -1
  709. package/dest/tx/tx_effect.js +8 -11
  710. package/dest/tx/tx_execution_request.d.ts +31 -2
  711. package/dest/tx/tx_execution_request.d.ts.map +1 -1
  712. package/dest/tx/tx_execution_request.js +7 -3
  713. package/dest/tx/tx_hash.d.ts +3 -2
  714. package/dest/tx/tx_hash.d.ts.map +1 -1
  715. package/dest/tx/tx_hash.js +1 -1
  716. package/dest/tx/tx_receipt.d.ts +44 -10
  717. package/dest/tx/tx_receipt.d.ts.map +1 -1
  718. package/dest/tx/tx_receipt.js +44 -13
  719. package/dest/tx/tx_request.d.ts +7 -2
  720. package/dest/tx/tx_request.d.ts.map +1 -1
  721. package/dest/tx/tx_request.js +2 -2
  722. package/dest/tx/validator/error_texts.d.ts +2 -1
  723. package/dest/tx/validator/error_texts.d.ts.map +1 -1
  724. package/dest/tx/validator/error_texts.js +2 -0
  725. package/dest/tx/validator/tx_validator.d.ts +1 -4
  726. package/dest/tx/validator/tx_validator.d.ts.map +1 -1
  727. package/dest/tx/validator/tx_validator.js +4 -4
  728. package/dest/types/shared.d.ts +4 -1
  729. package/dest/types/shared.d.ts.map +1 -1
  730. package/dest/update-checker/update-checker.d.ts +2 -2
  731. package/dest/update-checker/update-checker.d.ts.map +1 -1
  732. package/dest/update-checker/update-checker.js +1 -1
  733. package/dest/validators/errors.d.ts +2 -2
  734. package/dest/validators/errors.d.ts.map +1 -1
  735. package/dest/validators/schemas.d.ts +9 -9
  736. package/dest/validators/schemas.d.ts.map +1 -1
  737. package/dest/validators/schemas.js +13 -13
  738. package/dest/versioning/versioning.d.ts +2 -2
  739. package/dest/versioning/versioning.d.ts.map +1 -1
  740. package/dest/vks/verification_key.d.ts +23 -2
  741. package/dest/vks/verification_key.d.ts.map +1 -1
  742. package/dest/vks/verification_key.js +1 -1
  743. package/dest/vks/vk_data.d.ts +8 -2
  744. package/dest/vks/vk_data.d.ts.map +1 -1
  745. package/dest/vks/vk_data.js +1 -1
  746. package/dest/zkpassport/index.d.ts +4 -5
  747. package/dest/zkpassport/index.d.ts.map +1 -1
  748. package/dest/zkpassport/index.js +11 -11
  749. package/package.json +17 -10
  750. package/src/abi/abi.ts +40 -34
  751. package/src/abi/authorization_selector.ts +3 -2
  752. package/src/abi/buffer.ts +1 -1
  753. package/src/abi/contract_artifact.ts +10 -10
  754. package/src/abi/decoder.ts +1 -1
  755. package/src/abi/encoder.ts +1 -1
  756. package/src/abi/event_selector.ts +3 -2
  757. package/src/abi/function_call.ts +1 -1
  758. package/src/abi/function_selector.ts +11 -2
  759. package/src/abi/note_selector.ts +2 -2
  760. package/src/abi/selector.ts +1 -1
  761. package/src/abi/utils.ts +17 -0
  762. package/src/auth_witness/auth_witness.ts +2 -2
  763. package/src/avm/avm.ts +116 -13
  764. package/src/avm/avm_accumulated_data.ts +1 -1
  765. package/src/avm/avm_circuit_public_inputs.ts +1 -1
  766. package/src/avm/contract_storage_read.ts +1 -1
  767. package/src/avm/contract_storage_update_request.ts +1 -1
  768. package/src/avm/message_pack.ts +2 -1
  769. package/src/avm/public_call_stack_item_compressed.ts +1 -1
  770. package/src/avm/public_data_read.ts +1 -1
  771. package/src/avm/public_data_update_request.ts +1 -1
  772. package/src/avm/public_data_write.ts +1 -1
  773. package/src/avm/public_inner_call_request.ts +1 -1
  774. package/src/avm/revert_code.ts +1 -1
  775. package/src/aztec-address/index.ts +2 -1
  776. package/src/block/attestation_info.ts +10 -7
  777. package/src/block/block_hash.ts +28 -2
  778. package/src/block/block_parameter.ts +4 -2
  779. package/src/block/body.ts +2 -1
  780. package/src/block/checkpointed_l2_block.ts +70 -0
  781. package/src/block/in_block.ts +14 -5
  782. package/src/block/index.ts +1 -3
  783. package/src/block/l2_block.ts +105 -144
  784. package/src/block/l2_block_info.ts +1 -1
  785. package/src/block/l2_block_source.ts +175 -69
  786. package/src/block/l2_block_stream/index.ts +1 -0
  787. package/src/block/l2_block_stream/interfaces.ts +15 -4
  788. package/src/block/l2_block_stream/l2_block_stream.ts +139 -39
  789. package/src/block/l2_block_stream/l2_tips_memory_store.ts +62 -56
  790. package/src/block/l2_block_stream/l2_tips_store_base.ts +226 -0
  791. package/src/block/proposal/attestations_and_signers.ts +1 -1
  792. package/src/block/proposal/committee_attestation.ts +1 -1
  793. package/src/block/test/l2_tips_store_test_suite.ts +481 -36
  794. package/src/block/validate_block_result.ts +40 -35
  795. package/src/checkpoint/checkpoint.ts +84 -14
  796. package/src/checkpoint/checkpoint_info.ts +52 -0
  797. package/src/checkpoint/index.ts +1 -0
  798. package/src/checkpoint/published_checkpoint.ts +23 -8
  799. package/src/config/node-rpc-config.ts +1 -1
  800. package/src/contract/artifact_hash.ts +2 -2
  801. package/src/contract/complete_address.ts +1 -1
  802. package/src/contract/contract_address.ts +2 -2
  803. package/src/contract/contract_class.ts +2 -2
  804. package/src/contract/contract_class_id.ts +3 -3
  805. package/src/contract/contract_instance.ts +1 -1
  806. package/src/contract/contract_instance_update.ts +1 -1
  807. package/src/contract/deployment_info.ts +1 -1
  808. package/src/contract/index.ts +0 -2
  809. package/src/contract/interfaces/contract_class.ts +78 -47
  810. package/src/contract/interfaces/contract_data_source.ts +1 -1
  811. package/src/contract/interfaces/contract_instance.ts +48 -16
  812. package/src/contract/interfaces/contract_instance_update.ts +12 -10
  813. package/src/contract/partial_address.ts +1 -1
  814. package/src/contract/private_function.ts +3 -3
  815. package/src/contract/private_function_membership_proof.ts +2 -2
  816. package/src/contract/utility_function_membership_proof.ts +1 -1
  817. package/src/delayed_public_mutable/delayed_public_mutable_values.ts +11 -12
  818. package/src/delayed_public_mutable/delayed_public_mutable_values_with_hash.ts +1 -1
  819. package/src/delayed_public_mutable/scheduled_value_change.ts +1 -1
  820. package/src/deserialization/index.ts +21 -0
  821. package/src/epoch-helpers/index.ts +12 -10
  822. package/src/errors/simulation_error.ts +1 -1
  823. package/src/fees/transaction_fee.ts +1 -1
  824. package/src/gas/gas.ts +1 -1
  825. package/src/gas/gas_fees.ts +1 -1
  826. package/src/gas/gas_settings.ts +1 -1
  827. package/src/hash/hash.ts +3 -13
  828. package/src/hash/map_slot.ts +2 -2
  829. package/src/interfaces/allowed_element.ts +10 -8
  830. package/src/interfaces/api_limit.ts +2 -0
  831. package/src/interfaces/archiver.ts +37 -27
  832. package/src/interfaces/aztec-node-admin.ts +7 -4
  833. package/src/interfaces/aztec-node.ts +112 -91
  834. package/src/interfaces/block-builder.ts +40 -23
  835. package/src/interfaces/configs.ts +67 -33
  836. package/src/interfaces/epoch-prover.ts +1 -1
  837. package/src/interfaces/get_logs_response.ts +13 -9
  838. package/src/interfaces/l2_logs_source.ts +22 -13
  839. package/src/interfaces/merkle_tree_operations.ts +5 -2
  840. package/src/interfaces/p2p.ts +8 -12
  841. package/src/interfaces/prover-client.ts +28 -10
  842. package/src/interfaces/proving-job.ts +2 -11
  843. package/src/interfaces/public_state_source.ts +1 -1
  844. package/src/interfaces/server_circuit_prover.ts +3 -3
  845. package/src/interfaces/slasher.ts +24 -22
  846. package/src/interfaces/tx_provider.ts +2 -2
  847. package/src/interfaces/validator.ts +84 -31
  848. package/src/interfaces/world_state.ts +16 -9
  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 +16 -6
  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 +45 -43
  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 +3 -16
  904. package/src/messaging/l2_actor.ts +2 -2
  905. package/src/messaging/l2_to_l1_membership.ts +179 -53
  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 +39 -13
  910. package/src/note/notes_filter.ts +1 -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 +70 -23
  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 +128 -46
  951. package/src/tests/jest.ts +1 -1
  952. package/src/tests/mocks.ts +273 -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 +24 -10
  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 +8 -2
  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 +3 -3
  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 +4 -19
  972. package/src/tx/private_tx_constant_data.ts +1 -1
  973. package/src/tx/processed_tx.ts +11 -14
  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 +20 -12
  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 +72 -15
  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 -110
  1004. package/dest/block/l2_block_new.d.ts.map +0 -1
  1005. package/dest/block/l2_block_new.js +0 -138
  1006. package/dest/block/published_l2_block.d.ts +0 -130
  1007. package/dest/block/published_l2_block.d.ts.map +0 -1
  1008. package/dest/block/published_l2_block.js +0 -48
  1009. package/dest/contract/contract_class_metadata.d.ts +0 -8
  1010. package/dest/contract/contract_class_metadata.d.ts.map +0 -1
  1011. package/dest/contract/contract_class_metadata.js +0 -1
  1012. package/dest/contract/contract_metadata.d.ts +0 -7
  1013. package/dest/contract/contract_metadata.d.ts.map +0 -1
  1014. package/dest/contract/contract_metadata.js +0 -1
  1015. package/dest/logs/log_with_tx_data.d.ts +0 -19
  1016. package/dest/logs/log_with_tx_data.d.ts.map +0 -1
  1017. package/dest/logs/log_with_tx_data.js +0 -49
  1018. package/dest/p2p/block_attestation.d.ts +0 -80
  1019. package/dest/p2p/block_attestation.d.ts.map +0 -1
  1020. package/dest/tx/content_commitment.d.ts +0 -49
  1021. package/dest/tx/content_commitment.d.ts.map +0 -1
  1022. package/dest/tx/content_commitment.js +0 -90
  1023. package/src/block/l2_block_code_to_purge.ts +0 -88
  1024. package/src/block/l2_block_header.ts +0 -246
  1025. package/src/block/l2_block_new.ts +0 -176
  1026. package/src/block/published_l2_block.ts +0 -65
  1027. package/src/contract/contract_class_metadata.ts +0 -8
  1028. package/src/contract/contract_metadata.ts +0 -7
  1029. package/src/logs/log_with_tx_data.ts +0 -46
  1030. package/src/tx/content_commitment.ts +0 -113
@@ -1,12 +1,13 @@
1
1
  import {
2
2
  BlockNumber,
3
3
  BlockNumberSchema,
4
- type CheckpointNumber,
4
+ CheckpointNumber,
5
+ CheckpointNumberSchema,
5
6
  type EpochNumber,
6
7
  type SlotNumber,
7
8
  } from '@aztec/foundation/branded-types';
9
+ import type { Fr } from '@aztec/foundation/curves/bn254';
8
10
  import type { EthAddress } from '@aztec/foundation/eth-address';
9
- import type { Fr } from '@aztec/foundation/fields';
10
11
  import type { TypedEventEmitter } from '@aztec/foundation/types';
11
12
 
12
13
  import { z } from 'zod';
@@ -14,13 +15,14 @@ import { z } from 'zod';
14
15
  import type { Checkpoint } from '../checkpoint/checkpoint.js';
15
16
  import type { PublishedCheckpoint } from '../checkpoint/published_checkpoint.js';
16
17
  import type { L1RollupConstants } from '../epoch-helpers/index.js';
18
+ import { CheckpointHeader } from '../rollup/checkpoint_header.js';
17
19
  import type { BlockHeader } from '../tx/block_header.js';
18
20
  import type { IndexedTxEffect } from '../tx/indexed_tx_effect.js';
19
21
  import type { TxHash } from '../tx/tx_hash.js';
20
22
  import type { TxReceipt } from '../tx/tx_receipt.js';
23
+ import type { CheckpointedL2Block } from './checkpointed_l2_block.js';
21
24
  import type { L2Block } from './l2_block.js';
22
- import { PublishedL2Block } from './published_l2_block.js';
23
- import type { ValidateBlockNegativeResult, ValidateBlockResult } from './validate_block_result.js';
25
+ import type { ValidateCheckpointNegativeResult, ValidateCheckpointResult } from './validate_block_result.js';
24
26
 
25
27
  /**
26
28
  * Interface of classes allowing for the retrieval of L2 blocks.
@@ -51,11 +53,18 @@ export interface L2BlockSource {
51
53
  getProvenBlockNumber(): Promise<BlockNumber>;
52
54
 
53
55
  /**
54
- * Gets an l2 block. If a negative number is passed, the block returned is the most recent.
55
- * @param number - The block number to return (inclusive).
56
- * @returns The requested L2 block.
56
+ * Gets the number of the latest L2 block checkpointed seen by the block source implementation.
57
+ * @returns The number of the latest L2 block checkpointed seen by the block source implementation.
57
58
  */
58
- getBlock(number: BlockNumber): Promise<L2Block | undefined>;
59
+ getCheckpointedL2BlockNumber(): Promise<BlockNumber>;
60
+
61
+ /**
62
+ * Computes the finalized block number based on the proven block number.
63
+ * A block is considered finalized when it's 2 epochs behind the proven block.
64
+ * TODO(#13569): Compute proper finalized block number based on L1 finalized block.
65
+ * @returns The finalized block number.
66
+ */
67
+ getFinalizedL2BlockNumber(): Promise<BlockNumber>;
59
68
 
60
69
  /**
61
70
  * Gets an l2 block header.
@@ -65,40 +74,28 @@ export interface L2BlockSource {
65
74
  getBlockHeader(number: BlockNumber | 'latest'): Promise<BlockHeader | undefined>;
66
75
 
67
76
  /**
68
- * Gets up to `limit` amount of L2 blocks starting from `from`.
69
- * @param from - Number of the first block to return (inclusive).
70
- * @param limit - The maximum number of blocks to return.
71
- * @param proven - If true, only return blocks that have been proven.
72
- * @returns The requested L2 blocks.
73
- */
74
- getBlocks(from: BlockNumber, limit: number, proven?: boolean): Promise<L2Block[]>;
75
-
76
- getPublishedCheckpoints(from: CheckpointNumber, limit: number): Promise<PublishedCheckpoint[]>;
77
-
78
- /**
79
- * Gets a checkpoint by the archive root, which should be the root of the archive tree after the requested checkpoint
80
- * is applied.
81
- * @param archive - The new archive root of the checkpoint.
82
- * @returns The requested checkpoint (or undefined if not found).
77
+ * Gets a checkpointed L2 block by block number.
78
+ * Returns undefined if the block doesn't exist or hasn't been checkpointed yet.
79
+ * @param number - The block number to retrieve.
80
+ * @returns The requested checkpointed L2 block (or undefined if not found or not checkpointed).
83
81
  */
84
- getCheckpointByArchive(archive: Fr): Promise<Checkpoint | undefined>;
82
+ getCheckpointedBlock(number: BlockNumber): Promise<CheckpointedL2Block | undefined>;
85
83
 
86
- /** Equivalent to getBlocks but includes publish data. */
87
- getPublishedBlocks(from: BlockNumber, limit: number, proven?: boolean): Promise<PublishedL2Block[]>;
84
+ getCheckpointedBlocks(from: BlockNumber, limit: number): Promise<CheckpointedL2Block[]>;
88
85
 
89
86
  /**
90
- * Gets a published block by its hash.
91
- * @param blockHash - The block hash to retrieve.
92
- * @returns The requested published block (or undefined if not found).
87
+ * Retrieves a collection of checkpoints.
88
+ * @param checkpointNumber The first checkpoint to be retrieved.
89
+ * @param limit The number of checkpoints to be retrieved.
90
+ * @returns The collection of complete checkpoints.
93
91
  */
94
- getPublishedBlockByHash(blockHash: Fr): Promise<PublishedL2Block | undefined>;
92
+ getCheckpoints(checkpointNumber: CheckpointNumber, limit: number): Promise<PublishedCheckpoint[]>;
95
93
 
96
94
  /**
97
- * Gets a published block by its archive root.
98
- * @param archive - The archive root to retrieve.
99
- * @returns The requested published block (or undefined if not found).
95
+ * Gets the checkpoints for a given epoch
96
+ * @param epochNumber - Epoch for which we want checkpoint data
100
97
  */
101
- getPublishedBlockByArchive(archive: Fr): Promise<PublishedL2Block | undefined>;
98
+ getCheckpointsForEpoch(epochNumber: EpochNumber): Promise<Checkpoint[]>;
102
99
 
103
100
  /**
104
101
  * Gets a block header by its hash.
@@ -114,6 +111,27 @@ export interface L2BlockSource {
114
111
  */
115
112
  getBlockHeaderByArchive(archive: Fr): Promise<BlockHeader | undefined>;
116
113
 
114
+ /**
115
+ * Gets an L2 block by block number.
116
+ * @param number - The block number to return.
117
+ * @returns The requested L2 block (or undefined if not found).
118
+ */
119
+ getL2Block(number: BlockNumber): Promise<L2Block | undefined>;
120
+
121
+ /**
122
+ * Gets an L2 block by its hash.
123
+ * @param blockHash - The block hash to retrieve.
124
+ * @returns The requested L2 block (or undefined if not found).
125
+ */
126
+ getL2BlockByHash(blockHash: Fr): Promise<L2Block | undefined>;
127
+
128
+ /**
129
+ * Gets an L2 block by its archive root.
130
+ * @param archive - The archive root to retrieve.
131
+ * @returns The requested L2 block (or undefined if not found).
132
+ */
133
+ getL2BlockByArchive(archive: Fr): Promise<L2Block | undefined>;
134
+
117
135
  /**
118
136
  * Gets a tx effect.
119
137
  * @param txHash - The hash of the tx corresponding to the tx effect.
@@ -139,25 +157,11 @@ export interface L2BlockSource {
139
157
  getL2EpochNumber(): Promise<EpochNumber | undefined>;
140
158
 
141
159
  /**
142
- * Returns all checkpoints for a given epoch.
143
- * @dev Use this method only with recent epochs, since it walks the checkpoint list backwards.
144
- * @param epochNumber - The epoch number to return checkpoints for.
145
- */
146
- getCheckpointsForEpoch(epochNumber: EpochNumber): Promise<Checkpoint[]>;
147
-
148
- /**
149
- * Returns all blocks for a given epoch.
150
- * @dev Use this method only with recent epochs, since it walks the block list backwards.
151
- * @param epochNumber - The epoch number to return blocks for.
152
- */
153
- getBlocksForEpoch(epochNumber: EpochNumber): Promise<L2Block[]>;
154
-
155
- /**
156
- * Returns all block headers for a given epoch.
160
+ * Returns all checkpointed block headers for a given epoch.
157
161
  * @dev Use this method only with recent epochs, since it walks the block list backwards.
158
162
  * @param epochNumber - The epoch number to return headers for.
159
163
  */
160
- getBlockHeadersForEpoch(epochNumber: EpochNumber): Promise<BlockHeader[]>;
164
+ getCheckpointedBlockHeadersForEpoch(epochNumber: EpochNumber): Promise<BlockHeader[]>;
161
165
 
162
166
  /**
163
167
  * Returns whether the given epoch is completed on L1, based on the current L1 and L2 block numbers.
@@ -188,13 +192,70 @@ export interface L2BlockSource {
188
192
  isPendingChainInvalid(): Promise<boolean>;
189
193
 
190
194
  /**
191
- * Returns the status of the pending chain validation. If the chain is invalid, reports the earliest consecutive block
192
- * that is invalid, along with the reason for being invalid, which can be used to trigger an invalidation.
195
+ * Returns the status of the pending chain validation. If the chain is invalid, reports the earliest consecutive
196
+ * checkpoint that is invalid, along with the reason for being invalid, which can be used to trigger an invalidation.
193
197
  */
194
- getPendingChainValidationStatus(): Promise<ValidateBlockResult>;
198
+ getPendingChainValidationStatus(): Promise<ValidateCheckpointResult>;
195
199
 
196
200
  /** Force a sync. */
197
201
  syncImmediate(): Promise<void>;
202
+
203
+ /* Legacy APIS */
204
+
205
+ /**
206
+ * Gets an l2 block. If a negative number is passed, the block returned is the most recent.
207
+ * @param number - The block number to return (inclusive).
208
+ * @returns The requested L2 block.
209
+ */
210
+ getBlock(number: BlockNumber): Promise<L2Block | undefined>;
211
+
212
+ /**
213
+ * Returns all checkpointed blocks for a given epoch.
214
+ * @dev Use this method only with recent epochs, since it walks the block list backwards.
215
+ * @param epochNumber - The epoch number to return blocks for.
216
+ */
217
+ getCheckpointedBlocksForEpoch(epochNumber: EpochNumber): Promise<CheckpointedL2Block[]>;
218
+
219
+ /**
220
+ * Returns all blocks for a given slot.
221
+ * @dev Use this method only with recent slots, since it walks the block list backwards.
222
+ * @param slotNumber - The slot number to return blocks for.
223
+ */
224
+ getBlocksForSlot(slotNumber: SlotNumber): Promise<L2Block[]>;
225
+
226
+ /**
227
+ * Gets a checkpointed block by its block hash.
228
+ * @param blockHash - The block hash to retrieve.
229
+ * @returns The requested block (or undefined if not found).
230
+ */
231
+ getCheckpointedBlockByHash(blockHash: Fr): Promise<CheckpointedL2Block | undefined>;
232
+
233
+ /**
234
+ * Gets a checkpointed block by its archive root.
235
+ * @param archive - The archive root to retrieve.
236
+ * @returns The requested block (or undefined if not found).
237
+ */
238
+ getCheckpointedBlockByArchive(archive: Fr): Promise<CheckpointedL2Block | undefined>;
239
+
240
+ /**
241
+ * Gets up to `limit` amount of L2 blocks starting from `from`.
242
+ * @param from - Number of the first block to return (inclusive).
243
+ * @param limit - The maximum number of blocks to return.
244
+ * @returns The requested L2 blocks.
245
+ */
246
+ getBlocks(from: BlockNumber, limit: number): Promise<L2Block[]>;
247
+ }
248
+
249
+ /**
250
+ * Interface for classes that can receive and store L2 blocks.
251
+ */
252
+ export interface L2BlockSink {
253
+ /**
254
+ * Adds a block to the store.
255
+ * @param block - The L2 block to add.
256
+ * @throws If block number is not incremental (i.e., not exactly one more than the last stored block).
257
+ */
258
+ addBlock(block: L2Block): Promise<void>;
198
259
  }
199
260
 
200
261
  /**
@@ -202,26 +263,42 @@ export interface L2BlockSource {
202
263
  * see L2BlockSourceEvents for the events emitted.
203
264
  */
204
265
  export type ArchiverEmitter = TypedEventEmitter<{
205
- [L2BlockSourceEvents.L2PruneDetected]: (args: L2BlockPruneEvent) => void;
266
+ [L2BlockSourceEvents.L2PruneUnproven]: (args: L2PruneUnprovenEvent) => void;
267
+ [L2BlockSourceEvents.L2PruneUncheckpointed]: (args: L2PruneUncheckpointedEvent) => void;
206
268
  [L2BlockSourceEvents.L2BlockProven]: (args: L2BlockProvenEvent) => void;
207
- [L2BlockSourceEvents.InvalidAttestationsBlockDetected]: (args: InvalidBlockDetectedEvent) => void;
269
+ [L2BlockSourceEvents.InvalidAttestationsCheckpointDetected]: (args: InvalidCheckpointDetectedEvent) => void;
270
+ [L2BlockSourceEvents.L2BlocksCheckpointed]: (args: L2CheckpointEvent) => void;
208
271
  }>;
209
- export interface L2BlockSourceEventEmitter extends L2BlockSource, ArchiverEmitter {}
272
+ export interface L2BlockSourceEventEmitter extends L2BlockSource {
273
+ events: ArchiverEmitter;
274
+ }
210
275
 
211
276
  /**
212
277
  * Identifier for L2 block tags.
213
- * - latest: Latest block pushed to L1.
278
+ * - proposed: Latest block proposed on L2.
279
+ * - checkpointed: Checkpointed block on L1.
214
280
  * - proven: Proven block on L1.
215
281
  * - finalized: Proven block on a finalized L1 block (not implemented, set to proven for now).
216
282
  */
217
- export type L2BlockTag = 'latest' | 'proven' | 'finalized';
283
+ export type L2BlockTag = 'proposed' | 'checkpointed' | 'proven' | 'finalized';
218
284
 
219
285
  /** Tips of the L2 chain. */
220
- export type L2Tips = Record<L2BlockTag, L2BlockId>;
286
+ export type L2Tips = {
287
+ proposed: L2BlockId;
288
+ checkpointed: L2TipId;
289
+ proven: L2TipId;
290
+ finalized: L2TipId;
291
+ };
292
+
293
+ export const GENESIS_CHECKPOINT_HEADER_HASH = CheckpointHeader.empty().hash();
221
294
 
222
295
  /** Identifies a block by number and hash. */
223
296
  export type L2BlockId = { number: BlockNumber; hash: string };
224
297
 
298
+ export type CheckpointId = { number: CheckpointNumber; hash: string };
299
+
300
+ export type L2TipId = { block: L2BlockId; checkpoint: CheckpointId };
301
+
225
302
  /** Creates an L2 block id */
226
303
  export function makeL2BlockId(number: BlockNumber, hash?: string): L2BlockId {
227
304
  if (number !== 0 && !hash) {
@@ -230,21 +307,39 @@ export function makeL2BlockId(number: BlockNumber, hash?: string): L2BlockId {
230
307
  return { number, hash: hash! };
231
308
  }
232
309
 
310
+ /** Creates an L2 checkpoint id */
311
+ export function makeL2CheckpointId(number: CheckpointNumber, hash: string): CheckpointId {
312
+ return { number, hash };
313
+ }
314
+
233
315
  const L2BlockIdSchema = z.object({
234
316
  number: BlockNumberSchema,
235
317
  hash: z.string(),
236
318
  });
237
319
 
320
+ const L2CheckpointIdSchema = z.object({
321
+ number: CheckpointNumberSchema,
322
+ hash: z.string(),
323
+ });
324
+
325
+ const L2TipIdSchema = z.object({
326
+ block: L2BlockIdSchema,
327
+ checkpoint: L2CheckpointIdSchema,
328
+ });
329
+
238
330
  export const L2TipsSchema = z.object({
239
- latest: L2BlockIdSchema,
240
- proven: L2BlockIdSchema,
241
- finalized: L2BlockIdSchema,
331
+ proposed: L2BlockIdSchema,
332
+ checkpointed: L2TipIdSchema,
333
+ proven: L2TipIdSchema,
334
+ finalized: L2TipIdSchema,
242
335
  });
243
336
 
244
337
  export enum L2BlockSourceEvents {
245
- L2PruneDetected = 'l2PruneDetected',
338
+ L2PruneUnproven = 'l2PruneUnproven',
339
+ L2PruneUncheckpointed = 'l2PruneUncheckpointed',
246
340
  L2BlockProven = 'l2BlockProven',
247
- InvalidAttestationsBlockDetected = 'invalidBlockDetected',
341
+ L2BlocksCheckpointed = 'l2BlocksCheckpointed',
342
+ InvalidAttestationsCheckpointDetected = 'invalidCheckpointDetected',
248
343
  }
249
344
 
250
345
  export type L2BlockProvenEvent = {
@@ -254,13 +349,24 @@ export type L2BlockProvenEvent = {
254
349
  epochNumber: EpochNumber;
255
350
  };
256
351
 
257
- export type L2BlockPruneEvent = {
258
- type: 'l2PruneDetected';
352
+ export type L2PruneUnprovenEvent = {
353
+ type: 'l2PruneUnproven';
259
354
  epochNumber: EpochNumber;
260
355
  blocks: L2Block[];
261
356
  };
262
357
 
263
- export type InvalidBlockDetectedEvent = {
264
- type: 'invalidBlockDetected';
265
- validationResult: ValidateBlockNegativeResult;
358
+ export type L2PruneUncheckpointedEvent = {
359
+ type: 'l2PruneUncheckpointed';
360
+ slotNumber: SlotNumber;
361
+ blocks: L2Block[];
362
+ };
363
+
364
+ export type L2CheckpointEvent = {
365
+ type: 'l2BlocksCheckpointed';
366
+ checkpoint: PublishedCheckpoint;
367
+ };
368
+
369
+ export type InvalidCheckpointDetectedEvent = {
370
+ type: 'invalidCheckpointDetected';
371
+ validationResult: ValidateCheckpointNegativeResult;
266
372
  };
@@ -1,3 +1,4 @@
1
1
  export * from './interfaces.js';
2
2
  export * from './l2_block_stream.js';
3
3
  export * from './l2_tips_memory_store.js';
4
+ export * from './l2_tips_store_base.js';
@@ -1,5 +1,6 @@
1
- import type { L2BlockId, L2Tips } from '../l2_block_source.js';
2
- import type { PublishedL2Block } from '../published_l2_block.js';
1
+ import type { PublishedCheckpoint } from '../../checkpoint/published_checkpoint.js';
2
+ import type { L2Block } from '../l2_block.js';
3
+ import type { CheckpointId, L2BlockId, L2Tips } from '../l2_block_source.js';
3
4
 
4
5
  /** Interface to the local view of the chain. Implemented by world-state and l2-tips-store. */
5
6
  export interface L2BlockStreamLocalDataProvider {
@@ -15,11 +16,21 @@ export interface L2BlockStreamEventHandler {
15
16
  export type L2BlockStreamEvent =
16
17
  | /** Emits blocks added to the chain. */ {
17
18
  type: 'blocks-added';
18
- blocks: PublishedL2Block[];
19
+ blocks: L2Block[];
19
20
  }
20
- | /** Reports last correct block (new tip of the unproven chain). */ {
21
+ | /** Emits checkpoints published to L1. */ {
22
+ type: 'chain-checkpointed';
23
+ checkpoint: PublishedCheckpoint;
24
+ block: L2BlockId;
25
+ }
26
+ | /**
27
+ * Reports last correct block (new tip of the proposed chain). Note that this is not necessarily the anchor block
28
+ * that will be used in the transaction - if the chain has already moved past the reorg, we'll also see blocks-added
29
+ * events that will push the anchor block forward.
30
+ */ {
21
31
  type: 'chain-pruned';
22
32
  block: L2BlockId;
33
+ checkpoint: CheckpointId;
23
34
  }
24
35
  | /** Reports new proven block. */ {
25
36
  type: 'chain-proven';
@@ -1,11 +1,15 @@
1
- import { BlockNumber } from '@aztec/foundation/branded-types';
1
+ import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
2
2
  import { AbortError } from '@aztec/foundation/error';
3
3
  import { createLogger } from '@aztec/foundation/log';
4
4
  import { RunningPromise } from '@aztec/foundation/running-promise';
5
5
 
6
+ import type { PublishedCheckpoint } from '../../checkpoint/published_checkpoint.js';
6
7
  import { type L2BlockId, type L2BlockSource, makeL2BlockId } from '../l2_block_source.js';
7
8
  import type { L2BlockStreamEvent, L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider } from './interfaces.js';
8
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
+
9
13
  /** Creates a stream of events for new blocks, chain tips updates, and reorgs, out of polling an archiver or a node. */
10
14
  export class L2BlockStream {
11
15
  private readonly runningPromise: RunningPromise;
@@ -13,19 +17,29 @@ export class L2BlockStream {
13
17
  private hasStarted = false;
14
18
 
15
19
  constructor(
16
- private l2BlockSource: Pick<L2BlockSource, 'getPublishedBlocks' | 'getBlockHeader' | 'getL2Tips'>,
20
+ private l2BlockSource: Pick<
21
+ L2BlockSource,
22
+ 'getBlocks' | 'getBlockHeader' | 'getL2Tips' | 'getCheckpoints' | 'getCheckpointedBlocks'
23
+ >,
17
24
  private localData: L2BlockStreamLocalDataProvider,
18
25
  private handler: L2BlockStreamEventHandler,
19
26
  private readonly log = createLogger('types:block_stream'),
20
27
  private opts: {
21
- proven?: boolean;
22
28
  pollIntervalMS?: number;
23
29
  batchSize?: number;
24
30
  startingBlock?: number;
25
31
  /** Instead of downloading all blocks, only fetch the smallest subset that results in reliable reorg detection. */
26
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;
27
37
  } = {},
28
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_.
29
43
  this.runningPromise = new RunningPromise(() => this.work(), log, this.opts.pollIntervalMS ?? 1000);
30
44
  }
31
45
 
@@ -42,6 +56,11 @@ export class L2BlockStream {
42
56
  return this.runningPromise.isRunning();
43
57
  }
44
58
 
59
+ /**
60
+ * Runs the synchronization process once.
61
+ *
62
+ * If you want to run this process continuously use `start` and `stop` instead.
63
+ */
45
64
  public async sync() {
46
65
  this.isSyncing = true;
47
66
  await this.runningPromise.trigger();
@@ -52,36 +71,29 @@ export class L2BlockStream {
52
71
  try {
53
72
  const sourceTips = await this.l2BlockSource.getL2Tips();
54
73
  const localTips = await this.localData.getL2Tips();
55
- this.log.trace(`Running L2 block stream`, {
56
- sourceLatest: sourceTips.latest.number,
57
- localLatest: localTips.latest.number,
58
- sourceFinalized: sourceTips.finalized.number,
59
- localFinalized: localTips.finalized.number,
60
- sourceProven: sourceTips.proven.number,
61
- localProven: localTips.proven.number,
62
- sourceLatestHash: sourceTips.latest.hash,
63
- localLatestHash: localTips.latest.hash,
64
- sourceProvenHash: sourceTips.proven.hash,
65
- localProvenHash: localTips.proven.hash,
66
- sourceFinalizedHash: sourceTips.finalized.hash,
67
- localFinalizedHash: localTips.finalized.hash,
68
- });
74
+ this.log.trace(`Running L2 block stream`, { sourceTips, localTips });
69
75
 
70
76
  // Check if there was a reorg and emit a chain-pruned event if so.
71
- let latestBlockNumber = localTips.latest.number;
72
- const sourceCache = new BlockHashCache([sourceTips.latest]);
77
+ let latestBlockNumber = localTips.proposed.number;
78
+ const sourceCache = new BlockHashCache([sourceTips.proposed]);
73
79
  while (!(await this.areBlockHashesEqualAt(latestBlockNumber, { sourceCache }))) {
74
80
  latestBlockNumber--;
75
81
  }
76
82
 
77
- if (latestBlockNumber < localTips.latest.number) {
78
- latestBlockNumber = BlockNumber(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
79
85
  const hash = sourceCache.get(latestBlockNumber) ?? (await this.getBlockHashFromSource(latestBlockNumber));
80
86
  if (latestBlockNumber !== 0 && !hash) {
81
87
  throw new Error(`Block hash not found in block source for block number ${latestBlockNumber}`);
82
88
  }
83
- this.log.verbose(`Reorg detected. Pruning blocks from ${latestBlockNumber + 1} to ${localTips.latest.number}.`);
84
- 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
+ });
85
97
  }
86
98
 
87
99
  // If we are just starting, use the starting block number from the options.
@@ -96,40 +108,128 @@ export class L2BlockStream {
96
108
  }
97
109
 
98
110
  let nextBlockNumber = latestBlockNumber + 1;
111
+ let nextCheckpointToEmit = CheckpointNumber(localTips.checkpointed.checkpoint.number + 1);
99
112
  if (this.opts.skipFinalized) {
100
113
  // When skipping finalized blocks we need to provide reliable reorg detection while fetching as few blocks as
101
114
  // possible. Finalized blocks cannot be reorged by definition, so we can skip most of them. We do need the very
102
115
  // last finalized block however in order to guarantee that we will eventually find a block in which our local
103
116
  // store matches the source.
104
117
  // If the last finalized block is behind our local tip, there is nothing to skip.
105
- 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));
106
121
  }
107
122
 
108
- // Request new blocks from the source.
109
- while (nextBlockNumber <= sourceTips.latest.number) {
110
- const limit = Math.min(this.opts.batchSize ?? 50, sourceTips.latest.number - nextBlockNumber + 1);
111
- this.log.trace(`Requesting blocks from ${nextBlockNumber} limit ${limit} proven=${this.opts.proven}`);
112
- const blocks = await this.l2BlockSource.getPublishedBlocks(
113
- BlockNumber(nextBlockNumber),
114
- limit,
115
- this.opts.proven,
116
- );
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
+ }
210
+ }
211
+
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));
117
217
  if (blocks.length === 0) {
118
218
  break;
119
219
  }
120
220
  await this.emitEvent({ type: 'blocks-added', blocks });
121
- nextBlockNumber = blocks.at(-1)!.block.number + 1;
221
+ nextBlockNumber = blocks.at(-1)!.number + 1;
122
222
  }
123
223
 
124
224
  // Update the proven and finalized tips.
125
- if (localTips.proven !== undefined && sourceTips.proven.number !== localTips.proven.number) {
225
+ if (localTips.proven !== undefined && sourceTips.proven.block.number !== localTips.proven.block.number) {
126
226
  await this.emitEvent({
127
227
  type: 'chain-proven',
128
- block: sourceTips.proven,
228
+ block: sourceTips.proven.block,
129
229
  });
130
230
  }
131
- if (localTips.finalized !== undefined && sourceTips.finalized.number !== localTips.finalized.number) {
132
- 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 });
133
233
  }
134
234
  } catch (err: any) {
135
235
  if (err.name === 'AbortError') {
@@ -177,7 +277,7 @@ export class L2BlockStream {
177
277
 
178
278
  private async emitEvent(event: L2BlockStreamEvent) {
179
279
  this.log.debug(
180
- `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})`,
181
281
  );
182
282
  await this.handler.handleBlockStreamEvent(event);
183
283
  if (!this.isRunning() && !this.isSyncing) {