@aztec/stdlib 0.0.1-commit.7d4e6cd → 0.0.1-commit.87a0206

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 (518) hide show
  1. package/dest/abi/function_call.d.ts +47 -9
  2. package/dest/abi/function_call.d.ts.map +1 -1
  3. package/dest/abi/function_call.js +20 -3
  4. package/dest/abi/utils.d.ts +7 -1
  5. package/dest/abi/utils.d.ts.map +1 -1
  6. package/dest/abi/utils.js +7 -0
  7. package/dest/auth_witness/auth_witness.d.ts +2 -1
  8. package/dest/auth_witness/auth_witness.d.ts.map +1 -1
  9. package/dest/avm/avm.d.ts +62 -62
  10. package/dest/avm/avm_accumulated_data.d.ts +30 -3
  11. package/dest/avm/avm_accumulated_data.d.ts.map +1 -1
  12. package/dest/avm/avm_circuit_public_inputs.d.ts +9 -9
  13. package/dest/avm/avm_proving_request.d.ts +299 -299
  14. package/dest/avm/contract_storage_read.d.ts +13 -1
  15. package/dest/avm/contract_storage_read.d.ts.map +1 -1
  16. package/dest/avm/contract_storage_update_request.d.ts +13 -1
  17. package/dest/avm/contract_storage_update_request.d.ts.map +1 -1
  18. package/dest/avm/public_call_stack_item_compressed.d.ts +3 -1
  19. package/dest/avm/public_call_stack_item_compressed.d.ts.map +1 -1
  20. package/dest/avm/public_data_read.d.ts +10 -1
  21. package/dest/avm/public_data_read.d.ts.map +1 -1
  22. package/dest/avm/public_data_update_request.d.ts +10 -1
  23. package/dest/avm/public_data_update_request.d.ts.map +1 -1
  24. package/dest/avm/public_data_write.d.ts +7 -1
  25. package/dest/avm/public_data_write.d.ts.map +1 -1
  26. package/dest/avm/public_inner_call_request.d.ts +4 -1
  27. package/dest/avm/public_inner_call_request.d.ts.map +1 -1
  28. package/dest/avm/revert_code.d.ts +4 -4
  29. package/dest/avm/revert_code.d.ts.map +1 -1
  30. package/dest/block/block_hash.d.ts +18 -14
  31. package/dest/block/block_hash.d.ts.map +1 -1
  32. package/dest/block/block_hash.js +22 -20
  33. package/dest/block/block_parameter.d.ts +4 -3
  34. package/dest/block/block_parameter.d.ts.map +1 -1
  35. package/dest/block/block_parameter.js +2 -0
  36. package/dest/block/body.d.ts +1 -1
  37. package/dest/block/body.d.ts.map +1 -1
  38. package/dest/block/body.js +2 -1
  39. package/dest/block/checkpointed_l2_block.d.ts +20 -137
  40. package/dest/block/checkpointed_l2_block.d.ts.map +1 -1
  41. package/dest/block/checkpointed_l2_block.js +7 -45
  42. package/dest/block/in_block.d.ts +9 -9
  43. package/dest/block/in_block.d.ts.map +1 -1
  44. package/dest/block/in_block.js +5 -5
  45. package/dest/block/index.d.ts +1 -3
  46. package/dest/block/index.d.ts.map +1 -1
  47. package/dest/block/index.js +0 -2
  48. package/dest/block/l2_block.d.ts +56 -59
  49. package/dest/block/l2_block.d.ts.map +1 -1
  50. package/dest/block/l2_block.js +64 -110
  51. package/dest/block/l2_block_source.d.ts +65 -39
  52. package/dest/block/l2_block_source.d.ts.map +1 -1
  53. package/dest/block/l2_block_source.js +2 -1
  54. package/dest/block/l2_block_stream/interfaces.d.ts +9 -6
  55. package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
  56. package/dest/block/l2_block_stream/l2_block_stream.d.ts +6 -3
  57. package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
  58. package/dest/block/l2_block_stream/l2_block_stream.js +37 -34
  59. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +3 -3
  60. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -1
  61. package/dest/block/test/l2_tips_store_test_suite.d.ts +1 -1
  62. package/dest/block/test/l2_tips_store_test_suite.d.ts.map +1 -1
  63. package/dest/block/test/l2_tips_store_test_suite.js +2 -7
  64. package/dest/block/validate_block_result.d.ts +1 -1
  65. package/dest/block/validate_block_result.d.ts.map +1 -1
  66. package/dest/block/validate_block_result.js +5 -4
  67. package/dest/checkpoint/checkpoint.d.ts +30 -20
  68. package/dest/checkpoint/checkpoint.d.ts.map +1 -1
  69. package/dest/checkpoint/checkpoint.js +18 -6
  70. package/dest/checkpoint/published_checkpoint.d.ts +17 -15
  71. package/dest/checkpoint/published_checkpoint.d.ts.map +1 -1
  72. package/dest/checkpoint/published_checkpoint.js +4 -3
  73. package/dest/config/node-rpc-config.js +1 -1
  74. package/dest/contract/complete_address.d.ts +4 -1
  75. package/dest/contract/complete_address.d.ts.map +1 -1
  76. package/dest/contract/contract_address.js +1 -1
  77. package/dest/contract/contract_class_id.d.ts +1 -1
  78. package/dest/contract/contract_class_id.js +1 -1
  79. package/dest/contract/contract_deployment_data.d.ts +5 -5
  80. package/dest/contract/index.d.ts +1 -3
  81. package/dest/contract/index.d.ts.map +1 -1
  82. package/dest/contract/index.js +0 -2
  83. package/dest/contract/interfaces/contract_instance.d.ts +16 -16
  84. package/dest/contract/private_function.d.ts +1 -1
  85. package/dest/contract/private_function.d.ts.map +1 -1
  86. package/dest/contract/private_function.js +2 -3
  87. package/dest/contract/private_function_membership_proof.d.ts +1 -1
  88. package/dest/contract/private_function_membership_proof.js +1 -1
  89. package/dest/database-version/database_version.d.ts +58 -0
  90. package/dest/database-version/database_version.d.ts.map +1 -0
  91. package/dest/database-version/database_version.js +69 -0
  92. package/dest/database-version/version_manager.d.ts +3 -49
  93. package/dest/database-version/version_manager.d.ts.map +1 -1
  94. package/dest/database-version/version_manager.js +1 -66
  95. package/dest/delayed_public_mutable/delayed_public_mutable_values.d.ts +2 -2
  96. package/dest/delayed_public_mutable/delayed_public_mutable_values.d.ts.map +1 -1
  97. package/dest/delayed_public_mutable/delayed_public_mutable_values.js +7 -10
  98. package/dest/deserialization/index.d.ts +11 -0
  99. package/dest/deserialization/index.d.ts.map +1 -0
  100. package/dest/deserialization/index.js +10 -0
  101. package/dest/epoch-helpers/index.d.ts +3 -1
  102. package/dest/epoch-helpers/index.d.ts.map +1 -1
  103. package/dest/epoch-helpers/index.js +5 -1
  104. package/dest/errors/proving_error.d.ts +2 -2
  105. package/dest/errors/proving_error.d.ts.map +1 -1
  106. package/dest/hash/hash.js +2 -2
  107. package/dest/hash/map_slot.d.ts +1 -1
  108. package/dest/hash/map_slot.d.ts.map +1 -1
  109. package/dest/hash/map_slot.js +4 -3
  110. package/dest/interfaces/api_limit.d.ts +2 -1
  111. package/dest/interfaces/api_limit.d.ts.map +1 -1
  112. package/dest/interfaces/api_limit.js +1 -0
  113. package/dest/interfaces/archiver.d.ts +1 -1
  114. package/dest/interfaces/archiver.d.ts.map +1 -1
  115. package/dest/interfaces/archiver.js +18 -15
  116. package/dest/interfaces/aztec-node-admin.d.ts +66 -27
  117. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  118. package/dest/interfaces/aztec-node-admin.js +3 -1
  119. package/dest/interfaces/aztec-node.d.ts +65 -68
  120. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  121. package/dest/interfaces/aztec-node.js +10 -16
  122. package/dest/interfaces/block-builder.d.ts +22 -14
  123. package/dest/interfaces/block-builder.d.ts.map +1 -1
  124. package/dest/interfaces/block-builder.js +7 -0
  125. package/dest/interfaces/configs.d.ts +8 -8
  126. package/dest/interfaces/configs.d.ts.map +1 -1
  127. package/dest/interfaces/get_logs_response.d.ts +16 -9
  128. package/dest/interfaces/get_logs_response.d.ts.map +1 -1
  129. package/dest/interfaces/l2_logs_source.d.ts +14 -5
  130. package/dest/interfaces/l2_logs_source.d.ts.map +1 -1
  131. package/dest/interfaces/p2p.d.ts +2 -2
  132. package/dest/interfaces/p2p.d.ts.map +1 -1
  133. package/dest/interfaces/prover-broker.d.ts +16 -1
  134. package/dest/interfaces/prover-broker.d.ts.map +1 -1
  135. package/dest/interfaces/prover-broker.js +4 -1
  136. package/dest/interfaces/prover-client.d.ts +15 -1
  137. package/dest/interfaces/prover-client.d.ts.map +1 -1
  138. package/dest/interfaces/prover-client.js +12 -1
  139. package/dest/interfaces/proving-job.d.ts +48 -48
  140. package/dest/interfaces/slasher.d.ts +5 -1
  141. package/dest/interfaces/slasher.d.ts.map +1 -1
  142. package/dest/interfaces/slasher.js +1 -0
  143. package/dest/interfaces/tx_provider.d.ts +3 -3
  144. package/dest/interfaces/tx_provider.d.ts.map +1 -1
  145. package/dest/interfaces/validator.d.ts +106 -15
  146. package/dest/interfaces/validator.d.ts.map +1 -1
  147. package/dest/interfaces/validator.js +3 -2
  148. package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts +1 -1
  149. package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts.map +1 -1
  150. package/dest/kernel/hints/build_note_hash_read_request_hints.js +16 -6
  151. package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts +3 -3
  152. package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts.map +1 -1
  153. package/dest/kernel/hints/build_nullifier_read_request_hints.js +16 -8
  154. package/dest/kernel/hints/key_validation_hint.d.ts +2 -1
  155. package/dest/kernel/hints/key_validation_hint.d.ts.map +1 -1
  156. package/dest/kernel/hints/key_validation_request.d.ts +2 -1
  157. package/dest/kernel/hints/key_validation_request.d.ts.map +1 -1
  158. package/dest/kernel/hints/key_validation_request_and_generator.d.ts +6 -1
  159. package/dest/kernel/hints/key_validation_request_and_generator.d.ts.map +1 -1
  160. package/dest/kernel/hints/private_kernel_reset_hints.d.ts +13 -1
  161. package/dest/kernel/hints/private_kernel_reset_hints.d.ts.map +1 -1
  162. package/dest/kernel/hints/read_request.d.ts +7 -1
  163. package/dest/kernel/hints/read_request.d.ts.map +1 -1
  164. package/dest/kernel/hints/read_request_hints.d.ts +7 -1
  165. package/dest/kernel/hints/read_request_hints.d.ts.map +1 -1
  166. package/dest/kernel/private_accumulated_data.d.ts +23 -1
  167. package/dest/kernel/private_accumulated_data.d.ts.map +1 -1
  168. package/dest/kernel/private_call_data.d.ts +25 -1
  169. package/dest/kernel/private_call_data.d.ts.map +1 -1
  170. package/dest/kernel/private_call_request.d.ts +16 -1
  171. package/dest/kernel/private_call_request.d.ts.map +1 -1
  172. package/dest/kernel/private_circuit_public_inputs.d.ts +74 -1
  173. package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
  174. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts +31 -1
  175. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts.map +1 -1
  176. package/dest/kernel/private_kernel_data.d.ts +7 -1
  177. package/dest/kernel/private_kernel_data.d.ts.map +1 -1
  178. package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts +22 -1
  179. package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts.map +1 -1
  180. package/dest/kernel/private_kernel_inner_circuit_private_inputs.d.ts +7 -1
  181. package/dest/kernel/private_kernel_inner_circuit_private_inputs.d.ts.map +1 -1
  182. package/dest/kernel/private_kernel_reset_circuit_private_inputs.d.ts +4 -1
  183. package/dest/kernel/private_kernel_reset_circuit_private_inputs.d.ts.map +1 -1
  184. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts +10 -1
  185. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts.map +1 -1
  186. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts +23 -1
  187. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts.map +1 -1
  188. package/dest/kernel/private_to_avm_accumulated_data.d.ts +2 -2
  189. package/dest/kernel/private_to_rollup_accumulated_data.d.ts +17 -1
  190. package/dest/kernel/private_to_rollup_accumulated_data.d.ts.map +1 -1
  191. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts +16 -1
  192. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts.map +1 -1
  193. package/dest/kernel/private_validation_requests.d.ts +10 -1
  194. package/dest/kernel/private_validation_requests.d.ts.map +1 -1
  195. package/dest/kernel/public_call_request.d.ts +22 -1
  196. package/dest/kernel/public_call_request.d.ts.map +1 -1
  197. package/dest/kernel/utils/optional_number.d.ts +7 -1
  198. package/dest/kernel/utils/optional_number.d.ts.map +1 -1
  199. package/dest/keys/derivation.d.ts +3 -3
  200. package/dest/keys/derivation.js +8 -8
  201. package/dest/keys/key_types.d.ts +1 -1
  202. package/dest/keys/public_keys.d.ts +5 -1
  203. package/dest/keys/public_keys.d.ts.map +1 -1
  204. package/dest/keys/utils.d.ts +1 -1
  205. package/dest/keys/utils.d.ts.map +1 -1
  206. package/dest/keys/utils.js +7 -3
  207. package/dest/l1-contracts/slash_factory.d.ts +1 -1
  208. package/dest/l1-contracts/slash_factory.d.ts.map +1 -1
  209. package/dest/l1-contracts/slash_factory.js +1 -0
  210. package/dest/logs/extended_contract_class_log.d.ts +3 -1
  211. package/dest/logs/extended_contract_class_log.d.ts.map +1 -1
  212. package/dest/logs/extended_public_log.d.ts +17 -9
  213. package/dest/logs/extended_public_log.d.ts.map +1 -1
  214. package/dest/logs/log_id.d.ts +21 -14
  215. package/dest/logs/log_id.d.ts.map +1 -1
  216. package/dest/logs/log_id.js +20 -17
  217. package/dest/logs/siloed_tag.d.ts +1 -1
  218. package/dest/logs/siloed_tag.d.ts.map +1 -1
  219. package/dest/logs/siloed_tag.js +4 -3
  220. package/dest/messaging/inbox_leaf.d.ts +3 -1
  221. package/dest/messaging/inbox_leaf.d.ts.map +1 -1
  222. package/dest/messaging/l1_actor.d.ts +7 -1
  223. package/dest/messaging/l1_actor.d.ts.map +1 -1
  224. package/dest/messaging/l1_to_l2_message.d.ts +6 -1
  225. package/dest/messaging/l1_to_l2_message.d.ts.map +1 -1
  226. package/dest/messaging/l2_actor.d.ts +7 -1
  227. package/dest/messaging/l2_actor.d.ts.map +1 -1
  228. package/dest/messaging/l2_to_l1_membership.d.ts +3 -3
  229. package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -1
  230. package/dest/messaging/l2_to_l1_membership.js +8 -6
  231. package/dest/messaging/out_hash.d.ts +41 -4
  232. package/dest/messaging/out_hash.d.ts.map +1 -1
  233. package/dest/messaging/out_hash.js +52 -26
  234. package/dest/note/note_dao.d.ts +36 -5
  235. package/dest/note/note_dao.d.ts.map +1 -1
  236. package/dest/note/note_dao.js +15 -12
  237. package/dest/p2p/block_proposal.d.ts +23 -8
  238. package/dest/p2p/block_proposal.d.ts.map +1 -1
  239. package/dest/p2p/block_proposal.js +25 -7
  240. package/dest/p2p/checkpoint_attestation.d.ts +5 -1
  241. package/dest/p2p/checkpoint_attestation.d.ts.map +1 -1
  242. package/dest/p2p/checkpoint_proposal.d.ts +27 -7
  243. package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
  244. package/dest/p2p/checkpoint_proposal.js +26 -5
  245. package/dest/p2p/consensus_payload.d.ts +4 -3
  246. package/dest/p2p/consensus_payload.d.ts.map +1 -1
  247. package/dest/p2p/consensus_payload.js +0 -3
  248. package/dest/p2p/constants.d.ts +3 -0
  249. package/dest/p2p/constants.d.ts.map +1 -0
  250. package/dest/p2p/constants.js +2 -0
  251. package/dest/p2p/index.d.ts +2 -1
  252. package/dest/p2p/index.d.ts.map +1 -1
  253. package/dest/p2p/index.js +1 -0
  254. package/dest/p2p/message_validator.d.ts +18 -3
  255. package/dest/p2p/message_validator.d.ts.map +1 -1
  256. package/dest/p2p/message_validator.js +2 -1
  257. package/dest/p2p/signed_txs.d.ts +3 -1
  258. package/dest/p2p/signed_txs.d.ts.map +1 -1
  259. package/dest/p2p/signed_txs.js +6 -1
  260. package/dest/p2p/topic_type.js +2 -1
  261. package/dest/parity/parity_base_private_inputs.d.ts +3 -1
  262. package/dest/parity/parity_base_private_inputs.d.ts.map +1 -1
  263. package/dest/parity/parity_public_inputs.d.ts +4 -1
  264. package/dest/parity/parity_public_inputs.d.ts.map +1 -1
  265. package/dest/parity/parity_root_private_inputs.d.ts +2 -1
  266. package/dest/parity/parity_root_private_inputs.d.ts.map +1 -1
  267. package/dest/proofs/chonk_proof.d.ts +1 -1
  268. package/dest/proofs/chonk_proof.d.ts.map +1 -1
  269. package/dest/proofs/chonk_proof.js +9 -4
  270. package/dest/proofs/proof.d.ts +4 -1
  271. package/dest/proofs/proof.d.ts.map +1 -1
  272. package/dest/proofs/recursive_proof.d.ts +10 -1
  273. package/dest/proofs/recursive_proof.d.ts.map +1 -1
  274. package/dest/rollup/base_rollup_hints.d.ts +34 -1
  275. package/dest/rollup/base_rollup_hints.d.ts.map +1 -1
  276. package/dest/rollup/block_constant_data.d.ts +12 -1
  277. package/dest/rollup/block_constant_data.d.ts.map +1 -1
  278. package/dest/rollup/block_headers_hash.js +1 -1
  279. package/dest/rollup/block_merge_rollup_private_inputs.d.ts +4 -1
  280. package/dest/rollup/block_merge_rollup_private_inputs.d.ts.map +1 -1
  281. package/dest/rollup/block_rollup_public_inputs.d.ts +44 -3
  282. package/dest/rollup/block_rollup_public_inputs.d.ts.map +1 -1
  283. package/dest/rollup/block_rollup_public_inputs.js +2 -2
  284. package/dest/rollup/block_root_rollup_private_inputs.d.ts +64 -1
  285. package/dest/rollup/block_root_rollup_private_inputs.d.ts.map +1 -1
  286. package/dest/rollup/checkpoint_constant_data.d.ts +10 -1
  287. package/dest/rollup/checkpoint_constant_data.d.ts.map +1 -1
  288. package/dest/rollup/checkpoint_header.d.ts +29 -2
  289. package/dest/rollup/checkpoint_header.d.ts.map +1 -1
  290. package/dest/rollup/checkpoint_header.js +21 -5
  291. package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts +4 -1
  292. package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts.map +1 -1
  293. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +45 -10
  294. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -1
  295. package/dest/rollup/checkpoint_rollup_public_inputs.js +11 -7
  296. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts +44 -3
  297. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts.map +1 -1
  298. package/dest/rollup/checkpoint_root_rollup_private_inputs.js +13 -2
  299. package/dest/rollup/epoch_constant_data.d.ts +16 -1
  300. package/dest/rollup/epoch_constant_data.d.ts.map +1 -1
  301. package/dest/rollup/root_rollup_private_inputs.d.ts +6 -1
  302. package/dest/rollup/root_rollup_private_inputs.d.ts.map +1 -1
  303. package/dest/rollup/root_rollup_public_inputs.d.ts +17 -7
  304. package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -1
  305. package/dest/rollup/root_rollup_public_inputs.js +7 -4
  306. package/dest/rollup/tree_snapshot_diff_hints.d.ts +24 -1
  307. package/dest/rollup/tree_snapshot_diff_hints.d.ts.map +1 -1
  308. package/dest/rollup/tx_merge_rollup_private_inputs.d.ts +4 -1
  309. package/dest/rollup/tx_merge_rollup_private_inputs.d.ts.map +1 -1
  310. package/dest/rollup/tx_rollup_public_inputs.d.ts +29 -1
  311. package/dest/rollup/tx_rollup_public_inputs.d.ts.map +1 -1
  312. package/dest/schemas/schemas.d.ts +1 -1
  313. package/dest/slashing/empire.d.ts +1 -1
  314. package/dest/slashing/empire.d.ts.map +1 -1
  315. package/dest/slashing/empire.js +1 -0
  316. package/dest/slashing/helpers.d.ts +2 -2
  317. package/dest/slashing/helpers.d.ts.map +1 -1
  318. package/dest/slashing/helpers.js +3 -0
  319. package/dest/slashing/tally.d.ts +2 -1
  320. package/dest/slashing/tally.d.ts.map +1 -1
  321. package/dest/slashing/tally.js +6 -2
  322. package/dest/slashing/types.d.ts +5 -3
  323. package/dest/slashing/types.d.ts.map +1 -1
  324. package/dest/slashing/types.js +7 -1
  325. package/dest/stats/stats.d.ts +1 -3
  326. package/dest/stats/stats.d.ts.map +1 -1
  327. package/dest/tests/factories.d.ts +2 -4
  328. package/dest/tests/factories.d.ts.map +1 -1
  329. package/dest/tests/factories.js +8 -17
  330. package/dest/tests/jest.js +1 -1
  331. package/dest/tests/mocks.d.ts +20 -14
  332. package/dest/tests/mocks.d.ts.map +1 -1
  333. package/dest/tests/mocks.js +45 -27
  334. package/dest/trees/append_only_tree_snapshot.d.ts +13 -1
  335. package/dest/trees/append_only_tree_snapshot.d.ts.map +1 -1
  336. package/dest/trees/nullifier_leaf.d.ts +13 -1
  337. package/dest/trees/nullifier_leaf.d.ts.map +1 -1
  338. package/dest/trees/nullifier_membership_witness.d.ts +10 -1
  339. package/dest/trees/nullifier_membership_witness.d.ts.map +1 -1
  340. package/dest/trees/public_data_leaf.d.ts +16 -1
  341. package/dest/trees/public_data_leaf.d.ts.map +1 -1
  342. package/dest/trees/public_data_witness.d.ts +11 -1
  343. package/dest/trees/public_data_witness.d.ts.map +1 -1
  344. package/dest/tx/block_header.d.ts +14 -2
  345. package/dest/tx/block_header.d.ts.map +1 -1
  346. package/dest/tx/block_header.js +5 -1
  347. package/dest/tx/call_context.d.ts +13 -1
  348. package/dest/tx/call_context.d.ts.map +1 -1
  349. package/dest/tx/capsule.d.ts +4 -1
  350. package/dest/tx/capsule.d.ts.map +1 -1
  351. package/dest/tx/execution_payload.d.ts +9 -1
  352. package/dest/tx/execution_payload.d.ts.map +1 -1
  353. package/dest/tx/function_data.d.ts +4 -2
  354. package/dest/tx/function_data.d.ts.map +1 -1
  355. package/dest/tx/global_variables.d.ts +9 -1
  356. package/dest/tx/global_variables.d.ts.map +1 -1
  357. package/dest/tx/hashed_values.d.ts +7 -1
  358. package/dest/tx/hashed_values.d.ts.map +1 -1
  359. package/dest/tx/in_tx.d.ts +4 -4
  360. package/dest/tx/indexed_tx_effect.d.ts +5 -5
  361. package/dest/tx/indexed_tx_effect.d.ts.map +1 -1
  362. package/dest/tx/indexed_tx_effect.js +3 -2
  363. package/dest/tx/partial_state_reference.d.ts +4 -1
  364. package/dest/tx/partial_state_reference.d.ts.map +1 -1
  365. package/dest/tx/private_execution_result.d.ts +23 -2
  366. package/dest/tx/private_execution_result.d.ts.map +1 -1
  367. package/dest/tx/private_execution_result.js +1 -1
  368. package/dest/tx/private_tx_constant_data.d.ts +16 -1
  369. package/dest/tx/private_tx_constant_data.d.ts.map +1 -1
  370. package/dest/tx/profiling.d.ts +149 -26
  371. package/dest/tx/profiling.d.ts.map +1 -1
  372. package/dest/tx/profiling.js +44 -7
  373. package/dest/tx/protocol_contracts.d.ts +1 -1
  374. package/dest/tx/public_call_request_with_calldata.d.ts +7 -1
  375. package/dest/tx/public_call_request_with_calldata.d.ts.map +1 -1
  376. package/dest/tx/state_reference.d.ts +3 -1
  377. package/dest/tx/state_reference.d.ts.map +1 -1
  378. package/dest/tx/tx.d.ts +24 -1
  379. package/dest/tx/tx.d.ts.map +1 -1
  380. package/dest/tx/tx.js +6 -3
  381. package/dest/tx/tx_context.d.ts +2 -1
  382. package/dest/tx/tx_context.d.ts.map +1 -1
  383. package/dest/tx/tx_effect.d.ts +32 -6
  384. package/dest/tx/tx_effect.d.ts.map +1 -1
  385. package/dest/tx/tx_effect.js +0 -7
  386. package/dest/tx/tx_execution_request.d.ts +30 -1
  387. package/dest/tx/tx_execution_request.d.ts.map +1 -1
  388. package/dest/tx/tx_hash.d.ts +2 -1
  389. package/dest/tx/tx_hash.d.ts.map +1 -1
  390. package/dest/tx/tx_receipt.d.ts +47 -13
  391. package/dest/tx/tx_receipt.d.ts.map +1 -1
  392. package/dest/tx/tx_receipt.js +46 -15
  393. package/dest/tx/tx_request.d.ts +6 -1
  394. package/dest/tx/tx_request.d.ts.map +1 -1
  395. package/dest/tx/validator/error_texts.d.ts +2 -1
  396. package/dest/tx/validator/error_texts.d.ts.map +1 -1
  397. package/dest/tx/validator/error_texts.js +2 -0
  398. package/dest/types/shared.d.ts +4 -1
  399. package/dest/types/shared.d.ts.map +1 -1
  400. package/dest/validators/schemas.d.ts +8 -8
  401. package/dest/vks/verification_key.d.ts +22 -1
  402. package/dest/vks/verification_key.d.ts.map +1 -1
  403. package/dest/vks/vk_data.d.ts +7 -1
  404. package/dest/vks/vk_data.d.ts.map +1 -1
  405. package/dest/zkpassport/index.d.ts +3 -4
  406. package/dest/zkpassport/index.d.ts.map +1 -1
  407. package/dest/zkpassport/index.js +9 -9
  408. package/package.json +25 -12
  409. package/src/abi/function_call.ts +25 -3
  410. package/src/abi/utils.ts +17 -0
  411. package/src/block/block_hash.ts +26 -25
  412. package/src/block/block_parameter.ts +4 -2
  413. package/src/block/body.ts +2 -1
  414. package/src/block/checkpointed_l2_block.ts +8 -58
  415. package/src/block/in_block.ts +6 -6
  416. package/src/block/index.ts +0 -2
  417. package/src/block/l2_block.ts +102 -150
  418. package/src/block/l2_block_source.ts +71 -42
  419. package/src/block/l2_block_stream/interfaces.ts +8 -5
  420. package/src/block/l2_block_stream/l2_block_stream.ts +45 -37
  421. package/src/block/l2_block_stream/l2_tips_store_base.ts +2 -2
  422. package/src/block/test/l2_tips_store_test_suite.ts +4 -9
  423. package/src/block/validate_block_result.ts +5 -4
  424. package/src/checkpoint/checkpoint.ts +33 -11
  425. package/src/checkpoint/published_checkpoint.ts +4 -3
  426. package/src/config/node-rpc-config.ts +1 -1
  427. package/src/contract/contract_address.ts +1 -1
  428. package/src/contract/contract_class_id.ts +1 -1
  429. package/src/contract/index.ts +0 -2
  430. package/src/contract/private_function.ts +2 -3
  431. package/src/contract/private_function_membership_proof.ts +1 -1
  432. package/src/database-version/database_version.ts +87 -0
  433. package/src/database-version/version_manager.ts +1 -77
  434. package/src/delayed_public_mutable/delayed_public_mutable_values.ts +9 -10
  435. package/src/deserialization/index.ts +21 -0
  436. package/src/epoch-helpers/index.ts +10 -1
  437. package/src/hash/hash.ts +2 -2
  438. package/src/hash/map_slot.ts +3 -2
  439. package/src/interfaces/api_limit.ts +1 -0
  440. package/src/interfaces/archiver.ts +18 -24
  441. package/src/interfaces/aztec-node-admin.ts +3 -2
  442. package/src/interfaces/aztec-node.ts +85 -134
  443. package/src/interfaces/block-builder.ts +40 -23
  444. package/src/interfaces/configs.ts +1 -3
  445. package/src/interfaces/l2_logs_source.ts +17 -4
  446. package/src/interfaces/p2p.ts +1 -1
  447. package/src/interfaces/prover-broker.ts +22 -0
  448. package/src/interfaces/prover-client.ts +22 -0
  449. package/src/interfaces/slasher.ts +2 -0
  450. package/src/interfaces/tx_provider.ts +2 -2
  451. package/src/interfaces/validator.ts +11 -12
  452. package/src/kernel/hints/build_note_hash_read_request_hints.ts +17 -6
  453. package/src/kernel/hints/build_nullifier_read_request_hints.ts +17 -14
  454. package/src/keys/derivation.ts +8 -8
  455. package/src/keys/key_types.ts +1 -1
  456. package/src/keys/utils.ts +7 -3
  457. package/src/l1-contracts/slash_factory.ts +1 -0
  458. package/src/logs/log_id.ts +22 -18
  459. package/src/logs/siloed_tag.ts +3 -2
  460. package/src/messaging/l2_to_l1_membership.ts +8 -6
  461. package/src/messaging/out_hash.ts +60 -29
  462. package/src/note/note_dao.ts +18 -13
  463. package/src/p2p/block_proposal.ts +36 -13
  464. package/src/p2p/checkpoint_proposal.ts +39 -11
  465. package/src/p2p/consensus_payload.ts +0 -5
  466. package/src/p2p/constants.ts +3 -0
  467. package/src/p2p/index.ts +1 -0
  468. package/src/p2p/message_validator.ts +14 -2
  469. package/src/p2p/signed_txs.ts +6 -1
  470. package/src/p2p/topic_type.ts +1 -1
  471. package/src/proofs/chonk_proof.ts +9 -5
  472. package/src/rollup/block_headers_hash.ts +1 -1
  473. package/src/rollup/block_rollup_public_inputs.ts +2 -2
  474. package/src/rollup/checkpoint_header.ts +20 -0
  475. package/src/rollup/checkpoint_rollup_public_inputs.ts +16 -10
  476. package/src/rollup/checkpoint_root_rollup_private_inputs.ts +14 -1
  477. package/src/rollup/root_rollup_public_inputs.ts +11 -8
  478. package/src/slashing/empire.ts +2 -1
  479. package/src/slashing/helpers.ts +4 -0
  480. package/src/slashing/tally.ts +8 -2
  481. package/src/slashing/types.ts +7 -0
  482. package/src/stats/stats.ts +0 -2
  483. package/src/tests/factories.ts +11 -31
  484. package/src/tests/jest.ts +1 -1
  485. package/src/tests/mocks.ts +62 -42
  486. package/src/tx/block_header.ts +11 -3
  487. package/src/tx/indexed_tx_effect.ts +3 -2
  488. package/src/tx/private_execution_result.ts +1 -1
  489. package/src/tx/profiling.ts +46 -4
  490. package/src/tx/tx.ts +8 -9
  491. package/src/tx/tx_effect.ts +0 -9
  492. package/src/tx/tx_receipt.ts +75 -18
  493. package/src/tx/validator/error_texts.ts +3 -0
  494. package/src/zkpassport/index.ts +11 -12
  495. package/dest/block/l2_block_code_to_purge.d.ts +0 -11
  496. package/dest/block/l2_block_code_to_purge.d.ts.map +0 -1
  497. package/dest/block/l2_block_code_to_purge.js +0 -55
  498. package/dest/block/l2_block_header.d.ts +0 -94
  499. package/dest/block/l2_block_header.d.ts.map +0 -1
  500. package/dest/block/l2_block_header.js +0 -160
  501. package/dest/block/l2_block_new.d.ts +0 -134
  502. package/dest/block/l2_block_new.d.ts.map +0 -1
  503. package/dest/block/l2_block_new.js +0 -155
  504. package/dest/contract/contract_class_metadata.d.ts +0 -8
  505. package/dest/contract/contract_class_metadata.d.ts.map +0 -1
  506. package/dest/contract/contract_class_metadata.js +0 -1
  507. package/dest/contract/contract_metadata.d.ts +0 -7
  508. package/dest/contract/contract_metadata.d.ts.map +0 -1
  509. package/dest/contract/contract_metadata.js +0 -1
  510. package/dest/database-version/index.d.ts +0 -2
  511. package/dest/database-version/index.d.ts.map +0 -1
  512. package/dest/database-version/index.js +0 -1
  513. package/src/block/l2_block_code_to_purge.ts +0 -80
  514. package/src/block/l2_block_header.ts +0 -255
  515. package/src/block/l2_block_new.ts +0 -211
  516. package/src/contract/contract_class_metadata.ts +0 -8
  517. package/src/contract/contract_metadata.ts +0 -7
  518. package/src/database-version/index.ts +0 -1
@@ -50,6 +50,7 @@ export function getPenaltyForOffense(
50
50
  SlasherConfig,
51
51
  | 'slashAttestDescendantOfInvalidPenalty'
52
52
  | 'slashBroadcastedInvalidBlockPenalty'
53
+ | 'slashDuplicateProposalPenalty'
53
54
  | 'slashPrunePenalty'
54
55
  | 'slashDataWithholdingPenalty'
55
56
  | 'slashUnknownPenalty'
@@ -71,6 +72,8 @@ export function getPenaltyForOffense(
71
72
  return config.slashAttestDescendantOfInvalidPenalty;
72
73
  case OffenseType.BROADCASTED_INVALID_BLOCK_PROPOSAL:
73
74
  return config.slashBroadcastedInvalidBlockPenalty;
75
+ case OffenseType.DUPLICATE_PROPOSAL:
76
+ return config.slashDuplicateProposalPenalty;
74
77
  case OffenseType.UNKNOWN:
75
78
  return config.slashUnknownPenalty;
76
79
  default: {
@@ -85,6 +88,7 @@ export function getTimeUnitForOffense(offense: OffenseType): 'epoch' | 'slot' {
85
88
  switch (offense) {
86
89
  case OffenseType.ATTESTED_DESCENDANT_OF_INVALID:
87
90
  case OffenseType.BROADCASTED_INVALID_BLOCK_PROPOSAL:
91
+ case OffenseType.DUPLICATE_PROPOSAL:
88
92
  case OffenseType.PROPOSED_INCORRECT_ATTESTATIONS:
89
93
  case OffenseType.PROPOSED_INSUFFICIENT_ATTESTATIONS:
90
94
  return 'slot';
@@ -1,4 +1,5 @@
1
1
  import { sumBigint } from '@aztec/foundation/bigint';
2
+ import { padArrayEnd } from '@aztec/foundation/collection';
2
3
  import { EthAddress } from '@aztec/foundation/eth-address';
3
4
  import type { PartialBy } from '@aztec/foundation/types';
4
5
 
@@ -20,9 +21,10 @@ export function getSlashConsensusVotesFromOffenses(
20
21
  settings: {
21
22
  slashingAmounts: [bigint, bigint, bigint];
22
23
  epochDuration: number;
24
+ targetCommitteeSize: number;
23
25
  },
24
26
  ): ValidatorSlashVote[] {
25
- const { slashingAmounts } = settings;
27
+ const { slashingAmounts, targetCommitteeSize } = settings;
26
28
 
27
29
  if (committees.length !== epochsForCommittees.length) {
28
30
  throw new Error('committees and epochsForCommittees must have the same length');
@@ -31,7 +33,9 @@ export function getSlashConsensusVotesFromOffenses(
31
33
  const votes = committees.flatMap((committee, committeeIndex) => {
32
34
  const committeeEpoch = epochsForCommittees[committeeIndex];
33
35
 
34
- return committee.map(validator => {
36
+ // Map over actual committee members, then pad to targetCommitteeSize.
37
+ // Padding handles cases where committees may be empty (e.g., when there aren't enough validators to fill the committee size during network startup).
38
+ const votes = committee.map(validator => {
35
39
  // Find offenses for this validator in this specific epoch.
36
40
  // If an offense has no epoch, it is considered for all epochs due to a slashAlways setting.
37
41
  const validatorOffenses = offenses.filter(
@@ -45,6 +49,8 @@ export function getSlashConsensusVotesFromOffenses(
45
49
  const slashUnits = getSlashUnitsForAmount(slashAmount, slashingAmounts);
46
50
  return Number(slashUnits);
47
51
  });
52
+
53
+ return padArrayEnd(votes, 0, targetCommitteeSize);
48
54
  });
49
55
 
50
56
  return votes;
@@ -20,6 +20,8 @@ export enum OffenseType {
20
20
  PROPOSED_INCORRECT_ATTESTATIONS = 6,
21
21
  /** A committee member attested to a block that was built as a descendent of an invalid block (as in a block with invalid attestations) */
22
22
  ATTESTED_DESCENDANT_OF_INVALID = 7,
23
+ /** A proposer sent duplicate proposals for the same position (slot, indexWithinCheckpoint for blocks or slot for checkpoints) */
24
+ DUPLICATE_PROPOSAL = 8,
23
25
  }
24
26
 
25
27
  export function getOffenseTypeName(offense: OffenseType) {
@@ -40,6 +42,8 @@ export function getOffenseTypeName(offense: OffenseType) {
40
42
  return 'proposed_incorrect_attestations';
41
43
  case OffenseType.ATTESTED_DESCENDANT_OF_INVALID:
42
44
  return 'attested_descendant_of_invalid';
45
+ case OffenseType.DUPLICATE_PROPOSAL:
46
+ return 'duplicate_proposal';
43
47
  default:
44
48
  throw new Error(`Unknown offense type: ${offense}`);
45
49
  }
@@ -56,6 +60,7 @@ export const OffenseToBigInt: Record<OffenseType, bigint> = {
56
60
  [OffenseType.PROPOSED_INSUFFICIENT_ATTESTATIONS]: 5n,
57
61
  [OffenseType.PROPOSED_INCORRECT_ATTESTATIONS]: 6n,
58
62
  [OffenseType.ATTESTED_DESCENDANT_OF_INVALID]: 7n,
63
+ [OffenseType.DUPLICATE_PROPOSAL]: 8n,
59
64
  };
60
65
 
61
66
  export function bigIntToOffense(offense: bigint): OffenseType {
@@ -76,6 +81,8 @@ export function bigIntToOffense(offense: bigint): OffenseType {
76
81
  return OffenseType.PROPOSED_INCORRECT_ATTESTATIONS;
77
82
  case 7n:
78
83
  return OffenseType.ATTESTED_DESCENDANT_OF_INVALID;
84
+ case 8n:
85
+ return OffenseType.DUPLICATE_PROPOSAL;
79
86
  default:
80
87
  throw new Error(`Unknown offense: ${offense}`);
81
88
  }
@@ -202,8 +202,6 @@ export type L2BlockBuiltStats = {
202
202
  duration: number;
203
203
  /** Time for processing public txs in ms. */
204
204
  publicProcessDuration: number;
205
- /** Time for running rollup circuits in ms. */
206
- rollupCircuitsDuration: number;
207
205
  } & L2BlockStats;
208
206
 
209
207
  /** Stats for an L2 block processed by the world state synchronizer. */
@@ -7,11 +7,11 @@ import {
7
7
  import {
8
8
  ARCHIVE_HEIGHT,
9
9
  AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED,
10
- AZTEC_MAX_EPOCH_DURATION,
11
10
  CHONK_PROOF_LENGTH,
12
11
  CONTRACT_CLASS_LOG_SIZE_IN_FIELDS,
13
12
  GeneratorIndex,
14
13
  L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH,
14
+ MAX_CHECKPOINTS_PER_EPOCH,
15
15
  MAX_CONTRACT_CLASS_LOGS_PER_TX,
16
16
  MAX_ENQUEUED_CALLS_PER_CALL,
17
17
  MAX_ENQUEUED_CALLS_PER_TX,
@@ -87,7 +87,6 @@ import {
87
87
  import { PublicDataRead } from '../avm/public_data_read.js';
88
88
  import { PublicDataWrite } from '../avm/public_data_write.js';
89
89
  import { AztecAddress } from '../aztec-address/index.js';
90
- import { L2BlockHeader } from '../block/l2_block_header.js';
91
90
  import type { L2Tips } from '../block/l2_block_source.js';
92
91
  import {
93
92
  type ContractClassPublic,
@@ -850,9 +849,10 @@ export function makeCheckpointRollupPublicInputs(seed = 0) {
850
849
  makeEpochConstantData(seed),
851
850
  makeAppendOnlyTreeSnapshot(seed + 0x100),
852
851
  makeAppendOnlyTreeSnapshot(seed + 0x200),
853
- makeTuple(AZTEC_MAX_EPOCH_DURATION, () => fr(seed), 0x300),
854
- makeTuple(AZTEC_MAX_EPOCH_DURATION, () => fr(seed), 0x400),
855
- makeTuple(AZTEC_MAX_EPOCH_DURATION, () => makeFeeRecipient(seed), 0x500),
852
+ makeAppendOnlyTreeSnapshot(seed + 0x300),
853
+ makeAppendOnlyTreeSnapshot(seed + 0x350),
854
+ makeTuple(MAX_CHECKPOINTS_PER_EPOCH, () => fr(seed), 0x400),
855
+ makeTuple(MAX_CHECKPOINTS_PER_EPOCH, () => makeFeeRecipient(seed), 0x500),
856
856
  makeBlobAccumulator(seed + 0x600),
857
857
  makeBlobAccumulator(seed + 0x700),
858
858
  makeFinalBlobBatchingChallenges(seed + 0x800),
@@ -888,8 +888,8 @@ export function makeRootRollupPublicInputs(seed = 0): RootRollupPublicInputs {
888
888
  fr(seed + 0x100),
889
889
  fr(seed + 0x200),
890
890
  fr(seed + 0x300),
891
- makeTuple(AZTEC_MAX_EPOCH_DURATION, () => fr(seed), 0x400),
892
- makeTuple(AZTEC_MAX_EPOCH_DURATION, () => makeFeeRecipient(seed), 0x500),
891
+ makeTuple(MAX_CHECKPOINTS_PER_EPOCH, () => fr(seed), 0x400),
892
+ makeTuple(MAX_CHECKPOINTS_PER_EPOCH, () => makeFeeRecipient(seed), 0x500),
893
893
  makeEpochConstantData(seed + 0x600),
894
894
  makeFinalBlobAccumulator(seed + 0x700),
895
895
  );
@@ -910,40 +910,20 @@ export function makeBlockHeader(
910
910
  });
911
911
  }
912
912
 
913
- export function makeL2BlockHeader(
914
- seed = 0,
915
- blockNumber?: number,
916
- slotNumber?: number,
917
- overrides: Partial<FieldsOf<L2BlockHeader>> = {},
918
- ) {
919
- return new L2BlockHeader(
920
- makeAppendOnlyTreeSnapshot(seed + 0x100),
921
- overrides?.blobsHash ?? fr(seed + 0x200),
922
- overrides?.inHash ?? fr(seed + 0x300),
923
- overrides?.state ?? makeStateReference(seed + 0x600),
924
- makeGlobalVariables((seed += 0x700), {
925
- ...(blockNumber !== undefined ? { blockNumber: BlockNumber(blockNumber) } : {}),
926
- ...(slotNumber !== undefined ? { slotNumber: SlotNumber(slotNumber) } : {}),
927
- }),
928
- new Fr(seed + 0x800),
929
- new Fr(seed + 0x900),
930
- new Fr(seed + 0xa00),
931
- new Fr(seed + 0xb00),
932
- );
933
- }
934
-
935
- export function makeCheckpointHeader(seed = 0) {
913
+ export function makeCheckpointHeader(seed = 0, overrides: Partial<FieldsOf<CheckpointHeader>> = {}) {
936
914
  return CheckpointHeader.from({
937
915
  lastArchiveRoot: fr(seed + 0x100),
938
916
  blockHeadersHash: fr(seed + 0x150),
939
917
  blobsHash: fr(seed + 0x200),
940
918
  inHash: fr(seed + 0x210),
919
+ epochOutHash: fr(seed + 0x220),
941
920
  slotNumber: SlotNumber(seed + 0x300),
942
921
  timestamp: BigInt(seed + 0x400),
943
922
  coinbase: makeEthAddress(seed + 0x500),
944
923
  feeRecipient: makeAztecAddress(seed + 0x600),
945
924
  gasFees: makeGasFees(seed + 0x700),
946
925
  totalManaUsed: fr(seed + 0x800),
926
+ ...overrides,
947
927
  });
948
928
  }
949
929
 
@@ -1759,7 +1739,7 @@ export function makeL2Tips(
1759
1739
  ? typeof checkpointNumber === 'number'
1760
1740
  ? CheckpointNumber(checkpointNumber)
1761
1741
  : checkpointNumber
1762
- : CheckpointNumber(bn);
1742
+ : CheckpointNumber.fromBlockNumber(bn);
1763
1743
  const cph = checkpointHash ?? hash;
1764
1744
  return {
1765
1745
  proposed: { number: bn, hash },
package/src/tests/jest.ts CHANGED
@@ -20,7 +20,7 @@ export function equalL2Blocks(a: any, b: any) {
20
20
  // use a custom comparator because the blockHash property is lazily computed and one instance might not have it
21
21
  return aAsL2Block.toBuffer().equals(bAsL2Block.toBuffer());
22
22
  } else if (aAsL2Block || bAsL2Block) {
23
- // one value is an L2block and the other isn't. Definitely not equal.
23
+ // one value is an L2Block and the other isn't. Definitely not equal.
24
24
  return false;
25
25
  } else {
26
26
  // we don't know what they are, tell Jest to keep looking
@@ -7,7 +7,7 @@ import {
7
7
  MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
8
8
  } from '@aztec/constants';
9
9
  import { type FieldsOf, makeTuple } from '@aztec/foundation/array';
10
- import { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
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';
@@ -22,8 +22,7 @@ import { AvmCircuitPublicInputs } from '../avm/avm_circuit_public_inputs.js';
22
22
  import { PublicDataWrite } from '../avm/public_data_write.js';
23
23
  import { RevertCode } from '../avm/revert_code.js';
24
24
  import { AztecAddress } from '../aztec-address/index.js';
25
- import { CommitteeAttestation, L2BlockHeader, L2BlockNew, PublishedL2Block } from '../block/index.js';
26
- import { L2Block } from '../block/l2_block.js';
25
+ import { CheckpointedL2Block, CommitteeAttestation, L2Block } from '../block/index.js';
27
26
  import type { CommitteeAttestationsAndSigners } from '../block/proposal/attestations_and_signers.js';
28
27
  import { Checkpoint } from '../checkpoint/checkpoint.js';
29
28
  import { L1PublishedData } from '../checkpoint/published_checkpoint.js';
@@ -76,9 +75,9 @@ import {
76
75
  makeAvmCircuitInputs,
77
76
  makeAztecAddress,
78
77
  makeBlockHeader,
78
+ makeCheckpointHeader,
79
79
  makeGas,
80
80
  makeGlobalVariables,
81
- makeL2BlockHeader,
82
81
  makePrivateToPublicAccumulatedData,
83
82
  makePrivateToRollupAccumulatedData,
84
83
  makeProtocolContracts,
@@ -98,12 +97,14 @@ export const mockTx = async (
98
97
  publicCalldataSize = 2,
99
98
  feePayer,
100
99
  chonkProof = ChonkProof.random(),
100
+ maxFeesPerGas = new GasFees(10, 10),
101
101
  maxPriorityFeesPerGas,
102
102
  gasUsed = Gas.empty(),
103
103
  chainId = Fr.ZERO,
104
104
  version = Fr.ZERO,
105
105
  vkTreeRoot = Fr.ZERO,
106
106
  protocolContractsHash = Fr.ZERO,
107
+ anchorBlockHeader = BlockHeader.empty(),
107
108
  }: {
108
109
  numberOfNonRevertiblePublicCallRequests?: number;
109
110
  numberOfRevertiblePublicCallRequests?: number;
@@ -112,12 +113,14 @@ export const mockTx = async (
112
113
  publicCalldataSize?: number;
113
114
  feePayer?: AztecAddress;
114
115
  chonkProof?: ChonkProof;
116
+ maxFeesPerGas?: GasFees;
115
117
  maxPriorityFeesPerGas?: GasFees;
116
118
  gasUsed?: Gas;
117
119
  chainId?: Fr;
118
120
  version?: Fr;
119
121
  vkTreeRoot?: Fr;
120
122
  protocolContractsHash?: Fr;
123
+ anchorBlockHeader?: BlockHeader;
121
124
  } = {},
122
125
  ) => {
123
126
  const totalPublicCallRequests =
@@ -127,10 +130,8 @@ export const mockTx = async (
127
130
  const isForPublic = totalPublicCallRequests > 0;
128
131
  const data = PrivateKernelTailCircuitPublicInputs.empty();
129
132
  const firstNullifier = new Nullifier(new Fr(seed + 1), Fr.ZERO, 0);
130
- data.constants.txContext.gasSettings = GasSettings.default({
131
- maxFeesPerGas: new GasFees(10, 10),
132
- maxPriorityFeesPerGas,
133
- });
133
+ data.constants.anchorBlockHeader = anchorBlockHeader;
134
+ data.constants.txContext.gasSettings = GasSettings.default({ maxFeesPerGas, maxPriorityFeesPerGas });
134
135
  data.feePayer = feePayer ?? (await AztecAddress.random());
135
136
  data.gasUsed = gasUsed;
136
137
  data.constants.txContext.chainId = chainId;
@@ -400,38 +401,47 @@ export async function mockCheckpointAndMessages(
400
401
  {
401
402
  startBlockNumber = BlockNumber(1),
402
403
  numBlocks = 1,
404
+ blocks,
403
405
  numTxsPerBlock = 1,
404
406
  numL1ToL2Messages = 1,
405
407
  makeBlockOptions = () => ({}),
406
408
  previousArchive,
409
+ maxEffects,
407
410
  ...options
408
411
  }: {
409
412
  startBlockNumber?: BlockNumber;
410
413
  numBlocks?: number;
411
414
  numTxsPerBlock?: number;
412
415
  numL1ToL2Messages?: number;
413
- makeBlockOptions?: (blockNumber: BlockNumber) => Partial<Parameters<typeof L2BlockNew.random>[1]>;
416
+ makeBlockOptions?: (blockNumber: BlockNumber) => Partial<Parameters<typeof L2Block.random>[1]>;
414
417
  previousArchive?: AppendOnlyTreeSnapshot;
418
+ blocks?: L2Block[];
419
+ maxEffects?: number;
415
420
  } & Partial<Parameters<typeof Checkpoint.random>[1]> &
416
- Partial<Parameters<typeof L2BlockNew.random>[1]> = {},
421
+ Partial<Parameters<typeof L2Block.random>[1]> = {},
417
422
  ) {
418
- const slotNumber = options.slotNumber ?? SlotNumber(checkpointNumber * 10);
423
+ const slotNumber = options.slotNumber ?? SlotNumber(Number(checkpointNumber) * 10);
419
424
  const blocksAndMessages = [];
420
425
  // Track the previous block's archive to ensure consecutive blocks have consistent archive roots.
421
426
  // The current block's header.lastArchive must equal the previous block's archive.
422
427
  let lastArchive: AppendOnlyTreeSnapshot | undefined = previousArchive;
423
- for (let i = 0; i < numBlocks; i++) {
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++) {
424
431
  const blockNumber = BlockNumber(startBlockNumber + i);
425
432
  const { block, messages } = {
426
- block: await L2BlockNew.random(blockNumber, {
427
- checkpointNumber,
428
- indexWithinCheckpoint: i,
429
- txsPerBlock: numTxsPerBlock,
430
- slotNumber,
431
- ...options,
432
- ...makeBlockOptions(blockNumber),
433
- ...(lastArchive ? { lastArchive } : {}),
434
- }),
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
+ })),
435
445
  messages: mockL1ToL2Messages(numL1ToL2Messages),
436
446
  };
437
447
  // Update lastArchive for the next block
@@ -489,7 +499,7 @@ export interface MakeConsensusPayloadOptions {
489
499
  signer?: Secp256k1Signer;
490
500
  attesterSigner?: Secp256k1Signer;
491
501
  proposerSigner?: Secp256k1Signer;
492
- header?: L2BlockHeader;
502
+ header?: CheckpointHeader;
493
503
  archive?: Fr;
494
504
  txHashes?: TxHash[];
495
505
  txs?: Tx[];
@@ -497,8 +507,8 @@ export interface MakeConsensusPayloadOptions {
497
507
 
498
508
  export interface MakeBlockProposalOptions {
499
509
  signer?: Secp256k1Signer;
500
- blockHeader?: L2BlockHeader;
501
- indexWithinCheckpoint?: number;
510
+ blockHeader?: BlockHeader;
511
+ indexWithinCheckpoint?: IndexWithinCheckpoint;
502
512
  inHash?: Fr;
503
513
  archiveRoot?: Fr;
504
514
  txHashes?: TxHash[];
@@ -511,8 +521,8 @@ export interface MakeCheckpointProposalOptions {
511
521
  archiveRoot?: Fr;
512
522
  /** Options for the lastBlock - if undefined, no lastBlock is included */
513
523
  lastBlock?: {
514
- blockHeader?: L2BlockHeader;
515
- indexWithinCheckpoint?: number;
524
+ blockHeader?: BlockHeader;
525
+ indexWithinCheckpoint?: IndexWithinCheckpoint;
516
526
  txHashes?: TxHash[];
517
527
  txs?: Tx[];
518
528
  };
@@ -523,18 +533,18 @@ const makeAndSignConsensusPayload = (
523
533
  domainSeparator: SignatureDomainSeparator,
524
534
  options?: MakeConsensusPayloadOptions,
525
535
  ) => {
526
- const header = options?.header ?? makeL2BlockHeader(1);
536
+ const header = options?.header ?? makeCheckpointHeader(1);
527
537
  const { signer = Secp256k1Signer.random(), archive = Fr.random() } = options ?? {};
528
538
 
529
539
  const payload = ConsensusPayload.fromFields({
530
- header: header.toCheckpointHeader(),
540
+ header,
531
541
  archive,
532
542
  });
533
543
 
534
544
  const hash = getHashedSignaturePayloadEthSignedMessage(payload, domainSeparator);
535
545
  const signature = signer.sign(hash);
536
546
 
537
- return { blockNumber: header.globalVariables.blockNumber, payload, signature };
547
+ return { blockNumber: header.slotNumber, payload, signature };
538
548
  };
539
549
 
540
550
  export const makeAndSignCommitteeAttestationsAndSigners = (
@@ -549,9 +559,8 @@ export const makeAndSignCommitteeAttestationsAndSigners = (
549
559
  };
550
560
 
551
561
  export const makeBlockProposal = (options?: MakeBlockProposalOptions): Promise<BlockProposal> => {
552
- const l2BlockHeader = options?.blockHeader ?? makeL2BlockHeader(1);
553
- const blockHeader = l2BlockHeader.toBlockHeader();
554
- const indexWithinCheckpoint = options?.indexWithinCheckpoint ?? 0;
562
+ const blockHeader = options?.blockHeader ?? makeBlockHeader(1);
563
+ const indexWithinCheckpoint = options?.indexWithinCheckpoint ?? IndexWithinCheckpoint(0);
555
564
  const inHash = options?.inHash ?? Fr.random();
556
565
  const archiveRoot = options?.archiveRoot ?? Fr.random();
557
566
  const txHashes = options?.txHashes ?? [0, 1, 2, 3, 4, 5].map(() => TxHash.random());
@@ -565,21 +574,21 @@ export const makeBlockProposal = (options?: MakeBlockProposalOptions): Promise<B
565
574
  archiveRoot,
566
575
  txHashes,
567
576
  txs,
568
- payload => Promise.resolve(signer.signMessage(payload)),
577
+ (_payload, _context) => Promise.resolve(signer.signMessage(_payload)),
569
578
  );
570
579
  };
571
580
 
572
581
  export const makeCheckpointProposal = (options?: MakeCheckpointProposalOptions): Promise<CheckpointProposal> => {
573
- const l2BlockHeader = options?.lastBlock?.blockHeader ?? makeL2BlockHeader(1);
574
- const checkpointHeader = options?.checkpointHeader ?? l2BlockHeader.toCheckpointHeader();
582
+ const blockHeader = options?.lastBlock?.blockHeader ?? makeBlockHeader(1);
583
+ const checkpointHeader = options?.checkpointHeader ?? makeCheckpointHeader(1);
575
584
  const archiveRoot = options?.archiveRoot ?? Fr.random();
576
585
  const signer = options?.signer ?? Secp256k1Signer.random();
577
586
 
578
587
  // Build lastBlock info if provided
579
588
  const lastBlockInfo = options?.lastBlock
580
589
  ? {
581
- blockHeader: l2BlockHeader.toBlockHeader(),
582
- indexWithinCheckpoint: options.lastBlock.indexWithinCheckpoint ?? 4, // Last block in a 5-block checkpoint
590
+ blockHeader,
591
+ indexWithinCheckpoint: options.lastBlock.indexWithinCheckpoint ?? IndexWithinCheckpoint(4), // Last block in a 5-block checkpoint
583
592
  txHashes: options.lastBlock.txHashes ?? [0, 1, 2, 3, 4, 5].map(() => TxHash.random()),
584
593
  txs: options.lastBlock.txs,
585
594
  }
@@ -605,7 +614,7 @@ export type MakeCheckpointAttestationOptions = {
605
614
  * Create a checkpoint attestation for testing
606
615
  */
607
616
  export const makeCheckpointAttestation = (options: MakeCheckpointAttestationOptions = {}): CheckpointAttestation => {
608
- const header = options.header ?? makeL2BlockHeader(1).toCheckpointHeader();
617
+ const header = options.header ?? makeCheckpointHeader(1);
609
618
  const archive = options.archive ?? Fr.random();
610
619
  const { signer, attesterSigner = signer, proposerSigner = signer } = options;
611
620
 
@@ -669,13 +678,20 @@ export const makeCheckpointAttestationFromCheckpoint = (
669
678
 
670
679
  /**
671
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.
672
682
  */
673
683
  export const makeCheckpointAttestationFromBlock = (
674
684
  block: L2Block,
675
685
  attesterSigner?: Secp256k1Signer,
676
686
  proposerSigner?: Secp256k1Signer,
677
687
  ): CheckpointAttestation => {
678
- const header = block.header.toCheckpointHeader();
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
+ });
679
695
  const archive = block.archive.root;
680
696
 
681
697
  return makeCheckpointAttestation({ header, archive, attesterSigner, proposerSigner });
@@ -684,7 +700,7 @@ export const makeCheckpointAttestationFromBlock = (
684
700
  export async function randomPublishedL2Block(
685
701
  l2BlockNumber: number,
686
702
  opts: { signers?: Secp256k1Signer[] } = {},
687
- ): Promise<PublishedL2Block> {
703
+ ): Promise<CheckpointedL2Block> {
688
704
  const block = await L2Block.random(BlockNumber(l2BlockNumber));
689
705
  const l1 = L1PublishedData.fromFields({
690
706
  blockNumber: BigInt(block.number),
@@ -693,15 +709,19 @@ export async function randomPublishedL2Block(
693
709
  });
694
710
 
695
711
  const signers = opts.signers ?? times(3, () => Secp256k1Signer.random());
712
+ const checkpoint = await Checkpoint.random(CheckpointNumber.fromBlockNumber(BlockNumber(l2BlockNumber)), {
713
+ numBlocks: 0,
714
+ });
715
+ checkpoint.blocks = [block];
696
716
  const atts = signers.map(signer =>
697
717
  makeCheckpointAttestation({
698
718
  signer,
699
719
  archive: block.archive.root,
700
- header: block.header.toCheckpointHeader(),
720
+ header: checkpoint.header,
701
721
  }),
702
722
  );
703
723
  const attestations = atts.map(
704
724
  (attestation, i) => new CommitteeAttestation(signers[i].address, attestation.signature),
705
725
  );
706
- return new PublishedL2Block(block, l1, attestations);
726
+ return new CheckpointedL2Block(CheckpointNumber.fromBlockNumber(BlockNumber(l2BlockNumber)), block, l1, attestations);
707
727
  }
@@ -11,13 +11,14 @@ 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 {
20
- private _cachedHash?: Promise<Fr>;
21
+ private _cachedHash?: Promise<BlockHash>;
21
22
 
22
23
  constructor(
23
24
  /** Snapshot of archive before the block is applied. */
@@ -161,13 +162,20 @@ export class BlockHeader {
161
162
  return BlockHeader.fromBuffer(hexToBuffer(str));
162
163
  }
163
164
 
164
- hash(): Promise<Fr> {
165
+ hash(): Promise<BlockHash> {
165
166
  if (!this._cachedHash) {
166
- this._cachedHash = poseidon2HashWithSeparator(this.toFields(), GeneratorIndex.BLOCK_HASH);
167
+ this._cachedHash = poseidon2HashWithSeparator(this.toFields(), GeneratorIndex.BLOCK_HEADER_HASH).then(
168
+ fr => new BlockHash(fr),
169
+ );
167
170
  }
168
171
  return this._cachedHash;
169
172
  }
170
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));
177
+ }
178
+
171
179
  static random(overrides: Partial<FieldsOf<BlockHeader>> & Partial<FieldsOf<GlobalVariables>> = {}): BlockHeader {
172
180
  return BlockHeader.from({
173
181
  lastArchive: AppendOnlyTreeSnapshot.random(),
@@ -1,8 +1,9 @@
1
1
  import { BlockNumber } from '@aztec/foundation/branded-types';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
3
  import { schemas } from '@aztec/foundation/schemas';
3
4
  import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
4
5
 
5
- import { L2BlockHash } from '../block/block_hash.js';
6
+ import { BlockHash } from '../block/block_hash.js';
6
7
  import { type DataInBlock, dataInBlockSchemaFor, randomDataInBlock } from '../block/in_block.js';
7
8
  import { TxEffect } from './tx_effect.js';
8
9
 
@@ -26,7 +27,7 @@ export function serializeIndexedTxEffect(effect: IndexedTxEffect): Buffer {
26
27
  export function deserializeIndexedTxEffect(buffer: Buffer): IndexedTxEffect {
27
28
  const reader = BufferReader.asReader(buffer);
28
29
 
29
- const l2BlockHash = reader.readObject(L2BlockHash);
30
+ const l2BlockHash = new BlockHash(reader.readObject(Fr));
30
31
  const l2BlockNumber = BlockNumber(reader.readNumber());
31
32
  const txIndexInBlock = reader.readNumber();
32
33
  const data = reader.readObject(TxEffect);
@@ -79,7 +79,7 @@ export class CountedContractClassLog implements IsEmpty {
79
79
  export class PrivateExecutionResult {
80
80
  constructor(
81
81
  public entrypoint: PrivateCallExecutionResult,
82
- /** The first non revertible nullifier, or zero if there was none. */
82
+ /** The first non-revertible nullifier emitted by any private call, or the protocol nullifier if there was none. */
83
83
  public firstNullifier: Fr,
84
84
  /** An array of calldata for the enqueued public function calls and the teardown function call. */
85
85
  public publicFunctionCalldata: HashedValues[],
@@ -6,9 +6,35 @@ import { z } from 'zod';
6
6
  import type { AztecNode } from '../interfaces/aztec-node.js';
7
7
  import { type PrivateExecutionStep, PrivateExecutionStepSchema } from '../kernel/private_kernel_prover_output.js';
8
8
 
9
- export type NodeStats = Partial<Record<keyof AztecNode, { times: number[] }>>;
9
+ export type RoundTripStats = {
10
+ /** Number of round trips (times we blocked waiting for node responses) */
11
+ roundTrips: number;
12
+ /** Total wall-clock time spent waiting on node (excludes parallel overlap) */
13
+ totalBlockingTime: number;
14
+ /** Individual round trip durations */
15
+ roundTripDurations: number[];
16
+ /** Methods called in each round trip (parallel calls grouped together) */
17
+ roundTripMethods: string[][];
18
+ };
19
+
20
+ const RoundTripStatsSchema = z.object({
21
+ roundTrips: z.number(),
22
+ totalBlockingTime: z.number(),
23
+ roundTripDurations: z.array(z.number()),
24
+ roundTripMethods: z.array(z.array(z.string())),
25
+ });
26
+
27
+ export type NodeStats = {
28
+ /** Per-method call stats */
29
+ perMethod: Partial<Record<keyof AztecNode, { times: number[] }>>;
30
+ /** Round trip stats tracking actual blocking waits */
31
+ roundTrips: RoundTripStats;
32
+ };
10
33
 
11
- const NodeStatsSchema = z.record(z.string(), z.object({ times: z.array(z.number()) }));
34
+ const NodeStatsSchema = z.object({
35
+ perMethod: z.record(z.string(), z.object({ times: z.array(z.number()) })),
36
+ roundTrips: RoundTripStatsSchema,
37
+ });
12
38
 
13
39
  type FunctionTiming = {
14
40
  functionName: string;
@@ -105,7 +131,15 @@ export class TxProfileResult {
105
131
  },
106
132
  ],
107
133
  {
108
- nodeRPCCalls: { getBlockHeader: { times: [1] } },
134
+ nodeRPCCalls: {
135
+ perMethod: { getBlockHeader: { times: [1] } },
136
+ roundTrips: {
137
+ roundTrips: 1,
138
+ totalBlockingTime: 1,
139
+ roundTripDurations: [1],
140
+ roundTripMethods: [['getBlockHeader']],
141
+ },
142
+ },
109
143
  timings: {
110
144
  sync: 1,
111
145
  proving: 1,
@@ -140,7 +174,15 @@ export class UtilitySimulationResult {
140
174
 
141
175
  static random(): UtilitySimulationResult {
142
176
  return new UtilitySimulationResult([Fr.random()], {
143
- nodeRPCCalls: { getBlockHeader: { times: [1] } },
177
+ nodeRPCCalls: {
178
+ perMethod: { getBlockHeader: { times: [1] } },
179
+ roundTrips: {
180
+ roundTrips: 1,
181
+ totalBlockingTime: 1,
182
+ roundTripDurations: [1],
183
+ roundTripMethods: [['getBlockHeader']],
184
+ },
185
+ },
144
186
  timings: {
145
187
  sync: 1,
146
188
  publicSimulation: 1,