@aztec/stdlib 0.0.1-commit.b2a5d0dd1 → 0.0.1-commit.b3d3157a

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 (700) hide show
  1. package/dest/abi/abi.d.ts +121 -1197
  2. package/dest/abi/abi.d.ts.map +1 -1
  3. package/dest/abi/abi.js +31 -16
  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/contract_artifact.d.ts +1 -1
  7. package/dest/abi/contract_artifact.d.ts.map +1 -1
  8. package/dest/abi/contract_artifact.js +14 -7
  9. package/dest/abi/event_selector.d.ts +2 -2
  10. package/dest/abi/event_selector.d.ts.map +1 -1
  11. package/dest/abi/function_call.d.ts +7 -25
  12. package/dest/abi/function_call.d.ts.map +1 -1
  13. package/dest/abi/note_selector.d.ts +2 -2
  14. package/dest/abi/note_selector.d.ts.map +1 -1
  15. package/dest/abi/utils.d.ts +1 -1
  16. package/dest/abi/utils.d.ts.map +1 -1
  17. package/dest/abi/utils.js +1 -1
  18. package/dest/auth_witness/auth_witness.d.ts +2 -2
  19. package/dest/auth_witness/auth_witness.d.ts.map +1 -1
  20. package/dest/avm/avm.d.ts +1756 -10463
  21. package/dest/avm/avm.d.ts.map +1 -1
  22. package/dest/avm/avm.js +6 -3
  23. package/dest/avm/avm_accumulated_data.d.ts +22 -86
  24. package/dest/avm/avm_accumulated_data.d.ts.map +1 -1
  25. package/dest/avm/avm_circuit_public_inputs.d.ts +180 -932
  26. package/dest/avm/avm_circuit_public_inputs.d.ts.map +1 -1
  27. package/dest/avm/avm_proving_request.d.ts +653 -5446
  28. package/dest/avm/avm_proving_request.d.ts.map +1 -1
  29. package/dest/avm/message_pack.js +12 -3
  30. package/dest/avm/public_data_write.d.ts +6 -12
  31. package/dest/avm/public_data_write.d.ts.map +1 -1
  32. package/dest/avm/revert_code.d.ts +1 -7
  33. package/dest/avm/revert_code.d.ts.map +1 -1
  34. package/dest/avm/revert_code.js +0 -3
  35. package/dest/aztec-address/index.d.ts +6 -3
  36. package/dest/aztec-address/index.d.ts.map +1 -1
  37. package/dest/aztec-address/index.js +7 -2
  38. package/dest/block/attestation_info.d.ts +3 -2
  39. package/dest/block/attestation_info.d.ts.map +1 -1
  40. package/dest/block/attestation_info.js +7 -5
  41. package/dest/block/block_data.d.ts +9 -34
  42. package/dest/block/block_data.d.ts.map +1 -1
  43. package/dest/block/block_parameter.d.ts +37 -4
  44. package/dest/block/block_parameter.d.ts.map +1 -1
  45. package/dest/block/block_parameter.js +53 -2
  46. package/dest/block/in_block.d.ts +5 -24
  47. package/dest/block/in_block.d.ts.map +1 -1
  48. package/dest/block/index.d.ts +1 -2
  49. package/dest/block/index.d.ts.map +1 -1
  50. package/dest/block/index.js +0 -1
  51. package/dest/block/l2_block.d.ts +13 -41
  52. package/dest/block/l2_block.d.ts.map +1 -1
  53. package/dest/block/l2_block_info.d.ts +7 -27
  54. package/dest/block/l2_block_info.d.ts.map +1 -1
  55. package/dest/block/l2_block_source.d.ts +199 -425
  56. package/dest/block/l2_block_source.d.ts.map +1 -1
  57. package/dest/block/l2_block_source.js +66 -1
  58. package/dest/block/l2_block_stream/l2_block_stream.d.ts +2 -2
  59. package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
  60. package/dest/block/l2_block_stream/l2_block_stream.js +44 -17
  61. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts +3 -1
  62. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts.map +1 -1
  63. package/dest/block/l2_block_stream/l2_tips_memory_store.js +3 -0
  64. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +4 -1
  65. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -1
  66. package/dest/block/l2_block_stream/l2_tips_store_base.js +26 -7
  67. package/dest/block/proposal/attestations_and_signers.d.ts +19 -30
  68. package/dest/block/proposal/attestations_and_signers.d.ts.map +1 -1
  69. package/dest/block/proposal/attestations_and_signers.js +26 -18
  70. package/dest/block/proposal/committee_attestation.d.ts +6 -12
  71. package/dest/block/proposal/committee_attestation.d.ts.map +1 -1
  72. package/dest/block/test/l2_tips_store_test_suite.js +1 -1
  73. package/dest/checkpoint/checkpoint.d.ts +24 -96
  74. package/dest/checkpoint/checkpoint.d.ts.map +1 -1
  75. package/dest/checkpoint/checkpoint_data.d.ts +40 -129
  76. package/dest/checkpoint/checkpoint_data.d.ts.map +1 -1
  77. package/dest/checkpoint/checkpoint_data.js +2 -0
  78. package/dest/checkpoint/checkpoint_info.d.ts +7 -23
  79. package/dest/checkpoint/checkpoint_info.d.ts.map +1 -1
  80. package/dest/checkpoint/checkpoint_reexecution_tracker.d.ts +60 -0
  81. package/dest/checkpoint/checkpoint_reexecution_tracker.d.ts.map +1 -0
  82. package/dest/checkpoint/checkpoint_reexecution_tracker.js +108 -0
  83. package/dest/checkpoint/digest.d.ts +18 -0
  84. package/dest/checkpoint/digest.d.ts.map +1 -0
  85. package/dest/checkpoint/digest.js +12 -0
  86. package/dest/checkpoint/index.d.ts +4 -1
  87. package/dest/checkpoint/index.d.ts.map +1 -1
  88. package/dest/checkpoint/index.js +3 -0
  89. package/dest/checkpoint/previous_checkpoint_out_hashes.d.ts +33 -0
  90. package/dest/checkpoint/previous_checkpoint_out_hashes.d.ts.map +1 -0
  91. package/dest/checkpoint/previous_checkpoint_out_hashes.js +45 -0
  92. package/dest/checkpoint/published_checkpoint.d.ts +42 -194
  93. package/dest/checkpoint/published_checkpoint.d.ts.map +1 -1
  94. package/dest/config/chain-config.d.ts +4 -9
  95. package/dest/config/chain-config.d.ts.map +1 -1
  96. package/dest/config/chain-config.js +6 -11
  97. package/dest/config/index.d.ts +1 -2
  98. package/dest/config/index.d.ts.map +1 -1
  99. package/dest/config/index.js +0 -1
  100. package/dest/config/sequencer-config.d.ts +5 -3
  101. package/dest/config/sequencer-config.d.ts.map +1 -1
  102. package/dest/config/sequencer-config.js +13 -6
  103. package/dest/contract/complete_address.d.ts +3 -2
  104. package/dest/contract/complete_address.d.ts.map +1 -1
  105. package/dest/contract/complete_address.js +6 -2
  106. package/dest/contract/contract_address.d.ts +5 -5
  107. package/dest/contract/contract_address.d.ts.map +1 -1
  108. package/dest/contract/contract_address.js +5 -4
  109. package/dest/contract/contract_deployment_data.d.ts +15 -61
  110. package/dest/contract/contract_deployment_data.d.ts.map +1 -1
  111. package/dest/contract/contract_instance.d.ts +4 -2
  112. package/dest/contract/contract_instance.d.ts.map +1 -1
  113. package/dest/contract/contract_instance.js +10 -3
  114. package/dest/contract/interfaces/contract_class.d.ts +15 -86
  115. package/dest/contract/interfaces/contract_class.d.ts.map +1 -1
  116. package/dest/contract/interfaces/contract_instance.d.ts +41 -95
  117. package/dest/contract/interfaces/contract_instance.d.ts.map +1 -1
  118. package/dest/contract/interfaces/contract_instance.js +4 -2
  119. package/dest/contract/interfaces/contract_instance_update.d.ts +6 -26
  120. package/dest/contract/interfaces/contract_instance_update.d.ts.map +1 -1
  121. package/dest/contract/interfaces/protocol_contract_addresses.d.ts +2 -12
  122. package/dest/contract/interfaces/protocol_contract_addresses.d.ts.map +1 -1
  123. package/dest/database-version/database_version.d.ts +5 -11
  124. package/dest/database-version/database_version.d.ts.map +1 -1
  125. package/dest/database-version/version_manager.d.ts +6 -2
  126. package/dest/database-version/version_manager.d.ts.map +1 -1
  127. package/dest/database-version/version_manager.js +12 -1
  128. package/dest/epoch-helpers/index.d.ts +4 -22
  129. package/dest/epoch-helpers/index.d.ts.map +1 -1
  130. package/dest/gas/gas.d.ts +9 -14
  131. package/dest/gas/gas.d.ts.map +1 -1
  132. package/dest/gas/gas.js +6 -3
  133. package/dest/gas/gas_fees.d.ts +9 -14
  134. package/dest/gas/gas_fees.d.ts.map +1 -1
  135. package/dest/gas/gas_fees.js +7 -3
  136. package/dest/gas/gas_settings.d.ts +27 -84
  137. package/dest/gas/gas_settings.d.ts.map +1 -1
  138. package/dest/gas/gas_settings.js +6 -3
  139. package/dest/ha-signing/config.d.ts +9 -73
  140. package/dest/ha-signing/config.d.ts.map +1 -1
  141. package/dest/ha-signing/config.js +5 -15
  142. package/dest/ha-signing/local_config.d.ts +3 -34
  143. package/dest/ha-signing/local_config.d.ts.map +1 -1
  144. package/dest/ha-signing/local_config.js +2 -2
  145. package/dest/hash/hash.d.ts +1 -1
  146. package/dest/hash/hash.d.ts.map +1 -1
  147. package/dest/hash/hash.js +2 -2
  148. package/dest/interfaces/allowed_element.d.ts +4 -28
  149. package/dest/interfaces/allowed_element.d.ts.map +1 -1
  150. package/dest/interfaces/api_limit.d.ts +1 -1
  151. package/dest/interfaces/api_limit.js +1 -1
  152. package/dest/interfaces/archiver.d.ts +16 -36
  153. package/dest/interfaces/archiver.d.ts.map +1 -1
  154. package/dest/interfaces/archiver.js +211 -71
  155. package/dest/interfaces/aztec-node-admin.d.ts +62 -292
  156. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  157. package/dest/interfaces/aztec-node-admin.js +57 -14
  158. package/dest/interfaces/aztec-node-debug.js +4 -1
  159. package/dest/interfaces/aztec-node.d.ts +100 -106
  160. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  161. package/dest/interfaces/aztec-node.js +308 -70
  162. package/dest/interfaces/block-builder.d.ts +3 -1
  163. package/dest/interfaces/block-builder.d.ts.map +1 -1
  164. package/dest/interfaces/block_response.d.ts +90 -0
  165. package/dest/interfaces/block_response.d.ts.map +1 -0
  166. package/dest/interfaces/block_response.js +30 -0
  167. package/dest/interfaces/chain_tips.d.ts +50 -0
  168. package/dest/interfaces/chain_tips.d.ts.map +1 -0
  169. package/dest/interfaces/chain_tips.js +11 -0
  170. package/dest/interfaces/checkpoint_parameter.d.ts +14 -0
  171. package/dest/interfaces/checkpoint_parameter.d.ts.map +1 -0
  172. package/dest/interfaces/checkpoint_parameter.js +18 -0
  173. package/dest/interfaces/checkpoint_response.d.ts +122 -0
  174. package/dest/interfaces/checkpoint_response.d.ts.map +1 -0
  175. package/dest/interfaces/checkpoint_response.js +26 -0
  176. package/dest/interfaces/client.d.ts +7 -2
  177. package/dest/interfaces/client.d.ts.map +1 -1
  178. package/dest/interfaces/client.js +6 -1
  179. package/dest/interfaces/configs.d.ts +41 -130
  180. package/dest/interfaces/configs.d.ts.map +1 -1
  181. package/dest/interfaces/configs.js +9 -1
  182. package/dest/interfaces/l1_publish_info.d.ts +29 -0
  183. package/dest/interfaces/l1_publish_info.d.ts.map +1 -0
  184. package/dest/interfaces/l1_publish_info.js +26 -0
  185. package/dest/interfaces/l2_logs_source.d.ts +14 -36
  186. package/dest/interfaces/l2_logs_source.d.ts.map +1 -1
  187. package/dest/interfaces/l2_logs_source.js +5 -0
  188. package/dest/interfaces/merkle_tree_operations.d.ts +9 -3
  189. package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
  190. package/dest/interfaces/p2p-bootstrap.js +8 -2
  191. package/dest/interfaces/p2p.d.ts +15 -5
  192. package/dest/interfaces/p2p.d.ts.map +1 -1
  193. package/dest/interfaces/p2p.js +28 -5
  194. package/dest/interfaces/private_kernel_prover.d.ts +62 -2
  195. package/dest/interfaces/private_kernel_prover.d.ts.map +1 -1
  196. package/dest/interfaces/prover-agent.d.ts +5 -23
  197. package/dest/interfaces/prover-agent.d.ts.map +1 -1
  198. package/dest/interfaces/prover-agent.js +4 -1
  199. package/dest/interfaces/prover-client.d.ts +6 -27
  200. package/dest/interfaces/prover-client.d.ts.map +1 -1
  201. package/dest/interfaces/prover-node.js +22 -8
  202. package/dest/interfaces/proving-job-source.js +24 -4
  203. package/dest/interfaces/proving-job.d.ts +725 -5776
  204. package/dest/interfaces/proving-job.d.ts.map +1 -1
  205. package/dest/interfaces/proving-job.js +1 -1
  206. package/dest/interfaces/public_storage_override.d.ts +22 -0
  207. package/dest/interfaces/public_storage_override.d.ts.map +1 -0
  208. package/dest/interfaces/public_storage_override.js +7 -0
  209. package/dest/interfaces/server.d.ts +6 -1
  210. package/dest/interfaces/server.d.ts.map +1 -1
  211. package/dest/interfaces/server.js +5 -0
  212. package/dest/interfaces/slasher.d.ts +25 -56
  213. package/dest/interfaces/slasher.d.ts.map +1 -1
  214. package/dest/interfaces/slasher.js +8 -2
  215. package/dest/interfaces/tx_provider.d.ts +6 -1
  216. package/dest/interfaces/tx_provider.d.ts.map +1 -1
  217. package/dest/interfaces/validator.d.ts +40 -229
  218. package/dest/interfaces/validator.d.ts.map +1 -1
  219. package/dest/interfaces/validator.js +5 -0
  220. package/dest/interfaces/world_state.d.ts +2 -2
  221. package/dest/interfaces/world_state.d.ts.map +1 -1
  222. package/dest/kernel/hints/key_validation_request.d.ts +12 -8
  223. package/dest/kernel/hints/key_validation_request.d.ts.map +1 -1
  224. package/dest/kernel/hints/key_validation_request.js +20 -18
  225. package/dest/kernel/index.d.ts +5 -1
  226. package/dest/kernel/index.d.ts.map +1 -1
  227. package/dest/kernel/index.js +4 -0
  228. package/dest/kernel/log_hash.d.ts +6 -2
  229. package/dest/kernel/log_hash.d.ts.map +1 -1
  230. package/dest/kernel/log_hash.js +21 -9
  231. package/dest/kernel/private_circuit_public_inputs.d.ts +2 -2
  232. package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
  233. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts +2 -2
  234. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts.map +1 -1
  235. package/dest/kernel/private_kernel_init_2_circuit_private_inputs.d.ts +23 -0
  236. package/dest/kernel/private_kernel_init_2_circuit_private_inputs.d.ts.map +1 -0
  237. package/dest/kernel/private_kernel_init_2_circuit_private_inputs.js +35 -0
  238. package/dest/kernel/private_kernel_init_3_circuit_private_inputs.d.ts +24 -0
  239. package/dest/kernel/private_kernel_init_3_circuit_private_inputs.d.ts.map +1 -0
  240. package/dest/kernel/private_kernel_init_3_circuit_private_inputs.js +37 -0
  241. package/dest/kernel/private_kernel_inner_2_circuit_private_inputs.d.ts +16 -0
  242. package/dest/kernel/private_kernel_inner_2_circuit_private_inputs.d.ts.map +1 -0
  243. package/dest/kernel/private_kernel_inner_2_circuit_private_inputs.js +23 -0
  244. package/dest/kernel/private_kernel_inner_3_circuit_private_inputs.d.ts +17 -0
  245. package/dest/kernel/private_kernel_inner_3_circuit_private_inputs.d.ts.map +1 -0
  246. package/dest/kernel/private_kernel_inner_3_circuit_private_inputs.js +25 -0
  247. package/dest/kernel/private_kernel_prover_output.d.ts +3 -29
  248. package/dest/kernel/private_kernel_prover_output.d.ts.map +1 -1
  249. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts +9 -6
  250. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts.map +1 -1
  251. package/dest/kernel/private_kernel_tail_circuit_public_inputs.js +22 -7
  252. package/dest/kernel/private_to_avm_accumulated_data.d.ts +25 -69
  253. package/dest/kernel/private_to_avm_accumulated_data.d.ts.map +1 -1
  254. package/dest/kernel/private_to_avm_accumulated_data.js +11 -5
  255. package/dest/kernel/private_to_public_accumulated_data.d.ts +4 -3
  256. package/dest/kernel/private_to_public_accumulated_data.d.ts.map +1 -1
  257. package/dest/kernel/private_to_public_accumulated_data.js +6 -3
  258. package/dest/kernel/private_to_public_kernel_circuit_public_inputs.d.ts +5 -4
  259. package/dest/kernel/private_to_public_kernel_circuit_public_inputs.d.ts.map +1 -1
  260. package/dest/kernel/private_to_public_kernel_circuit_public_inputs.js +7 -3
  261. package/dest/kernel/private_to_rollup_accumulated_data.d.ts +5 -4
  262. package/dest/kernel/private_to_rollup_accumulated_data.d.ts.map +1 -1
  263. package/dest/kernel/private_to_rollup_accumulated_data.js +6 -3
  264. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts +5 -4
  265. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts.map +1 -1
  266. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.js +7 -3
  267. package/dest/kernel/public_call_request.d.ts +15 -30
  268. package/dest/kernel/public_call_request.d.ts.map +1 -1
  269. package/dest/kernel/public_call_request.js +16 -7
  270. package/dest/keys/derivation.d.ts +6 -2
  271. package/dest/keys/derivation.d.ts.map +1 -1
  272. package/dest/keys/derivation.js +16 -6
  273. package/dest/keys/public_key.d.ts +22 -3
  274. package/dest/keys/public_key.d.ts.map +1 -1
  275. package/dest/keys/public_key.js +20 -1
  276. package/dest/keys/public_keys.d.ts +55 -82
  277. package/dest/keys/public_keys.d.ts.map +1 -1
  278. package/dest/keys/public_keys.js +102 -74
  279. package/dest/kv-store/config.d.ts +3 -6
  280. package/dest/kv-store/config.d.ts.map +1 -1
  281. package/dest/kv-store/config.js +2 -7
  282. package/dest/logs/app_tagging_secret.d.ts +46 -0
  283. package/dest/logs/app_tagging_secret.d.ts.map +1 -0
  284. package/dest/logs/{extended_directional_app_tagging_secret.js → app_tagging_secret.js} +51 -21
  285. package/dest/logs/app_tagging_secret_kind.d.ts +7 -0
  286. package/dest/logs/app_tagging_secret_kind.d.ts.map +1 -0
  287. package/dest/logs/app_tagging_secret_kind.js +17 -0
  288. package/dest/logs/contract_class_log.d.ts +16 -34
  289. package/dest/logs/contract_class_log.d.ts.map +1 -1
  290. package/dest/logs/contract_class_log.js +11 -9
  291. package/dest/logs/index.d.ts +7 -7
  292. package/dest/logs/index.d.ts.map +1 -1
  293. package/dest/logs/index.js +6 -6
  294. package/dest/logs/log_cursor.d.ts +51 -0
  295. package/dest/logs/log_cursor.d.ts.map +1 -0
  296. package/dest/logs/log_cursor.js +82 -0
  297. package/dest/logs/log_result.d.ts +54 -0
  298. package/dest/logs/log_result.d.ts.map +1 -0
  299. package/dest/logs/log_result.js +56 -0
  300. package/dest/logs/logs_query.d.ts +82 -0
  301. package/dest/logs/logs_query.d.ts.map +1 -0
  302. package/dest/logs/logs_query.js +50 -0
  303. package/dest/logs/message_context.d.ts +3 -2
  304. package/dest/logs/message_context.d.ts.map +1 -1
  305. package/dest/logs/message_context.js +4 -0
  306. package/dest/logs/pre_tag.d.ts +11 -24
  307. package/dest/logs/pre_tag.d.ts.map +1 -1
  308. package/dest/logs/pre_tag.js +2 -2
  309. package/dest/logs/private_log.d.ts +7 -12
  310. package/dest/logs/private_log.d.ts.map +1 -1
  311. package/dest/logs/private_log.js +6 -3
  312. package/dest/logs/query_all_logs_by_tags.d.ts +24 -0
  313. package/dest/logs/query_all_logs_by_tags.d.ts.map +1 -0
  314. package/dest/logs/query_all_logs_by_tags.js +64 -0
  315. package/dest/logs/siloed_tag.d.ts +1 -1
  316. package/dest/logs/siloed_tag.d.ts.map +1 -1
  317. package/dest/logs/siloed_tag.js +3 -1
  318. package/dest/logs/tagging_index_range.d.ts +13 -31
  319. package/dest/logs/tagging_index_range.d.ts.map +1 -1
  320. package/dest/logs/tagging_index_range.js +2 -2
  321. package/dest/messaging/append_l1_to_l2_messages.d.ts +9 -0
  322. package/dest/messaging/append_l1_to_l2_messages.d.ts.map +1 -0
  323. package/dest/messaging/append_l1_to_l2_messages.js +12 -0
  324. package/dest/messaging/index.d.ts +2 -1
  325. package/dest/messaging/index.d.ts.map +1 -1
  326. package/dest/messaging/index.js +1 -0
  327. package/dest/messaging/l2_to_l1_membership.d.ts +43 -6
  328. package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -1
  329. package/dest/messaging/l2_to_l1_membership.js +72 -12
  330. package/dest/messaging/l2_to_l1_message.d.ts +38 -112
  331. package/dest/messaging/l2_to_l1_message.d.ts.map +1 -1
  332. package/dest/messaging/l2_to_l1_message.js +21 -12
  333. package/dest/noir/index.d.ts +3 -1
  334. package/dest/noir/index.d.ts.map +1 -1
  335. package/dest/note/note.d.ts +2 -2
  336. package/dest/note/note.d.ts.map +1 -1
  337. package/dest/p2p/block_proposal.d.ts +29 -10
  338. package/dest/p2p/block_proposal.d.ts.map +1 -1
  339. package/dest/p2p/block_proposal.js +56 -33
  340. package/dest/p2p/checkpoint_attestation.d.ts +14 -6
  341. package/dest/p2p/checkpoint_attestation.d.ts.map +1 -1
  342. package/dest/p2p/checkpoint_attestation.js +24 -20
  343. package/dest/p2p/checkpoint_proposal.d.ts +31 -10
  344. package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
  345. package/dest/p2p/checkpoint_proposal.js +58 -31
  346. package/dest/p2p/consensus_payload.d.ts +26 -20
  347. package/dest/p2p/consensus_payload.d.ts.map +1 -1
  348. package/dest/p2p/consensus_payload.js +38 -19
  349. package/dest/p2p/signature_utils.d.ts +28 -19
  350. package/dest/p2p/signature_utils.d.ts.map +1 -1
  351. package/dest/p2p/signature_utils.js +118 -21
  352. package/dest/p2p/signed_txs.d.ts +15 -13
  353. package/dest/p2p/signed_txs.d.ts.map +1 -1
  354. package/dest/p2p/signed_txs.js +26 -24
  355. package/dest/parity/parity_base_private_inputs.d.ts +8 -4
  356. package/dest/parity/parity_base_private_inputs.d.ts.map +1 -1
  357. package/dest/parity/parity_base_private_inputs.js +7 -5
  358. package/dest/parity/parity_public_inputs.d.ts +8 -4
  359. package/dest/parity/parity_public_inputs.d.ts.map +1 -1
  360. package/dest/parity/parity_public_inputs.js +6 -3
  361. package/dest/parity/parity_root_private_inputs.d.ts +2 -2
  362. package/dest/parity/parity_root_private_inputs.d.ts.map +1 -1
  363. package/dest/proofs/chonk_proof.d.ts +17 -11
  364. package/dest/proofs/chonk_proof.d.ts.map +1 -1
  365. package/dest/proofs/chonk_proof.js +44 -22
  366. package/dest/proofs/recursive_proof.d.ts +2 -2
  367. package/dest/proofs/recursive_proof.d.ts.map +1 -1
  368. package/dest/rollup/block_merge_rollup_private_inputs.d.ts +2 -2
  369. package/dest/rollup/block_merge_rollup_private_inputs.d.ts.map +1 -1
  370. package/dest/rollup/block_rollup_public_inputs.d.ts +12 -2
  371. package/dest/rollup/block_rollup_public_inputs.d.ts.map +1 -1
  372. package/dest/rollup/block_rollup_public_inputs.js +12 -0
  373. package/dest/rollup/block_root_rollup_private_inputs.d.ts +6 -6
  374. package/dest/rollup/block_root_rollup_private_inputs.d.ts.map +1 -1
  375. package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts +2 -2
  376. package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts.map +1 -1
  377. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +9 -2
  378. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -1
  379. package/dest/rollup/checkpoint_rollup_public_inputs.js +9 -0
  380. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts +5 -5
  381. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts.map +1 -1
  382. package/dest/rollup/private_tx_base_rollup_private_inputs.d.ts +2 -2
  383. package/dest/rollup/private_tx_base_rollup_private_inputs.d.ts.map +1 -1
  384. package/dest/rollup/public_chonk_verifier_private_inputs.d.ts +2 -2
  385. package/dest/rollup/public_chonk_verifier_private_inputs.d.ts.map +1 -1
  386. package/dest/rollup/public_chonk_verifier_public_inputs.d.ts +2 -2
  387. package/dest/rollup/public_chonk_verifier_public_inputs.d.ts.map +1 -1
  388. package/dest/rollup/public_tx_base_rollup_private_inputs.d.ts +2 -2
  389. package/dest/rollup/public_tx_base_rollup_private_inputs.d.ts.map +1 -1
  390. package/dest/rollup/root_rollup_private_inputs.d.ts +2 -2
  391. package/dest/rollup/root_rollup_private_inputs.d.ts.map +1 -1
  392. package/dest/rollup/root_rollup_public_inputs.d.ts +2 -2
  393. package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -1
  394. package/dest/rollup/tx_merge_rollup_private_inputs.d.ts +2 -2
  395. package/dest/rollup/tx_merge_rollup_private_inputs.d.ts.map +1 -1
  396. package/dest/rollup/tx_rollup_public_inputs.d.ts +2 -2
  397. package/dest/rollup/tx_rollup_public_inputs.d.ts.map +1 -1
  398. package/dest/schemas/schemas.d.ts +32 -78
  399. package/dest/schemas/schemas.d.ts.map +1 -1
  400. package/dest/schemas/schemas.js +2 -2
  401. package/dest/slashing/helpers.d.ts +2 -2
  402. package/dest/slashing/helpers.d.ts.map +1 -1
  403. package/dest/slashing/helpers.js +10 -7
  404. package/dest/slashing/types.d.ts +15 -23
  405. package/dest/slashing/types.d.ts.map +1 -1
  406. package/dest/slashing/types.js +16 -10
  407. package/dest/snapshots/types.d.ts +15 -78
  408. package/dest/snapshots/types.d.ts.map +1 -1
  409. package/dest/stats/stats.d.ts +2 -2
  410. package/dest/stats/stats.d.ts.map +1 -1
  411. package/dest/tests/factories.d.ts +23 -23
  412. package/dest/tests/factories.d.ts.map +1 -1
  413. package/dest/tests/factories.js +70 -47
  414. package/dest/tests/mocks.d.ts +8 -5
  415. package/dest/tests/mocks.d.ts.map +1 -1
  416. package/dest/tests/mocks.js +31 -38
  417. package/dest/timetable/index.d.ts +7 -10
  418. package/dest/timetable/index.d.ts.map +1 -1
  419. package/dest/timetable/index.js +60 -80
  420. package/dest/trees/append_only_tree_snapshot.d.ts +9 -14
  421. package/dest/trees/append_only_tree_snapshot.d.ts.map +1 -1
  422. package/dest/trees/append_only_tree_snapshot.js +6 -3
  423. package/dest/trees/nullifier_leaf.d.ts +18 -42
  424. package/dest/trees/nullifier_leaf.d.ts.map +1 -1
  425. package/dest/trees/nullifier_membership_witness.d.ts +16 -59
  426. package/dest/trees/nullifier_membership_witness.d.ts.map +1 -1
  427. package/dest/trees/nullifier_membership_witness.js +2 -14
  428. package/dest/trees/public_data_leaf.d.ts +21 -53
  429. package/dest/trees/public_data_leaf.d.ts.map +1 -1
  430. package/dest/trees/public_data_witness.d.ts +16 -58
  431. package/dest/trees/public_data_witness.d.ts.map +1 -1
  432. package/dest/tx/block_header.d.ts +4 -3
  433. package/dest/tx/block_header.d.ts.map +1 -1
  434. package/dest/tx/block_header.js +6 -3
  435. package/dest/tx/call_context.d.ts +4 -14
  436. package/dest/tx/call_context.d.ts.map +1 -1
  437. package/dest/tx/capsule.d.ts +2 -2
  438. package/dest/tx/capsule.d.ts.map +1 -1
  439. package/dest/tx/function_data.d.ts +4 -10
  440. package/dest/tx/function_data.d.ts.map +1 -1
  441. package/dest/tx/global_variables.d.ts +16 -49
  442. package/dest/tx/global_variables.d.ts.map +1 -1
  443. package/dest/tx/global_variables.js +8 -12
  444. package/dest/tx/hashed_values.d.ts +4 -3
  445. package/dest/tx/hashed_values.d.ts.map +1 -1
  446. package/dest/tx/hashed_values.js +6 -3
  447. package/dest/tx/in_tx.d.ts +5 -17
  448. package/dest/tx/in_tx.d.ts.map +1 -1
  449. package/dest/tx/indexed_tx_effect.d.ts +8 -19
  450. package/dest/tx/indexed_tx_effect.d.ts.map +1 -1
  451. package/dest/tx/indexed_tx_effect.js +8 -4
  452. package/dest/tx/partial_state_reference.d.ts +22 -65
  453. package/dest/tx/partial_state_reference.d.ts.map +1 -1
  454. package/dest/tx/partial_state_reference.js +6 -3
  455. package/dest/tx/private_execution_result.d.ts +6 -16
  456. package/dest/tx/private_execution_result.d.ts.map +1 -1
  457. package/dest/tx/profiling.d.ts +54 -352
  458. package/dest/tx/profiling.d.ts.map +1 -1
  459. package/dest/tx/profiling.js +4 -4
  460. package/dest/tx/protocol_contracts.d.ts +5 -9
  461. package/dest/tx/protocol_contracts.d.ts.map +1 -1
  462. package/dest/tx/proven_tx.d.ts +30 -74
  463. package/dest/tx/proven_tx.d.ts.map +1 -1
  464. package/dest/tx/proven_tx.js +6 -0
  465. package/dest/tx/public_call_request_with_calldata.d.ts +4 -3
  466. package/dest/tx/public_call_request_with_calldata.d.ts.map +1 -1
  467. package/dest/tx/public_call_request_with_calldata.js +6 -3
  468. package/dest/tx/simulated_tx.d.ts +62 -1249
  469. package/dest/tx/simulated_tx.d.ts.map +1 -1
  470. package/dest/tx/simulated_tx.js +12 -10
  471. package/dest/tx/state_reference.d.ts +30 -117
  472. package/dest/tx/state_reference.d.ts.map +1 -1
  473. package/dest/tx/state_reference.js +6 -4
  474. package/dest/tx/tree_snapshots.d.ts +27 -84
  475. package/dest/tx/tree_snapshots.d.ts.map +1 -1
  476. package/dest/tx/tree_snapshots.js +6 -4
  477. package/dest/tx/tx.d.ts +12 -11
  478. package/dest/tx/tx.d.ts.map +1 -1
  479. package/dest/tx/tx.js +30 -23
  480. package/dest/tx/tx_constant_data.d.ts +4 -3
  481. package/dest/tx/tx_constant_data.d.ts.map +1 -1
  482. package/dest/tx/tx_constant_data.js +6 -3
  483. package/dest/tx/tx_context.d.ts +32 -131
  484. package/dest/tx/tx_context.d.ts.map +1 -1
  485. package/dest/tx/tx_context.js +6 -6
  486. package/dest/tx/tx_hash.d.ts +6 -4
  487. package/dest/tx/tx_hash.d.ts.map +1 -1
  488. package/dest/tx/tx_hash.js +13 -5
  489. package/dest/tx/tx_receipt.d.ts +144 -67
  490. package/dest/tx/tx_receipt.d.ts.map +1 -1
  491. package/dest/tx/tx_receipt.js +141 -51
  492. package/dest/tx/validator/tx_validator.d.ts +5 -27
  493. package/dest/tx/validator/tx_validator.d.ts.map +1 -1
  494. package/dest/tx/validator/tx_validator.js +0 -4
  495. package/dest/types/shared.d.ts +4 -3
  496. package/dest/types/shared.d.ts.map +1 -1
  497. package/dest/types/shared.js +6 -3
  498. package/dest/update-checker/dev_version.d.ts +3 -0
  499. package/dest/update-checker/dev_version.d.ts.map +1 -0
  500. package/dest/update-checker/dev_version.js +1 -0
  501. package/dest/update-checker/index.d.ts +2 -1
  502. package/dest/update-checker/index.d.ts.map +1 -1
  503. package/dest/update-checker/index.js +1 -0
  504. package/dest/update-checker/package_version.d.ts +6 -3
  505. package/dest/update-checker/package_version.d.ts.map +1 -1
  506. package/dest/update-checker/package_version.js +8 -19
  507. package/dest/validators/schemas.d.ts +147 -614
  508. package/dest/validators/schemas.d.ts.map +1 -1
  509. package/dest/validators/schemas.js +6 -4
  510. package/dest/validators/types.d.ts +20 -3
  511. package/dest/validators/types.d.ts.map +1 -1
  512. package/dest/versioning/versioning.js +1 -1
  513. package/dest/vks/verification_key.d.ts +3 -3
  514. package/dest/vks/verification_key.d.ts.map +1 -1
  515. package/dest/world-state/genesis_data.d.ts +3 -1
  516. package/dest/world-state/genesis_data.d.ts.map +1 -1
  517. package/dest/world-state/genesis_data.js +3 -0
  518. package/dest/world-state/world_state_revision.d.ts +4 -39
  519. package/dest/world-state/world_state_revision.d.ts.map +1 -1
  520. package/dest/world-state/world_state_revision.js +0 -20
  521. package/package.json +12 -11
  522. package/src/abi/abi.ts +53 -19
  523. package/src/abi/contract_artifact.ts +11 -6
  524. package/src/abi/utils.ts +6 -4
  525. package/src/avm/avm.ts +5 -0
  526. package/src/avm/message_pack.ts +12 -3
  527. package/src/avm/revert_code.ts +0 -6
  528. package/src/aztec-address/index.ts +12 -3
  529. package/src/block/attestation_info.ts +11 -11
  530. package/src/block/block_parameter.ts +72 -4
  531. package/src/block/index.ts +0 -1
  532. package/src/block/l2_block_source.ts +201 -149
  533. package/src/block/l2_block_stream/l2_block_stream.ts +39 -28
  534. package/src/block/l2_block_stream/l2_tips_memory_store.ts +5 -0
  535. package/src/block/l2_block_stream/l2_tips_store_base.ts +29 -7
  536. package/src/block/proposal/attestations_and_signers.ts +32 -17
  537. package/src/block/test/l2_tips_store_test_suite.ts +1 -1
  538. package/src/checkpoint/checkpoint_data.ts +4 -0
  539. package/src/checkpoint/checkpoint_reexecution_tracker.ts +167 -0
  540. package/src/checkpoint/digest.ts +28 -0
  541. package/src/checkpoint/index.ts +3 -0
  542. package/src/checkpoint/previous_checkpoint_out_hashes.ts +61 -0
  543. package/src/config/chain-config.ts +6 -15
  544. package/src/config/index.ts +0 -1
  545. package/src/config/sequencer-config.ts +25 -7
  546. package/src/contract/complete_address.ts +7 -3
  547. package/src/contract/contract_address.ts +6 -6
  548. package/src/contract/contract_instance.ts +11 -2
  549. package/src/contract/interfaces/contract_instance.ts +6 -2
  550. package/src/database-version/version_manager.ts +17 -0
  551. package/src/gas/gas.ts +8 -3
  552. package/src/gas/gas_fees.ts +9 -9
  553. package/src/gas/gas_settings.ts +8 -3
  554. package/src/ha-signing/config.ts +9 -16
  555. package/src/ha-signing/local_config.ts +2 -2
  556. package/src/hash/hash.ts +2 -2
  557. package/src/interfaces/api_limit.ts +1 -1
  558. package/src/interfaces/archiver.ts +80 -94
  559. package/src/interfaces/aztec-node-admin.ts +32 -15
  560. package/src/interfaces/aztec-node-debug.ts +1 -1
  561. package/src/interfaces/aztec-node.ts +296 -262
  562. package/src/interfaces/block-builder.ts +2 -0
  563. package/src/interfaces/block_response.ts +92 -0
  564. package/src/interfaces/chain_tips.ts +24 -0
  565. package/src/interfaces/checkpoint_parameter.ts +20 -0
  566. package/src/interfaces/checkpoint_response.ts +84 -0
  567. package/src/interfaces/client.ts +6 -1
  568. package/src/interfaces/configs.ts +40 -1
  569. package/src/interfaces/l1_publish_info.ts +40 -0
  570. package/src/interfaces/l2_logs_source.ts +13 -42
  571. package/src/interfaces/merkle_tree_operations.ts +9 -2
  572. package/src/interfaces/p2p-bootstrap.ts +2 -2
  573. package/src/interfaces/p2p.ts +35 -15
  574. package/src/interfaces/private_kernel_prover.ts +88 -0
  575. package/src/interfaces/prover-agent.ts +1 -1
  576. package/src/interfaces/prover-node.ts +7 -7
  577. package/src/interfaces/proving-job-source.ts +4 -4
  578. package/src/interfaces/proving-job.ts +3 -3
  579. package/src/interfaces/public_storage_override.ts +26 -0
  580. package/src/interfaces/server.ts +5 -0
  581. package/src/interfaces/slasher.ts +17 -4
  582. package/src/interfaces/tx_provider.ts +6 -0
  583. package/src/interfaces/validator.ts +18 -2
  584. package/src/interfaces/world_state.ts +1 -1
  585. package/src/kernel/hints/key_validation_request.ts +18 -16
  586. package/src/kernel/index.ts +4 -0
  587. package/src/kernel/log_hash.ts +29 -9
  588. package/src/kernel/private_kernel_init_2_circuit_private_inputs.ts +49 -0
  589. package/src/kernel/private_kernel_init_3_circuit_private_inputs.ts +52 -0
  590. package/src/kernel/private_kernel_inner_2_circuit_private_inputs.ts +29 -0
  591. package/src/kernel/private_kernel_inner_3_circuit_private_inputs.ts +31 -0
  592. package/src/kernel/private_kernel_tail_circuit_public_inputs.ts +29 -14
  593. package/src/kernel/private_to_avm_accumulated_data.ts +16 -5
  594. package/src/kernel/private_to_public_accumulated_data.ts +9 -3
  595. package/src/kernel/private_to_public_kernel_circuit_public_inputs.ts +10 -4
  596. package/src/kernel/private_to_rollup_accumulated_data.ts +8 -3
  597. package/src/kernel/private_to_rollup_kernel_circuit_public_inputs.ts +9 -9
  598. package/src/kernel/public_call_request.ts +22 -7
  599. package/src/keys/derivation.ts +21 -9
  600. package/src/keys/public_key.ts +26 -2
  601. package/src/keys/public_keys.ts +124 -110
  602. package/src/kv-store/config.ts +3 -10
  603. package/src/logs/{extended_directional_app_tagging_secret.ts → app_tagging_secret.ts} +62 -23
  604. package/src/logs/app_tagging_secret_kind.ts +21 -0
  605. package/src/logs/contract_class_log.ts +15 -5
  606. package/src/logs/index.ts +6 -6
  607. package/src/logs/log_cursor.ts +110 -0
  608. package/src/logs/log_result.ts +104 -0
  609. package/src/logs/logs_query.ts +138 -0
  610. package/src/logs/message_context.ts +5 -1
  611. package/src/logs/pre_tag.ts +3 -6
  612. package/src/logs/private_log.ts +9 -3
  613. package/src/logs/query_all_logs_by_tags.ts +98 -0
  614. package/src/logs/siloed_tag.ts +6 -1
  615. package/src/logs/tagging_index_range.ts +4 -10
  616. package/src/messaging/append_l1_to_l2_messages.ts +21 -0
  617. package/src/messaging/index.ts +1 -0
  618. package/src/messaging/l2_to_l1_membership.ts +108 -19
  619. package/src/messaging/l2_to_l1_message.ts +29 -9
  620. package/src/noir/index.ts +2 -0
  621. package/src/p2p/block_proposal.ts +99 -28
  622. package/src/p2p/checkpoint_attestation.ts +26 -26
  623. package/src/p2p/checkpoint_proposal.ts +109 -39
  624. package/src/p2p/consensus_payload.ts +59 -28
  625. package/src/p2p/signature_utils.ts +110 -25
  626. package/src/p2p/signed_txs.ts +46 -28
  627. package/src/parity/parity_base_private_inputs.ts +10 -4
  628. package/src/parity/parity_public_inputs.ts +9 -2
  629. package/src/proofs/chonk_proof.ts +49 -15
  630. package/src/rollup/block_rollup_public_inputs.ts +13 -0
  631. package/src/rollup/checkpoint_rollup_public_inputs.ts +10 -0
  632. package/src/schemas/schemas.ts +6 -1
  633. package/src/slashing/helpers.ts +13 -9
  634. package/src/slashing/types.ts +21 -14
  635. package/src/stats/stats.ts +4 -0
  636. package/src/tests/factories.ts +97 -68
  637. package/src/tests/mocks.ts +49 -57
  638. package/src/timetable/index.ts +63 -105
  639. package/src/trees/append_only_tree_snapshot.ts +8 -3
  640. package/src/trees/nullifier_membership_witness.ts +2 -12
  641. package/src/tx/block_header.ts +8 -3
  642. package/src/tx/global_variables.ts +10 -18
  643. package/src/tx/hashed_values.ts +8 -3
  644. package/src/tx/indexed_tx_effect.ts +17 -4
  645. package/src/tx/partial_state_reference.ts +8 -3
  646. package/src/tx/profiling.ts +4 -4
  647. package/src/tx/proven_tx.ts +6 -0
  648. package/src/tx/public_call_request_with_calldata.ts +8 -3
  649. package/src/tx/simulated_tx.ts +18 -21
  650. package/src/tx/state_reference.ts +9 -4
  651. package/src/tx/tree_snapshots.ts +9 -4
  652. package/src/tx/tx.ts +41 -22
  653. package/src/tx/tx_constant_data.ts +8 -3
  654. package/src/tx/tx_context.ts +8 -3
  655. package/src/tx/tx_hash.ts +20 -5
  656. package/src/tx/tx_receipt.ts +263 -80
  657. package/src/tx/validator/tx_validator.ts +1 -5
  658. package/src/types/shared.ts +8 -3
  659. package/src/update-checker/dev_version.ts +2 -0
  660. package/src/update-checker/index.ts +1 -0
  661. package/src/update-checker/package_version.ts +10 -23
  662. package/src/validators/schemas.ts +6 -4
  663. package/src/validators/types.ts +21 -2
  664. package/src/versioning/versioning.ts +1 -1
  665. package/src/world-state/genesis_data.ts +12 -0
  666. package/src/world-state/world_state_revision.ts +0 -33
  667. package/dest/block/checkpointed_l2_block.d.ts +0 -150
  668. package/dest/block/checkpointed_l2_block.d.ts.map +0 -1
  669. package/dest/block/checkpointed_l2_block.js +0 -46
  670. package/dest/config/pipelining-config.d.ts +0 -19
  671. package/dest/config/pipelining-config.d.ts.map +0 -1
  672. package/dest/config/pipelining-config.js +0 -18
  673. package/dest/interfaces/get_logs_response.d.ts +0 -97
  674. package/dest/interfaces/get_logs_response.d.ts.map +0 -1
  675. package/dest/interfaces/get_logs_response.js +0 -12
  676. package/dest/logs/extended_contract_class_log.d.ts +0 -51
  677. package/dest/logs/extended_contract_class_log.d.ts.map +0 -1
  678. package/dest/logs/extended_contract_class_log.js +0 -67
  679. package/dest/logs/extended_directional_app_tagging_secret.d.ts +0 -47
  680. package/dest/logs/extended_directional_app_tagging_secret.d.ts.map +0 -1
  681. package/dest/logs/extended_public_log.d.ts +0 -106
  682. package/dest/logs/extended_public_log.d.ts.map +0 -1
  683. package/dest/logs/extended_public_log.js +0 -73
  684. package/dest/logs/log_filter.d.ts +0 -25
  685. package/dest/logs/log_filter.d.ts.map +0 -1
  686. package/dest/logs/log_filter.js +0 -12
  687. package/dest/logs/log_id.d.ts +0 -85
  688. package/dest/logs/log_id.d.ts.map +0 -1
  689. package/dest/logs/log_id.js +0 -93
  690. package/dest/logs/tx_scoped_l2_log.d.ts +0 -51
  691. package/dest/logs/tx_scoped_l2_log.d.ts.map +0 -1
  692. package/dest/logs/tx_scoped_l2_log.js +0 -77
  693. package/src/block/checkpointed_l2_block.ts +0 -70
  694. package/src/config/pipelining-config.ts +0 -31
  695. package/src/interfaces/get_logs_response.ts +0 -35
  696. package/src/logs/extended_contract_class_log.ts +0 -87
  697. package/src/logs/extended_public_log.ts +0 -94
  698. package/src/logs/log_filter.ts +0 -36
  699. package/src/logs/log_id.ts +0 -124
  700. package/src/logs/tx_scoped_l2_log.ts +0 -114
@@ -17,10 +17,7 @@ export class L2BlockStream {
17
17
  private hasStarted = false;
18
18
 
19
19
  constructor(
20
- private l2BlockSource: Pick<
21
- L2BlockSource,
22
- 'getBlocks' | 'getBlockHeader' | 'getL2Tips' | 'getCheckpoints' | 'getCheckpointedBlocks'
23
- >,
20
+ private l2BlockSource: Pick<L2BlockSource, 'getBlocks' | 'getBlockData' | 'getL2Tips' | 'getCheckpoints'>,
24
21
  private localData: L2BlockStreamLocalDataProvider,
25
22
  private handler: L2BlockStreamEventHandler,
26
23
  private readonly log = createLogger('types:block_stream'),
@@ -77,6 +74,22 @@ export class L2BlockStream {
77
74
  let latestBlockNumber = localTips.proposed.number;
78
75
  const sourceCache = new BlockHashCache([sourceTips.proposed]);
79
76
  while (!(await this.areBlockHashesEqualAt(latestBlockNumber, { sourceCache }))) {
77
+ if (latestBlockNumber === 0) {
78
+ // We walked all the way back to genesis and the hashes still differ. This means the
79
+ // local store and the source disagree on the genesis block itself — typically because
80
+ // they were configured with different `genesisTimestamp`/prefilled state. Continuing
81
+ // would underflow into negative block numbers and surface as "block hash not found
82
+ // for -1" further down. Fail loudly with a meaningful error instead.
83
+ this.log.error(`Genesis block hash mismatch between local store and source`, {
84
+ localBlockHash: await this.localData.getL2BlockHash(BlockNumber.ZERO),
85
+ sourceBlockHash: sourceCache.get(0) ?? (await this.getBlockHashFromSource(BlockNumber.ZERO)),
86
+ });
87
+ throw new Error(
88
+ 'Genesis block hash mismatch between local store and source: refusing to walk past block 0. ' +
89
+ 'This usually indicates the two sides were configured with different genesis values ' +
90
+ '(e.g. genesisTimestamp or prefilled public data).',
91
+ );
92
+ }
80
93
  latestBlockNumber--;
81
94
  }
82
95
 
@@ -97,8 +110,9 @@ export class L2BlockStream {
97
110
  }
98
111
 
99
112
  // If we are just starting, use the starting block number from the options.
100
- if (latestBlockNumber === 0 && this.opts.startingBlock !== undefined) {
101
- latestBlockNumber = BlockNumber(Math.max(this.opts.startingBlock - 1, 0));
113
+ const startingBlock = this.opts.startingBlock !== undefined ? BlockNumber(this.opts.startingBlock) : undefined;
114
+ if (latestBlockNumber === 0 && startingBlock !== undefined) {
115
+ latestBlockNumber = BlockNumber(Math.max(startingBlock - 1, 0));
102
116
  }
103
117
 
104
118
  // Only log this entry once (for sanity)
@@ -112,21 +126,18 @@ export class L2BlockStream {
112
126
 
113
127
  // When startingBlock is set, also skip ahead for checkpoints.
114
128
  if (
115
- this.opts.startingBlock !== undefined &&
116
- this.opts.startingBlock >= 1 &&
129
+ startingBlock !== undefined &&
130
+ startingBlock >= 1 &&
117
131
  nextCheckpointToEmit <= sourceTips.checkpointed.checkpoint.number
118
132
  ) {
119
- const startingBlockCheckpoints = await this.l2BlockSource.getCheckpointedBlocks(
120
- BlockNumber(this.opts.startingBlock),
121
- 1,
122
- );
123
- if (startingBlockCheckpoints.length > 0) {
124
- nextCheckpointToEmit = CheckpointNumber(
125
- Math.max(nextCheckpointToEmit, startingBlockCheckpoints[0].checkpointNumber),
126
- );
127
- } else {
133
+ if (startingBlock > sourceTips.checkpointed.block.number) {
128
134
  // startingBlock is past all checkpointed blocks; skip Loop 1 entirely.
129
135
  nextCheckpointToEmit = CheckpointNumber(sourceTips.checkpointed.checkpoint.number + 1);
136
+ } else {
137
+ const startingBlockData = await this.l2BlockSource.getBlockData({ number: startingBlock });
138
+ if (startingBlockData) {
139
+ nextCheckpointToEmit = CheckpointNumber(Math.max(nextCheckpointToEmit, startingBlockData.checkpointNumber));
140
+ }
130
141
  }
131
142
  }
132
143
 
@@ -149,7 +160,7 @@ export class L2BlockStream {
149
160
  if (!this.opts.ignoreCheckpoints) {
150
161
  let loop1Iterations = 0;
151
162
  while (nextCheckpointToEmit <= sourceTips.checkpointed.checkpoint.number) {
152
- const checkpoints = await this.l2BlockSource.getCheckpoints(nextCheckpointToEmit, 1);
163
+ const checkpoints = await this.l2BlockSource.getCheckpoints({ from: nextCheckpointToEmit, limit: 1 });
153
164
  if (checkpoints.length === 0) {
154
165
  break;
155
166
  }
@@ -184,9 +195,9 @@ export class L2BlockStream {
184
195
 
185
196
  // Find the starting checkpoint number
186
197
  if (nextBlockNumber <= sourceTips.checkpointed.block.number) {
187
- const blocks = await this.l2BlockSource.getCheckpointedBlocks(BlockNumber(nextBlockNumber), 1);
188
- if (blocks.length > 0) {
189
- nextCheckpointNumber = blocks[0].checkpointNumber;
198
+ const blockData = await this.l2BlockSource.getBlockData({ number: BlockNumber(nextBlockNumber) });
199
+ if (blockData) {
200
+ nextCheckpointNumber = blockData.checkpointNumber;
190
201
  }
191
202
  }
192
203
 
@@ -194,7 +205,10 @@ export class L2BlockStream {
194
205
  // Refill the prefetch buffer when exhausted
195
206
  if (prefetchIdx >= prefetchedCheckpoints.length) {
196
207
  const prefetchLimit = this.opts.checkpointPrefetchLimit ?? CHECKPOINT_PREFETCH_LIMIT;
197
- prefetchedCheckpoints = await this.l2BlockSource.getCheckpoints(nextCheckpointNumber, prefetchLimit);
208
+ prefetchedCheckpoints = await this.l2BlockSource.getCheckpoints({
209
+ from: nextCheckpointNumber,
210
+ limit: prefetchLimit,
211
+ });
198
212
  prefetchIdx = 0;
199
213
  if (prefetchedCheckpoints.length === 0) {
200
214
  break;
@@ -234,7 +248,7 @@ export class L2BlockStream {
234
248
  while (nextBlockNumber <= sourceTips.proposed.number) {
235
249
  const limit = Math.min(this.opts.batchSize ?? 50, sourceTips.proposed.number - nextBlockNumber + 1);
236
250
  this.log.trace(`Requesting blocks from ${nextBlockNumber} limit ${limit}`);
237
- const blocks = await this.l2BlockSource.getBlocks(BlockNumber(nextBlockNumber), BlockNumber(limit));
251
+ const blocks = await this.l2BlockSource.getBlocks({ from: BlockNumber(nextBlockNumber), limit });
238
252
  if (blocks.length === 0) {
239
253
  break;
240
254
  }
@@ -266,9 +280,6 @@ export class L2BlockStream {
266
280
  * @param args - A cache of data already requested from source, to avoid re-requesting it.
267
281
  */
268
282
  private async areBlockHashesEqualAt(blockNumber: BlockNumber, args: { sourceCache: BlockHashCache }) {
269
- if (blockNumber === 0) {
270
- return true;
271
- }
272
283
  const localBlockHash = await this.localData.getL2BlockHash(blockNumber);
273
284
  if (!localBlockHash && this.opts.skipFinalized) {
274
285
  // Failing to find a block hash when skipping finalized blocks can be highly problematic as we'd potentially need
@@ -291,8 +302,8 @@ export class L2BlockStream {
291
302
 
292
303
  private getBlockHashFromSource(blockNumber: BlockNumber) {
293
304
  return this.l2BlockSource
294
- .getBlockHeader(blockNumber)
295
- .then(h => h?.hash())
305
+ .getBlockData({ number: blockNumber })
306
+ .then(d => d?.header.hash())
296
307
  .then(hash => hash?.toString());
297
308
  }
298
309
 
@@ -1,6 +1,7 @@
1
1
  import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
2
2
 
3
3
  import type { PublishedCheckpoint } from '../../checkpoint/published_checkpoint.js';
4
+ import type { BlockHash } from '../block_hash.js';
4
5
  import type { L2BlockTag } from '../l2_block_source.js';
5
6
  import { L2TipsStoreBase } from './l2_tips_store_base.js';
6
7
 
@@ -9,6 +10,10 @@ import { L2TipsStoreBase } from './l2_tips_store_base.js';
9
10
  * @dev Tests in kv-store/src/stores/l2_tips_memory_store.test.ts
10
11
  */
11
12
  export class L2TipsMemoryStore extends L2TipsStoreBase {
13
+ constructor(initialBlockHash: BlockHash) {
14
+ super(initialBlockHash);
15
+ }
16
+
12
17
  private readonly tips = new Map<L2BlockTag, BlockNumber>();
13
18
  private readonly blockHashes = new Map<number, string>();
14
19
  private readonly blockToCheckpoint = new Map<number, CheckpointNumber>();
@@ -1,7 +1,7 @@
1
1
  import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
2
2
 
3
3
  import type { PublishedCheckpoint } from '../../checkpoint/published_checkpoint.js';
4
- import { GENESIS_BLOCK_HEADER_HASH } from '../block_hash.js';
4
+ import type { BlockHash } from '../block_hash.js';
5
5
  import type { L2Block } from '../l2_block.js';
6
6
  import {
7
7
  type CheckpointId,
@@ -17,6 +17,7 @@ import type { L2BlockStreamEvent, L2BlockStreamEventHandler, L2BlockStreamLocalD
17
17
  * while delegating storage operations to subclasses.
18
18
  */
19
19
  export abstract class L2TipsStoreBase implements L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider {
20
+ constructor(protected readonly initialBlockHash: BlockHash) {}
20
21
  // Abstract storage primitives - subclasses implement these based on their backing store
21
22
 
22
23
  /** Gets the block number for a given tag. */
@@ -60,7 +61,10 @@ export abstract class L2TipsStoreBase implements L2BlockStreamEventHandler, L2Bl
60
61
 
61
62
  // Public interface implementation
62
63
 
63
- public getL2BlockHash(number: BlockNumber): Promise<string | undefined> {
64
+ public async getL2BlockHash(number: BlockNumber): Promise<string | undefined> {
65
+ if (number === 0) {
66
+ return (await this.getStoredBlockHash(number)) ?? this.initialBlockHash.toString();
67
+ }
64
68
  return this.getStoredBlockHash(number);
65
69
  }
66
70
 
@@ -123,7 +127,7 @@ export abstract class L2TipsStoreBase implements L2BlockStreamEventHandler, L2Bl
123
127
  private async getBlockId(tag: L2BlockTag): Promise<L2BlockId> {
124
128
  const blockNumber = await this.getTip(tag);
125
129
  if (blockNumber === undefined || blockNumber === 0) {
126
- return { number: BlockNumber.ZERO, hash: GENESIS_BLOCK_HEADER_HASH.toString() };
130
+ return { number: BlockNumber.ZERO, hash: this.initialBlockHash.toString() };
127
131
  }
128
132
  const blockHash = await this.getStoredBlockHash(blockNumber);
129
133
  if (!blockHash) {
@@ -139,7 +143,6 @@ export abstract class L2TipsStoreBase implements L2BlockStreamEventHandler, L2Bl
139
143
  }
140
144
  const checkpointNumber = await this.getCheckpointNumberForBlock(blockNumber);
141
145
  if (checkpointNumber === undefined) {
142
- // No checkpoint associated with this block yet
143
146
  return { number: CheckpointNumber.ZERO, hash: GENESIS_CHECKPOINT_HEADER_HASH.toString() };
144
147
  }
145
148
  const checkpoint = await this.getCheckpoint(checkpointNumber);
@@ -210,11 +213,30 @@ export abstract class L2TipsStoreBase implements L2BlockStreamEventHandler, L2Bl
210
213
  await this.saveTag('finalized', event.block);
211
214
  const finalizedCheckpointNumber = await this.getCheckpointNumberForBlock(event.block.number);
212
215
 
213
- await this.deleteBlockHashesBefore(event.block.number);
214
- await this.deleteBlockToCheckpointBefore(event.block.number);
216
+ // Cap the deletion bound at the lowest live tip. This should always be the finalized tip, but
217
+ // we have hit bugs where this is not the case. Deleting the block hash, block-to-checkpoint mapping,
218
+ // or enclosing checkpoint object for a live tip would dangle subsequent `getBlockId`/`getCheckpointId`
219
+ // lookups and lock the block stream into an error loop.
220
+ const tips = await Promise.all([
221
+ this.getTip('proposed'),
222
+ this.getTip('proposedCheckpoint'),
223
+ this.getTip('checkpointed'),
224
+ this.getTip('proven'),
225
+ ]);
226
+ const liveTipBlocks = tips.filter((t): t is BlockNumber => t !== undefined && t > 0);
227
+ const safeBlockBound = BlockNumber(Math.min(event.block.number, ...liveTipBlocks));
228
+ await this.deleteBlockHashesBefore(safeBlockBound);
229
+ await this.deleteBlockToCheckpointBefore(safeBlockBound);
215
230
 
216
231
  if (finalizedCheckpointNumber !== undefined) {
217
- await this.deleteCheckpointsBefore(finalizedCheckpointNumber);
232
+ const tipCheckpoints = await Promise.all(liveTipBlocks.map(b => this.getCheckpointNumberForBlock(b)));
233
+ const safeCheckpointBound = CheckpointNumber(
234
+ Math.min(
235
+ finalizedCheckpointNumber,
236
+ ...tipCheckpoints.filter((c): c is CheckpointNumber => c !== undefined && c > 0),
237
+ ),
238
+ );
239
+ await this.deleteCheckpointsBefore(safeCheckpointBound);
218
240
  }
219
241
  });
220
242
  }
@@ -4,26 +4,37 @@ import { hexToBuffer } from '@aztec/foundation/string';
4
4
  import { encodeAbiParameters, parseAbiParameters } from 'viem';
5
5
  import { z } from 'zod';
6
6
 
7
- import type { Signable, SignatureDomainSeparator } from '../../p2p/signature_utils.js';
7
+ import {
8
+ type CoordinationSignatureContext,
9
+ type CoordinationSignatureType,
10
+ type Signable,
11
+ coordinationSignatureContextSchema,
12
+ } from '../../p2p/signature_utils.js';
8
13
  import { CommitteeAttestation, EthAddress } from './committee_attestation.js';
9
14
 
10
15
  export class CommitteeAttestationsAndSigners implements Signable {
11
- constructor(public attestations: CommitteeAttestation[]) {}
16
+ readonly primaryType: CoordinationSignatureType = 'AttestationsAndSigners';
17
+
18
+ constructor(
19
+ public attestations: CommitteeAttestation[],
20
+ public readonly signatureContext: CoordinationSignatureContext,
21
+ ) {}
12
22
 
13
23
  static get schema() {
14
24
  return z
15
25
  .object({
16
26
  attestations: CommitteeAttestation.schema.array(),
27
+ signatureContext: coordinationSignatureContextSchema,
17
28
  })
18
- .transform(obj => new CommitteeAttestationsAndSigners(obj.attestations));
29
+ .transform(obj => new CommitteeAttestationsAndSigners(obj.attestations, obj.signatureContext));
19
30
  }
20
31
 
21
- getPayloadToSign(domainSeparator: SignatureDomainSeparator): Buffer {
22
- const abi = parseAbiParameters('uint8,(bytes,bytes),address[]');
32
+ getPayloadToSign(): Buffer {
33
+ // Matches the L1 abi.encode(attestations, signers) in AttestationLib.sol#getAttestationsAndSignersDigest.
34
+ const abi = parseAbiParameters('(bytes,bytes),address[]');
23
35
  const packed = this.getPackedAttestations();
24
36
 
25
37
  const encodedData = encodeAbiParameters(abi, [
26
- domainSeparator,
27
38
  [packed.signatureIndices, packed.signaturesOrAddresses],
28
39
  this.getSigners().map(s => s.toString()),
29
40
  ]);
@@ -31,8 +42,8 @@ export class CommitteeAttestationsAndSigners implements Signable {
31
42
  return hexToBuffer(encodedData);
32
43
  }
33
44
 
34
- static empty(): CommitteeAttestationsAndSigners {
35
- return new CommitteeAttestationsAndSigners([]);
45
+ static empty(signatureContext: CoordinationSignatureContext): CommitteeAttestationsAndSigners {
46
+ return new CommitteeAttestationsAndSigners([], signatureContext);
36
47
  }
37
48
 
38
49
  toString() {
@@ -53,9 +64,9 @@ export class CommitteeAttestationsAndSigners implements Signable {
53
64
  * @param attestations - Array of committee attestations with addresses and signatures
54
65
  * @returns Packed attestations with bitmap and tightly packed signature/address data
55
66
  */
56
- getPackedAttestations(): ViemCommitteeAttestations {
57
- const length = this.attestations.length;
58
- const attestations = this.attestations.map(a => a.toViem());
67
+ static packAttestations(attestations: CommitteeAttestation[]): ViemCommitteeAttestations {
68
+ const length = attestations.length;
69
+ const viemAttestations = attestations.map(a => a.toViem());
59
70
 
60
71
  // Calculate bitmap size (1 bit per attestation, rounded up to nearest byte)
61
72
  const bitmapSize = Math.ceil(length / 8);
@@ -63,8 +74,8 @@ export class CommitteeAttestationsAndSigners implements Signable {
63
74
 
64
75
  // Calculate total data size needed
65
76
  let totalDataSize = 0;
66
- for (let i = 0; i < length; i++) {
67
- const signature = attestations[i].signature;
77
+ for (const attestation of viemAttestations) {
78
+ const signature = attestation.signature;
68
79
  // Check if signature is empty (v = 0)
69
80
  const isEmpty = signature.v === 0;
70
81
 
@@ -79,8 +90,7 @@ export class CommitteeAttestationsAndSigners implements Signable {
79
90
  let dataIndex = 0;
80
91
 
81
92
  // Pack the data
82
- for (let i = 0; i < length; i++) {
83
- const attestation = attestations[i];
93
+ for (const [i, attestation] of viemAttestations.entries()) {
84
94
  const signature = attestation.signature;
85
95
 
86
96
  // Check if signature is empty
@@ -90,7 +100,7 @@ export class CommitteeAttestationsAndSigners implements Signable {
90
100
  // Set bit in bitmap (bit 7-0 in each byte, left to right)
91
101
  const byteIndex = Math.floor(i / 8);
92
102
  const bitIndex = 7 - (i % 8);
93
- signatureIndices[byteIndex] |= 1 << bitIndex;
103
+ signatureIndices[byteIndex] = (signatureIndices[byteIndex] ?? 0) | (1 << bitIndex);
94
104
 
95
105
  // Pack signature: v + r + s
96
106
  signaturesOrAddresses[dataIndex] = signature.v;
@@ -118,6 +128,10 @@ export class CommitteeAttestationsAndSigners implements Signable {
118
128
  signaturesOrAddresses: `0x${Buffer.from(signaturesOrAddresses).toString('hex')}`,
119
129
  };
120
130
  }
131
+
132
+ getPackedAttestations(): ViemCommitteeAttestations {
133
+ return CommitteeAttestationsAndSigners.packAttestations(this.attestations);
134
+ }
121
135
  }
122
136
 
123
137
  /**
@@ -130,8 +144,9 @@ export class MaliciousCommitteeAttestationsAndSigners extends CommitteeAttestati
130
144
  constructor(
131
145
  attestations: CommitteeAttestation[],
132
146
  private signers: EthAddress[],
147
+ signatureContext: CoordinationSignatureContext,
133
148
  ) {
134
- super(attestations);
149
+ super(attestations, signatureContext);
135
150
  }
136
151
 
137
152
  override getSigners(): EthAddress[] {
@@ -10,7 +10,7 @@ import {
10
10
  } from '@aztec/stdlib/block';
11
11
  import { Checkpoint, L1PublishedData, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
12
12
 
13
- import { jestExpect as expect } from '@jest/expect';
13
+ import { expect } from 'vitest';
14
14
 
15
15
  import { GENESIS_BLOCK_HEADER_HASH } from '../block_hash.js';
16
16
  import type { L2TipsStore } from '../l2_block_stream/index.js';
@@ -32,6 +32,8 @@ export type L1EnrichedCheckpointData = {
32
32
  export type StorageEnrichedCheckpointData = {
33
33
  archive: AppendOnlyTreeSnapshot;
34
34
  checkpointOutHash: Fr;
35
+ /** Fee asset price modifier in basis points. Defaults to 0 (no change) when not explicitly set. */
36
+ feeAssetPriceModifier: bigint;
35
37
  };
36
38
 
37
39
  /** Data stored only with proposed checkpoint data */
@@ -70,6 +72,7 @@ export const CheckpointDataSchema = z
70
72
  checkpointOutHash: schemas.Fr,
71
73
  startBlock: BlockNumberSchema,
72
74
  blockCount: schemas.Integer,
75
+ feeAssetPriceModifier: schemas.BigInt,
73
76
  attestations: z.array(CommitteeAttestation.schema),
74
77
  l1: L1PublishedData.schema,
75
78
  })
@@ -81,6 +84,7 @@ export const CheckpointDataSchema = z
81
84
  checkpointOutHash: obj.checkpointOutHash,
82
85
  startBlock: obj.startBlock,
83
86
  blockCount: obj.blockCount,
87
+ feeAssetPriceModifier: obj.feeAssetPriceModifier,
84
88
  attestations: obj.attestations,
85
89
  l1: obj.l1,
86
90
  }),
@@ -0,0 +1,167 @@
1
+ import type { CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
2
+ import type { Fr } from '@aztec/foundation/curves/bn254';
3
+
4
+ /**
5
+ * Outcome of attempting to re-execute a checkpoint proposal locally.
6
+ *
7
+ * - `valid` — re-execution succeeded and the computed checkpoint matched the proposal.
8
+ * - `invalid` — the proposal disagreed with the computed checkpoint, or violated a deterministic
9
+ * constraint (limits, signatures, etc).
10
+ * - `unvalidated` — the local node could not complete validation for non-deterministic reasons
11
+ * (missing blocks/txs, timeouts, infra errors). Treated as proposer-fault for
12
+ * slashing but surfaced separately for telemetry.
13
+ */
14
+ export type ReexecutionOutcome = 'valid' | 'invalid' | 'unvalidated';
15
+
16
+ /**
17
+ * Tracks two pieces of per-slot state collected during proposal handling:
18
+ *
19
+ * 1. Whether each block proposal's transactions were successfully collected locally
20
+ * (keyed by `slot` + `indexWithinCheckpoint`). Consumed by the data-withholding watcher.
21
+ * 2. The outcome of locally re-executing each checkpoint proposal (keyed by
22
+ * `(checkpointNumber, archiveRoot)` and by `slot`). Consumed by the data-withholding
23
+ * watcher (via `hasReexecuted`) and the sentinel (via `getOutcomeForSlot`).
24
+ *
25
+ * Both pieces of state live on the same per-slot `Entry`, so cleanup via `removeBefore`
26
+ * naturally drops everything for a pruned slot in one step.
27
+ */
28
+ interface Entry {
29
+ // Set by recordOutcome — these may be undefined until the checkpoint proposal has been
30
+ // evaluated. recordTxsCollected may create an Entry before any of them are known.
31
+ checkpointNumber: CheckpointNumber | undefined;
32
+ archiveRoot: string | undefined;
33
+ outcome: ReexecutionOutcome | undefined;
34
+
35
+ slot: SlotNumber;
36
+
37
+ // Per block-proposal at this slot: indexWithinCheckpoint → true (collected) | false (failed to collect).
38
+ txsCollected: Map<number, boolean>;
39
+ }
40
+
41
+ export class CheckpointReexecutionTracker {
42
+ private readonly byCheckpoint = new Map<CheckpointNumber, Map<string, Entry>>();
43
+ private readonly bySlot = new Map<SlotNumber, Entry>();
44
+
45
+ /**
46
+ * Record the outcome of evaluating a checkpoint proposal.
47
+ * @param slot - Slot the proposal was for. Always required.
48
+ * @param archiveRoot - Archive root in the proposal.
49
+ * @param outcome - Outcome of evaluation.
50
+ * @param checkpointNumber - Checkpoint number, if known. Required for `valid` outcomes; optional
51
+ * for `invalid`/`unvalidated` because some early rejections fire before blocks are loaded.
52
+ */
53
+ public recordOutcome(
54
+ slot: SlotNumber,
55
+ archiveRoot: Fr,
56
+ outcome: ReexecutionOutcome,
57
+ checkpointNumber?: CheckpointNumber,
58
+ ): void {
59
+ const archiveRootStr = archiveRoot.toString();
60
+
61
+ // Preserve any per-block txsCollected already accumulated for this slot.
62
+ const existing = this.bySlot.get(slot);
63
+ const entry: Entry = {
64
+ checkpointNumber,
65
+ archiveRoot: archiveRootStr,
66
+ slot,
67
+ outcome,
68
+ txsCollected: existing?.txsCollected ?? new Map(),
69
+ };
70
+
71
+ if (checkpointNumber !== undefined) {
72
+ let archives = this.byCheckpoint.get(checkpointNumber);
73
+ if (!archives) {
74
+ archives = new Map();
75
+ this.byCheckpoint.set(checkpointNumber, archives);
76
+ }
77
+ archives.set(archiveRootStr, entry);
78
+ }
79
+
80
+ this.bySlot.set(slot, entry);
81
+ }
82
+
83
+ /**
84
+ * Record whether the local node successfully collected the transactions for a block proposal.
85
+ * Called from the validator's proposal handler immediately after tx collection completes
86
+ * (regardless of whether re-execution will subsequently succeed). The data-withholding
87
+ * watcher consults these records as an authoritative signal: tx availability now is too
88
+ * weak (txs may have been evicted from the mempool by the time the watcher runs), but a
89
+ * record that the txs *were* available at proposal time still vouches for the proposer.
90
+ *
91
+ * @param slot - Slot the block proposal was for.
92
+ * @param indexWithinCheckpoint - Index of the block within its enclosing checkpoint.
93
+ * @param collected - True if every tx in the proposal was collected locally before deadline.
94
+ */
95
+ public recordTxsCollected(slot: SlotNumber, indexWithinCheckpoint: number, collected: boolean): void {
96
+ let entry = this.bySlot.get(slot);
97
+ if (!entry) {
98
+ entry = {
99
+ checkpointNumber: undefined,
100
+ archiveRoot: undefined,
101
+ slot,
102
+ outcome: undefined,
103
+ txsCollected: new Map(),
104
+ };
105
+ this.bySlot.set(slot, entry);
106
+ }
107
+ entry.txsCollected.set(indexWithinCheckpoint, collected);
108
+ }
109
+
110
+ /**
111
+ * Returns true if the given (checkpoint number, archive root) has been successfully
112
+ * re-executed locally (outcome `valid`).
113
+ */
114
+ public hasReexecuted(checkpointNumber: CheckpointNumber, archiveRoot: Fr): boolean {
115
+ return this.byCheckpoint.get(checkpointNumber)?.get(archiveRoot.toString())?.outcome === 'valid';
116
+ }
117
+
118
+ /** Returns the recorded outcome for a given slot, or undefined if no proposal was evaluated. */
119
+ public getOutcomeForSlot(slot: SlotNumber): ReexecutionOutcome | undefined {
120
+ return this.bySlot.get(slot)?.outcome;
121
+ }
122
+
123
+ /**
124
+ * Returns the recorded tx-collection result for a block proposal at the given slot and
125
+ * `indexWithinCheckpoint`, or `undefined` if no record exists.
126
+ *
127
+ * Three-valued by design:
128
+ * - `true` — we collected every tx for this block proposal before the deadline.
129
+ * - `false` — we tried and failed (missing txs at the deadline).
130
+ * - `undefined` — no record (e.g. we never saw the block proposal). Callers should fall
131
+ * back to a current-state check (e.g. mempool probe) for this case.
132
+ */
133
+ public getTxsCollectedRecord(slot: SlotNumber, indexWithinCheckpoint: number): boolean | undefined {
134
+ return this.bySlot.get(slot)?.txsCollected.get(indexWithinCheckpoint);
135
+ }
136
+
137
+ /** Drops entries for checkpoints with `number < checkpointNumber`. */
138
+ public removeBefore(checkpointNumber: CheckpointNumber): void {
139
+ // Track the highest slot among checkpoints we're pruning. Once we know it, any slot
140
+ // strictly below that watermark is older than the most recently pruned checkpoint and
141
+ // can be dropped from `bySlot` too — including slot-only entries (no checkpoint number)
142
+ // which would otherwise leak, because removing by checkpoint number can't reach them.
143
+ let maxRemovedSlot: SlotNumber | undefined;
144
+ for (const [n, archives] of this.byCheckpoint) {
145
+ if (n < checkpointNumber) {
146
+ for (const entry of archives.values()) {
147
+ // Only drop the slot index if it still points at the entry we're removing.
148
+ if (this.bySlot.get(entry.slot) === entry) {
149
+ this.bySlot.delete(entry.slot);
150
+ }
151
+ if (maxRemovedSlot === undefined || entry.slot > maxRemovedSlot) {
152
+ maxRemovedSlot = entry.slot;
153
+ }
154
+ }
155
+ this.byCheckpoint.delete(n);
156
+ }
157
+ }
158
+
159
+ if (maxRemovedSlot !== undefined) {
160
+ for (const slot of [...this.bySlot.keys()]) {
161
+ if (slot < maxRemovedSlot) {
162
+ this.bySlot.delete(slot);
163
+ }
164
+ }
165
+ }
166
+ }
167
+ }
@@ -0,0 +1,28 @@
1
+ import type { Buffer32 } from '@aztec/foundation/buffer';
2
+ import type { Fr } from '@aztec/foundation/curves/bn254';
3
+
4
+ import { ConsensusPayload } from '../p2p/consensus_payload.js';
5
+ import { type CoordinationSignatureContext, getHashedSignaturePayloadTypedData } from '../p2p/signature_utils.js';
6
+ import { CheckpointHeader } from '../rollup/checkpoint_header.js';
7
+
8
+ /**
9
+ * Computes the EIP-712 payload digest for a checkpoint proposal — the digest validators sign
10
+ * and the L1 contract verifies during `propose()`. Mirrors `ProposeLib.digest(ProposePayload)` on L1.
11
+ *
12
+ * The result is the same `bytes32` that gets stored in `tempCheckpointLogs[checkpointNumber].payloadDigest`,
13
+ * so this helper is also reused when constructing simulation state overrides for pipelined proposals.
14
+ */
15
+ export function computeCheckpointPayloadDigest(args: {
16
+ header: CheckpointHeader;
17
+ archiveRoot: Fr;
18
+ feeAssetPriceModifier: bigint;
19
+ signatureContext: CoordinationSignatureContext;
20
+ }): Buffer32 {
21
+ const consensusPayload = new ConsensusPayload(
22
+ args.header,
23
+ args.archiveRoot,
24
+ args.feeAssetPriceModifier,
25
+ args.signatureContext,
26
+ );
27
+ return getHashedSignaturePayloadTypedData(consensusPayload);
28
+ }
@@ -1,5 +1,8 @@
1
1
  export * from './checkpoint.js';
2
2
  export * from './checkpoint_data.js';
3
3
  export * from './checkpoint_info.js';
4
+ export * from './checkpoint_reexecution_tracker.js';
5
+ export * from './digest.js';
6
+ export * from './previous_checkpoint_out_hashes.js';
4
7
  export * from './published_checkpoint.js';
5
8
  export * from './validate.js';
@@ -0,0 +1,61 @@
1
+ import { CheckpointNumber, type EpochNumber } from '@aztec/foundation/branded-types';
2
+ import type { Fr } from '@aztec/foundation/curves/bn254';
3
+ import type { Logger } from '@aztec/foundation/log';
4
+
5
+ import type { L2BlockSource } from '../block/l2_block_source.js';
6
+ import { type L1RollupConstants, getEpochAtSlot } from '../epoch-helpers/index.js';
7
+ import type { ProposedCheckpointData } from './checkpoint_data.js';
8
+
9
+ /**
10
+ * Returns the out hashes (in epoch order) of all checkpoints in `epoch` that precede
11
+ * `checkpointNumber`, used to compute the `epochOutHash` baked into that checkpoint's header.
12
+ *
13
+ * Under proposer pipelining the parent checkpoint may not be confirmed on L1 by the time the
14
+ * builder runs, so the on-chain archiver query (`getCheckpointsData`) is missing it and the
15
+ * resulting `epochOutHash` would diverge from what other validators (and L1) compute after the
16
+ * parent lands. To avoid that, the parent's `checkpointOutHash` is spliced in from the locally
17
+ * known proposed checkpoint when:
18
+ * - pipelining is enabled,
19
+ * - the archiver lookup is genuinely short (its last entry is not already cp `N-1`),
20
+ * - and the proposed cp `N-1` is in the same target epoch (otherwise we're at an epoch boundary
21
+ * and the previous-epoch cps must be excluded).
22
+ *
23
+ * Callers may either pass the already-loaded `proposedCheckpointData` (the proposer has it on
24
+ * hand) or leave it undefined, in which case it's fetched via `getProposedCheckpointData`.
25
+ */
26
+ export async function getPreviousCheckpointOutHashes(input: {
27
+ blockSource: Pick<L2BlockSource, 'getCheckpointsData' | 'getProposedCheckpointData'>;
28
+ epoch: EpochNumber;
29
+ checkpointNumber: CheckpointNumber;
30
+ l1Constants: Pick<L1RollupConstants, 'epochDuration'>;
31
+ pipeliningEnabled: boolean;
32
+ proposedCheckpointData?: ProposedCheckpointData;
33
+ log?: Logger;
34
+ }): Promise<Fr[]> {
35
+ const { blockSource, epoch, checkpointNumber, l1Constants, pipeliningEnabled, log } = input;
36
+
37
+ const checkpointed = (await blockSource.getCheckpointsData({ epoch }))
38
+ .filter(c => c.checkpointNumber < checkpointNumber)
39
+ .sort((a, b) => a.checkpointNumber - b.checkpointNumber);
40
+
41
+ if (!pipeliningEnabled || checkpointNumber === 0) {
42
+ return checkpointed.map(c => c.checkpointOutHash);
43
+ }
44
+
45
+ const parentCheckpoint = CheckpointNumber(checkpointNumber - 1);
46
+ if (checkpointed.at(-1)?.checkpointNumber === parentCheckpoint) {
47
+ return checkpointed.map(c => c.checkpointOutHash);
48
+ }
49
+
50
+ const proposedParent =
51
+ input.proposedCheckpointData ?? (await blockSource.getProposedCheckpointData({ number: parentCheckpoint }));
52
+ if (!proposedParent || proposedParent.checkpointNumber !== parentCheckpoint) {
53
+ return checkpointed.map(c => c.checkpointOutHash);
54
+ }
55
+ if (getEpochAtSlot(proposedParent.header.slotNumber, l1Constants) !== epoch) {
56
+ return checkpointed.map(c => c.checkpointOutHash);
57
+ }
58
+
59
+ log?.debug(`Splicing pipelined parent cp ${parentCheckpoint} outHash for cp ${checkpointNumber}`);
60
+ return [...checkpointed.map(c => c.checkpointOutHash), proposedParent.checkpointOutHash];
61
+ }