@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,6 +1,15 @@
1
+ import { GENESIS_BLOCK_HEADER_HASH } from '@aztec/constants';
2
+ import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
1
3
  import { times } from '@aztec/foundation/collection';
2
- import { Fr } from '@aztec/foundation/fields';
3
- import { type L2Block, type L2BlockId, PublishedL2Block } from '@aztec/stdlib/block';
4
+ import { Fr } from '@aztec/foundation/curves/bn254';
5
+ import {
6
+ type CheckpointId,
7
+ GENESIS_CHECKPOINT_HEADER_HASH,
8
+ L2Block,
9
+ type L2BlockId,
10
+ type L2TipId,
11
+ } from '@aztec/stdlib/block';
12
+ import { Checkpoint, L1PublishedData, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
4
13
 
5
14
  import { jestExpect as expect } from '@jest/expect';
6
15
 
@@ -8,80 +17,521 @@ import type { L2TipsStore } from '../l2_block_stream/index.js';
8
17
 
9
18
  export function testL2TipsStore(makeTipsStore: () => Promise<L2TipsStore>) {
10
19
  let tipsStore: L2TipsStore;
20
+ // Track blocks and their hashes for test assertions
21
+ const blockHashes: Map<number, string> = new Map();
22
+ // Track checkpoints and their hashes
23
+ const checkpointHashes: Map<number, string> = new Map();
24
+ // Track which blocks belong to which checkpoint
25
+ const blockToCheckpoint: Map<number, number> = new Map();
11
26
 
12
27
  beforeEach(async () => {
13
28
  tipsStore = await makeTipsStore();
29
+ blockHashes.clear();
30
+ checkpointHashes.clear();
31
+ blockToCheckpoint.clear();
14
32
  });
15
33
 
16
- const makeBlock = (number: number): PublishedL2Block =>
17
- PublishedL2Block.fromFields({
18
- block: { number, hash: () => Promise.resolve(new Fr(number)) } as L2Block,
19
- l1: { blockNumber: BigInt(number), blockHash: `0x${number}`, timestamp: BigInt(number) },
20
- attestations: [],
21
- });
34
+ const makeBlock = async (number: number): Promise<L2Block> => {
35
+ const block = await L2Block.random(BlockNumber(number));
36
+ blockHashes.set(number, (await block.hash()).toString());
37
+ return block;
38
+ };
22
39
 
23
40
  const makeBlockId = (number: number): L2BlockId => ({
24
- number,
25
- hash: new Fr(number).toString(),
41
+ number: BlockNumber(number),
42
+ hash: blockHashes.get(number) ?? new Fr(number).toString(),
43
+ });
44
+
45
+ const makeTip = (number: number): L2BlockId => ({
46
+ number: BlockNumber(number),
47
+ hash: number === 0 ? GENESIS_BLOCK_HEADER_HASH.toString() : (blockHashes.get(number) ?? new Fr(number).toString()),
26
48
  });
27
49
 
28
- const makeTip = (number: number) => ({ number, hash: number === 0 ? undefined : new Fr(number).toString() });
50
+ const makeCheckpointIdForBlock = (blockNumber: number): CheckpointId => {
51
+ if (blockNumber === 0) {
52
+ return { number: CheckpointNumber.ZERO, hash: GENESIS_CHECKPOINT_HEADER_HASH.toString() };
53
+ }
54
+ const checkpointNum = blockToCheckpoint.get(blockNumber);
55
+ if (checkpointNum === undefined) {
56
+ return { number: CheckpointNumber.ZERO, hash: GENESIS_CHECKPOINT_HEADER_HASH.toString() };
57
+ }
58
+ const hash = checkpointHashes.get(checkpointNum);
59
+ if (!hash) {
60
+ return { number: CheckpointNumber.ZERO, hash: GENESIS_CHECKPOINT_HEADER_HASH.toString() };
61
+ }
62
+ return { number: CheckpointNumber(checkpointNum), hash };
63
+ };
29
64
 
30
- const makeTips = (latest: number, proven: number, finalized: number) => ({
31
- latest: makeTip(latest),
32
- proven: makeTip(proven),
33
- finalized: makeTip(finalized),
65
+ const makeTipId = (blockNumber: number): L2TipId => ({
66
+ block: makeTip(blockNumber),
67
+ checkpoint: makeCheckpointIdForBlock(blockNumber),
34
68
  });
35
69
 
70
+ const makeTips = (proposed: number, proven: number, finalized: number, checkpointed: number = 0) => ({
71
+ proposed: makeTip(proposed),
72
+ proven: makeTipId(proven),
73
+ finalized: makeTipId(finalized),
74
+ checkpointed: makeTipId(checkpointed),
75
+ });
76
+
77
+ const makeCheckpoint = async (checkpointNumber: number, blocks: L2Block[]): Promise<PublishedCheckpoint> => {
78
+ const checkpoint = await Checkpoint.random(CheckpointNumber(checkpointNumber), {
79
+ numBlocks: blocks.length,
80
+ startBlockNumber: blocks[0].number,
81
+ });
82
+ // Override the blocks with our actual blocks (to keep hashes consistent)
83
+ (checkpoint as any).blocks = blocks;
84
+
85
+ const checkpointHash = checkpoint.hash().toString();
86
+ checkpointHashes.set(checkpointNumber, checkpointHash);
87
+
88
+ // Track which blocks belong to this checkpoint
89
+ for (const block of blocks) {
90
+ blockToCheckpoint.set(block.number, checkpointNumber);
91
+ }
92
+
93
+ return new PublishedCheckpoint(checkpoint, L1PublishedData.random(), []);
94
+ };
95
+
96
+ /** Creates a chain-checkpointed event with the required block field */
97
+ const makeCheckpointedEvent = async (checkpoint: PublishedCheckpoint) => {
98
+ const lastBlock = checkpoint.checkpoint.blocks.at(-1)!;
99
+ const blockId: L2BlockId = {
100
+ number: lastBlock.number,
101
+ hash: (await lastBlock.hash()).toString(),
102
+ };
103
+ return { type: 'chain-checkpointed' as const, checkpoint, block: blockId };
104
+ };
105
+
36
106
  it('returns zero if no tips are stored', async () => {
37
107
  const tips = await tipsStore.getL2Tips();
38
108
  expect(tips).toEqual(makeTips(0, 0, 0));
39
109
  });
40
110
 
41
- it('stores chain tips', async () => {
42
- await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: times(20, i => makeBlock(i + 1)) });
111
+ it('sets proposed tip from blocks added', async () => {
112
+ await tipsStore.handleBlockStreamEvent({
113
+ type: 'blocks-added',
114
+ blocks: await Promise.all(times(3, i => makeBlock(i + 1))),
115
+ });
43
116
 
44
- await tipsStore.handleBlockStreamEvent({ type: 'chain-finalized', block: makeBlockId(5) });
45
- await tipsStore.handleBlockStreamEvent({ type: 'chain-proven', block: makeBlockId(8) });
46
- await tipsStore.handleBlockStreamEvent({ type: 'chain-pruned', block: makeBlockId(10) });
117
+ const tips = await tipsStore.getL2Tips();
118
+ expect(tips).toEqual(makeTips(3, 0, 0));
119
+
120
+ expect(await tipsStore.getL2BlockHash(1)).toEqual(blockHashes.get(1));
121
+ expect(await tipsStore.getL2BlockHash(2)).toEqual(blockHashes.get(2));
122
+ expect(await tipsStore.getL2BlockHash(3)).toEqual(blockHashes.get(3));
123
+ });
124
+
125
+ it('checkpoints all proposed blocks', async () => {
126
+ // Propose blocks 1-5
127
+ const blocks = await Promise.all(times(5, i => makeBlock(i + 1)));
128
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks });
129
+
130
+ // Checkpoint all proposed blocks (1-5)
131
+ const checkpoint1 = await makeCheckpoint(1, blocks);
132
+ await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint1));
47
133
 
48
134
  const tips = await tipsStore.getL2Tips();
49
- expect(tips).toEqual(makeTips(10, 8, 5));
135
+ // Proposed and checkpointed should be the same
136
+ expect(tips.proposed).toEqual(makeTip(5));
137
+ expect(tips.checkpointed.block).toEqual(makeTip(5));
138
+ expect(tips.checkpointed.checkpoint.number).toEqual(CheckpointNumber(1));
50
139
  });
51
140
 
52
- it('sets latest tip from blocks added', async () => {
53
- await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: times(3, i => makeBlock(i + 1)) });
141
+ it('advances proven chain with checkpoint info', async () => {
142
+ // Propose and checkpoint blocks 1-5
143
+ const blocks = await Promise.all(times(5, i => makeBlock(i + 1)));
144
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks });
145
+ const checkpoint1 = await makeCheckpoint(1, blocks);
146
+ await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint1));
147
+
148
+ // Prove up to block 5
149
+ await tipsStore.handleBlockStreamEvent({ type: 'chain-proven', block: makeBlockId(5) });
54
150
 
55
151
  const tips = await tipsStore.getL2Tips();
56
- expect(tips).toEqual(makeTips(3, 0, 0));
152
+ expect(tips.proposed).toEqual(makeTip(5));
153
+ expect(tips.checkpointed.block).toEqual(makeTip(5));
154
+ expect(tips.proven.block).toEqual(makeTip(5));
155
+
156
+ // Proven tip should have the checkpoint info
157
+ expect(tips.proven.checkpoint.number).toEqual(CheckpointNumber(1));
158
+ expect(tips.proven.checkpoint.hash).toEqual(checkpointHashes.get(1));
159
+ });
160
+
161
+ it('advances finalized chain with checkpoint info', async () => {
162
+ // Propose and checkpoint blocks 1-5
163
+ const blocks = await Promise.all(times(5, i => makeBlock(i + 1)));
164
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks });
165
+ const checkpoint1 = await makeCheckpoint(1, blocks);
166
+ await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint1));
167
+
168
+ // Prove and finalize
169
+ await tipsStore.handleBlockStreamEvent({ type: 'chain-proven', block: makeBlockId(5) });
170
+ await tipsStore.handleBlockStreamEvent({ type: 'chain-finalized', block: makeBlockId(5) });
171
+
172
+ const tips = await tipsStore.getL2Tips();
173
+ expect(tips.proposed).toEqual(makeTip(5));
174
+ expect(tips.checkpointed.block).toEqual(makeTip(5));
175
+ expect(tips.proven.block).toEqual(makeTip(5));
176
+ expect(tips.finalized.block).toEqual(makeTip(5));
57
177
 
58
- expect(await tipsStore.getL2BlockHash(1)).toEqual(new Fr(1).toString());
59
- expect(await tipsStore.getL2BlockHash(2)).toEqual(new Fr(2).toString());
60
- expect(await tipsStore.getL2BlockHash(3)).toEqual(new Fr(3).toString());
178
+ // Finalized tip should have checkpoint info
179
+ expect(tips.finalized.checkpoint.number).toEqual(CheckpointNumber(1));
180
+ expect(tips.finalized.checkpoint.hash).toEqual(checkpointHashes.get(1));
181
+ });
182
+
183
+ it('handles multiple checkpoints advancing the chain', async () => {
184
+ // Propose blocks 1-5
185
+ const blocks1 = await Promise.all(times(5, i => makeBlock(i + 1)));
186
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: blocks1 });
187
+
188
+ // Checkpoint 1: all proposed blocks 1-5
189
+ const checkpoint1 = await makeCheckpoint(1, blocks1);
190
+ await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint1));
191
+
192
+ // Propose more blocks 6-10
193
+ const blocks2 = await Promise.all(times(5, i => makeBlock(i + 6)));
194
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: blocks2 });
195
+
196
+ // Checkpoint 2: all remaining proposed blocks 6-10
197
+ const checkpoint2 = await makeCheckpoint(2, blocks2);
198
+ await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint2));
199
+
200
+ const tips = await tipsStore.getL2Tips();
201
+ expect(tips.proposed).toEqual(makeTip(10));
202
+ expect(tips.checkpointed.block).toEqual(makeTip(10));
203
+ expect(tips.checkpointed.checkpoint.number).toEqual(CheckpointNumber(2));
204
+ expect(tips.checkpointed.checkpoint.hash).toEqual(checkpointHashes.get(2));
61
205
  });
62
206
 
63
207
  it('clears block hashes when setting finalized chain', async () => {
64
- await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: times(5, i => makeBlock(i + 1)) });
208
+ // Propose blocks 1-3
209
+ const blocks1to3 = await Promise.all(times(3, i => makeBlock(i + 1)));
210
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: blocks1to3 });
211
+
212
+ // Checkpoint all proposed blocks (1-3)
213
+ const checkpoint1 = await makeCheckpoint(1, blocks1to3);
214
+ await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint1));
215
+
216
+ // Propose more blocks 4-5
217
+ const blocks4to5 = await Promise.all(times(2, i => makeBlock(i + 4)));
218
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: blocks4to5 });
219
+
220
+ // Checkpoint all remaining proposed blocks (4-5)
221
+ const checkpoint2 = await makeCheckpoint(2, blocks4to5);
222
+ await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint2));
223
+
224
+ // Prove and finalize up to block 3 (checkpoint 1)
65
225
  await tipsStore.handleBlockStreamEvent({ type: 'chain-proven', block: makeBlockId(3) });
66
226
  await tipsStore.handleBlockStreamEvent({ type: 'chain-finalized', block: makeBlockId(3) });
67
227
 
68
- const tips = await tipsStore.getL2Tips();
69
- expect(tips).toEqual(makeTips(5, 3, 3));
70
-
228
+ // Blocks before finalized should be cleared
71
229
  expect(await tipsStore.getL2BlockHash(1)).toBeUndefined();
72
230
  expect(await tipsStore.getL2BlockHash(2)).toBeUndefined();
73
231
 
74
- expect(await tipsStore.getL2BlockHash(3)).toEqual(new Fr(3).toString());
75
- expect(await tipsStore.getL2BlockHash(4)).toEqual(new Fr(4).toString());
76
- expect(await tipsStore.getL2BlockHash(5)).toEqual(new Fr(5).toString());
232
+ // Finalized and later blocks should remain
233
+ expect(await tipsStore.getL2BlockHash(3)).toEqual(blockHashes.get(3));
234
+ expect(await tipsStore.getL2BlockHash(4)).toEqual(blockHashes.get(4));
235
+ expect(await tipsStore.getL2BlockHash(5)).toEqual(blockHashes.get(5));
236
+ });
237
+
238
+ it('handles chain pruning by updating proposed tip', async () => {
239
+ const blocks = await Promise.all(times(10, i => makeBlock(i + 1)));
240
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks });
241
+
242
+ // Prune to block 5
243
+ await tipsStore.handleBlockStreamEvent({
244
+ type: 'chain-pruned',
245
+ block: makeBlockId(5),
246
+ checkpoint: { number: CheckpointNumber.ZERO, hash: GENESIS_CHECKPOINT_HEADER_HASH.toString() },
247
+ });
248
+
249
+ const tips = await tipsStore.getL2Tips();
250
+ expect(tips.proposed).toEqual(makeTip(5));
251
+ });
252
+
253
+ it('handles pruning proposed chain to genesis, re-proposing, and checkpointing', async () => {
254
+ // Propose blocks 1-3
255
+ const firstBlocks = await Promise.all(times(3, i => makeBlock(i + 1)));
256
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: firstBlocks });
257
+
258
+ let tips = await tipsStore.getL2Tips();
259
+ expect(tips.proposed).toEqual(makeTip(3));
260
+
261
+ // Store original hashes
262
+ const originalHash1 = blockHashes.get(1);
263
+ const originalHash2 = blockHashes.get(2);
264
+ const originalHash3 = blockHashes.get(3);
265
+
266
+ // Prune back to genesis (block 0)
267
+ await tipsStore.handleBlockStreamEvent({
268
+ type: 'chain-pruned',
269
+ block: makeTip(0),
270
+ checkpoint: { number: CheckpointNumber.ZERO, hash: GENESIS_CHECKPOINT_HEADER_HASH.toString() },
271
+ });
272
+
273
+ tips = await tipsStore.getL2Tips();
274
+ expect(tips.proposed).toEqual(makeTip(0));
275
+ expect(tips.checkpointed.block).toEqual(makeTip(0));
276
+
277
+ // Clear hashes and propose new blocks 1-3 (different from original)
278
+ blockHashes.delete(1);
279
+ blockHashes.delete(2);
280
+ blockHashes.delete(3);
281
+ const newBlocks = await Promise.all(times(3, i => makeBlock(i + 1)));
282
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: newBlocks });
283
+
284
+ // Verify new blocks have different hashes
285
+ expect(blockHashes.get(1)).not.toEqual(originalHash1);
286
+ expect(blockHashes.get(2)).not.toEqual(originalHash2);
287
+ expect(blockHashes.get(3)).not.toEqual(originalHash3);
288
+
289
+ tips = await tipsStore.getL2Tips();
290
+ expect(tips.proposed).toEqual(makeTip(3));
291
+ expect(tips.checkpointed.block).toEqual(makeTip(0)); // Not yet checkpointed
292
+
293
+ // Checkpoint all the new proposed blocks (1-3)
294
+ const checkpoint1 = await makeCheckpoint(1, newBlocks);
295
+ await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint1));
296
+
297
+ tips = await tipsStore.getL2Tips();
298
+ expect(tips.proposed).toEqual(makeTip(3));
299
+ expect(tips.checkpointed.block).toEqual(makeTip(3));
300
+ expect(tips.checkpointed.checkpoint.number).toEqual(CheckpointNumber(1));
301
+
302
+ // Verify block hashes in store are the new ones
303
+ expect(await tipsStore.getL2BlockHash(1)).toEqual(blockHashes.get(1));
304
+ expect(await tipsStore.getL2BlockHash(2)).toEqual(blockHashes.get(2));
305
+ expect(await tipsStore.getL2BlockHash(3)).toEqual(blockHashes.get(3));
306
+ });
307
+
308
+ it('handles reorg: prune proposed blocks back to checkpoint, then re-propose with different blocks', async () => {
309
+ // Propose blocks 1-5
310
+ const firstBlocks = await Promise.all(times(5, i => makeBlock(i + 1)));
311
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: firstBlocks });
312
+
313
+ // Checkpoint all proposed blocks (1-5) - these are now committed
314
+ const checkpoint1 = await makeCheckpoint(1, firstBlocks);
315
+ await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint1));
316
+
317
+ // Propose more blocks 6-10 (not yet checkpointed, can be pruned)
318
+ const originalBlocks6to10 = await Promise.all(times(5, i => makeBlock(i + 6)));
319
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: originalBlocks6to10 });
320
+
321
+ let tips = await tipsStore.getL2Tips();
322
+ expect(tips.proposed).toEqual(makeTip(10));
323
+ expect(tips.checkpointed.block).toEqual(makeTip(5)); // Only blocks 1-5 are checkpointed
324
+
325
+ // Store original hashes for proposed (non-checkpointed) blocks 6-8
326
+ const originalHash6 = blockHashes.get(6);
327
+ const originalHash7 = blockHashes.get(7);
328
+ const originalHash8 = blockHashes.get(8);
329
+
330
+ // Prune proposed blocks back to checkpoint (block 5)
331
+ // This removes proposed blocks 6-10, but checkpoint remains at 5
332
+ await tipsStore.handleBlockStreamEvent({
333
+ type: 'chain-pruned',
334
+ block: makeBlockId(5),
335
+ checkpoint: { number: CheckpointNumber.ZERO, hash: GENESIS_CHECKPOINT_HEADER_HASH.toString() },
336
+ });
337
+
338
+ tips = await tipsStore.getL2Tips();
339
+ expect(tips.proposed).toEqual(makeTip(5));
340
+ expect(tips.checkpointed.block).toEqual(makeTip(5)); // Checkpoint unchanged
341
+
342
+ // Propose new blocks 6-8 (different from original 6-10)
343
+ blockHashes.delete(6);
344
+ blockHashes.delete(7);
345
+ blockHashes.delete(8);
346
+ const newBlocks = await Promise.all(times(3, i => makeBlock(i + 6)));
347
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: newBlocks });
348
+
349
+ // Verify the new blocks have different hashes than the original ones
350
+ expect(blockHashes.get(6)).not.toEqual(originalHash6);
351
+ expect(blockHashes.get(7)).not.toEqual(originalHash7);
352
+ expect(blockHashes.get(8)).not.toEqual(originalHash8);
353
+
354
+ tips = await tipsStore.getL2Tips();
355
+ expect(tips.proposed).toEqual(makeTip(8));
356
+ expect(tips.checkpointed.block).toEqual(makeTip(5)); // Still at checkpoint 1
357
+
358
+ // Checkpoint all the new proposed blocks (6-8)
359
+ const checkpoint2 = await makeCheckpoint(2, newBlocks);
360
+ await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint2));
361
+
362
+ tips = await tipsStore.getL2Tips();
363
+ expect(tips.proposed).toEqual(makeTip(8));
364
+ expect(tips.checkpointed.block).toEqual(makeTip(8));
365
+ expect(tips.checkpointed.checkpoint.number).toEqual(CheckpointNumber(2));
366
+
367
+ // Block hashes in the store should reflect the new blocks
368
+ expect(await tipsStore.getL2BlockHash(6)).toEqual(blockHashes.get(6));
369
+ expect(await tipsStore.getL2BlockHash(7)).toEqual(blockHashes.get(7));
370
+ expect(await tipsStore.getL2BlockHash(8)).toEqual(blockHashes.get(8));
371
+
372
+ // And should NOT equal the original hashes
373
+ expect(await tipsStore.getL2BlockHash(6)).not.toEqual(originalHash6);
374
+ expect(await tipsStore.getL2BlockHash(7)).not.toEqual(originalHash7);
375
+ expect(await tipsStore.getL2BlockHash(8)).not.toEqual(originalHash8);
376
+ });
377
+
378
+ it('handles reorg with different chain length after prune', async () => {
379
+ // Propose blocks 1-3
380
+ const firstBlocks = await Promise.all(times(3, i => makeBlock(i + 1)));
381
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: firstBlocks });
382
+
383
+ // Checkpoint all proposed blocks (1-3) - these are now committed
384
+ const checkpoint1 = await makeCheckpoint(1, firstBlocks);
385
+ await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint1));
386
+
387
+ // Propose more blocks 4-10 (not yet checkpointed, can be pruned)
388
+ const originalBlocks4to10 = await Promise.all(times(7, i => makeBlock(i + 4)));
389
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: originalBlocks4to10 });
390
+
391
+ let tips = await tipsStore.getL2Tips();
392
+ expect(tips.proposed).toEqual(makeTip(10));
393
+ expect(tips.checkpointed.block).toEqual(makeTip(3)); // Only blocks 1-3 are checkpointed
394
+
395
+ // Prune proposed blocks back to checkpoint (block 3)
396
+ await tipsStore.handleBlockStreamEvent({
397
+ type: 'chain-pruned',
398
+ block: makeBlockId(3),
399
+ checkpoint: { number: CheckpointNumber.ZERO, hash: GENESIS_CHECKPOINT_HEADER_HASH.toString() },
400
+ });
401
+
402
+ tips = await tipsStore.getL2Tips();
403
+ expect(tips.proposed).toEqual(makeTip(3));
404
+ expect(tips.checkpointed.block).toEqual(makeTip(3)); // Checkpoint unchanged
405
+
406
+ // Now propose only 2 new blocks (4-5) instead of the original 7 blocks (4-10)
407
+ blockHashes.delete(4);
408
+ blockHashes.delete(5);
409
+ const newBlocks = await Promise.all(times(2, i => makeBlock(i + 4)));
410
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: newBlocks });
411
+
412
+ tips = await tipsStore.getL2Tips();
413
+ expect(tips.proposed).toEqual(makeTip(5));
414
+ expect(tips.checkpointed.block).toEqual(makeTip(3)); // Still at checkpoint 1
415
+
416
+ // Checkpoint all the new proposed blocks (4-5)
417
+ const checkpoint2 = await makeCheckpoint(2, newBlocks);
418
+ await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint2));
419
+
420
+ tips = await tipsStore.getL2Tips();
421
+ expect(tips.proposed).toEqual(makeTip(5));
422
+ expect(tips.checkpointed.block).toEqual(makeTip(5));
423
+ expect(tips.checkpointed.checkpoint.number).toEqual(CheckpointNumber(2));
424
+ });
425
+
426
+ it('handles reorg: prune back to proven tip (including checkpointed blocks), then re-propose and checkpoint', async () => {
427
+ // Propose blocks 1-3
428
+ const firstBlocks = await Promise.all(times(3, i => makeBlock(i + 1)));
429
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: firstBlocks });
430
+
431
+ // Checkpoint all proposed blocks (1-3)
432
+ const checkpoint1 = await makeCheckpoint(1, firstBlocks);
433
+ await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint1));
434
+
435
+ // Prove up to block 3
436
+ await tipsStore.handleBlockStreamEvent({ type: 'chain-proven', block: makeBlockId(3) });
437
+
438
+ let tips = await tipsStore.getL2Tips();
439
+ expect(tips.proposed).toEqual(makeTip(3));
440
+ expect(tips.checkpointed.block).toEqual(makeTip(3));
441
+ expect(tips.proven.block).toEqual(makeTip(3));
442
+
443
+ // Propose more blocks 4-6
444
+ const blocks4to6 = await Promise.all(times(3, i => makeBlock(i + 4)));
445
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: blocks4to6 });
446
+
447
+ // Checkpoint blocks 4-6 (now checkpointed is ahead of proven)
448
+ const checkpoint2 = await makeCheckpoint(2, blocks4to6);
449
+ await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint2));
450
+
451
+ tips = await tipsStore.getL2Tips();
452
+ expect(tips.proposed).toEqual(makeTip(6));
453
+ expect(tips.checkpointed.block).toEqual(makeTip(6));
454
+ expect(tips.proven.block).toEqual(makeTip(3)); // Proven is behind checkpointed
455
+
456
+ // Propose even more blocks 7-10 (proposed is now ahead of checkpointed)
457
+ const originalBlocks7to10 = await Promise.all(times(4, i => makeBlock(i + 7)));
458
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: originalBlocks7to10 });
459
+
460
+ tips = await tipsStore.getL2Tips();
461
+ // Now all three tips are different: proposed=10, checkpointed=6, proven=3
462
+ expect(tips.proposed).toEqual(makeTip(10));
463
+ expect(tips.checkpointed.block).toEqual(makeTip(6));
464
+ expect(tips.proven.block).toEqual(makeTip(3));
465
+
466
+ // Store original hashes for blocks 4-7
467
+ const originalHash4 = blockHashes.get(4);
468
+ const originalHash5 = blockHashes.get(5);
469
+ const originalHash6 = blockHashes.get(6);
470
+ const originalHash7 = blockHashes.get(7);
471
+
472
+ // Prune all the way back to proven tip (block 3)
473
+ // This prunes both proposed blocks (7-10) AND checkpointed blocks (4-6)
474
+ await tipsStore.handleBlockStreamEvent({
475
+ type: 'chain-pruned',
476
+ block: makeBlockId(3),
477
+ checkpoint: { number: CheckpointNumber.ZERO, hash: GENESIS_CHECKPOINT_HEADER_HASH.toString() },
478
+ });
479
+
480
+ tips = await tipsStore.getL2Tips();
481
+ expect(tips.proposed).toEqual(makeTip(3));
482
+ expect(tips.checkpointed.block).toEqual(makeTip(3)); // Checkpointed also pruned back
483
+ expect(tips.proven.block).toEqual(makeTip(3));
484
+
485
+ // Propose new blocks 4-7 (different from original)
486
+ blockHashes.delete(4);
487
+ blockHashes.delete(5);
488
+ blockHashes.delete(6);
489
+ blockHashes.delete(7);
490
+ const newBlocks = await Promise.all(times(4, i => makeBlock(i + 4)));
491
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: newBlocks });
492
+
493
+ // Verify the new blocks have different hashes than the original ones
494
+ expect(blockHashes.get(4)).not.toEqual(originalHash4);
495
+ expect(blockHashes.get(5)).not.toEqual(originalHash5);
496
+ expect(blockHashes.get(6)).not.toEqual(originalHash6);
497
+ expect(blockHashes.get(7)).not.toEqual(originalHash7);
498
+
499
+ tips = await tipsStore.getL2Tips();
500
+ expect(tips.proposed).toEqual(makeTip(7));
501
+ expect(tips.proven.block).toEqual(makeTip(3));
502
+
503
+ // Checkpoint all the new proposed blocks (4-7)
504
+ const checkpoint3 = await makeCheckpoint(3, newBlocks);
505
+ await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint3));
506
+
507
+ tips = await tipsStore.getL2Tips();
508
+ expect(tips.proposed).toEqual(makeTip(7));
509
+ expect(tips.checkpointed.block).toEqual(makeTip(7));
510
+ expect(tips.checkpointed.checkpoint.number).toEqual(CheckpointNumber(3));
511
+ expect(tips.proven.block).toEqual(makeTip(3)); // Proven hasn't moved yet
512
+
513
+ // Block hashes in the store should reflect the new blocks
514
+ expect(await tipsStore.getL2BlockHash(4)).toEqual(blockHashes.get(4));
515
+ expect(await tipsStore.getL2BlockHash(5)).toEqual(blockHashes.get(5));
516
+ expect(await tipsStore.getL2BlockHash(6)).toEqual(blockHashes.get(6));
517
+ expect(await tipsStore.getL2BlockHash(7)).toEqual(blockHashes.get(7));
518
+
519
+ // And should NOT equal the original hashes
520
+ expect(await tipsStore.getL2BlockHash(4)).not.toEqual(originalHash4);
521
+ expect(await tipsStore.getL2BlockHash(5)).not.toEqual(originalHash5);
522
+ expect(await tipsStore.getL2BlockHash(6)).not.toEqual(originalHash6);
523
+ expect(await tipsStore.getL2BlockHash(7)).not.toEqual(originalHash7);
77
524
  });
78
525
 
79
526
  // Regression test for #13142
80
527
  it('does not blow up when setting proven chain on an unseen block number', async () => {
81
- await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: [makeBlock(5)] });
528
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: [await makeBlock(5)] });
82
529
  await tipsStore.handleBlockStreamEvent({ type: 'chain-proven', block: makeBlockId(3) });
83
530
 
84
531
  const tips = await tipsStore.getL2Tips();
85
- expect(tips).toEqual(makeTips(5, 3, 0));
532
+ expect(tips.proposed).toEqual(makeTip(5));
533
+ expect(tips.proven.block).toEqual(makeTip(3));
534
+ // No checkpoint for block 3 since it wasn't checkpointed
535
+ expect(tips.proven.checkpoint.number).toEqual(CheckpointNumber.ZERO);
86
536
  });
87
537
  }