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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (531) hide show
  1. package/dest/abi/contract_artifact.d.ts +2 -2
  2. package/dest/abi/contract_artifact.d.ts.map +1 -1
  3. package/dest/abi/contract_artifact.js +1 -1
  4. package/dest/abi/function_call.d.ts +9 -1
  5. package/dest/abi/function_call.d.ts.map +1 -1
  6. package/dest/abi/selector.js +3 -1
  7. package/dest/abi/utils.d.ts +7 -1
  8. package/dest/abi/utils.d.ts.map +1 -1
  9. package/dest/abi/utils.js +7 -0
  10. package/dest/auth_witness/auth_witness.d.ts +2 -1
  11. package/dest/auth_witness/auth_witness.d.ts.map +1 -1
  12. package/dest/avm/avm.d.ts +62 -62
  13. package/dest/avm/avm_accumulated_data.d.ts +30 -3
  14. package/dest/avm/avm_accumulated_data.d.ts.map +1 -1
  15. package/dest/avm/avm_accumulated_data.js +5 -2
  16. package/dest/avm/avm_circuit_public_inputs.d.ts +9 -9
  17. package/dest/avm/avm_circuit_public_inputs.js +3 -1
  18. package/dest/avm/avm_proving_request.d.ts +299 -299
  19. package/dest/avm/contract_storage_read.d.ts +13 -1
  20. package/dest/avm/contract_storage_read.d.ts.map +1 -1
  21. package/dest/avm/contract_storage_update_request.d.ts +13 -1
  22. package/dest/avm/contract_storage_update_request.d.ts.map +1 -1
  23. package/dest/avm/public_call_stack_item_compressed.d.ts +3 -1
  24. package/dest/avm/public_call_stack_item_compressed.d.ts.map +1 -1
  25. package/dest/avm/public_data_read.d.ts +10 -1
  26. package/dest/avm/public_data_read.d.ts.map +1 -1
  27. package/dest/avm/public_data_update_request.d.ts +10 -1
  28. package/dest/avm/public_data_update_request.d.ts.map +1 -1
  29. package/dest/avm/public_data_update_request.js +3 -1
  30. package/dest/avm/public_data_write.d.ts +7 -1
  31. package/dest/avm/public_data_write.d.ts.map +1 -1
  32. package/dest/avm/public_inner_call_request.d.ts +4 -1
  33. package/dest/avm/public_inner_call_request.d.ts.map +1 -1
  34. package/dest/avm/public_inner_call_request.js +3 -1
  35. package/dest/avm/revert_code.d.ts +4 -4
  36. package/dest/avm/revert_code.d.ts.map +1 -1
  37. package/dest/avm/revert_code.js +3 -1
  38. package/dest/aztec-address/index.js +4 -2
  39. package/dest/block/attestation_info.d.ts +5 -5
  40. package/dest/block/attestation_info.d.ts.map +1 -1
  41. package/dest/block/attestation_info.js +4 -4
  42. package/dest/block/block_hash.d.ts +9 -2
  43. package/dest/block/block_hash.d.ts.map +1 -1
  44. package/dest/block/block_hash.js +15 -0
  45. package/dest/block/block_parameter.d.ts +4 -3
  46. package/dest/block/block_parameter.d.ts.map +1 -1
  47. package/dest/block/block_parameter.js +2 -0
  48. package/dest/block/body.d.ts +1 -1
  49. package/dest/block/body.d.ts.map +1 -1
  50. package/dest/block/body.js +5 -2
  51. package/dest/block/checkpointed_l2_block.d.ts +20 -137
  52. package/dest/block/checkpointed_l2_block.d.ts.map +1 -1
  53. package/dest/block/checkpointed_l2_block.js +7 -45
  54. package/dest/block/index.d.ts +1 -3
  55. package/dest/block/index.d.ts.map +1 -1
  56. package/dest/block/index.js +0 -2
  57. package/dest/block/l2_block.d.ts +56 -57
  58. package/dest/block/l2_block.d.ts.map +1 -1
  59. package/dest/block/l2_block.js +64 -107
  60. package/dest/block/l2_block_source.d.ts +296 -67
  61. package/dest/block/l2_block_source.d.ts.map +1 -1
  62. package/dest/block/l2_block_source.js +25 -6
  63. package/dest/block/l2_block_stream/index.d.ts +2 -1
  64. package/dest/block/l2_block_stream/index.d.ts.map +1 -1
  65. package/dest/block/l2_block_stream/index.js +1 -0
  66. package/dest/block/l2_block_stream/interfaces.d.ts +15 -5
  67. package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
  68. package/dest/block/l2_block_stream/l2_block_stream.d.ts +8 -3
  69. package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
  70. package/dest/block/l2_block_stream/l2_block_stream.js +106 -31
  71. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts +24 -16
  72. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts.map +1 -1
  73. package/dest/block/l2_block_stream/l2_tips_memory_store.js +55 -61
  74. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +49 -0
  75. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -0
  76. package/dest/block/l2_block_stream/l2_tips_store_base.js +179 -0
  77. package/dest/block/test/l2_tips_store_test_suite.d.ts +1 -1
  78. package/dest/block/test/l2_tips_store_test_suite.d.ts.map +1 -1
  79. package/dest/block/test/l2_tips_store_test_suite.js +478 -38
  80. package/dest/block/validate_block_result.d.ts +24 -24
  81. package/dest/block/validate_block_result.d.ts.map +1 -1
  82. package/dest/block/validate_block_result.js +18 -17
  83. package/dest/checkpoint/checkpoint.d.ts +30 -20
  84. package/dest/checkpoint/checkpoint.d.ts.map +1 -1
  85. package/dest/checkpoint/checkpoint.js +19 -6
  86. package/dest/checkpoint/checkpoint_info.d.ts +32 -3
  87. package/dest/checkpoint/checkpoint_info.d.ts.map +1 -1
  88. package/dest/checkpoint/checkpoint_info.js +34 -1
  89. package/dest/checkpoint/index.d.ts +2 -1
  90. package/dest/checkpoint/index.d.ts.map +1 -1
  91. package/dest/checkpoint/index.js +1 -0
  92. package/dest/checkpoint/published_checkpoint.d.ts +17 -15
  93. package/dest/checkpoint/published_checkpoint.d.ts.map +1 -1
  94. package/dest/checkpoint/published_checkpoint.js +4 -3
  95. package/dest/config/node-rpc-config.js +1 -1
  96. package/dest/contract/complete_address.d.ts +4 -1
  97. package/dest/contract/complete_address.d.ts.map +1 -1
  98. package/dest/contract/contract_deployment_data.d.ts +5 -5
  99. package/dest/contract/index.d.ts +1 -3
  100. package/dest/contract/index.d.ts.map +1 -1
  101. package/dest/contract/index.js +0 -2
  102. package/dest/contract/interfaces/contract_instance.d.ts +16 -16
  103. package/dest/contract/private_function.d.ts +1 -1
  104. package/dest/contract/private_function.d.ts.map +1 -1
  105. package/dest/contract/private_function.js +1 -2
  106. package/dest/database-version/version_manager.d.ts +4 -2
  107. package/dest/database-version/version_manager.d.ts.map +1 -1
  108. package/dest/database-version/version_manager.js +3 -1
  109. package/dest/delayed_public_mutable/delayed_public_mutable_values.d.ts +2 -2
  110. package/dest/delayed_public_mutable/delayed_public_mutable_values.d.ts.map +1 -1
  111. package/dest/delayed_public_mutable/delayed_public_mutable_values.js +7 -10
  112. package/dest/deserialization/index.d.ts +11 -0
  113. package/dest/deserialization/index.d.ts.map +1 -0
  114. package/dest/deserialization/index.js +10 -0
  115. package/dest/epoch-helpers/index.js +1 -1
  116. package/dest/errors/proving_error.d.ts +2 -2
  117. package/dest/errors/proving_error.d.ts.map +1 -1
  118. package/dest/gas/gas.js +3 -1
  119. package/dest/gas/gas_fees.js +3 -1
  120. package/dest/interfaces/api_limit.d.ts +3 -1
  121. package/dest/interfaces/api_limit.d.ts.map +1 -1
  122. package/dest/interfaces/api_limit.js +2 -0
  123. package/dest/interfaces/archiver.d.ts +6 -6
  124. package/dest/interfaces/archiver.d.ts.map +1 -1
  125. package/dest/interfaces/archiver.js +20 -16
  126. package/dest/interfaces/aztec-node-admin.d.ts +67 -31
  127. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  128. package/dest/interfaces/aztec-node-admin.js +2 -2
  129. package/dest/interfaces/aztec-node.d.ts +70 -51
  130. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  131. package/dest/interfaces/aztec-node.js +12 -9
  132. package/dest/interfaces/block-builder.d.ts +16 -14
  133. package/dest/interfaces/block-builder.d.ts.map +1 -1
  134. package/dest/interfaces/configs.d.ts +12 -7
  135. package/dest/interfaces/configs.d.ts.map +1 -1
  136. package/dest/interfaces/configs.js +2 -1
  137. package/dest/interfaces/get_logs_response.d.ts +1 -1
  138. package/dest/interfaces/l2_logs_source.d.ts +14 -5
  139. package/dest/interfaces/l2_logs_source.d.ts.map +1 -1
  140. package/dest/interfaces/p2p.d.ts +7 -9
  141. package/dest/interfaces/p2p.d.ts.map +1 -1
  142. package/dest/interfaces/p2p.js +3 -4
  143. package/dest/interfaces/prover-client.d.ts +10 -1
  144. package/dest/interfaces/prover-client.d.ts.map +1 -1
  145. package/dest/interfaces/prover-client.js +7 -1
  146. package/dest/interfaces/proving-job.d.ts +184 -184
  147. package/dest/interfaces/proving-job.d.ts.map +1 -1
  148. package/dest/interfaces/proving-job.js +1 -7
  149. package/dest/interfaces/server_circuit_prover.d.ts +4 -3
  150. package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
  151. package/dest/interfaces/tx_provider.d.ts +3 -3
  152. package/dest/interfaces/tx_provider.d.ts.map +1 -1
  153. package/dest/interfaces/validator.d.ts +108 -18
  154. package/dest/interfaces/validator.d.ts.map +1 -1
  155. package/dest/interfaces/validator.js +5 -3
  156. package/dest/kernel/claimed_length_array.js +3 -1
  157. package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts +6 -5
  158. package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts.map +1 -1
  159. package/dest/kernel/hints/build_note_hash_read_request_hints.js +19 -10
  160. package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts +3 -3
  161. package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts.map +1 -1
  162. package/dest/kernel/hints/build_nullifier_read_request_hints.js +16 -8
  163. package/dest/kernel/hints/key_validation_hint.d.ts +2 -1
  164. package/dest/kernel/hints/key_validation_hint.d.ts.map +1 -1
  165. package/dest/kernel/hints/key_validation_request.d.ts +2 -1
  166. package/dest/kernel/hints/key_validation_request.d.ts.map +1 -1
  167. package/dest/kernel/hints/key_validation_request_and_generator.d.ts +6 -1
  168. package/dest/kernel/hints/key_validation_request_and_generator.d.ts.map +1 -1
  169. package/dest/kernel/hints/private_kernel_reset_hints.d.ts +13 -1
  170. package/dest/kernel/hints/private_kernel_reset_hints.d.ts.map +1 -1
  171. package/dest/kernel/hints/read_request.d.ts +7 -1
  172. package/dest/kernel/hints/read_request.d.ts.map +1 -1
  173. package/dest/kernel/hints/read_request_hints.d.ts +7 -1
  174. package/dest/kernel/hints/read_request_hints.d.ts.map +1 -1
  175. package/dest/kernel/hints/transient_data_squashing_hint.js +3 -1
  176. package/dest/kernel/log_hash.js +3 -1
  177. package/dest/kernel/private_accumulated_data.d.ts +23 -1
  178. package/dest/kernel/private_accumulated_data.d.ts.map +1 -1
  179. package/dest/kernel/private_call_data.d.ts +25 -1
  180. package/dest/kernel/private_call_data.d.ts.map +1 -1
  181. package/dest/kernel/private_call_request.d.ts +16 -1
  182. package/dest/kernel/private_call_request.d.ts.map +1 -1
  183. package/dest/kernel/private_circuit_public_inputs.d.ts +74 -1
  184. package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
  185. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts +31 -1
  186. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts.map +1 -1
  187. package/dest/kernel/private_kernel_data.d.ts +7 -1
  188. package/dest/kernel/private_kernel_data.d.ts.map +1 -1
  189. package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts +22 -1
  190. package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts.map +1 -1
  191. package/dest/kernel/private_kernel_inner_circuit_private_inputs.d.ts +7 -1
  192. package/dest/kernel/private_kernel_inner_circuit_private_inputs.d.ts.map +1 -1
  193. package/dest/kernel/private_kernel_reset_circuit_private_inputs.d.ts +4 -1
  194. package/dest/kernel/private_kernel_reset_circuit_private_inputs.d.ts.map +1 -1
  195. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts +10 -1
  196. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts.map +1 -1
  197. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts +23 -1
  198. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts.map +1 -1
  199. package/dest/kernel/private_log_data.js +5 -2
  200. package/dest/kernel/private_to_avm_accumulated_data.d.ts +2 -2
  201. package/dest/kernel/private_to_avm_accumulated_data.js +5 -2
  202. package/dest/kernel/private_to_public_accumulated_data.js +3 -1
  203. package/dest/kernel/private_to_rollup_accumulated_data.d.ts +17 -1
  204. package/dest/kernel/private_to_rollup_accumulated_data.d.ts.map +1 -1
  205. package/dest/kernel/private_to_rollup_accumulated_data.js +3 -1
  206. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts +16 -1
  207. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts.map +1 -1
  208. package/dest/kernel/private_validation_requests.d.ts +10 -1
  209. package/dest/kernel/private_validation_requests.d.ts.map +1 -1
  210. package/dest/kernel/private_validation_requests.js +3 -1
  211. package/dest/kernel/public_call_request.d.ts +22 -1
  212. package/dest/kernel/public_call_request.d.ts.map +1 -1
  213. package/dest/kernel/public_call_request.js +5 -2
  214. package/dest/kernel/utils/optional_number.d.ts +7 -1
  215. package/dest/kernel/utils/optional_number.d.ts.map +1 -1
  216. package/dest/keys/public_keys.d.ts +5 -1
  217. package/dest/keys/public_keys.d.ts.map +1 -1
  218. package/dest/logs/contract_class_log.js +3 -1
  219. package/dest/logs/extended_contract_class_log.d.ts +3 -1
  220. package/dest/logs/extended_contract_class_log.d.ts.map +1 -1
  221. package/dest/logs/extended_public_log.d.ts +5 -3
  222. package/dest/logs/extended_public_log.d.ts.map +1 -1
  223. package/dest/logs/log_id.d.ts +5 -1
  224. package/dest/logs/log_id.d.ts.map +1 -1
  225. package/dest/logs/private_log.js +3 -1
  226. package/dest/logs/public_log.js +3 -1
  227. package/dest/messaging/in_hash.d.ts +4 -2
  228. package/dest/messaging/in_hash.d.ts.map +1 -1
  229. package/dest/messaging/in_hash.js +3 -1
  230. package/dest/messaging/inbox_leaf.d.ts +3 -1
  231. package/dest/messaging/inbox_leaf.d.ts.map +1 -1
  232. package/dest/messaging/l1_actor.d.ts +7 -1
  233. package/dest/messaging/l1_actor.d.ts.map +1 -1
  234. package/dest/messaging/l1_to_l2_message.d.ts +6 -1
  235. package/dest/messaging/l1_to_l2_message.d.ts.map +1 -1
  236. package/dest/messaging/l2_actor.d.ts +7 -1
  237. package/dest/messaging/l2_actor.d.ts.map +1 -1
  238. package/dest/messaging/l2_to_l1_membership.d.ts +88 -6
  239. package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -1
  240. package/dest/messaging/l2_to_l1_membership.js +160 -42
  241. package/dest/messaging/out_hash.d.ts +41 -3
  242. package/dest/messaging/out_hash.d.ts.map +1 -1
  243. package/dest/messaging/out_hash.js +54 -19
  244. package/dest/note/note_dao.d.ts +36 -5
  245. package/dest/note/note_dao.d.ts.map +1 -1
  246. package/dest/note/note_dao.js +15 -12
  247. package/dest/p2p/attestation_utils.d.ts +3 -3
  248. package/dest/p2p/attestation_utils.d.ts.map +1 -1
  249. package/dest/p2p/attestation_utils.js +1 -1
  250. package/dest/p2p/block_proposal.d.ts +93 -21
  251. package/dest/p2p/block_proposal.d.ts.map +1 -1
  252. package/dest/p2p/block_proposal.js +140 -39
  253. package/dest/p2p/checkpoint_attestation.d.ts +81 -0
  254. package/dest/p2p/checkpoint_attestation.d.ts.map +1 -0
  255. package/dest/p2p/{block_attestation.js → checkpoint_attestation.js} +22 -19
  256. package/dest/p2p/checkpoint_proposal.d.ts +160 -0
  257. package/dest/p2p/checkpoint_proposal.d.ts.map +1 -0
  258. package/dest/p2p/checkpoint_proposal.js +229 -0
  259. package/dest/p2p/consensus_payload.d.ts +9 -9
  260. package/dest/p2p/consensus_payload.d.ts.map +1 -1
  261. package/dest/p2p/consensus_payload.js +3 -5
  262. package/dest/p2p/constants.d.ts +3 -0
  263. package/dest/p2p/constants.d.ts.map +1 -0
  264. package/dest/p2p/constants.js +2 -0
  265. package/dest/p2p/gossipable.d.ts +4 -3
  266. package/dest/p2p/gossipable.d.ts.map +1 -1
  267. package/dest/p2p/gossipable.js +16 -5
  268. package/dest/p2p/index.d.ts +5 -2
  269. package/dest/p2p/index.d.ts.map +1 -1
  270. package/dest/p2p/index.js +4 -1
  271. package/dest/p2p/message_validator.d.ts +18 -3
  272. package/dest/p2p/message_validator.d.ts.map +1 -1
  273. package/dest/p2p/message_validator.js +2 -1
  274. package/dest/p2p/signature_utils.d.ts +5 -3
  275. package/dest/p2p/signature_utils.d.ts.map +1 -1
  276. package/dest/p2p/signature_utils.js +3 -1
  277. package/dest/p2p/signed_txs.d.ts +42 -0
  278. package/dest/p2p/signed_txs.d.ts.map +1 -0
  279. package/dest/p2p/signed_txs.js +75 -0
  280. package/dest/p2p/topic_type.d.ts +3 -2
  281. package/dest/p2p/topic_type.d.ts.map +1 -1
  282. package/dest/p2p/topic_type.js +10 -3
  283. package/dest/parity/parity_base_private_inputs.d.ts +3 -1
  284. package/dest/parity/parity_base_private_inputs.d.ts.map +1 -1
  285. package/dest/parity/parity_public_inputs.d.ts +4 -1
  286. package/dest/parity/parity_public_inputs.d.ts.map +1 -1
  287. package/dest/parity/parity_root_private_inputs.d.ts +2 -1
  288. package/dest/parity/parity_root_private_inputs.d.ts.map +1 -1
  289. package/dest/proofs/chonk_proof.d.ts +1 -1
  290. package/dest/proofs/chonk_proof.d.ts.map +1 -1
  291. package/dest/proofs/chonk_proof.js +9 -4
  292. package/dest/proofs/proof.d.ts +4 -1
  293. package/dest/proofs/proof.d.ts.map +1 -1
  294. package/dest/proofs/recursive_proof.d.ts +10 -1
  295. package/dest/proofs/recursive_proof.d.ts.map +1 -1
  296. package/dest/rollup/base_rollup_hints.d.ts +34 -1
  297. package/dest/rollup/base_rollup_hints.d.ts.map +1 -1
  298. package/dest/rollup/block_constant_data.d.ts +12 -1
  299. package/dest/rollup/block_constant_data.d.ts.map +1 -1
  300. package/dest/rollup/block_headers_hash.js +1 -1
  301. package/dest/rollup/block_merge_rollup_private_inputs.d.ts +4 -1
  302. package/dest/rollup/block_merge_rollup_private_inputs.d.ts.map +1 -1
  303. package/dest/rollup/block_rollup_public_inputs.d.ts +47 -11
  304. package/dest/rollup/block_rollup_public_inputs.d.ts.map +1 -1
  305. package/dest/rollup/block_rollup_public_inputs.js +8 -12
  306. package/dest/rollup/block_root_rollup_private_inputs.d.ts +64 -1
  307. package/dest/rollup/block_root_rollup_private_inputs.d.ts.map +1 -1
  308. package/dest/rollup/checkpoint_constant_data.d.ts +10 -1
  309. package/dest/rollup/checkpoint_constant_data.d.ts.map +1 -1
  310. package/dest/rollup/checkpoint_constant_data.js +3 -1
  311. package/dest/rollup/checkpoint_header.d.ts +42 -12
  312. package/dest/rollup/checkpoint_header.d.ts.map +1 -1
  313. package/dest/rollup/checkpoint_header.js +49 -19
  314. package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts +4 -1
  315. package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts.map +1 -1
  316. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +41 -1
  317. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -1
  318. package/dest/rollup/checkpoint_rollup_public_inputs.js +10 -2
  319. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts +44 -3
  320. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts.map +1 -1
  321. package/dest/rollup/checkpoint_root_rollup_private_inputs.js +13 -2
  322. package/dest/rollup/epoch_constant_data.d.ts +16 -1
  323. package/dest/rollup/epoch_constant_data.d.ts.map +1 -1
  324. package/dest/rollup/root_rollup_private_inputs.d.ts +6 -1
  325. package/dest/rollup/root_rollup_private_inputs.d.ts.map +1 -1
  326. package/dest/rollup/root_rollup_public_inputs.d.ts +18 -3
  327. package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -1
  328. package/dest/rollup/root_rollup_public_inputs.js +9 -3
  329. package/dest/rollup/tree_snapshot_diff_hints.d.ts +24 -1
  330. package/dest/rollup/tree_snapshot_diff_hints.d.ts.map +1 -1
  331. package/dest/rollup/tx_merge_rollup_private_inputs.d.ts +4 -1
  332. package/dest/rollup/tx_merge_rollup_private_inputs.d.ts.map +1 -1
  333. package/dest/rollup/tx_rollup_public_inputs.d.ts +29 -1
  334. package/dest/rollup/tx_rollup_public_inputs.d.ts.map +1 -1
  335. package/dest/schemas/schemas.d.ts +1 -1
  336. package/dest/tests/factories.d.ts +16 -10
  337. package/dest/tests/factories.d.ts.map +1 -1
  338. package/dest/tests/factories.js +60 -25
  339. package/dest/tests/jest.js +1 -1
  340. package/dest/tests/mocks.d.ts +69 -18
  341. package/dest/tests/mocks.d.ts.map +1 -1
  342. package/dest/tests/mocks.js +119 -54
  343. package/dest/trees/append_only_tree_snapshot.d.ts +13 -1
  344. package/dest/trees/append_only_tree_snapshot.d.ts.map +1 -1
  345. package/dest/trees/append_only_tree_snapshot.js +3 -1
  346. package/dest/trees/nullifier_leaf.d.ts +13 -1
  347. package/dest/trees/nullifier_leaf.d.ts.map +1 -1
  348. package/dest/trees/nullifier_membership_witness.d.ts +10 -1
  349. package/dest/trees/nullifier_membership_witness.d.ts.map +1 -1
  350. package/dest/trees/public_data_leaf.d.ts +16 -1
  351. package/dest/trees/public_data_leaf.d.ts.map +1 -1
  352. package/dest/trees/public_data_witness.d.ts +11 -1
  353. package/dest/trees/public_data_witness.d.ts.map +1 -1
  354. package/dest/tx/block_header.d.ts +14 -2
  355. package/dest/tx/block_header.d.ts.map +1 -1
  356. package/dest/tx/block_header.js +8 -2
  357. package/dest/tx/call_context.d.ts +13 -1
  358. package/dest/tx/call_context.d.ts.map +1 -1
  359. package/dest/tx/call_context.js +3 -1
  360. package/dest/tx/capsule.d.ts +4 -1
  361. package/dest/tx/capsule.d.ts.map +1 -1
  362. package/dest/tx/execution_payload.d.ts +9 -1
  363. package/dest/tx/execution_payload.d.ts.map +1 -1
  364. package/dest/tx/function_data.d.ts +4 -2
  365. package/dest/tx/function_data.d.ts.map +1 -1
  366. package/dest/tx/global_variable_builder.d.ts +2 -2
  367. package/dest/tx/global_variable_builder.d.ts.map +1 -1
  368. package/dest/tx/global_variables.d.ts +9 -1
  369. package/dest/tx/global_variables.d.ts.map +1 -1
  370. package/dest/tx/global_variables.js +3 -1
  371. package/dest/tx/hashed_values.d.ts +7 -1
  372. package/dest/tx/hashed_values.d.ts.map +1 -1
  373. package/dest/tx/in_tx.d.ts +1 -1
  374. package/dest/tx/index.d.ts +1 -2
  375. package/dest/tx/index.d.ts.map +1 -1
  376. package/dest/tx/index.js +0 -1
  377. package/dest/tx/partial_state_reference.d.ts +4 -1
  378. package/dest/tx/partial_state_reference.d.ts.map +1 -1
  379. package/dest/tx/private_execution_result.d.ts +23 -6
  380. package/dest/tx/private_execution_result.d.ts.map +1 -1
  381. package/dest/tx/private_execution_result.js +4 -21
  382. package/dest/tx/private_tx_constant_data.d.ts +16 -1
  383. package/dest/tx/private_tx_constant_data.d.ts.map +1 -1
  384. package/dest/tx/profiling.d.ts +149 -26
  385. package/dest/tx/profiling.d.ts.map +1 -1
  386. package/dest/tx/profiling.js +44 -7
  387. package/dest/tx/protocol_contracts.d.ts +1 -1
  388. package/dest/tx/public_call_request_with_calldata.d.ts +7 -1
  389. package/dest/tx/public_call_request_with_calldata.d.ts.map +1 -1
  390. package/dest/tx/public_call_request_with_calldata.js +3 -1
  391. package/dest/tx/state_reference.d.ts +3 -1
  392. package/dest/tx/state_reference.d.ts.map +1 -1
  393. package/dest/tx/state_reference.js +3 -1
  394. package/dest/tx/tree_snapshots.js +3 -1
  395. package/dest/tx/tx.d.ts +24 -1
  396. package/dest/tx/tx.d.ts.map +1 -1
  397. package/dest/tx/tx.js +9 -4
  398. package/dest/tx/tx_context.d.ts +2 -1
  399. package/dest/tx/tx_context.d.ts.map +1 -1
  400. package/dest/tx/tx_effect.d.ts +32 -6
  401. package/dest/tx/tx_effect.d.ts.map +1 -1
  402. package/dest/tx/tx_effect.js +3 -8
  403. package/dest/tx/tx_execution_request.d.ts +30 -1
  404. package/dest/tx/tx_execution_request.d.ts.map +1 -1
  405. package/dest/tx/tx_execution_request.js +6 -2
  406. package/dest/tx/tx_hash.d.ts +2 -1
  407. package/dest/tx/tx_hash.d.ts.map +1 -1
  408. package/dest/tx/tx_receipt.d.ts +44 -10
  409. package/dest/tx/tx_receipt.d.ts.map +1 -1
  410. package/dest/tx/tx_receipt.js +44 -13
  411. package/dest/tx/tx_request.d.ts +6 -1
  412. package/dest/tx/tx_request.d.ts.map +1 -1
  413. package/dest/tx/validator/error_texts.d.ts +2 -1
  414. package/dest/tx/validator/error_texts.d.ts.map +1 -1
  415. package/dest/tx/validator/error_texts.js +2 -0
  416. package/dest/types/shared.d.ts +4 -1
  417. package/dest/types/shared.d.ts.map +1 -1
  418. package/dest/validators/schemas.d.ts +8 -8
  419. package/dest/vks/verification_key.d.ts +22 -1
  420. package/dest/vks/verification_key.d.ts.map +1 -1
  421. package/dest/vks/vk_data.d.ts +7 -1
  422. package/dest/vks/vk_data.d.ts.map +1 -1
  423. package/dest/zkpassport/index.d.ts +3 -4
  424. package/dest/zkpassport/index.d.ts.map +1 -1
  425. package/dest/zkpassport/index.js +9 -9
  426. package/package.json +12 -10
  427. package/src/abi/contract_artifact.ts +10 -10
  428. package/src/abi/utils.ts +17 -0
  429. package/src/block/attestation_info.ts +9 -6
  430. package/src/block/block_hash.ts +27 -1
  431. package/src/block/block_parameter.ts +4 -2
  432. package/src/block/body.ts +2 -1
  433. package/src/block/checkpointed_l2_block.ts +8 -58
  434. package/src/block/index.ts +0 -2
  435. package/src/block/l2_block.ts +101 -148
  436. package/src/block/l2_block_source.ts +121 -43
  437. package/src/block/l2_block_stream/index.ts +1 -0
  438. package/src/block/l2_block_stream/interfaces.ts +15 -4
  439. package/src/block/l2_block_stream/l2_block_stream.ts +130 -39
  440. package/src/block/l2_block_stream/l2_tips_memory_store.ts +62 -56
  441. package/src/block/l2_block_stream/l2_tips_store_base.ts +226 -0
  442. package/src/block/test/l2_tips_store_test_suite.ts +480 -36
  443. package/src/block/validate_block_result.ts +40 -35
  444. package/src/checkpoint/checkpoint.ts +34 -11
  445. package/src/checkpoint/checkpoint_info.ts +45 -2
  446. package/src/checkpoint/index.ts +1 -0
  447. package/src/checkpoint/published_checkpoint.ts +4 -3
  448. package/src/config/node-rpc-config.ts +1 -1
  449. package/src/contract/index.ts +0 -2
  450. package/src/contract/private_function.ts +1 -2
  451. package/src/delayed_public_mutable/delayed_public_mutable_values.ts +9 -10
  452. package/src/deserialization/index.ts +21 -0
  453. package/src/epoch-helpers/index.ts +1 -1
  454. package/src/interfaces/api_limit.ts +2 -0
  455. package/src/interfaces/archiver.ts +24 -23
  456. package/src/interfaces/aztec-node-admin.ts +5 -2
  457. package/src/interfaces/aztec-node.ts +100 -68
  458. package/src/interfaces/block-builder.ts +31 -24
  459. package/src/interfaces/configs.ts +3 -0
  460. package/src/interfaces/l2_logs_source.ts +17 -4
  461. package/src/interfaces/p2p.ts +8 -12
  462. package/src/interfaces/prover-client.ts +15 -0
  463. package/src/interfaces/proving-job.ts +2 -11
  464. package/src/interfaces/server_circuit_prover.ts +3 -2
  465. package/src/interfaces/tx_provider.ts +2 -2
  466. package/src/interfaces/validator.ts +63 -14
  467. package/src/kernel/hints/build_note_hash_read_request_hints.ts +20 -12
  468. package/src/kernel/hints/build_nullifier_read_request_hints.ts +17 -14
  469. package/src/messaging/in_hash.ts +3 -1
  470. package/src/messaging/l2_to_l1_membership.ts +178 -52
  471. package/src/messaging/out_hash.ts +62 -21
  472. package/src/note/note_dao.ts +18 -13
  473. package/src/p2p/attestation_utils.ts +3 -3
  474. package/src/p2p/block_proposal.ts +204 -44
  475. package/src/p2p/{block_attestation.ts → checkpoint_attestation.ts} +31 -25
  476. package/src/p2p/checkpoint_proposal.ts +348 -0
  477. package/src/p2p/consensus_payload.ts +5 -7
  478. package/src/p2p/constants.ts +3 -0
  479. package/src/p2p/gossipable.ts +14 -4
  480. package/src/p2p/index.ts +4 -1
  481. package/src/p2p/message_validator.ts +14 -2
  482. package/src/p2p/signature_utils.ts +3 -1
  483. package/src/p2p/signed_txs.ts +88 -0
  484. package/src/p2p/topic_type.ts +4 -3
  485. package/src/proofs/chonk_proof.ts +9 -5
  486. package/src/rollup/block_headers_hash.ts +1 -1
  487. package/src/rollup/block_rollup_public_inputs.ts +5 -11
  488. package/src/rollup/checkpoint_header.ts +63 -20
  489. package/src/rollup/checkpoint_rollup_public_inputs.ts +12 -0
  490. package/src/rollup/checkpoint_root_rollup_private_inputs.ts +14 -1
  491. package/src/rollup/root_rollup_public_inputs.ts +9 -0
  492. package/src/tests/factories.ts +56 -40
  493. package/src/tests/jest.ts +1 -1
  494. package/src/tests/mocks.ts +207 -87
  495. package/src/tx/block_header.ts +11 -3
  496. package/src/tx/global_variable_builder.ts +1 -1
  497. package/src/tx/index.ts +0 -1
  498. package/src/tx/private_execution_result.ts +1 -16
  499. package/src/tx/profiling.ts +46 -4
  500. package/src/tx/tx.ts +10 -9
  501. package/src/tx/tx_effect.ts +0 -9
  502. package/src/tx/tx_execution_request.ts +2 -0
  503. package/src/tx/tx_receipt.ts +72 -15
  504. package/src/tx/validator/error_texts.ts +3 -0
  505. package/src/zkpassport/index.ts +11 -12
  506. package/dest/block/l2_block_code_to_purge.d.ts +0 -12
  507. package/dest/block/l2_block_code_to_purge.d.ts.map +0 -1
  508. package/dest/block/l2_block_code_to_purge.js +0 -61
  509. package/dest/block/l2_block_header.d.ts +0 -98
  510. package/dest/block/l2_block_header.d.ts.map +0 -1
  511. package/dest/block/l2_block_header.js +0 -153
  512. package/dest/block/l2_block_new.d.ts +0 -135
  513. package/dest/block/l2_block_new.d.ts.map +0 -1
  514. package/dest/block/l2_block_new.js +0 -152
  515. package/dest/contract/contract_class_metadata.d.ts +0 -8
  516. package/dest/contract/contract_class_metadata.d.ts.map +0 -1
  517. package/dest/contract/contract_class_metadata.js +0 -1
  518. package/dest/contract/contract_metadata.d.ts +0 -7
  519. package/dest/contract/contract_metadata.d.ts.map +0 -1
  520. package/dest/contract/contract_metadata.js +0 -1
  521. package/dest/p2p/block_attestation.d.ts +0 -80
  522. package/dest/p2p/block_attestation.d.ts.map +0 -1
  523. package/dest/tx/content_commitment.d.ts +0 -49
  524. package/dest/tx/content_commitment.d.ts.map +0 -1
  525. package/dest/tx/content_commitment.js +0 -90
  526. package/src/block/l2_block_code_to_purge.ts +0 -88
  527. package/src/block/l2_block_header.ts +0 -246
  528. package/src/block/l2_block_new.ts +0 -207
  529. package/src/contract/contract_class_metadata.ts +0 -8
  530. package/src/contract/contract_metadata.ts +0 -7
  531. package/src/tx/content_commitment.ts +0 -113
@@ -1,44 +1,65 @@
1
- import { type BlockBlobData, encodeBlockBlobData, encodeCheckpointBlobDataFromBlocks } from '@aztec/blob-lib/encoding';
2
- import { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
1
+ import { type BlockBlobData, encodeBlockBlobData } from '@aztec/blob-lib/encoding';
2
+ import {
3
+ BlockNumber,
4
+ CheckpointNumber,
5
+ CheckpointNumberSchema,
6
+ IndexWithinCheckpoint,
7
+ IndexWithinCheckpointSchema,
8
+ SlotNumber,
9
+ } from '@aztec/foundation/branded-types';
3
10
  import { Fr } from '@aztec/foundation/curves/bn254';
4
11
  import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
5
- import { bufferToHex, hexToBuffer } from '@aztec/foundation/string';
6
12
 
7
13
  import { z } from 'zod';
8
14
 
9
- import { Checkpoint } from '../checkpoint/checkpoint.js';
15
+ import type { PrivateLog } from '../logs/private_log.js';
10
16
  import { AppendOnlyTreeSnapshot } from '../trees/append_only_tree_snapshot.js';
11
- import type { BlockHeader } from '../tx/block_header.js';
17
+ import { BlockHeader } from '../tx/block_header.js';
12
18
  import { Body } from './body.js';
13
- import { makeAppendOnlyTreeSnapshot, makeL2BlockHeader } from './l2_block_code_to_purge.js';
14
- import { L2BlockHeader } from './l2_block_header.js';
15
19
  import type { L2BlockInfo } from './l2_block_info.js';
16
- import { L2BlockNew } from './l2_block_new.js';
17
20
 
18
21
  /**
19
- * The data that makes up the rollup proof, with encoder decoder functions.
20
- *
21
- * @deprecated Use `L2BlockNew` instead.
22
+ * An L2 block with a header and a body.
22
23
  */
23
24
  export class L2Block {
24
25
  constructor(
25
26
  /** Snapshot of archive tree after the block is applied. */
26
27
  public archive: AppendOnlyTreeSnapshot,
27
- /** L2 block header. */
28
- public header: L2BlockHeader,
28
+ /** Header of the block. */
29
+ public header: BlockHeader,
29
30
  /** L2 block body. */
30
31
  public body: Body,
31
- private blockHash: Fr | undefined = undefined,
32
+ /** Number of the checkpoint that the block belongs to. */
33
+ public checkpointNumber: CheckpointNumber,
34
+ /** Index of the block within the checkpoint. */
35
+ public indexWithinCheckpoint: IndexWithinCheckpoint,
32
36
  ) {}
33
37
 
38
+ get number(): BlockNumber {
39
+ return this.header.globalVariables.blockNumber;
40
+ }
41
+
42
+ get slot(): SlotNumber {
43
+ return this.header.globalVariables.slotNumber;
44
+ }
45
+
46
+ get timestamp(): bigint {
47
+ return this.header.globalVariables.timestamp;
48
+ }
49
+
34
50
  static get schema() {
35
51
  return z
36
52
  .object({
37
53
  archive: AppendOnlyTreeSnapshot.schema,
38
- header: L2BlockHeader.schema,
54
+ header: BlockHeader.schema,
39
55
  body: Body.schema,
56
+ checkpointNumber: CheckpointNumberSchema,
57
+ indexWithinCheckpoint: IndexWithinCheckpointSchema,
40
58
  })
41
- .transform(({ archive, header, body }) => new L2Block(archive, header, body));
59
+ .transform(
60
+ ({ archive, header, body, checkpointNumber, indexWithinCheckpoint }) =>
61
+ new L2Block(archive, header, body, checkpointNumber, indexWithinCheckpoint),
62
+ );
42
63
  }
43
64
 
44
65
  /**
@@ -47,11 +68,13 @@ export class L2Block {
47
68
  */
48
69
  static fromBuffer(buf: Buffer | BufferReader) {
49
70
  const reader = BufferReader.asReader(buf);
50
- const header = reader.readObject(L2BlockHeader);
71
+ const header = reader.readObject(BlockHeader);
51
72
  const archive = reader.readObject(AppendOnlyTreeSnapshot);
52
73
  const body = reader.readObject(Body);
74
+ const checkpointNumber = CheckpointNumber(reader.readNumber());
75
+ const indexWithinCheckpoint = IndexWithinCheckpoint(reader.readNumber());
53
76
 
54
- return new L2Block(archive, header, body);
77
+ return new L2Block(archive, header, body, checkpointNumber, indexWithinCheckpoint);
55
78
  }
56
79
 
57
80
  /**
@@ -59,71 +82,7 @@ export class L2Block {
59
82
  * @returns A serialized L2 block as a Buffer.
60
83
  */
61
84
  toBuffer() {
62
- return serializeToBuffer(this.header, this.archive, this.body);
63
- }
64
-
65
- /**
66
- * Deserializes L2 block from a buffer.
67
- * @param str - A serialized L2 block.
68
- * @returns Deserialized L2 block.
69
- */
70
- static fromString(str: string): L2Block {
71
- return L2Block.fromBuffer(hexToBuffer(str));
72
- }
73
-
74
- /**
75
- * Serializes a block to a string.
76
- * @returns A serialized L2 block as a string.
77
- */
78
- toString(): string {
79
- return bufferToHex(this.toBuffer());
80
- }
81
-
82
- /**
83
- * Creates an L2 block containing random data.
84
- * @param l2BlockNum - The number of the L2 block.
85
- * @param txsPerBlock - The number of transactions to include in the block.
86
- * @param numPublicCallsPerTx - The number of public function calls to include in each transaction.
87
- * @param numPublicLogsPerCall - The number of public logs per 1 public function invocation.
88
- * @param inHash - The hash of the L1 to L2 messages subtree which got inserted in this block.
89
- * @returns The L2 block.
90
- */
91
- static async random(
92
- l2BlockNum: BlockNumber,
93
- txsPerBlock = 4,
94
- numPublicCallsPerTx = 3,
95
- numPublicLogsPerCall = 1,
96
- inHash: Fr | undefined = undefined,
97
- slotNumber: number | undefined = undefined,
98
- maxEffects: number | undefined = undefined,
99
- ): Promise<L2Block> {
100
- const body = await Body.random({ txsPerBlock, numPublicCallsPerTx, numPublicLogsPerCall, maxEffects });
101
-
102
- return new L2Block(
103
- makeAppendOnlyTreeSnapshot(l2BlockNum + 1),
104
- makeL2BlockHeader(0, l2BlockNum, slotNumber ?? l2BlockNum, {}, inHash),
105
- body,
106
- );
107
- }
108
-
109
- /**
110
- * Creates an L2 block containing empty data.
111
- * @returns The L2 block.
112
- */
113
- static empty(): L2Block {
114
- return new L2Block(AppendOnlyTreeSnapshot.empty(), L2BlockHeader.empty(), Body.empty());
115
- }
116
-
117
- get number(): BlockNumber {
118
- return this.header.getBlockNumber();
119
- }
120
-
121
- get slot(): SlotNumber {
122
- return this.header.getSlot();
123
- }
124
-
125
- get timestamp(): bigint {
126
- return this.header.globalVariables.timestamp;
85
+ return serializeToBuffer(this.header, this.archive, this.body, this.checkpointNumber, this.indexWithinCheckpoint);
127
86
  }
128
87
 
129
88
  /**
@@ -131,79 +90,32 @@ export class L2Block {
131
90
  * @returns The block's hash.
132
91
  */
133
92
  public async hash(): Promise<Fr> {
134
- if (this.blockHash === undefined) {
135
- this.blockHash = await this.getBlockHeader().hash();
136
- }
137
- return this.blockHash;
93
+ const blockHash = await this.header.hash();
94
+ return blockHash.toField();
138
95
  }
139
96
 
140
97
  /**
141
- * @deprecated
142
- * This only works when there's one block per checkpoint.
143
- * TODO(#17027): Remove this method from L2Block and create a dedicated Checkpoint class.
98
+ * Checks if this block equals another block.
99
+ * @param other - The other block to compare with.
100
+ * @returns True if both blocks are equal.
144
101
  */
145
- public getCheckpointHeader() {
146
- return this.header.toCheckpointHeader();
147
- }
148
-
149
- // Temporary helper to get the actual block header.
150
- public getBlockHeader(): BlockHeader {
151
- return this.header.toBlockHeader();
152
- }
153
-
154
- public toL2Block() {
155
- return new L2BlockNew(
156
- this.archive,
157
- this.getBlockHeader(),
158
- this.body,
159
- CheckpointNumber.fromBlockNumber(this.number),
160
- 0, // indexWithinCheckpoint
102
+ public equals(other: this): boolean {
103
+ return (
104
+ this.archive.equals(other.archive) &&
105
+ this.header.equals(other.header) &&
106
+ this.body.equals(other.body) &&
107
+ this.checkpointNumber === other.checkpointNumber &&
108
+ this.indexWithinCheckpoint === other.indexWithinCheckpoint
161
109
  );
162
110
  }
163
111
 
164
- public toCheckpoint() {
165
- return new Checkpoint(
166
- this.archive,
167
- this.getCheckpointHeader(),
168
- [this.toL2Block()],
169
- CheckpointNumber.fromBlockNumber(this.number),
170
- );
171
- }
172
-
173
- static fromCheckpoint(checkpoint: Checkpoint) {
174
- const checkpointHeader = checkpoint.header;
175
- const block = checkpoint.blocks.at(-1)!;
176
- const header = new L2BlockHeader(
177
- new AppendOnlyTreeSnapshot(checkpointHeader.lastArchiveRoot, block.number),
178
- checkpointHeader.contentCommitment,
179
- block.header.state,
180
- block.header.globalVariables,
181
- block.header.totalFees,
182
- checkpointHeader.totalManaUsed,
183
- block.header.spongeBlobHash,
184
- checkpointHeader.blockHeadersHash,
185
- );
186
- return new L2Block(checkpoint.archive, header, block.body);
187
- }
188
-
189
- /**
190
- * @deprecated
191
- * This only works when there's one block per checkpoint.
192
- * TODO(#17027): Remove this method from L2Block and create a dedicated Checkpoint class.
193
- */
194
- public getCheckpointBlobFields() {
195
- const blockBlobData = this.toBlockBlobData();
196
- return encodeCheckpointBlobDataFromBlocks([blockBlobData]);
197
- }
198
-
199
112
  public toBlobFields(): Fr[] {
200
113
  const blockBlobData = this.toBlockBlobData();
201
114
  return encodeBlockBlobData(blockBlobData);
202
115
  }
203
116
 
204
117
  public toBlockBlobData(): BlockBlobData {
205
- // There's only one L2Block per checkpoint, so it's always the first block in the checkpoint.
206
- const isFirstBlock = true;
118
+ const isFirstBlock = this.indexWithinCheckpoint === 0;
207
119
  return {
208
120
  blockEndMarker: {
209
121
  numTxs: this.body.txEffects.length,
@@ -226,6 +138,48 @@ export class L2Block {
226
138
  };
227
139
  }
228
140
 
141
+ static empty(header?: BlockHeader) {
142
+ return new L2Block(
143
+ AppendOnlyTreeSnapshot.empty(),
144
+ header ?? BlockHeader.empty(),
145
+ Body.empty(),
146
+ CheckpointNumber(0),
147
+ IndexWithinCheckpoint(0),
148
+ );
149
+ }
150
+
151
+ /**
152
+ * Creates an L2 block containing random data.
153
+ * @param l2BlockNum - The number of the L2 block.
154
+ * @param txsPerBlock - The number of transactions to include in the block.
155
+ * @param numPublicCallsPerTx - The number of public function calls to include in each transaction.
156
+ * @param numPublicLogsPerCall - The number of public logs per 1 public function invocation.
157
+ * @param inHash - The hash of the L1 to L2 messages subtree which got inserted in this block.
158
+ * @returns The L2 block.
159
+ */
160
+ static async random(
161
+ blockNumber: BlockNumber,
162
+ {
163
+ checkpointNumber = CheckpointNumber(Number(blockNumber)),
164
+ indexWithinCheckpoint = IndexWithinCheckpoint(0),
165
+ txsPerBlock = 1,
166
+ txOptions = {},
167
+ makeTxOptions,
168
+ ...blockHeaderOverrides
169
+ }: {
170
+ checkpointNumber?: CheckpointNumber;
171
+ indexWithinCheckpoint?: IndexWithinCheckpoint;
172
+ txsPerBlock?: number;
173
+ txOptions?: Partial<Parameters<typeof Body.random>[0]>;
174
+ makeTxOptions?: (txIndex: number) => Partial<Parameters<typeof Body.random>[0]>;
175
+ } & Partial<Parameters<typeof BlockHeader.random>[0]> = {},
176
+ ): Promise<L2Block> {
177
+ const archive = new AppendOnlyTreeSnapshot(Fr.random(), blockNumber + 1);
178
+ const header = BlockHeader.random({ blockNumber, ...blockHeaderOverrides });
179
+ const body = await Body.random({ txsPerBlock, makeTxOptions, ...txOptions });
180
+ return new L2Block(archive, header, body, checkpointNumber, indexWithinCheckpoint);
181
+ }
182
+
229
183
  /**
230
184
  * Returns stats used for logging.
231
185
  * @returns Stats on tx count, number, and log size and count.
@@ -253,9 +207,12 @@ export class L2Block {
253
207
  };
254
208
  }
255
209
 
210
+ getPrivateLogs(): PrivateLog[] {
211
+ return this.body.txEffects.map(txEffect => txEffect.privateLogs).flat();
212
+ }
213
+
256
214
  toBlockInfo(): L2BlockInfo {
257
215
  return {
258
- blockHash: this.blockHash,
259
216
  archive: this.archive.root,
260
217
  lastArchive: this.header.lastArchive.root,
261
218
  blockNumber: this.number,
@@ -264,8 +221,4 @@ export class L2Block {
264
221
  timestamp: this.header.globalVariables.timestamp,
265
222
  };
266
223
  }
267
-
268
- equals(other: L2Block) {
269
- return this.archive.equals(other.archive) && this.header.equals(other.header) && this.body.equals(other.body);
270
- }
271
224
  }
@@ -2,6 +2,7 @@ import {
2
2
  BlockNumber,
3
3
  BlockNumberSchema,
4
4
  CheckpointNumber,
5
+ CheckpointNumberSchema,
5
6
  type EpochNumber,
6
7
  type SlotNumber,
7
8
  } from '@aztec/foundation/branded-types';
@@ -14,14 +15,14 @@ import { z } from 'zod';
14
15
  import type { Checkpoint } from '../checkpoint/checkpoint.js';
15
16
  import type { PublishedCheckpoint } from '../checkpoint/published_checkpoint.js';
16
17
  import type { L1RollupConstants } from '../epoch-helpers/index.js';
18
+ import { CheckpointHeader } from '../rollup/checkpoint_header.js';
17
19
  import type { BlockHeader } from '../tx/block_header.js';
18
20
  import type { IndexedTxEffect } from '../tx/indexed_tx_effect.js';
19
21
  import type { TxHash } from '../tx/tx_hash.js';
20
22
  import type { TxReceipt } from '../tx/tx_receipt.js';
21
- import { type CheckpointedL2Block, PublishedL2Block } from './checkpointed_l2_block.js';
23
+ import type { CheckpointedL2Block } from './checkpointed_l2_block.js';
22
24
  import type { L2Block } from './l2_block.js';
23
- import type { L2BlockNew } from './l2_block_new.js';
24
- import type { ValidateBlockNegativeResult, ValidateBlockResult } from './validate_block_result.js';
25
+ import type { ValidateCheckpointNegativeResult, ValidateCheckpointResult } from './validate_block_result.js';
25
26
 
26
27
  /**
27
28
  * Interface of classes allowing for the retrieval of L2 blocks.
@@ -51,6 +52,20 @@ export interface L2BlockSource {
51
52
  */
52
53
  getProvenBlockNumber(): Promise<BlockNumber>;
53
54
 
55
+ /**
56
+ * Gets the number of the latest L2 block checkpointed seen by the block source implementation.
57
+ * @returns The number of the latest L2 block checkpointed seen by the block source implementation.
58
+ */
59
+ getCheckpointedL2BlockNumber(): Promise<BlockNumber>;
60
+
61
+ /**
62
+ * Computes the finalized block number based on the proven block number.
63
+ * A block is considered finalized when it's 2 epochs behind the proven block.
64
+ * TODO(#13569): Compute proper finalized block number based on L1 finalized block.
65
+ * @returns The finalized block number.
66
+ */
67
+ getFinalizedL2BlockNumber(): Promise<BlockNumber>;
68
+
54
69
  /**
55
70
  * Gets an l2 block header.
56
71
  * @param number - The block number to return or 'latest' for the most recent one.
@@ -66,13 +81,15 @@ export interface L2BlockSource {
66
81
  */
67
82
  getCheckpointedBlock(number: BlockNumber): Promise<CheckpointedL2Block | undefined>;
68
83
 
84
+ getCheckpointedBlocks(from: BlockNumber, limit: number): Promise<CheckpointedL2Block[]>;
85
+
69
86
  /**
70
- * Retrieves a collection of published checkpoints
71
- * @param checkpointNumber The first checkpoint to be retrieved
72
- * @param limit The number of checkpoints to be retrieved
73
- * @returns The collection of complete checkpoints
87
+ * Retrieves a collection of checkpoints.
88
+ * @param checkpointNumber The first checkpoint to be retrieved.
89
+ * @param limit The number of checkpoints to be retrieved.
90
+ * @returns The collection of complete checkpoints.
74
91
  */
75
- getPublishedCheckpoints(checkpointNumber: CheckpointNumber, limit: number): Promise<PublishedCheckpoint[]>;
92
+ getCheckpoints(checkpointNumber: CheckpointNumber, limit: number): Promise<PublishedCheckpoint[]>;
76
93
 
77
94
  /**
78
95
  * Gets the checkpoints for a given epoch
@@ -99,7 +116,21 @@ export interface L2BlockSource {
99
116
  * @param number - The block number to return.
100
117
  * @returns The requested L2 block (or undefined if not found).
101
118
  */
102
- getL2BlockNew(number: BlockNumber): Promise<L2BlockNew | undefined>;
119
+ getL2Block(number: BlockNumber): Promise<L2Block | undefined>;
120
+
121
+ /**
122
+ * Gets an L2 block by its hash.
123
+ * @param blockHash - The block hash to retrieve.
124
+ * @returns The requested L2 block (or undefined if not found).
125
+ */
126
+ getL2BlockByHash(blockHash: Fr): Promise<L2Block | undefined>;
127
+
128
+ /**
129
+ * Gets an L2 block by its archive root.
130
+ * @param archive - The archive root to retrieve.
131
+ * @returns The requested L2 block (or undefined if not found).
132
+ */
133
+ getL2BlockByArchive(archive: Fr): Promise<L2Block | undefined>;
103
134
 
104
135
  /**
105
136
  * Gets a tx effect.
@@ -126,11 +157,11 @@ export interface L2BlockSource {
126
157
  getL2EpochNumber(): Promise<EpochNumber | undefined>;
127
158
 
128
159
  /**
129
- * Returns all block headers for a given epoch.
160
+ * Returns all checkpointed block headers for a given epoch.
130
161
  * @dev Use this method only with recent epochs, since it walks the block list backwards.
131
162
  * @param epochNumber - The epoch number to return headers for.
132
163
  */
133
- getBlockHeadersForEpoch(epochNumber: EpochNumber): Promise<BlockHeader[]>;
164
+ getCheckpointedBlockHeadersForEpoch(epochNumber: EpochNumber): Promise<BlockHeader[]>;
134
165
 
135
166
  /**
136
167
  * Returns whether the given epoch is completed on L1, based on the current L1 and L2 block numbers.
@@ -161,10 +192,10 @@ export interface L2BlockSource {
161
192
  isPendingChainInvalid(): Promise<boolean>;
162
193
 
163
194
  /**
164
- * Returns the status of the pending chain validation. If the chain is invalid, reports the earliest consecutive block
165
- * that is invalid, along with the reason for being invalid, which can be used to trigger an invalidation.
195
+ * Returns the status of the pending chain validation. If the chain is invalid, reports the earliest consecutive
196
+ * checkpoint that is invalid, along with the reason for being invalid, which can be used to trigger an invalidation.
166
197
  */
167
- getPendingChainValidationStatus(): Promise<ValidateBlockResult>;
198
+ getPendingChainValidationStatus(): Promise<ValidateCheckpointResult>;
168
199
 
169
200
  /** Force a sync. */
170
201
  syncImmediate(): Promise<void>;
@@ -175,42 +206,44 @@ export interface L2BlockSource {
175
206
  * Gets an l2 block. If a negative number is passed, the block returned is the most recent.
176
207
  * @param number - The block number to return (inclusive).
177
208
  * @returns The requested L2 block.
178
- * @deprecated Use getL2BlockNew instead.
179
209
  */
180
210
  getBlock(number: BlockNumber): Promise<L2Block | undefined>;
181
211
 
182
212
  /**
183
- * Returns all blocks for a given epoch.
213
+ * Returns all checkpointed blocks for a given epoch.
184
214
  * @dev Use this method only with recent epochs, since it walks the block list backwards.
185
215
  * @param epochNumber - The epoch number to return blocks for.
186
216
  */
187
- getBlocksForEpoch(epochNumber: EpochNumber): Promise<L2Block[]>;
217
+ getCheckpointedBlocksForEpoch(epochNumber: EpochNumber): Promise<CheckpointedL2Block[]>;
218
+
219
+ /**
220
+ * Returns all blocks for a given slot.
221
+ * @dev Use this method only with recent slots, since it walks the block list backwards.
222
+ * @param slotNumber - The slot number to return blocks for.
223
+ */
224
+ getBlocksForSlot(slotNumber: SlotNumber): Promise<L2Block[]>;
188
225
 
189
226
  /**
190
- * Gets a published block by its block hash.
227
+ * Gets a checkpointed block by its block hash.
191
228
  * @param blockHash - The block hash to retrieve.
192
229
  * @returns The requested block (or undefined if not found).
193
230
  */
194
- getPublishedBlockByHash(blockHash: Fr): Promise<PublishedL2Block | undefined>;
231
+ getCheckpointedBlockByHash(blockHash: Fr): Promise<CheckpointedL2Block | undefined>;
195
232
 
196
233
  /**
197
- * Gets a published block by its archive root.
234
+ * Gets a checkpointed block by its archive root.
198
235
  * @param archive - The archive root to retrieve.
199
236
  * @returns The requested block (or undefined if not found).
200
237
  */
201
- getPublishedBlockByArchive(archive: Fr): Promise<PublishedL2Block | undefined>;
238
+ getCheckpointedBlockByArchive(archive: Fr): Promise<CheckpointedL2Block | undefined>;
202
239
 
203
240
  /**
204
241
  * Gets up to `limit` amount of L2 blocks starting from `from`.
205
242
  * @param from - Number of the first block to return (inclusive).
206
243
  * @param limit - The maximum number of blocks to return.
207
- * @param proven - If true, only return blocks that have been proven.
208
244
  * @returns The requested L2 blocks.
209
245
  */
210
- getBlocks(from: BlockNumber, limit: number, proven?: boolean): Promise<L2Block[]>;
211
-
212
- /** Equivalent to getBlocks but includes publish data. */
213
- getPublishedBlocks(from: BlockNumber, limit: number, proven?: boolean): Promise<PublishedL2Block[]>;
246
+ getBlocks(from: BlockNumber, limit: number): Promise<L2Block[]>;
214
247
  }
215
248
 
216
249
  /**
@@ -222,7 +255,7 @@ export interface L2BlockSink {
222
255
  * @param block - The L2 block to add.
223
256
  * @throws If block number is not incremental (i.e., not exactly one more than the last stored block).
224
257
  */
225
- addBlock(block: L2BlockNew): Promise<void>;
258
+ addBlock(block: L2Block): Promise<void>;
226
259
  }
227
260
 
228
261
  /**
@@ -230,26 +263,42 @@ export interface L2BlockSink {
230
263
  * see L2BlockSourceEvents for the events emitted.
231
264
  */
232
265
  export type ArchiverEmitter = TypedEventEmitter<{
233
- [L2BlockSourceEvents.L2PruneDetected]: (args: L2BlockPruneEvent) => void;
266
+ [L2BlockSourceEvents.L2PruneUnproven]: (args: L2PruneUnprovenEvent) => void;
267
+ [L2BlockSourceEvents.L2PruneUncheckpointed]: (args: L2PruneUncheckpointedEvent) => void;
234
268
  [L2BlockSourceEvents.L2BlockProven]: (args: L2BlockProvenEvent) => void;
235
- [L2BlockSourceEvents.InvalidAttestationsBlockDetected]: (args: InvalidBlockDetectedEvent) => void;
269
+ [L2BlockSourceEvents.InvalidAttestationsCheckpointDetected]: (args: InvalidCheckpointDetectedEvent) => void;
270
+ [L2BlockSourceEvents.L2BlocksCheckpointed]: (args: L2CheckpointEvent) => void;
236
271
  }>;
237
- export interface L2BlockSourceEventEmitter extends L2BlockSource, ArchiverEmitter {}
272
+ export interface L2BlockSourceEventEmitter extends L2BlockSource {
273
+ events: ArchiverEmitter;
274
+ }
238
275
 
239
276
  /**
240
277
  * Identifier for L2 block tags.
241
- * - latest: Latest block pushed to L1.
278
+ * - proposed: Latest block proposed on L2.
279
+ * - checkpointed: Checkpointed block on L1.
242
280
  * - proven: Proven block on L1.
243
281
  * - finalized: Proven block on a finalized L1 block (not implemented, set to proven for now).
244
282
  */
245
- export type L2BlockTag = 'latest' | 'proven' | 'finalized';
283
+ export type L2BlockTag = 'proposed' | 'checkpointed' | 'proven' | 'finalized';
246
284
 
247
285
  /** Tips of the L2 chain. */
248
- export type L2Tips = Record<L2BlockTag, L2BlockId>;
286
+ export type L2Tips = {
287
+ proposed: L2BlockId;
288
+ checkpointed: L2TipId;
289
+ proven: L2TipId;
290
+ finalized: L2TipId;
291
+ };
292
+
293
+ export const GENESIS_CHECKPOINT_HEADER_HASH = CheckpointHeader.empty().hash();
249
294
 
250
295
  /** Identifies a block by number and hash. */
251
296
  export type L2BlockId = { number: BlockNumber; hash: string };
252
297
 
298
+ export type CheckpointId = { number: CheckpointNumber; hash: string };
299
+
300
+ export type L2TipId = { block: L2BlockId; checkpoint: CheckpointId };
301
+
253
302
  /** Creates an L2 block id */
254
303
  export function makeL2BlockId(number: BlockNumber, hash?: string): L2BlockId {
255
304
  if (number !== 0 && !hash) {
@@ -258,21 +307,39 @@ export function makeL2BlockId(number: BlockNumber, hash?: string): L2BlockId {
258
307
  return { number, hash: hash! };
259
308
  }
260
309
 
310
+ /** Creates an L2 checkpoint id */
311
+ export function makeL2CheckpointId(number: CheckpointNumber, hash: string): CheckpointId {
312
+ return { number, hash };
313
+ }
314
+
261
315
  const L2BlockIdSchema = z.object({
262
316
  number: BlockNumberSchema,
263
317
  hash: z.string(),
264
318
  });
265
319
 
320
+ const L2CheckpointIdSchema = z.object({
321
+ number: CheckpointNumberSchema,
322
+ hash: z.string(),
323
+ });
324
+
325
+ const L2TipIdSchema = z.object({
326
+ block: L2BlockIdSchema,
327
+ checkpoint: L2CheckpointIdSchema,
328
+ });
329
+
266
330
  export const L2TipsSchema = z.object({
267
- latest: L2BlockIdSchema,
268
- proven: L2BlockIdSchema,
269
- finalized: L2BlockIdSchema,
331
+ proposed: L2BlockIdSchema,
332
+ checkpointed: L2TipIdSchema,
333
+ proven: L2TipIdSchema,
334
+ finalized: L2TipIdSchema,
270
335
  });
271
336
 
272
337
  export enum L2BlockSourceEvents {
273
- L2PruneDetected = 'l2PruneDetected',
338
+ L2PruneUnproven = 'l2PruneUnproven',
339
+ L2PruneUncheckpointed = 'l2PruneUncheckpointed',
274
340
  L2BlockProven = 'l2BlockProven',
275
- InvalidAttestationsBlockDetected = 'invalidBlockDetected',
341
+ L2BlocksCheckpointed = 'l2BlocksCheckpointed',
342
+ InvalidAttestationsCheckpointDetected = 'invalidCheckpointDetected',
276
343
  }
277
344
 
278
345
  export type L2BlockProvenEvent = {
@@ -282,13 +349,24 @@ export type L2BlockProvenEvent = {
282
349
  epochNumber: EpochNumber;
283
350
  };
284
351
 
285
- export type L2BlockPruneEvent = {
286
- type: 'l2PruneDetected';
352
+ export type L2PruneUnprovenEvent = {
353
+ type: 'l2PruneUnproven';
287
354
  epochNumber: EpochNumber;
288
355
  blocks: L2Block[];
289
356
  };
290
357
 
291
- export type InvalidBlockDetectedEvent = {
292
- type: 'invalidBlockDetected';
293
- validationResult: ValidateBlockNegativeResult;
358
+ export type L2PruneUncheckpointedEvent = {
359
+ type: 'l2PruneUncheckpointed';
360
+ slotNumber: SlotNumber;
361
+ blocks: L2Block[];
362
+ };
363
+
364
+ export type L2CheckpointEvent = {
365
+ type: 'l2BlocksCheckpointed';
366
+ checkpoint: PublishedCheckpoint;
367
+ };
368
+
369
+ export type InvalidCheckpointDetectedEvent = {
370
+ type: 'invalidCheckpointDetected';
371
+ validationResult: ValidateCheckpointNegativeResult;
294
372
  };
@@ -1,3 +1,4 @@
1
1
  export * from './interfaces.js';
2
2
  export * from './l2_block_stream.js';
3
3
  export * from './l2_tips_memory_store.js';
4
+ export * from './l2_tips_store_base.js';
@@ -1,5 +1,6 @@
1
- import type { PublishedL2Block } from '../checkpointed_l2_block.js';
2
- import type { L2BlockId, L2Tips } from '../l2_block_source.js';
1
+ import type { PublishedCheckpoint } from '../../checkpoint/published_checkpoint.js';
2
+ import type { L2Block } from '../l2_block.js';
3
+ import type { CheckpointId, L2BlockId, L2Tips } from '../l2_block_source.js';
3
4
 
4
5
  /** Interface to the local view of the chain. Implemented by world-state and l2-tips-store. */
5
6
  export interface L2BlockStreamLocalDataProvider {
@@ -15,11 +16,21 @@ export interface L2BlockStreamEventHandler {
15
16
  export type L2BlockStreamEvent =
16
17
  | /** Emits blocks added to the chain. */ {
17
18
  type: 'blocks-added';
18
- blocks: PublishedL2Block[];
19
+ blocks: L2Block[];
19
20
  }
20
- | /** Reports last correct block (new tip of the unproven chain). */ {
21
+ | /** Emits checkpoints published to L1. */ {
22
+ type: 'chain-checkpointed';
23
+ checkpoint: PublishedCheckpoint;
24
+ block: L2BlockId;
25
+ }
26
+ | /**
27
+ * Reports last correct block (new tip of the proposed chain). Note that this is not necessarily the anchor block
28
+ * that will be used in the transaction - if the chain has already moved past the reorg, we'll also see blocks-added
29
+ * events that will push the anchor block forward.
30
+ */ {
21
31
  type: 'chain-pruned';
22
32
  block: L2BlockId;
33
+ checkpoint: CheckpointId;
23
34
  }
24
35
  | /** Reports new proven block. */ {
25
36
  type: 'chain-proven';