@aztec/stdlib 3.0.3 → 4.0.0-devnet.1-patch.0

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 (716) hide show
  1. package/dest/abi/abi.d.ts +602 -4
  2. package/dest/abi/abi.d.ts.map +1 -1
  3. package/dest/abi/abi.js +7 -7
  4. package/dest/abi/contract_artifact.d.ts +2 -2
  5. package/dest/abi/contract_artifact.d.ts.map +1 -1
  6. package/dest/abi/contract_artifact.js +1 -1
  7. package/dest/abi/function_call.d.ts +47 -9
  8. package/dest/abi/function_call.d.ts.map +1 -1
  9. package/dest/abi/function_call.js +20 -3
  10. package/dest/abi/function_selector.d.ts +2 -1
  11. package/dest/abi/function_selector.d.ts.map +1 -1
  12. package/dest/abi/function_selector.js +7 -0
  13. package/dest/abi/selector.js +3 -1
  14. package/dest/abi/utils.d.ts +7 -1
  15. package/dest/abi/utils.d.ts.map +1 -1
  16. package/dest/abi/utils.js +7 -0
  17. package/dest/auth_witness/auth_witness.d.ts +2 -1
  18. package/dest/auth_witness/auth_witness.d.ts.map +1 -1
  19. package/dest/avm/avm.d.ts +62 -62
  20. package/dest/avm/avm.js +1 -1
  21. package/dest/avm/avm_accumulated_data.d.ts +30 -3
  22. package/dest/avm/avm_accumulated_data.d.ts.map +1 -1
  23. package/dest/avm/avm_accumulated_data.js +5 -2
  24. package/dest/avm/avm_circuit_public_inputs.d.ts +9 -9
  25. package/dest/avm/avm_circuit_public_inputs.js +3 -1
  26. package/dest/avm/avm_proving_request.d.ts +299 -299
  27. package/dest/avm/contract_storage_read.d.ts +13 -1
  28. package/dest/avm/contract_storage_read.d.ts.map +1 -1
  29. package/dest/avm/contract_storage_update_request.d.ts +13 -1
  30. package/dest/avm/contract_storage_update_request.d.ts.map +1 -1
  31. package/dest/avm/public_call_stack_item_compressed.d.ts +3 -1
  32. package/dest/avm/public_call_stack_item_compressed.d.ts.map +1 -1
  33. package/dest/avm/public_data_read.d.ts +10 -1
  34. package/dest/avm/public_data_read.d.ts.map +1 -1
  35. package/dest/avm/public_data_update_request.d.ts +10 -1
  36. package/dest/avm/public_data_update_request.d.ts.map +1 -1
  37. package/dest/avm/public_data_update_request.js +3 -1
  38. package/dest/avm/public_data_write.d.ts +7 -1
  39. package/dest/avm/public_data_write.d.ts.map +1 -1
  40. package/dest/avm/public_inner_call_request.d.ts +4 -1
  41. package/dest/avm/public_inner_call_request.d.ts.map +1 -1
  42. package/dest/avm/public_inner_call_request.js +3 -1
  43. package/dest/avm/revert_code.d.ts +4 -4
  44. package/dest/avm/revert_code.d.ts.map +1 -1
  45. package/dest/avm/revert_code.js +3 -1
  46. package/dest/aztec-address/index.js +4 -2
  47. package/dest/block/attestation_info.d.ts +5 -5
  48. package/dest/block/attestation_info.d.ts.map +1 -1
  49. package/dest/block/attestation_info.js +4 -4
  50. package/dest/block/block_hash.d.ts +18 -14
  51. package/dest/block/block_hash.d.ts.map +1 -1
  52. package/dest/block/block_hash.js +22 -20
  53. package/dest/block/block_parameter.d.ts +4 -3
  54. package/dest/block/block_parameter.d.ts.map +1 -1
  55. package/dest/block/block_parameter.js +2 -0
  56. package/dest/block/body.d.ts +1 -1
  57. package/dest/block/body.d.ts.map +1 -1
  58. package/dest/block/body.js +5 -2
  59. package/dest/block/checkpointed_l2_block.d.ts +150 -0
  60. package/dest/block/checkpointed_l2_block.d.ts.map +1 -0
  61. package/dest/block/checkpointed_l2_block.js +46 -0
  62. package/dest/block/in_block.d.ts +9 -9
  63. package/dest/block/in_block.d.ts.map +1 -1
  64. package/dest/block/in_block.js +5 -5
  65. package/dest/block/index.d.ts +2 -4
  66. package/dest/block/index.d.ts.map +1 -1
  67. package/dest/block/index.js +1 -3
  68. package/dest/block/l2_block.d.ts +57 -57
  69. package/dest/block/l2_block.d.ts.map +1 -1
  70. package/dest/block/l2_block.js +64 -108
  71. package/dest/block/l2_block_source.d.ts +344 -90
  72. package/dest/block/l2_block_source.d.ts.map +1 -1
  73. package/dest/block/l2_block_source.js +25 -6
  74. package/dest/block/l2_block_stream/index.d.ts +2 -1
  75. package/dest/block/l2_block_stream/index.d.ts.map +1 -1
  76. package/dest/block/l2_block_stream/index.js +1 -0
  77. package/dest/block/l2_block_stream/interfaces.d.ts +15 -5
  78. package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
  79. package/dest/block/l2_block_stream/l2_block_stream.d.ts +13 -3
  80. package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
  81. package/dest/block/l2_block_stream/l2_block_stream.js +115 -32
  82. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts +24 -16
  83. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts.map +1 -1
  84. package/dest/block/l2_block_stream/l2_tips_memory_store.js +55 -61
  85. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +49 -0
  86. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -0
  87. package/dest/block/l2_block_stream/l2_tips_store_base.js +179 -0
  88. package/dest/block/test/l2_tips_store_test_suite.d.ts +1 -1
  89. package/dest/block/test/l2_tips_store_test_suite.d.ts.map +1 -1
  90. package/dest/block/test/l2_tips_store_test_suite.js +478 -41
  91. package/dest/block/validate_block_result.d.ts +24 -24
  92. package/dest/block/validate_block_result.d.ts.map +1 -1
  93. package/dest/block/validate_block_result.js +18 -17
  94. package/dest/checkpoint/checkpoint.d.ts +45 -20
  95. package/dest/checkpoint/checkpoint.d.ts.map +1 -1
  96. package/dest/checkpoint/checkpoint.js +59 -8
  97. package/dest/checkpoint/checkpoint_info.d.ts +38 -0
  98. package/dest/checkpoint/checkpoint_info.d.ts.map +1 -0
  99. package/dest/checkpoint/checkpoint_info.js +34 -0
  100. package/dest/checkpoint/index.d.ts +2 -1
  101. package/dest/checkpoint/index.d.ts.map +1 -1
  102. package/dest/checkpoint/index.js +1 -0
  103. package/dest/checkpoint/published_checkpoint.d.ts +30 -22
  104. package/dest/checkpoint/published_checkpoint.d.ts.map +1 -1
  105. package/dest/checkpoint/published_checkpoint.js +14 -3
  106. package/dest/config/index.d.ts +2 -1
  107. package/dest/config/index.d.ts.map +1 -1
  108. package/dest/config/index.js +1 -0
  109. package/dest/config/node-rpc-config.js +1 -1
  110. package/dest/config/sequencer-config.d.ts +10 -0
  111. package/dest/config/sequencer-config.d.ts.map +1 -0
  112. package/dest/config/sequencer-config.js +12 -0
  113. package/dest/contract/complete_address.d.ts +4 -1
  114. package/dest/contract/complete_address.d.ts.map +1 -1
  115. package/dest/contract/contract_address.js +1 -1
  116. package/dest/contract/contract_class_id.d.ts +1 -1
  117. package/dest/contract/contract_class_id.js +2 -2
  118. package/dest/contract/contract_deployment_data.d.ts +5 -5
  119. package/dest/contract/index.d.ts +1 -3
  120. package/dest/contract/index.d.ts.map +1 -1
  121. package/dest/contract/index.js +0 -2
  122. package/dest/contract/interfaces/contract_class.d.ts +11 -13
  123. package/dest/contract/interfaces/contract_class.d.ts.map +1 -1
  124. package/dest/contract/interfaces/contract_class.js +18 -18
  125. package/dest/contract/interfaces/contract_instance.d.ts +28 -29
  126. package/dest/contract/interfaces/contract_instance.d.ts.map +1 -1
  127. package/dest/contract/interfaces/contract_instance.js +5 -5
  128. package/dest/contract/interfaces/contract_instance_update.d.ts +6 -7
  129. package/dest/contract/interfaces/contract_instance_update.d.ts.map +1 -1
  130. package/dest/contract/interfaces/contract_instance_update.js +5 -5
  131. package/dest/contract/private_function.d.ts +1 -1
  132. package/dest/contract/private_function.d.ts.map +1 -1
  133. package/dest/contract/private_function.js +2 -3
  134. package/dest/contract/private_function_membership_proof.d.ts +1 -1
  135. package/dest/contract/private_function_membership_proof.js +1 -1
  136. package/dest/database-version/database_version.d.ts +58 -0
  137. package/dest/database-version/database_version.d.ts.map +1 -0
  138. package/dest/database-version/database_version.js +69 -0
  139. package/dest/database-version/version_manager.d.ts +3 -49
  140. package/dest/database-version/version_manager.d.ts.map +1 -1
  141. package/dest/database-version/version_manager.js +1 -64
  142. package/dest/delayed_public_mutable/delayed_public_mutable_values.d.ts +2 -2
  143. package/dest/delayed_public_mutable/delayed_public_mutable_values.d.ts.map +1 -1
  144. package/dest/delayed_public_mutable/delayed_public_mutable_values.js +7 -10
  145. package/dest/deserialization/index.d.ts +11 -0
  146. package/dest/deserialization/index.d.ts.map +1 -0
  147. package/dest/deserialization/index.js +10 -0
  148. package/dest/epoch-helpers/index.d.ts +7 -1
  149. package/dest/epoch-helpers/index.d.ts.map +1 -1
  150. package/dest/epoch-helpers/index.js +12 -6
  151. package/dest/errors/proving_error.d.ts +2 -2
  152. package/dest/errors/proving_error.d.ts.map +1 -1
  153. package/dest/gas/gas.js +3 -1
  154. package/dest/gas/gas_fees.js +3 -1
  155. package/dest/hash/hash.d.ts +1 -9
  156. package/dest/hash/hash.d.ts.map +1 -1
  157. package/dest/hash/hash.js +2 -14
  158. package/dest/hash/map_slot.d.ts +1 -1
  159. package/dest/hash/map_slot.d.ts.map +1 -1
  160. package/dest/hash/map_slot.js +4 -3
  161. package/dest/interfaces/allowed_element.d.ts +7 -8
  162. package/dest/interfaces/allowed_element.d.ts.map +1 -1
  163. package/dest/interfaces/allowed_element.js +3 -3
  164. package/dest/interfaces/api_limit.d.ts +3 -1
  165. package/dest/interfaces/api_limit.d.ts.map +1 -1
  166. package/dest/interfaces/api_limit.js +2 -0
  167. package/dest/interfaces/archiver.d.ts +6 -6
  168. package/dest/interfaces/archiver.d.ts.map +1 -1
  169. package/dest/interfaces/archiver.js +25 -15
  170. package/dest/interfaces/aztec-node-admin.d.ts +110 -41
  171. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  172. package/dest/interfaces/aztec-node-admin.js +6 -4
  173. package/dest/interfaces/aztec-node.d.ts +77 -79
  174. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  175. package/dest/interfaces/aztec-node.js +16 -17
  176. package/dest/interfaces/block-builder.d.ts +22 -13
  177. package/dest/interfaces/block-builder.d.ts.map +1 -1
  178. package/dest/interfaces/block-builder.js +16 -1
  179. package/dest/interfaces/configs.d.ts +56 -27
  180. package/dest/interfaces/configs.d.ts.map +1 -1
  181. package/dest/interfaces/configs.js +12 -6
  182. package/dest/interfaces/get_logs_response.d.ts +27 -5
  183. package/dest/interfaces/get_logs_response.d.ts.map +1 -1
  184. package/dest/interfaces/get_logs_response.js +5 -4
  185. package/dest/interfaces/l2_logs_source.d.ts +21 -8
  186. package/dest/interfaces/l2_logs_source.d.ts.map +1 -1
  187. package/dest/interfaces/merkle_tree_operations.d.ts +2 -2
  188. package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
  189. package/dest/interfaces/p2p.d.ts +7 -9
  190. package/dest/interfaces/p2p.d.ts.map +1 -1
  191. package/dest/interfaces/p2p.js +3 -4
  192. package/dest/interfaces/prover-broker.d.ts +16 -1
  193. package/dest/interfaces/prover-broker.d.ts.map +1 -1
  194. package/dest/interfaces/prover-broker.js +4 -1
  195. package/dest/interfaces/prover-client.d.ts +19 -3
  196. package/dest/interfaces/prover-client.d.ts.map +1 -1
  197. package/dest/interfaces/prover-client.js +16 -4
  198. package/dest/interfaces/proving-job.d.ts +218 -218
  199. package/dest/interfaces/proving-job.d.ts.map +1 -1
  200. package/dest/interfaces/proving-job.js +1 -7
  201. package/dest/interfaces/server_circuit_prover.d.ts +4 -3
  202. package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
  203. package/dest/interfaces/slasher.d.ts +9 -1
  204. package/dest/interfaces/slasher.d.ts.map +1 -1
  205. package/dest/interfaces/slasher.js +5 -3
  206. package/dest/interfaces/tx_provider.d.ts +3 -3
  207. package/dest/interfaces/tx_provider.d.ts.map +1 -1
  208. package/dest/interfaces/validator.d.ts +161 -26
  209. package/dest/interfaces/validator.d.ts.map +1 -1
  210. package/dest/interfaces/validator.js +12 -7
  211. package/dest/interfaces/world_state.d.ts +17 -8
  212. package/dest/interfaces/world_state.d.ts.map +1 -1
  213. package/dest/kernel/claimed_length_array.js +3 -1
  214. package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts +6 -5
  215. package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts.map +1 -1
  216. package/dest/kernel/hints/build_note_hash_read_request_hints.js +19 -10
  217. package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts +3 -3
  218. package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts.map +1 -1
  219. package/dest/kernel/hints/build_nullifier_read_request_hints.js +16 -8
  220. package/dest/kernel/hints/find_private_kernel_reset_dimensions.d.ts +1 -1
  221. package/dest/kernel/hints/find_private_kernel_reset_dimensions.d.ts.map +1 -1
  222. package/dest/kernel/hints/find_private_kernel_reset_dimensions.js +1 -3
  223. package/dest/kernel/hints/key_validation_hint.d.ts +2 -1
  224. package/dest/kernel/hints/key_validation_hint.d.ts.map +1 -1
  225. package/dest/kernel/hints/key_validation_request.d.ts +2 -1
  226. package/dest/kernel/hints/key_validation_request.d.ts.map +1 -1
  227. package/dest/kernel/hints/key_validation_request_and_generator.d.ts +6 -1
  228. package/dest/kernel/hints/key_validation_request_and_generator.d.ts.map +1 -1
  229. package/dest/kernel/hints/private_kernel_reset_hints.d.ts +13 -1
  230. package/dest/kernel/hints/private_kernel_reset_hints.d.ts.map +1 -1
  231. package/dest/kernel/hints/read_request.d.ts +7 -1
  232. package/dest/kernel/hints/read_request.d.ts.map +1 -1
  233. package/dest/kernel/hints/read_request_hints.d.ts +7 -1
  234. package/dest/kernel/hints/read_request_hints.d.ts.map +1 -1
  235. package/dest/kernel/hints/transient_data_squashing_hint.js +3 -1
  236. package/dest/kernel/log_hash.js +3 -1
  237. package/dest/kernel/private_accumulated_data.d.ts +23 -1
  238. package/dest/kernel/private_accumulated_data.d.ts.map +1 -1
  239. package/dest/kernel/private_call_data.d.ts +25 -1
  240. package/dest/kernel/private_call_data.d.ts.map +1 -1
  241. package/dest/kernel/private_call_request.d.ts +16 -1
  242. package/dest/kernel/private_call_request.d.ts.map +1 -1
  243. package/dest/kernel/private_circuit_public_inputs.d.ts +120 -47
  244. package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
  245. package/dest/kernel/private_circuit_public_inputs.js +59 -59
  246. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts +31 -1
  247. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts.map +1 -1
  248. package/dest/kernel/private_kernel_data.d.ts +7 -1
  249. package/dest/kernel/private_kernel_data.d.ts.map +1 -1
  250. package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts +22 -1
  251. package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts.map +1 -1
  252. package/dest/kernel/private_kernel_inner_circuit_private_inputs.d.ts +7 -1
  253. package/dest/kernel/private_kernel_inner_circuit_private_inputs.d.ts.map +1 -1
  254. package/dest/kernel/private_kernel_reset_circuit_private_inputs.d.ts +4 -1
  255. package/dest/kernel/private_kernel_reset_circuit_private_inputs.d.ts.map +1 -1
  256. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts +10 -1
  257. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts.map +1 -1
  258. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts +23 -1
  259. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts.map +1 -1
  260. package/dest/kernel/private_log_data.js +5 -2
  261. package/dest/kernel/private_to_avm_accumulated_data.d.ts +2 -2
  262. package/dest/kernel/private_to_avm_accumulated_data.js +5 -2
  263. package/dest/kernel/private_to_public_accumulated_data.js +3 -1
  264. package/dest/kernel/private_to_rollup_accumulated_data.d.ts +17 -1
  265. package/dest/kernel/private_to_rollup_accumulated_data.d.ts.map +1 -1
  266. package/dest/kernel/private_to_rollup_accumulated_data.js +3 -1
  267. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts +16 -1
  268. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts.map +1 -1
  269. package/dest/kernel/private_validation_requests.d.ts +10 -1
  270. package/dest/kernel/private_validation_requests.d.ts.map +1 -1
  271. package/dest/kernel/private_validation_requests.js +3 -1
  272. package/dest/kernel/public_call_request.d.ts +22 -1
  273. package/dest/kernel/public_call_request.d.ts.map +1 -1
  274. package/dest/kernel/public_call_request.js +5 -2
  275. package/dest/kernel/utils/optional_number.d.ts +7 -1
  276. package/dest/kernel/utils/optional_number.d.ts.map +1 -1
  277. package/dest/keys/derivation.d.ts +3 -3
  278. package/dest/keys/derivation.js +8 -8
  279. package/dest/keys/key_types.d.ts +1 -1
  280. package/dest/keys/public_keys.d.ts +5 -1
  281. package/dest/keys/public_keys.d.ts.map +1 -1
  282. package/dest/keys/utils.d.ts +1 -1
  283. package/dest/keys/utils.d.ts.map +1 -1
  284. package/dest/keys/utils.js +7 -3
  285. package/dest/l1-contracts/slash_factory.d.ts +1 -1
  286. package/dest/l1-contracts/slash_factory.d.ts.map +1 -1
  287. package/dest/l1-contracts/slash_factory.js +1 -0
  288. package/dest/logs/contract_class_log.js +3 -1
  289. package/dest/logs/extended_contract_class_log.d.ts +3 -1
  290. package/dest/logs/extended_contract_class_log.d.ts.map +1 -1
  291. package/dest/logs/extended_public_log.d.ts +17 -3
  292. package/dest/logs/extended_public_log.d.ts.map +1 -1
  293. package/dest/logs/index.d.ts +3 -2
  294. package/dest/logs/index.d.ts.map +1 -1
  295. package/dest/logs/index.js +2 -1
  296. package/dest/logs/log_id.d.ts +22 -7
  297. package/dest/logs/log_id.d.ts.map +1 -1
  298. package/dest/logs/log_id.js +23 -13
  299. package/dest/logs/private_log.d.ts +1 -1
  300. package/dest/logs/private_log.d.ts.map +1 -1
  301. package/dest/logs/private_log.js +5 -2
  302. package/dest/logs/public_log.js +3 -1
  303. package/dest/logs/siloed_tag.d.ts +23 -0
  304. package/dest/logs/siloed_tag.d.ts.map +1 -0
  305. package/dest/logs/siloed_tag.js +31 -0
  306. package/dest/logs/tag.d.ts +21 -0
  307. package/dest/logs/tag.d.ts.map +1 -0
  308. package/dest/logs/tag.js +30 -0
  309. package/dest/logs/tx_scoped_l2_log.d.ts +24 -33
  310. package/dest/logs/tx_scoped_l2_log.d.ts.map +1 -1
  311. package/dest/logs/tx_scoped_l2_log.js +37 -43
  312. package/dest/messaging/in_hash.d.ts +4 -2
  313. package/dest/messaging/in_hash.d.ts.map +1 -1
  314. package/dest/messaging/in_hash.js +3 -1
  315. package/dest/messaging/inbox_leaf.d.ts +3 -1
  316. package/dest/messaging/inbox_leaf.d.ts.map +1 -1
  317. package/dest/messaging/l1_actor.d.ts +7 -1
  318. package/dest/messaging/l1_actor.d.ts.map +1 -1
  319. package/dest/messaging/l1_to_l2_message.d.ts +6 -1
  320. package/dest/messaging/l1_to_l2_message.d.ts.map +1 -1
  321. package/dest/messaging/l2_actor.d.ts +7 -1
  322. package/dest/messaging/l2_actor.d.ts.map +1 -1
  323. package/dest/messaging/l2_to_l1_membership.d.ts +88 -6
  324. package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -1
  325. package/dest/messaging/l2_to_l1_membership.js +160 -42
  326. package/dest/messaging/out_hash.d.ts +41 -3
  327. package/dest/messaging/out_hash.d.ts.map +1 -1
  328. package/dest/messaging/out_hash.js +54 -19
  329. package/dest/note/note_dao.d.ts +36 -5
  330. package/dest/note/note_dao.d.ts.map +1 -1
  331. package/dest/note/note_dao.js +15 -12
  332. package/dest/p2p/attestation_utils.d.ts +3 -3
  333. package/dest/p2p/attestation_utils.d.ts.map +1 -1
  334. package/dest/p2p/attestation_utils.js +1 -1
  335. package/dest/p2p/block_proposal.d.ts +102 -23
  336. package/dest/p2p/block_proposal.d.ts.map +1 -1
  337. package/dest/p2p/block_proposal.js +140 -39
  338. package/dest/p2p/checkpoint_attestation.d.ts +81 -0
  339. package/dest/p2p/checkpoint_attestation.d.ts.map +1 -0
  340. package/dest/p2p/{block_attestation.js → checkpoint_attestation.js} +22 -19
  341. package/dest/p2p/checkpoint_proposal.d.ts +174 -0
  342. package/dest/p2p/checkpoint_proposal.d.ts.map +1 -0
  343. package/dest/p2p/checkpoint_proposal.js +238 -0
  344. package/dest/p2p/consensus_payload.d.ts +9 -9
  345. package/dest/p2p/consensus_payload.d.ts.map +1 -1
  346. package/dest/p2p/consensus_payload.js +3 -5
  347. package/dest/p2p/constants.d.ts +5 -0
  348. package/dest/p2p/constants.d.ts.map +1 -0
  349. package/dest/p2p/constants.js +3 -0
  350. package/dest/p2p/gossipable.d.ts +4 -3
  351. package/dest/p2p/gossipable.d.ts.map +1 -1
  352. package/dest/p2p/gossipable.js +16 -5
  353. package/dest/p2p/index.d.ts +5 -2
  354. package/dest/p2p/index.d.ts.map +1 -1
  355. package/dest/p2p/index.js +4 -1
  356. package/dest/p2p/message_validator.d.ts +18 -3
  357. package/dest/p2p/message_validator.d.ts.map +1 -1
  358. package/dest/p2p/message_validator.js +2 -1
  359. package/dest/p2p/signature_utils.d.ts +5 -3
  360. package/dest/p2p/signature_utils.d.ts.map +1 -1
  361. package/dest/p2p/signature_utils.js +3 -1
  362. package/dest/p2p/signed_txs.d.ts +42 -0
  363. package/dest/p2p/signed_txs.d.ts.map +1 -0
  364. package/dest/p2p/signed_txs.js +75 -0
  365. package/dest/p2p/topic_type.d.ts +3 -2
  366. package/dest/p2p/topic_type.d.ts.map +1 -1
  367. package/dest/p2p/topic_type.js +10 -3
  368. package/dest/parity/parity_base_private_inputs.d.ts +3 -1
  369. package/dest/parity/parity_base_private_inputs.d.ts.map +1 -1
  370. package/dest/parity/parity_public_inputs.d.ts +4 -1
  371. package/dest/parity/parity_public_inputs.d.ts.map +1 -1
  372. package/dest/parity/parity_root_private_inputs.d.ts +2 -1
  373. package/dest/parity/parity_root_private_inputs.d.ts.map +1 -1
  374. package/dest/proofs/chonk_proof.d.ts +1 -1
  375. package/dest/proofs/chonk_proof.d.ts.map +1 -1
  376. package/dest/proofs/chonk_proof.js +9 -4
  377. package/dest/proofs/proof.d.ts +4 -1
  378. package/dest/proofs/proof.d.ts.map +1 -1
  379. package/dest/proofs/recursive_proof.d.ts +10 -1
  380. package/dest/proofs/recursive_proof.d.ts.map +1 -1
  381. package/dest/rollup/avm_proof_data.d.ts +1 -3
  382. package/dest/rollup/avm_proof_data.d.ts.map +1 -1
  383. package/dest/rollup/avm_proof_data.js +1 -9
  384. package/dest/rollup/base_rollup_hints.d.ts +34 -1
  385. package/dest/rollup/base_rollup_hints.d.ts.map +1 -1
  386. package/dest/rollup/block_constant_data.d.ts +12 -1
  387. package/dest/rollup/block_constant_data.d.ts.map +1 -1
  388. package/dest/rollup/block_headers_hash.js +1 -1
  389. package/dest/rollup/block_merge_rollup_private_inputs.d.ts +4 -1
  390. package/dest/rollup/block_merge_rollup_private_inputs.d.ts.map +1 -1
  391. package/dest/rollup/block_rollup_public_inputs.d.ts +47 -11
  392. package/dest/rollup/block_rollup_public_inputs.d.ts.map +1 -1
  393. package/dest/rollup/block_rollup_public_inputs.js +8 -12
  394. package/dest/rollup/block_root_rollup_private_inputs.d.ts +64 -1
  395. package/dest/rollup/block_root_rollup_private_inputs.d.ts.map +1 -1
  396. package/dest/rollup/checkpoint_constant_data.d.ts +11 -1
  397. package/dest/rollup/checkpoint_constant_data.d.ts.map +1 -1
  398. package/dest/rollup/checkpoint_constant_data.js +4 -1
  399. package/dest/rollup/checkpoint_header.d.ts +46 -12
  400. package/dest/rollup/checkpoint_header.d.ts.map +1 -1
  401. package/dest/rollup/checkpoint_header.js +53 -20
  402. package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts +4 -1
  403. package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts.map +1 -1
  404. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +46 -6
  405. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -1
  406. package/dest/rollup/checkpoint_rollup_public_inputs.js +11 -3
  407. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts +44 -3
  408. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts.map +1 -1
  409. package/dest/rollup/checkpoint_root_rollup_private_inputs.js +13 -2
  410. package/dest/rollup/epoch_constant_data.d.ts +16 -1
  411. package/dest/rollup/epoch_constant_data.d.ts.map +1 -1
  412. package/dest/rollup/root_rollup_private_inputs.d.ts +6 -1
  413. package/dest/rollup/root_rollup_private_inputs.d.ts.map +1 -1
  414. package/dest/rollup/root_rollup_public_inputs.d.ts +21 -6
  415. package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -1
  416. package/dest/rollup/root_rollup_public_inputs.js +10 -4
  417. package/dest/rollup/tree_snapshot_diff_hints.d.ts +24 -1
  418. package/dest/rollup/tree_snapshot_diff_hints.d.ts.map +1 -1
  419. package/dest/rollup/tx_merge_rollup_private_inputs.d.ts +4 -1
  420. package/dest/rollup/tx_merge_rollup_private_inputs.d.ts.map +1 -1
  421. package/dest/rollup/tx_rollup_public_inputs.d.ts +29 -1
  422. package/dest/rollup/tx_rollup_public_inputs.d.ts.map +1 -1
  423. package/dest/schemas/schemas.d.ts +5 -3
  424. package/dest/schemas/schemas.d.ts.map +1 -1
  425. package/dest/schemas/schemas.js +2 -1
  426. package/dest/slashing/empire.d.ts +1 -1
  427. package/dest/slashing/empire.d.ts.map +1 -1
  428. package/dest/slashing/empire.js +2 -0
  429. package/dest/slashing/helpers.d.ts +2 -2
  430. package/dest/slashing/helpers.d.ts.map +1 -1
  431. package/dest/slashing/helpers.js +6 -0
  432. package/dest/slashing/tally.d.ts +2 -1
  433. package/dest/slashing/tally.d.ts.map +1 -1
  434. package/dest/slashing/tally.js +6 -2
  435. package/dest/slashing/types.d.ts +10 -7
  436. package/dest/slashing/types.d.ts.map +1 -1
  437. package/dest/slashing/types.js +18 -6
  438. package/dest/snapshots/types.d.ts +1 -1
  439. package/dest/snapshots/types.d.ts.map +1 -1
  440. package/dest/snapshots/types.js +5 -5
  441. package/dest/stats/stats.d.ts +10 -8
  442. package/dest/stats/stats.d.ts.map +1 -1
  443. package/dest/tests/factories.d.ts +39 -10
  444. package/dest/tests/factories.d.ts.map +1 -1
  445. package/dest/tests/factories.js +81 -26
  446. package/dest/tests/jest.js +1 -1
  447. package/dest/tests/mocks.d.ts +76 -20
  448. package/dest/tests/mocks.d.ts.map +1 -1
  449. package/dest/tests/mocks.js +139 -60
  450. package/dest/timetable/index.d.ts +37 -0
  451. package/dest/timetable/index.d.ts.map +1 -0
  452. package/dest/timetable/index.js +39 -0
  453. package/dest/trees/append_only_tree_snapshot.d.ts +13 -1
  454. package/dest/trees/append_only_tree_snapshot.d.ts.map +1 -1
  455. package/dest/trees/append_only_tree_snapshot.js +3 -1
  456. package/dest/trees/nullifier_leaf.d.ts +13 -1
  457. package/dest/trees/nullifier_leaf.d.ts.map +1 -1
  458. package/dest/trees/nullifier_membership_witness.d.ts +10 -1
  459. package/dest/trees/nullifier_membership_witness.d.ts.map +1 -1
  460. package/dest/trees/public_data_leaf.d.ts +16 -1
  461. package/dest/trees/public_data_leaf.d.ts.map +1 -1
  462. package/dest/trees/public_data_witness.d.ts +11 -1
  463. package/dest/trees/public_data_witness.d.ts.map +1 -1
  464. package/dest/tx/block_header.d.ts +21 -8
  465. package/dest/tx/block_header.d.ts.map +1 -1
  466. package/dest/tx/block_header.js +12 -2
  467. package/dest/tx/call_context.d.ts +13 -1
  468. package/dest/tx/call_context.d.ts.map +1 -1
  469. package/dest/tx/call_context.js +3 -1
  470. package/dest/tx/capsule.d.ts +4 -1
  471. package/dest/tx/capsule.d.ts.map +1 -1
  472. package/dest/tx/execution_payload.d.ts +9 -1
  473. package/dest/tx/execution_payload.d.ts.map +1 -1
  474. package/dest/tx/function_data.d.ts +4 -2
  475. package/dest/tx/function_data.d.ts.map +1 -1
  476. package/dest/tx/global_variable_builder.d.ts +5 -3
  477. package/dest/tx/global_variable_builder.d.ts.map +1 -1
  478. package/dest/tx/global_variables.d.ts +14 -1
  479. package/dest/tx/global_variables.d.ts.map +1 -1
  480. package/dest/tx/global_variables.js +3 -1
  481. package/dest/tx/hashed_values.d.ts +7 -1
  482. package/dest/tx/hashed_values.d.ts.map +1 -1
  483. package/dest/tx/in_tx.d.ts +4 -4
  484. package/dest/tx/index.d.ts +1 -2
  485. package/dest/tx/index.d.ts.map +1 -1
  486. package/dest/tx/index.js +0 -1
  487. package/dest/tx/indexed_tx_effect.d.ts +5 -5
  488. package/dest/tx/indexed_tx_effect.d.ts.map +1 -1
  489. package/dest/tx/indexed_tx_effect.js +3 -2
  490. package/dest/tx/partial_state_reference.d.ts +4 -1
  491. package/dest/tx/partial_state_reference.d.ts.map +1 -1
  492. package/dest/tx/private_execution_result.d.ts +24 -7
  493. package/dest/tx/private_execution_result.d.ts.map +1 -1
  494. package/dest/tx/private_execution_result.js +4 -21
  495. package/dest/tx/private_tx_constant_data.d.ts +16 -1
  496. package/dest/tx/private_tx_constant_data.d.ts.map +1 -1
  497. package/dest/tx/profiling.d.ts +149 -26
  498. package/dest/tx/profiling.d.ts.map +1 -1
  499. package/dest/tx/profiling.js +44 -7
  500. package/dest/tx/protocol_contracts.d.ts +1 -1
  501. package/dest/tx/public_call_request_with_calldata.d.ts +7 -1
  502. package/dest/tx/public_call_request_with_calldata.d.ts.map +1 -1
  503. package/dest/tx/public_call_request_with_calldata.js +3 -1
  504. package/dest/tx/simulated_tx.d.ts +1031 -7
  505. package/dest/tx/simulated_tx.d.ts.map +1 -1
  506. package/dest/tx/state_reference.d.ts +3 -1
  507. package/dest/tx/state_reference.d.ts.map +1 -1
  508. package/dest/tx/state_reference.js +3 -1
  509. package/dest/tx/tree_snapshots.js +3 -1
  510. package/dest/tx/tx.d.ts +33 -3
  511. package/dest/tx/tx.d.ts.map +1 -1
  512. package/dest/tx/tx.js +18 -6
  513. package/dest/tx/tx_context.d.ts +2 -1
  514. package/dest/tx/tx_context.d.ts.map +1 -1
  515. package/dest/tx/tx_effect.d.ts +32 -6
  516. package/dest/tx/tx_effect.d.ts.map +1 -1
  517. package/dest/tx/tx_effect.js +6 -9
  518. package/dest/tx/tx_execution_request.d.ts +30 -1
  519. package/dest/tx/tx_execution_request.d.ts.map +1 -1
  520. package/dest/tx/tx_execution_request.js +6 -2
  521. package/dest/tx/tx_hash.d.ts +2 -1
  522. package/dest/tx/tx_hash.d.ts.map +1 -1
  523. package/dest/tx/tx_receipt.d.ts +47 -13
  524. package/dest/tx/tx_receipt.d.ts.map +1 -1
  525. package/dest/tx/tx_receipt.js +46 -15
  526. package/dest/tx/tx_request.d.ts +6 -1
  527. package/dest/tx/tx_request.d.ts.map +1 -1
  528. package/dest/tx/validator/empty_validator.d.ts +2 -2
  529. package/dest/tx/validator/empty_validator.d.ts.map +1 -1
  530. package/dest/tx/validator/error_texts.d.ts +2 -1
  531. package/dest/tx/validator/error_texts.d.ts.map +1 -1
  532. package/dest/tx/validator/error_texts.js +2 -0
  533. package/dest/tx/validator/tx_validator.d.ts +2 -5
  534. package/dest/tx/validator/tx_validator.d.ts.map +1 -1
  535. package/dest/tx/validator/tx_validator.js +4 -4
  536. package/dest/types/shared.d.ts +4 -1
  537. package/dest/types/shared.d.ts.map +1 -1
  538. package/dest/validators/schemas.d.ts +9 -9
  539. package/dest/validators/schemas.d.ts.map +1 -1
  540. package/dest/validators/schemas.js +13 -13
  541. package/dest/vks/verification_key.d.ts +22 -1
  542. package/dest/vks/verification_key.d.ts.map +1 -1
  543. package/dest/vks/vk_data.d.ts +7 -1
  544. package/dest/vks/vk_data.d.ts.map +1 -1
  545. package/dest/zkpassport/index.d.ts +3 -4
  546. package/dest/zkpassport/index.d.ts.map +1 -1
  547. package/dest/zkpassport/index.js +9 -9
  548. package/package.json +27 -13
  549. package/src/abi/abi.ts +39 -33
  550. package/src/abi/contract_artifact.ts +10 -10
  551. package/src/abi/function_call.ts +25 -3
  552. package/src/abi/function_selector.ts +8 -0
  553. package/src/abi/utils.ts +17 -0
  554. package/src/avm/avm.ts +1 -1
  555. package/src/block/attestation_info.ts +9 -6
  556. package/src/block/block_hash.ts +26 -25
  557. package/src/block/block_parameter.ts +4 -2
  558. package/src/block/body.ts +2 -1
  559. package/src/block/checkpointed_l2_block.ts +70 -0
  560. package/src/block/in_block.ts +6 -6
  561. package/src/block/index.ts +1 -3
  562. package/src/block/l2_block.ts +102 -149
  563. package/src/block/l2_block_source.ts +175 -68
  564. package/src/block/l2_block_stream/index.ts +1 -0
  565. package/src/block/l2_block_stream/interfaces.ts +15 -4
  566. package/src/block/l2_block_stream/l2_block_stream.ts +139 -39
  567. package/src/block/l2_block_stream/l2_tips_memory_store.ts +62 -56
  568. package/src/block/l2_block_stream/l2_tips_store_base.ts +226 -0
  569. package/src/block/test/l2_tips_store_test_suite.ts +480 -35
  570. package/src/block/validate_block_result.ts +40 -35
  571. package/src/checkpoint/checkpoint.ts +82 -12
  572. package/src/checkpoint/checkpoint_info.ts +52 -0
  573. package/src/checkpoint/index.ts +1 -0
  574. package/src/checkpoint/published_checkpoint.ts +22 -7
  575. package/src/config/index.ts +1 -0
  576. package/src/config/node-rpc-config.ts +1 -1
  577. package/src/config/sequencer-config.ts +19 -0
  578. package/src/contract/contract_address.ts +1 -1
  579. package/src/contract/contract_class_id.ts +2 -2
  580. package/src/contract/index.ts +0 -2
  581. package/src/contract/interfaces/contract_class.ts +59 -46
  582. package/src/contract/interfaces/contract_instance.ts +15 -13
  583. package/src/contract/interfaces/contract_instance_update.ts +11 -9
  584. package/src/contract/private_function.ts +2 -3
  585. package/src/contract/private_function_membership_proof.ts +1 -1
  586. package/src/database-version/database_version.ts +87 -0
  587. package/src/database-version/version_manager.ts +1 -77
  588. package/src/delayed_public_mutable/delayed_public_mutable_values.ts +9 -10
  589. package/src/deserialization/index.ts +21 -0
  590. package/src/epoch-helpers/index.ts +24 -10
  591. package/src/hash/hash.ts +2 -13
  592. package/src/hash/map_slot.ts +3 -2
  593. package/src/interfaces/allowed_element.ts +9 -7
  594. package/src/interfaces/api_limit.ts +2 -0
  595. package/src/interfaces/archiver.ts +33 -23
  596. package/src/interfaces/aztec-node-admin.ts +10 -6
  597. package/src/interfaces/aztec-node.ts +118 -134
  598. package/src/interfaces/block-builder.ts +50 -23
  599. package/src/interfaces/configs.ts +67 -33
  600. package/src/interfaces/get_logs_response.ts +13 -9
  601. package/src/interfaces/l2_logs_source.ts +25 -7
  602. package/src/interfaces/merkle_tree_operations.ts +4 -1
  603. package/src/interfaces/p2p.ts +8 -12
  604. package/src/interfaces/prover-broker.ts +22 -0
  605. package/src/interfaces/prover-client.ts +35 -10
  606. package/src/interfaces/proving-job.ts +2 -11
  607. package/src/interfaces/server_circuit_prover.ts +3 -3
  608. package/src/interfaces/slasher.ts +28 -22
  609. package/src/interfaces/tx_provider.ts +2 -2
  610. package/src/interfaces/validator.ts +92 -31
  611. package/src/interfaces/world_state.ts +16 -9
  612. package/src/kernel/hints/build_note_hash_read_request_hints.ts +20 -12
  613. package/src/kernel/hints/build_nullifier_read_request_hints.ts +17 -14
  614. package/src/kernel/hints/find_private_kernel_reset_dimensions.ts +2 -4
  615. package/src/kernel/private_circuit_public_inputs.ts +85 -85
  616. package/src/keys/derivation.ts +8 -8
  617. package/src/keys/key_types.ts +1 -1
  618. package/src/keys/utils.ts +7 -3
  619. package/src/l1-contracts/slash_factory.ts +1 -0
  620. package/src/logs/index.ts +2 -1
  621. package/src/logs/log_id.ts +26 -12
  622. package/src/logs/private_log.ts +2 -1
  623. package/src/logs/siloed_tag.ts +45 -0
  624. package/src/logs/tag.ts +42 -0
  625. package/src/logs/tx_scoped_l2_log.ts +45 -43
  626. package/src/messaging/in_hash.ts +3 -1
  627. package/src/messaging/l1_to_l2_message.ts +1 -0
  628. package/src/messaging/l2_to_l1_membership.ts +178 -52
  629. package/src/messaging/out_hash.ts +62 -21
  630. package/src/note/note_dao.ts +18 -13
  631. package/src/p2p/attestation_utils.ts +3 -3
  632. package/src/p2p/block_proposal.ts +213 -46
  633. package/src/p2p/{block_attestation.ts → checkpoint_attestation.ts} +31 -25
  634. package/src/p2p/checkpoint_proposal.ts +365 -0
  635. package/src/p2p/consensus_payload.ts +5 -7
  636. package/src/p2p/constants.ts +6 -0
  637. package/src/p2p/gossipable.ts +14 -4
  638. package/src/p2p/index.ts +4 -1
  639. package/src/p2p/message_validator.ts +14 -2
  640. package/src/p2p/signature_utils.ts +3 -1
  641. package/src/p2p/signed_txs.ts +88 -0
  642. package/src/p2p/topic_type.ts +4 -3
  643. package/src/proofs/chonk_proof.ts +9 -5
  644. package/src/rollup/avm_proof_data.ts +0 -7
  645. package/src/rollup/block_headers_hash.ts +1 -1
  646. package/src/rollup/block_rollup_public_inputs.ts +5 -11
  647. package/src/rollup/checkpoint_constant_data.ts +1 -0
  648. package/src/rollup/checkpoint_header.ts +67 -20
  649. package/src/rollup/checkpoint_rollup_public_inputs.ts +17 -5
  650. package/src/rollup/checkpoint_root_rollup_private_inputs.ts +14 -1
  651. package/src/rollup/root_rollup_public_inputs.ts +16 -7
  652. package/src/schemas/schemas.ts +4 -0
  653. package/src/slashing/empire.ts +3 -1
  654. package/src/slashing/helpers.ts +8 -0
  655. package/src/slashing/tally.ts +8 -2
  656. package/src/slashing/types.ts +38 -20
  657. package/src/snapshots/types.ts +33 -29
  658. package/src/stats/stats.ts +10 -7
  659. package/src/tests/factories.ts +103 -42
  660. package/src/tests/jest.ts +1 -1
  661. package/src/tests/mocks.ts +226 -92
  662. package/src/timetable/index.ts +66 -0
  663. package/src/tx/block_header.ts +21 -8
  664. package/src/tx/global_variable_builder.ts +9 -2
  665. package/src/tx/global_variables.ts +6 -0
  666. package/src/tx/index.ts +0 -1
  667. package/src/tx/indexed_tx_effect.ts +3 -2
  668. package/src/tx/private_execution_result.ts +2 -17
  669. package/src/tx/profiling.ts +46 -4
  670. package/src/tx/tx.ts +19 -11
  671. package/src/tx/tx_effect.ts +3 -10
  672. package/src/tx/tx_execution_request.ts +2 -0
  673. package/src/tx/tx_receipt.ts +75 -18
  674. package/src/tx/validator/empty_validator.ts +1 -1
  675. package/src/tx/validator/error_texts.ts +3 -0
  676. package/src/tx/validator/tx_validator.ts +9 -7
  677. package/src/validators/schemas.ts +54 -48
  678. package/src/zkpassport/index.ts +11 -12
  679. package/dest/block/l2_block_code_to_purge.d.ts +0 -12
  680. package/dest/block/l2_block_code_to_purge.d.ts.map +0 -1
  681. package/dest/block/l2_block_code_to_purge.js +0 -61
  682. package/dest/block/l2_block_header.d.ts +0 -98
  683. package/dest/block/l2_block_header.d.ts.map +0 -1
  684. package/dest/block/l2_block_header.js +0 -153
  685. package/dest/block/l2_block_new.d.ts +0 -130
  686. package/dest/block/l2_block_new.d.ts.map +0 -1
  687. package/dest/block/l2_block_new.js +0 -151
  688. package/dest/block/published_l2_block.d.ts +0 -130
  689. package/dest/block/published_l2_block.d.ts.map +0 -1
  690. package/dest/block/published_l2_block.js +0 -48
  691. package/dest/contract/contract_class_metadata.d.ts +0 -8
  692. package/dest/contract/contract_class_metadata.d.ts.map +0 -1
  693. package/dest/contract/contract_class_metadata.js +0 -1
  694. package/dest/contract/contract_metadata.d.ts +0 -7
  695. package/dest/contract/contract_metadata.d.ts.map +0 -1
  696. package/dest/contract/contract_metadata.js +0 -1
  697. package/dest/database-version/index.d.ts +0 -2
  698. package/dest/database-version/index.d.ts.map +0 -1
  699. package/dest/database-version/index.js +0 -1
  700. package/dest/logs/log_with_tx_data.d.ts +0 -19
  701. package/dest/logs/log_with_tx_data.d.ts.map +0 -1
  702. package/dest/logs/log_with_tx_data.js +0 -49
  703. package/dest/p2p/block_attestation.d.ts +0 -80
  704. package/dest/p2p/block_attestation.d.ts.map +0 -1
  705. package/dest/tx/content_commitment.d.ts +0 -49
  706. package/dest/tx/content_commitment.d.ts.map +0 -1
  707. package/dest/tx/content_commitment.js +0 -90
  708. package/src/block/l2_block_code_to_purge.ts +0 -88
  709. package/src/block/l2_block_header.ts +0 -246
  710. package/src/block/l2_block_new.ts +0 -197
  711. package/src/block/published_l2_block.ts +0 -65
  712. package/src/contract/contract_class_metadata.ts +0 -8
  713. package/src/contract/contract_metadata.ts +0 -7
  714. package/src/database-version/index.ts +0 -1
  715. package/src/logs/log_with_tx_data.ts +0 -46
  716. package/src/tx/content_commitment.ts +0 -113
@@ -6,24 +6,24 @@ import {
6
6
  MAX_NULLIFIERS_PER_TX,
7
7
  MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
8
8
  } from '@aztec/constants';
9
- import { makeTuple } from '@aztec/foundation/array';
10
- import { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
9
+ import { type FieldsOf, makeTuple } from '@aztec/foundation/array';
10
+ import { BlockNumber, CheckpointNumber, IndexWithinCheckpoint, SlotNumber } from '@aztec/foundation/branded-types';
11
11
  import { Buffer32 } from '@aztec/foundation/buffer';
12
12
  import { padArrayEnd, times } from '@aztec/foundation/collection';
13
13
  import { randomBytes } from '@aztec/foundation/crypto/random';
14
14
  import { Secp256k1Signer } from '@aztec/foundation/crypto/secp256k1-signer';
15
15
  import { Fr } from '@aztec/foundation/curves/bn254';
16
+ import { Signature } from '@aztec/foundation/eth-signature';
16
17
 
17
18
  import type { ContractArtifact } from '../abi/abi.js';
18
19
  import { PublicTxEffect } from '../avm/avm.js';
20
+ import type { AvmAccumulatedData } from '../avm/avm_accumulated_data.js';
19
21
  import { AvmCircuitPublicInputs } from '../avm/avm_circuit_public_inputs.js';
20
22
  import { PublicDataWrite } from '../avm/public_data_write.js';
21
23
  import { RevertCode } from '../avm/revert_code.js';
22
24
  import { AztecAddress } from '../aztec-address/index.js';
23
- import { CommitteeAttestation, L2BlockHeader, L2BlockNew } from '../block/index.js';
24
- import { L2Block } from '../block/l2_block.js';
25
+ import { CheckpointedL2Block, CommitteeAttestation, L2Block } from '../block/index.js';
25
26
  import type { CommitteeAttestationsAndSigners } from '../block/proposal/attestations_and_signers.js';
26
- import { PublishedL2Block } from '../block/published_l2_block.js';
27
27
  import { Checkpoint } from '../checkpoint/checkpoint.js';
28
28
  import { L1PublishedData } from '../checkpoint/published_checkpoint.js';
29
29
  import { computeContractAddressFromInstance } from '../contract/contract_address.js';
@@ -46,12 +46,14 @@ import { PrivateToAvmAccumulatedData } from '../kernel/private_to_avm_accumulate
46
46
  import { PrivateToPublicAccumulatedDataBuilder } from '../kernel/private_to_public_accumulated_data_builder.js';
47
47
  import { PublicCallRequestArrayLengths } from '../kernel/public_call_request.js';
48
48
  import { computeInHashFromL1ToL2Messages } from '../messaging/in_hash.js';
49
- import { BlockAttestation } from '../p2p/block_attestation.js';
50
49
  import { BlockProposal } from '../p2p/block_proposal.js';
50
+ import { CheckpointAttestation } from '../p2p/checkpoint_attestation.js';
51
+ import { CheckpointProposal } from '../p2p/checkpoint_proposal.js';
51
52
  import { ConsensusPayload } from '../p2p/consensus_payload.js';
52
53
  import { SignatureDomainSeparator, getHashedSignaturePayloadEthSignedMessage } from '../p2p/signature_utils.js';
53
54
  import { ChonkProof } from '../proofs/chonk_proof.js';
54
55
  import { ProvingRequestType } from '../proofs/proving_request_type.js';
56
+ import { CheckpointHeader } from '../rollup/checkpoint_header.js';
55
57
  import { AppendOnlyTreeSnapshot } from '../trees/append_only_tree_snapshot.js';
56
58
  import {
57
59
  BlockHeader,
@@ -73,9 +75,9 @@ import {
73
75
  makeAvmCircuitInputs,
74
76
  makeAztecAddress,
75
77
  makeBlockHeader,
78
+ makeCheckpointHeader,
76
79
  makeGas,
77
80
  makeGlobalVariables,
78
- makeL2BlockHeader,
79
81
  makePrivateToPublicAccumulatedData,
80
82
  makePrivateToRollupAccumulatedData,
81
83
  makeProtocolContracts,
@@ -95,12 +97,14 @@ export const mockTx = async (
95
97
  publicCalldataSize = 2,
96
98
  feePayer,
97
99
  chonkProof = ChonkProof.random(),
100
+ maxFeesPerGas = new GasFees(10, 10),
98
101
  maxPriorityFeesPerGas,
99
102
  gasUsed = Gas.empty(),
100
103
  chainId = Fr.ZERO,
101
104
  version = Fr.ZERO,
102
105
  vkTreeRoot = Fr.ZERO,
103
106
  protocolContractsHash = Fr.ZERO,
107
+ anchorBlockHeader = BlockHeader.empty(),
104
108
  }: {
105
109
  numberOfNonRevertiblePublicCallRequests?: number;
106
110
  numberOfRevertiblePublicCallRequests?: number;
@@ -109,12 +113,14 @@ export const mockTx = async (
109
113
  publicCalldataSize?: number;
110
114
  feePayer?: AztecAddress;
111
115
  chonkProof?: ChonkProof;
116
+ maxFeesPerGas?: GasFees;
112
117
  maxPriorityFeesPerGas?: GasFees;
113
118
  gasUsed?: Gas;
114
119
  chainId?: Fr;
115
120
  version?: Fr;
116
121
  vkTreeRoot?: Fr;
117
122
  protocolContractsHash?: Fr;
123
+ anchorBlockHeader?: BlockHeader;
118
124
  } = {},
119
125
  ) => {
120
126
  const totalPublicCallRequests =
@@ -124,10 +130,8 @@ export const mockTx = async (
124
130
  const isForPublic = totalPublicCallRequests > 0;
125
131
  const data = PrivateKernelTailCircuitPublicInputs.empty();
126
132
  const firstNullifier = new Nullifier(new Fr(seed + 1), Fr.ZERO, 0);
127
- data.constants.txContext.gasSettings = GasSettings.default({
128
- maxFeesPerGas: new GasFees(10, 10),
129
- maxPriorityFeesPerGas,
130
- });
133
+ data.constants.anchorBlockHeader = anchorBlockHeader;
134
+ data.constants.txContext.gasSettings = GasSettings.default({ maxFeesPerGas, maxPriorityFeesPerGas });
131
135
  data.feePayer = feePayer ?? (await AztecAddress.random());
132
136
  data.gasUsed = gasUsed;
133
137
  data.constants.txContext.chainId = chainId;
@@ -203,6 +207,7 @@ export async function mockProcessedTx({
203
207
  // The default gasUsed is the tx overhead.
204
208
  gasUsed = Gas.from({ daGas: FIXED_DA_GAS, l2Gas: FIXED_L2_GAS }),
205
209
  privateOnly = false,
210
+ avmAccumulatedData,
206
211
  ...mockTxOpts
207
212
  }: {
208
213
  seed?: number;
@@ -214,6 +219,7 @@ export async function mockProcessedTx({
214
219
  protocolContracts?: ProtocolContracts;
215
220
  feePaymentPublicDataWrite?: PublicDataWrite;
216
221
  privateOnly?: boolean;
222
+ avmAccumulatedData?: Partial<FieldsOf<AvmAccumulatedData>>;
217
223
  } & Parameters<typeof mockTx>[1] = {}) {
218
224
  seed *= 0x1000; // Avoid clashing with the previous mock values if seed only increases by 1.
219
225
  anchorBlockHeader ??= db?.getInitialHeader() ?? makeBlockHeader(seed);
@@ -293,19 +299,22 @@ export async function mockProcessedTx({
293
299
  avmOutput.previousRevertibleAccumulatedDataArrayLengths =
294
300
  avmOutput.previousRevertibleAccumulatedData.getArrayLengths();
295
301
  // Assign final data emitted from avm.
296
- avmOutput.accumulatedData.noteHashes = revertibleData.noteHashes;
297
- avmOutput.accumulatedData.nullifiers = padArrayEnd(
298
- nonRevertibleData.nullifiers.concat(revertibleData.nullifiers).filter(n => !n.isEmpty()),
299
- Fr.ZERO,
300
- MAX_NULLIFIERS_PER_TX,
301
- );
302
- avmOutput.accumulatedData.l2ToL1Msgs = revertibleData.l2ToL1Msgs;
303
- avmOutput.accumulatedData.publicDataWrites = makeTuple(
304
- MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
305
- i => new PublicDataWrite(new Fr(i), new Fr(i + 10)),
306
- seed + 0x2000,
307
- );
308
- avmOutput.accumulatedData.publicDataWrites[0] = feePaymentPublicDataWrite;
302
+ avmOutput.accumulatedData.noteHashes = avmAccumulatedData?.noteHashes ?? revertibleData.noteHashes;
303
+ avmOutput.accumulatedData.nullifiers =
304
+ avmAccumulatedData?.nullifiers ??
305
+ padArrayEnd(
306
+ nonRevertibleData.nullifiers.concat(revertibleData.nullifiers).filter(n => !n.isEmpty()),
307
+ Fr.ZERO,
308
+ MAX_NULLIFIERS_PER_TX,
309
+ );
310
+ avmOutput.accumulatedData.l2ToL1Msgs = avmAccumulatedData?.l2ToL1Msgs ?? revertibleData.l2ToL1Msgs;
311
+ avmOutput.accumulatedData.publicDataWrites =
312
+ avmAccumulatedData?.publicDataWrites ??
313
+ makeTuple(
314
+ MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
315
+ i => (i === 0 ? feePaymentPublicDataWrite : new PublicDataWrite(new Fr(i), new Fr(i + 10))),
316
+ seed + 0x2000,
317
+ );
309
318
  avmOutput.accumulatedDataArrayLengths = avmOutput.accumulatedData.getArrayLengths();
310
319
  avmOutput.gasSettings = gasSettings;
311
320
  // Note: The fee is computed from the tx's gas used, which only includes the gas used in private. But this shouldn't
@@ -354,7 +363,6 @@ const emptyPrivateCallExecutionResult = () =>
354
363
  Buffer.from(''),
355
364
  new Map(),
356
365
  PrivateCircuitPublicInputs.empty(),
357
- new Map(),
358
366
  [],
359
367
  new Map(),
360
368
  [],
@@ -393,34 +401,51 @@ export async function mockCheckpointAndMessages(
393
401
  {
394
402
  startBlockNumber = BlockNumber(1),
395
403
  numBlocks = 1,
404
+ blocks,
396
405
  numTxsPerBlock = 1,
397
406
  numL1ToL2Messages = 1,
398
407
  makeBlockOptions = () => ({}),
408
+ previousArchive,
409
+ maxEffects,
399
410
  ...options
400
411
  }: {
401
412
  startBlockNumber?: BlockNumber;
402
413
  numBlocks?: number;
403
414
  numTxsPerBlock?: number;
404
415
  numL1ToL2Messages?: number;
405
- makeBlockOptions?: (blockNumber: BlockNumber) => Partial<Parameters<typeof L2BlockNew.random>[1]>;
416
+ makeBlockOptions?: (blockNumber: BlockNumber) => Partial<Parameters<typeof L2Block.random>[1]>;
417
+ previousArchive?: AppendOnlyTreeSnapshot;
418
+ blocks?: L2Block[];
419
+ maxEffects?: number;
406
420
  } & Partial<Parameters<typeof Checkpoint.random>[1]> &
407
- Partial<Parameters<typeof L2BlockNew.random>[1]> = {},
421
+ Partial<Parameters<typeof L2Block.random>[1]> = {},
408
422
  ) {
409
- const slotNumber = options.slotNumber ?? SlotNumber(checkpointNumber * 10);
423
+ const slotNumber = options.slotNumber ?? SlotNumber(Number(checkpointNumber) * 10);
410
424
  const blocksAndMessages = [];
411
- for (let i = 0; i < numBlocks; i++) {
425
+ // Track the previous block's archive to ensure consecutive blocks have consistent archive roots.
426
+ // The current block's header.lastArchive must equal the previous block's archive.
427
+ let lastArchive: AppendOnlyTreeSnapshot | undefined = previousArchive;
428
+ // Pass maxEffects via txOptions so it reaches TxEffect.random
429
+ const txOptions = maxEffects !== undefined ? { maxEffects } : {};
430
+ for (let i = 0; i < (blocks?.length ?? numBlocks); i++) {
412
431
  const blockNumber = BlockNumber(startBlockNumber + i);
413
432
  const { block, messages } = {
414
- block: await L2BlockNew.random(blockNumber, {
415
- checkpointNumber,
416
- indexWithinCheckpoint: i,
417
- txsPerBlock: numTxsPerBlock,
418
- slotNumber,
419
- ...options,
420
- ...makeBlockOptions(blockNumber),
421
- }),
433
+ block:
434
+ blocks?.[i] ??
435
+ (await L2Block.random(blockNumber, {
436
+ checkpointNumber,
437
+ indexWithinCheckpoint: IndexWithinCheckpoint(i),
438
+ txsPerBlock: numTxsPerBlock,
439
+ txOptions,
440
+ slotNumber,
441
+ ...options,
442
+ ...makeBlockOptions(blockNumber),
443
+ ...(lastArchive ? { lastArchive } : {}),
444
+ })),
422
445
  messages: mockL1ToL2Messages(numL1ToL2Messages),
423
446
  };
447
+ // Update lastArchive for the next block
448
+ lastArchive = block.archive;
424
449
  blocksAndMessages.push({ block, messages });
425
450
  }
426
451
 
@@ -428,8 +453,13 @@ export async function mockCheckpointAndMessages(
428
453
  const inHash = computeInHashFromL1ToL2Messages(messages);
429
454
  const checkpoint = await Checkpoint.random(checkpointNumber, { numBlocks: 0, slotNumber, inHash, ...options });
430
455
  checkpoint.blocks = blocksAndMessages.map(({ block }) => block);
456
+ // Set the checkpoint's archive to match the last block's archive for proper chaining.
457
+ // When the archiver reconstructs checkpoints from L1, it uses the checkpoint's archive root
458
+ // from the L1 event to set the last block's archive. Without this, the archive chain breaks.
459
+ checkpoint.archive = lastArchive!;
431
460
 
432
- return { checkpoint, messages };
461
+ // Return lastArchive so callers can chain it across multiple checkpoints
462
+ return { checkpoint, messages, lastArchive };
433
463
  }
434
464
 
435
465
  export const randomContractArtifact = (): ContractArtifact => ({
@@ -469,28 +499,52 @@ export interface MakeConsensusPayloadOptions {
469
499
  signer?: Secp256k1Signer;
470
500
  attesterSigner?: Secp256k1Signer;
471
501
  proposerSigner?: Secp256k1Signer;
472
- header?: L2BlockHeader;
502
+ header?: CheckpointHeader;
473
503
  archive?: Fr;
474
504
  txHashes?: TxHash[];
475
505
  txs?: Tx[];
476
506
  }
477
507
 
508
+ export interface MakeBlockProposalOptions {
509
+ signer?: Secp256k1Signer;
510
+ blockHeader?: BlockHeader;
511
+ indexWithinCheckpoint?: IndexWithinCheckpoint;
512
+ inHash?: Fr;
513
+ archiveRoot?: Fr;
514
+ txHashes?: TxHash[];
515
+ txs?: Tx[];
516
+ }
517
+
518
+ export interface MakeCheckpointProposalOptions {
519
+ signer?: Secp256k1Signer;
520
+ checkpointHeader?: CheckpointHeader;
521
+ archiveRoot?: Fr;
522
+ /** Options for the lastBlock - if undefined, no lastBlock is included */
523
+ lastBlock?: {
524
+ blockHeader?: BlockHeader;
525
+ indexWithinCheckpoint?: IndexWithinCheckpoint;
526
+ txHashes?: TxHash[];
527
+ txs?: Tx[];
528
+ };
529
+ }
530
+
531
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
478
532
  const makeAndSignConsensusPayload = (
479
533
  domainSeparator: SignatureDomainSeparator,
480
534
  options?: MakeConsensusPayloadOptions,
481
535
  ) => {
482
- const header = options?.header ?? makeL2BlockHeader(1);
536
+ const header = options?.header ?? makeCheckpointHeader(1);
483
537
  const { signer = Secp256k1Signer.random(), archive = Fr.random() } = options ?? {};
484
538
 
485
539
  const payload = ConsensusPayload.fromFields({
486
- header: header.toCheckpointHeader(),
540
+ header,
487
541
  archive,
488
542
  });
489
543
 
490
544
  const hash = getHashedSignaturePayloadEthSignedMessage(payload, domainSeparator);
491
545
  const signature = signer.sign(hash);
492
546
 
493
- return { blockNumber: header.globalVariables.blockNumber, payload, signature };
547
+ return { blockNumber: header.slotNumber, payload, signature };
494
548
  };
495
549
 
496
550
  export const makeAndSignCommitteeAttestationsAndSigners = (
@@ -504,79 +558,149 @@ export const makeAndSignCommitteeAttestationsAndSigners = (
504
558
  return signer.sign(hash);
505
559
  };
506
560
 
507
- export const makeBlockProposal = (options?: MakeConsensusPayloadOptions): BlockProposal => {
508
- const { payload, signature } = makeAndSignConsensusPayload(SignatureDomainSeparator.blockProposal, options);
561
+ export const makeBlockProposal = (options?: MakeBlockProposalOptions): Promise<BlockProposal> => {
562
+ const blockHeader = options?.blockHeader ?? makeBlockHeader(1);
563
+ const indexWithinCheckpoint = options?.indexWithinCheckpoint ?? IndexWithinCheckpoint(0);
564
+ const inHash = options?.inHash ?? Fr.random();
565
+ const archiveRoot = options?.archiveRoot ?? Fr.random();
509
566
  const txHashes = options?.txHashes ?? [0, 1, 2, 3, 4, 5].map(() => TxHash.random());
510
- return new BlockProposal(payload, signature, txHashes, options?.txs ?? []);
567
+ const txs = options?.txs;
568
+ const signer = options?.signer ?? Secp256k1Signer.random();
569
+
570
+ return BlockProposal.createProposalFromSigner(
571
+ blockHeader,
572
+ indexWithinCheckpoint,
573
+ inHash,
574
+ archiveRoot,
575
+ txHashes,
576
+ txs,
577
+ (_payload, _context) => Promise.resolve(signer.signMessage(_payload)),
578
+ );
579
+ };
580
+
581
+ export const makeCheckpointProposal = (options?: MakeCheckpointProposalOptions): Promise<CheckpointProposal> => {
582
+ const blockHeader = options?.lastBlock?.blockHeader ?? makeBlockHeader(1);
583
+ const checkpointHeader = options?.checkpointHeader ?? makeCheckpointHeader(1);
584
+ const archiveRoot = options?.archiveRoot ?? Fr.random();
585
+ const signer = options?.signer ?? Secp256k1Signer.random();
586
+
587
+ // Build lastBlock info if provided
588
+ const lastBlockInfo = options?.lastBlock
589
+ ? {
590
+ blockHeader,
591
+ indexWithinCheckpoint: options.lastBlock.indexWithinCheckpoint ?? IndexWithinCheckpoint(4), // Last block in a 5-block checkpoint
592
+ txHashes: options.lastBlock.txHashes ?? [0, 1, 2, 3, 4, 5].map(() => TxHash.random()),
593
+ txs: options.lastBlock.txs,
594
+ }
595
+ : undefined;
596
+
597
+ return CheckpointProposal.createProposalFromSigner(checkpointHeader, archiveRoot, lastBlockInfo, payload =>
598
+ Promise.resolve(signer.signMessage(payload)),
599
+ );
511
600
  };
512
601
 
513
- // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8028)
514
- export const makeBlockAttestation = (options: MakeConsensusPayloadOptions = {}): BlockAttestation => {
515
- const header = options.header ?? makeL2BlockHeader(1);
516
- const { signer, attesterSigner = signer, proposerSigner = signer, archive = Fr.random() } = options;
602
+ /**
603
+ * Options for creating a checkpoint attestation
604
+ */
605
+ export type MakeCheckpointAttestationOptions = {
606
+ header?: CheckpointHeader;
607
+ archive?: Fr;
608
+ attesterSigner?: Secp256k1Signer;
609
+ proposerSigner?: Secp256k1Signer;
610
+ signer?: Secp256k1Signer;
611
+ };
517
612
 
518
- const payload = ConsensusPayload.fromFields({
519
- header: header.toCheckpointHeader(),
520
- archive,
521
- });
613
+ /**
614
+ * Create a checkpoint attestation for testing
615
+ */
616
+ export const makeCheckpointAttestation = (options: MakeCheckpointAttestationOptions = {}): CheckpointAttestation => {
617
+ const header = options.header ?? makeCheckpointHeader(1);
618
+ const archive = options.archive ?? Fr.random();
619
+ const { signer, attesterSigner = signer, proposerSigner = signer } = options;
620
+
621
+ const payload = new ConsensusPayload(header, archive);
622
+
623
+ // Sign as attester
624
+ const attestationHash = getHashedSignaturePayloadEthSignedMessage(
625
+ payload,
626
+ SignatureDomainSeparator.checkpointAttestation,
627
+ );
628
+ const attestationSigner = attesterSigner ?? Secp256k1Signer.random();
629
+ const attestationSignature = attestationSigner.sign(attestationHash);
630
+
631
+ // Sign as proposer - use CheckpointProposal's payload format (serializeToBuffer)
632
+ // This is different from ConsensusPayload's format (ABI encoding)
633
+ const proposalSignerToUse = proposerSigner ?? Secp256k1Signer.random();
634
+ const tempProposal = new CheckpointProposal(header, archive, Signature.empty());
635
+ const proposalHash = getHashedSignaturePayloadEthSignedMessage(
636
+ tempProposal,
637
+ SignatureDomainSeparator.checkpointProposal,
638
+ );
639
+ const proposerSignature = proposalSignerToUse.sign(proposalHash);
522
640
 
523
- return makeBlockAttestationFromPayload(payload, attesterSigner, proposerSigner);
641
+ return new CheckpointAttestation(payload, attestationSignature, proposerSignature);
524
642
  };
525
643
 
526
- export const makeAttestationFromCheckpoint = (
527
- checkpoint: Checkpoint,
644
+ /**
645
+ * Create a checkpoint attestation from a checkpoint proposal
646
+ */
647
+ export const makeCheckpointAttestationFromProposal = (
648
+ proposal: CheckpointProposal,
528
649
  attesterSigner?: Secp256k1Signer,
529
- proposerSigner?: Secp256k1Signer,
530
- ): BlockAttestation => {
531
- const header = checkpoint.header;
532
- const archive = checkpoint.archive.root;
650
+ ): CheckpointAttestation => {
651
+ const payload = new ConsensusPayload(proposal.checkpointHeader, proposal.archive);
533
652
 
534
- const payload = ConsensusPayload.fromFields({
535
- header,
536
- archive,
537
- });
653
+ // Sign as attester
654
+ const attestationHash = getHashedSignaturePayloadEthSignedMessage(
655
+ payload,
656
+ SignatureDomainSeparator.checkpointAttestation,
657
+ );
658
+ const attestationSigner = attesterSigner ?? Secp256k1Signer.random();
659
+ const attestationSignature = attestationSigner.sign(attestationHash);
538
660
 
539
- return makeBlockAttestationFromPayload(payload, attesterSigner, proposerSigner);
661
+ // Use the proposal's signature as the proposer signature
662
+ return new CheckpointAttestation(payload, attestationSignature, proposal.signature);
540
663
  };
541
664
 
542
- export const makeBlockAttestationFromBlock = (
543
- block: L2Block,
665
+ /**
666
+ * Create a checkpoint attestation from a checkpoint
667
+ */
668
+ export const makeCheckpointAttestationFromCheckpoint = (
669
+ checkpoint: Checkpoint,
544
670
  attesterSigner?: Secp256k1Signer,
545
671
  proposerSigner?: Secp256k1Signer,
546
- ): BlockAttestation => {
547
- const header = block.header;
548
- const archive = block.archive.root;
549
-
550
- const payload = ConsensusPayload.fromFields({
551
- header: header.toCheckpointHeader(),
552
- archive,
553
- });
672
+ ): CheckpointAttestation => {
673
+ const header = checkpoint.header;
674
+ const archive = checkpoint.archive.root;
554
675
 
555
- return makeBlockAttestationFromPayload(payload, attesterSigner, proposerSigner);
676
+ return makeCheckpointAttestation({ header, archive, attesterSigner, proposerSigner });
556
677
  };
557
678
 
558
- export const makeBlockAttestationFromPayload = (
559
- payload: ConsensusPayload,
679
+ /**
680
+ * Create a checkpoint attestation from an L2Block
681
+ * Note: This is a compatibility function for tests. L2Block doesn't have a checkpoint header directly.
682
+ */
683
+ export const makeCheckpointAttestationFromBlock = (
684
+ block: L2Block,
560
685
  attesterSigner?: Secp256k1Signer,
561
686
  proposerSigner?: Secp256k1Signer,
562
- ): BlockAttestation => {
563
- // Sign as attester
564
- const attestationHash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.blockAttestation);
565
- const attestationSigner = attesterSigner ?? Secp256k1Signer.random();
566
- const attestationSignature = attestationSigner.sign(attestationHash);
567
-
568
- // Sign as proposer
569
- const proposalHash = getHashedSignaturePayloadEthSignedMessage(payload, SignatureDomainSeparator.blockProposal);
570
- const proposalSignerToUse = proposerSigner ?? Secp256k1Signer.random();
571
- const proposerSignature = proposalSignerToUse.sign(proposalHash);
687
+ ): CheckpointAttestation => {
688
+ // For L2Block, we create a minimal checkpoint header for testing purposes
689
+ const header = CheckpointHeader.empty({
690
+ lastArchiveRoot: block.header.lastArchive.root,
691
+ slotNumber: block.slot,
692
+ timestamp: block.timestamp,
693
+ blockHeadersHash: Fr.ZERO, // Would need to compute from block header hash
694
+ });
695
+ const archive = block.archive.root;
572
696
 
573
- return new BlockAttestation(payload, attestationSignature, proposerSignature);
697
+ return makeCheckpointAttestation({ header, archive, attesterSigner, proposerSigner });
574
698
  };
575
699
 
576
700
  export async function randomPublishedL2Block(
577
701
  l2BlockNumber: number,
578
702
  opts: { signers?: Secp256k1Signer[] } = {},
579
- ): Promise<PublishedL2Block> {
703
+ ): Promise<CheckpointedL2Block> {
580
704
  const block = await L2Block.random(BlockNumber(l2BlockNumber));
581
705
  const l1 = L1PublishedData.fromFields({
582
706
  blockNumber: BigInt(block.number),
@@ -585,9 +709,19 @@ export async function randomPublishedL2Block(
585
709
  });
586
710
 
587
711
  const signers = opts.signers ?? times(3, () => Secp256k1Signer.random());
588
- const atts = await Promise.all(signers.map(signer => makeBlockAttestationFromBlock(block, signer)));
712
+ const checkpoint = await Checkpoint.random(CheckpointNumber.fromBlockNumber(BlockNumber(l2BlockNumber)), {
713
+ numBlocks: 0,
714
+ });
715
+ checkpoint.blocks = [block];
716
+ const atts = signers.map(signer =>
717
+ makeCheckpointAttestation({
718
+ signer,
719
+ archive: block.archive.root,
720
+ header: checkpoint.header,
721
+ }),
722
+ );
589
723
  const attestations = atts.map(
590
724
  (attestation, i) => new CommitteeAttestation(signers[i].address, attestation.signature),
591
725
  );
592
- return new PublishedL2Block(block, l1, attestations);
726
+ return new CheckpointedL2Block(CheckpointNumber.fromBlockNumber(BlockNumber(l2BlockNumber)), block, l1, attestations);
593
727
  }
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Timetable constants used for sequencer timing calculations.
3
+ * These define the time budgets for various phases of block production.
4
+ *
5
+ * The sequencer slot is divided into phases:
6
+ * 1. Checkpoint initialization (sync + proposer check)
7
+ * 2. Block building (execution)
8
+ * 3. Checkpoint assembly
9
+ * 4. P2P propagation for proposal and attestations (round-trip)
10
+ * 5. L1 publishing
11
+ */
12
+
13
+ /** Time budget for checkpoint initialization (sync + proposer check) in seconds */
14
+ export const CHECKPOINT_INITIALIZATION_TIME = 1;
15
+
16
+ /** Time budget for assembling a checkpoint after building the last block in seconds */
17
+ export const CHECKPOINT_ASSEMBLE_TIME = 1;
18
+
19
+ /** Default one-way P2P propagation time for proposals and attestations in seconds */
20
+ export const DEFAULT_P2P_PROPAGATION_TIME = 2;
21
+
22
+ /** Default L1 publishing time (matches Ethereum slot duration on mainnet) in seconds */
23
+ export const DEFAULT_L1_PUBLISHING_TIME = 12;
24
+
25
+ /** Minimum execution time for building a block in seconds */
26
+ export const MIN_EXECUTION_TIME = 2;
27
+
28
+ /**
29
+ * Calculates the maximum number of blocks that can be built in a slot.
30
+ * Used by both the sequencer timetable and p2p gossipsub scoring.
31
+ *
32
+ * @param aztecSlotDurationSec - Aztec slot duration in seconds
33
+ * @param blockDurationSec - Duration per block in seconds (undefined = single block mode)
34
+ * @param opts - Optional overrides for timing constants
35
+ * @returns Maximum number of blocks per slot
36
+ */
37
+ export function calculateMaxBlocksPerSlot(
38
+ aztecSlotDurationSec: number,
39
+ blockDurationSec: number | undefined,
40
+ opts: {
41
+ checkpointInitializationTime?: number;
42
+ checkpointAssembleTime?: number;
43
+ p2pPropagationTime?: number;
44
+ l1PublishingTime?: number;
45
+ } = {},
46
+ ): number {
47
+ if (!blockDurationSec) {
48
+ return 1; // Single block per slot
49
+ }
50
+
51
+ const initOffset = opts.checkpointInitializationTime ?? CHECKPOINT_INITIALIZATION_TIME;
52
+ const assembleTime = opts.checkpointAssembleTime ?? CHECKPOINT_ASSEMBLE_TIME;
53
+ const p2pTime = opts.p2pPropagationTime ?? DEFAULT_P2P_PROPAGATION_TIME;
54
+ const l1Time = opts.l1PublishingTime ?? DEFAULT_L1_PUBLISHING_TIME;
55
+
56
+ // Calculate checkpoint finalization time (assembly + round-trip propagation + L1 publishing)
57
+ const checkpointFinalizationTime = assembleTime + p2pTime * 2 + l1Time;
58
+
59
+ // Time reserved at end for last sub-slot (validator re-execution) + finalization
60
+ const timeReservedAtEnd = blockDurationSec + checkpointFinalizationTime;
61
+
62
+ // Time available for building blocks
63
+ const timeAvailableForBlocks = aztecSlotDurationSec - initOffset - timeReservedAtEnd;
64
+
65
+ return Math.max(1, Math.floor(timeAvailableForBlocks / blockDurationSec));
66
+ }
@@ -11,28 +11,31 @@ import type { FieldsOf } from '@aztec/foundation/types';
11
11
  import { inspect } from 'util';
12
12
  import { z } from 'zod';
13
13
 
14
+ import { BlockHash } from '../block/block_hash.js';
14
15
  import { AppendOnlyTreeSnapshot } from '../trees/append_only_tree_snapshot.js';
15
16
  import { GlobalVariables } from './global_variables.js';
16
17
  import { StateReference } from './state_reference.js';
17
18
 
18
19
  /** A header of an L2 block. */
19
20
  export class BlockHeader {
21
+ private _cachedHash?: Promise<BlockHash>;
22
+
20
23
  constructor(
21
24
  /** Snapshot of archive before the block is applied. */
22
- public lastArchive: AppendOnlyTreeSnapshot,
25
+ public readonly lastArchive: AppendOnlyTreeSnapshot,
23
26
  /** State reference. */
24
- public state: StateReference,
27
+ public readonly state: StateReference,
25
28
  /**
26
29
  * Hash of the sponge blob after the tx effects of this block has been applied.
27
30
  * May contain tx effects from the previous blocks in the same checkpoint.
28
31
  */
29
- public spongeBlobHash: Fr,
32
+ public readonly spongeBlobHash: Fr,
30
33
  /** Global variables of an L2 block. */
31
- public globalVariables: GlobalVariables,
34
+ public readonly globalVariables: GlobalVariables,
32
35
  /** Total fees in the block, computed by the root rollup circuit */
33
- public totalFees: Fr,
36
+ public readonly totalFees: Fr,
34
37
  /** Total mana used in the block, computed by the root rollup circuit */
35
- public totalManaUsed: Fr,
38
+ public readonly totalManaUsed: Fr,
36
39
  ) {}
37
40
 
38
41
  static get schema(): ZodFor<BlockHeader> {
@@ -159,8 +162,18 @@ export class BlockHeader {
159
162
  return BlockHeader.fromBuffer(hexToBuffer(str));
160
163
  }
161
164
 
162
- hash(): Promise<Fr> {
163
- return poseidon2HashWithSeparator(this.toFields(), GeneratorIndex.BLOCK_HASH);
165
+ hash(): Promise<BlockHash> {
166
+ if (!this._cachedHash) {
167
+ this._cachedHash = poseidon2HashWithSeparator(this.toFields(), GeneratorIndex.BLOCK_HEADER_HASH).then(
168
+ fr => new BlockHash(fr),
169
+ );
170
+ }
171
+ return this._cachedHash;
172
+ }
173
+
174
+ /** Manually set the hash for this block header if already computed */
175
+ setHash(hashed: Fr) {
176
+ this._cachedHash = Promise.resolve(new BlockHash(hashed));
164
177
  }
165
178
 
166
179
  static random(overrides: Partial<FieldsOf<BlockHeader>> & Partial<FieldsOf<GlobalVariables>> = {}): BlockHeader {
@@ -4,13 +4,13 @@ import type { SlotNumber } from '@aztec/foundation/schemas';
4
4
  import type { AztecAddress } from '../aztec-address/index.js';
5
5
  import type { GasFees } from '../gas/gas_fees.js';
6
6
  import type { UInt32 } from '../types/index.js';
7
- import type { GlobalVariables } from './global_variables.js';
7
+ import type { CheckpointGlobalVariables, GlobalVariables } from './global_variables.js';
8
8
 
9
9
  /**
10
10
  * Interface for building global variables for Aztec blocks.
11
11
  */
12
12
  export interface GlobalVariableBuilder {
13
- getCurrentBaseFees(): Promise<GasFees>;
13
+ getCurrentMinFees(): Promise<GasFees>;
14
14
 
15
15
  /**
16
16
  * Builds global variables for a given block.
@@ -26,4 +26,11 @@ export interface GlobalVariableBuilder {
26
26
  feeRecipient: AztecAddress,
27
27
  slotNumber?: SlotNumber,
28
28
  ): Promise<GlobalVariables>;
29
+
30
+ /** Builds global variables that are constant throughout a checkpoint. */
31
+ buildCheckpointGlobalVariables(
32
+ coinbase: EthAddress,
33
+ feeRecipient: AztecAddress,
34
+ slotNumber: SlotNumber,
35
+ ): Promise<CheckpointGlobalVariables>;
29
36
  }