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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (716) hide show
  1. package/dest/abi/abi.d.ts +602 -4
  2. package/dest/abi/abi.d.ts.map +1 -1
  3. package/dest/abi/abi.js +7 -7
  4. package/dest/abi/contract_artifact.d.ts +2 -2
  5. package/dest/abi/contract_artifact.d.ts.map +1 -1
  6. package/dest/abi/contract_artifact.js +1 -1
  7. package/dest/abi/function_call.d.ts +47 -9
  8. package/dest/abi/function_call.d.ts.map +1 -1
  9. package/dest/abi/function_call.js +20 -3
  10. package/dest/abi/function_selector.d.ts +2 -1
  11. package/dest/abi/function_selector.d.ts.map +1 -1
  12. package/dest/abi/function_selector.js +7 -0
  13. package/dest/abi/selector.js +3 -1
  14. package/dest/abi/utils.d.ts +7 -1
  15. package/dest/abi/utils.d.ts.map +1 -1
  16. package/dest/abi/utils.js +7 -0
  17. package/dest/auth_witness/auth_witness.d.ts +2 -1
  18. package/dest/auth_witness/auth_witness.d.ts.map +1 -1
  19. package/dest/avm/avm.d.ts +62 -62
  20. package/dest/avm/avm.js +1 -1
  21. package/dest/avm/avm_accumulated_data.d.ts +30 -3
  22. package/dest/avm/avm_accumulated_data.d.ts.map +1 -1
  23. package/dest/avm/avm_accumulated_data.js +5 -2
  24. package/dest/avm/avm_circuit_public_inputs.d.ts +9 -9
  25. package/dest/avm/avm_circuit_public_inputs.js +3 -1
  26. package/dest/avm/avm_proving_request.d.ts +299 -299
  27. package/dest/avm/contract_storage_read.d.ts +13 -1
  28. package/dest/avm/contract_storage_read.d.ts.map +1 -1
  29. package/dest/avm/contract_storage_update_request.d.ts +13 -1
  30. package/dest/avm/contract_storage_update_request.d.ts.map +1 -1
  31. package/dest/avm/public_call_stack_item_compressed.d.ts +3 -1
  32. package/dest/avm/public_call_stack_item_compressed.d.ts.map +1 -1
  33. package/dest/avm/public_data_read.d.ts +10 -1
  34. package/dest/avm/public_data_read.d.ts.map +1 -1
  35. package/dest/avm/public_data_update_request.d.ts +10 -1
  36. package/dest/avm/public_data_update_request.d.ts.map +1 -1
  37. package/dest/avm/public_data_update_request.js +3 -1
  38. package/dest/avm/public_data_write.d.ts +7 -1
  39. package/dest/avm/public_data_write.d.ts.map +1 -1
  40. package/dest/avm/public_inner_call_request.d.ts +4 -1
  41. package/dest/avm/public_inner_call_request.d.ts.map +1 -1
  42. package/dest/avm/public_inner_call_request.js +3 -1
  43. package/dest/avm/revert_code.d.ts +4 -4
  44. package/dest/avm/revert_code.d.ts.map +1 -1
  45. package/dest/avm/revert_code.js +3 -1
  46. package/dest/aztec-address/index.js +4 -2
  47. package/dest/block/attestation_info.d.ts +5 -5
  48. package/dest/block/attestation_info.d.ts.map +1 -1
  49. package/dest/block/attestation_info.js +4 -4
  50. package/dest/block/block_hash.d.ts +18 -14
  51. package/dest/block/block_hash.d.ts.map +1 -1
  52. package/dest/block/block_hash.js +22 -20
  53. package/dest/block/block_parameter.d.ts +4 -3
  54. package/dest/block/block_parameter.d.ts.map +1 -1
  55. package/dest/block/block_parameter.js +2 -0
  56. package/dest/block/body.d.ts +1 -1
  57. package/dest/block/body.d.ts.map +1 -1
  58. package/dest/block/body.js +5 -2
  59. package/dest/block/checkpointed_l2_block.d.ts +150 -0
  60. package/dest/block/checkpointed_l2_block.d.ts.map +1 -0
  61. package/dest/block/checkpointed_l2_block.js +46 -0
  62. package/dest/block/in_block.d.ts +9 -9
  63. package/dest/block/in_block.d.ts.map +1 -1
  64. package/dest/block/in_block.js +5 -5
  65. package/dest/block/index.d.ts +2 -4
  66. package/dest/block/index.d.ts.map +1 -1
  67. package/dest/block/index.js +1 -3
  68. package/dest/block/l2_block.d.ts +57 -57
  69. package/dest/block/l2_block.d.ts.map +1 -1
  70. package/dest/block/l2_block.js +64 -108
  71. package/dest/block/l2_block_source.d.ts +344 -90
  72. package/dest/block/l2_block_source.d.ts.map +1 -1
  73. package/dest/block/l2_block_source.js +25 -6
  74. package/dest/block/l2_block_stream/index.d.ts +2 -1
  75. package/dest/block/l2_block_stream/index.d.ts.map +1 -1
  76. package/dest/block/l2_block_stream/index.js +1 -0
  77. package/dest/block/l2_block_stream/interfaces.d.ts +15 -5
  78. package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
  79. package/dest/block/l2_block_stream/l2_block_stream.d.ts +13 -3
  80. package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
  81. package/dest/block/l2_block_stream/l2_block_stream.js +115 -32
  82. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts +24 -16
  83. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts.map +1 -1
  84. package/dest/block/l2_block_stream/l2_tips_memory_store.js +55 -61
  85. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +49 -0
  86. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -0
  87. package/dest/block/l2_block_stream/l2_tips_store_base.js +179 -0
  88. package/dest/block/test/l2_tips_store_test_suite.d.ts +1 -1
  89. package/dest/block/test/l2_tips_store_test_suite.d.ts.map +1 -1
  90. package/dest/block/test/l2_tips_store_test_suite.js +478 -41
  91. package/dest/block/validate_block_result.d.ts +24 -24
  92. package/dest/block/validate_block_result.d.ts.map +1 -1
  93. package/dest/block/validate_block_result.js +18 -17
  94. package/dest/checkpoint/checkpoint.d.ts +45 -20
  95. package/dest/checkpoint/checkpoint.d.ts.map +1 -1
  96. package/dest/checkpoint/checkpoint.js +59 -8
  97. package/dest/checkpoint/checkpoint_info.d.ts +38 -0
  98. package/dest/checkpoint/checkpoint_info.d.ts.map +1 -0
  99. package/dest/checkpoint/checkpoint_info.js +34 -0
  100. package/dest/checkpoint/index.d.ts +2 -1
  101. package/dest/checkpoint/index.d.ts.map +1 -1
  102. package/dest/checkpoint/index.js +1 -0
  103. package/dest/checkpoint/published_checkpoint.d.ts +30 -22
  104. package/dest/checkpoint/published_checkpoint.d.ts.map +1 -1
  105. package/dest/checkpoint/published_checkpoint.js +14 -3
  106. package/dest/config/index.d.ts +2 -1
  107. package/dest/config/index.d.ts.map +1 -1
  108. package/dest/config/index.js +1 -0
  109. package/dest/config/node-rpc-config.js +1 -1
  110. package/dest/config/sequencer-config.d.ts +10 -0
  111. package/dest/config/sequencer-config.d.ts.map +1 -0
  112. package/dest/config/sequencer-config.js +12 -0
  113. package/dest/contract/complete_address.d.ts +4 -1
  114. package/dest/contract/complete_address.d.ts.map +1 -1
  115. package/dest/contract/contract_address.js +1 -1
  116. package/dest/contract/contract_class_id.d.ts +1 -1
  117. package/dest/contract/contract_class_id.js +2 -2
  118. package/dest/contract/contract_deployment_data.d.ts +5 -5
  119. package/dest/contract/index.d.ts +1 -3
  120. package/dest/contract/index.d.ts.map +1 -1
  121. package/dest/contract/index.js +0 -2
  122. package/dest/contract/interfaces/contract_class.d.ts +11 -13
  123. package/dest/contract/interfaces/contract_class.d.ts.map +1 -1
  124. package/dest/contract/interfaces/contract_class.js +18 -18
  125. package/dest/contract/interfaces/contract_instance.d.ts +28 -29
  126. package/dest/contract/interfaces/contract_instance.d.ts.map +1 -1
  127. package/dest/contract/interfaces/contract_instance.js +5 -5
  128. package/dest/contract/interfaces/contract_instance_update.d.ts +6 -7
  129. package/dest/contract/interfaces/contract_instance_update.d.ts.map +1 -1
  130. package/dest/contract/interfaces/contract_instance_update.js +5 -5
  131. package/dest/contract/private_function.d.ts +1 -1
  132. package/dest/contract/private_function.d.ts.map +1 -1
  133. package/dest/contract/private_function.js +2 -3
  134. package/dest/contract/private_function_membership_proof.d.ts +1 -1
  135. package/dest/contract/private_function_membership_proof.js +1 -1
  136. package/dest/database-version/database_version.d.ts +58 -0
  137. package/dest/database-version/database_version.d.ts.map +1 -0
  138. package/dest/database-version/database_version.js +69 -0
  139. package/dest/database-version/version_manager.d.ts +3 -49
  140. package/dest/database-version/version_manager.d.ts.map +1 -1
  141. package/dest/database-version/version_manager.js +1 -64
  142. package/dest/delayed_public_mutable/delayed_public_mutable_values.d.ts +2 -2
  143. package/dest/delayed_public_mutable/delayed_public_mutable_values.d.ts.map +1 -1
  144. package/dest/delayed_public_mutable/delayed_public_mutable_values.js +7 -10
  145. package/dest/deserialization/index.d.ts +11 -0
  146. package/dest/deserialization/index.d.ts.map +1 -0
  147. package/dest/deserialization/index.js +10 -0
  148. package/dest/epoch-helpers/index.d.ts +7 -1
  149. package/dest/epoch-helpers/index.d.ts.map +1 -1
  150. package/dest/epoch-helpers/index.js +12 -6
  151. package/dest/errors/proving_error.d.ts +2 -2
  152. package/dest/errors/proving_error.d.ts.map +1 -1
  153. package/dest/gas/gas.js +3 -1
  154. package/dest/gas/gas_fees.js +3 -1
  155. package/dest/hash/hash.d.ts +1 -9
  156. package/dest/hash/hash.d.ts.map +1 -1
  157. package/dest/hash/hash.js +2 -14
  158. package/dest/hash/map_slot.d.ts +1 -1
  159. package/dest/hash/map_slot.d.ts.map +1 -1
  160. package/dest/hash/map_slot.js +4 -3
  161. package/dest/interfaces/allowed_element.d.ts +7 -8
  162. package/dest/interfaces/allowed_element.d.ts.map +1 -1
  163. package/dest/interfaces/allowed_element.js +3 -3
  164. package/dest/interfaces/api_limit.d.ts +3 -1
  165. package/dest/interfaces/api_limit.d.ts.map +1 -1
  166. package/dest/interfaces/api_limit.js +2 -0
  167. package/dest/interfaces/archiver.d.ts +6 -6
  168. package/dest/interfaces/archiver.d.ts.map +1 -1
  169. package/dest/interfaces/archiver.js +25 -15
  170. package/dest/interfaces/aztec-node-admin.d.ts +110 -41
  171. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  172. package/dest/interfaces/aztec-node-admin.js +6 -4
  173. package/dest/interfaces/aztec-node.d.ts +77 -79
  174. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  175. package/dest/interfaces/aztec-node.js +16 -17
  176. package/dest/interfaces/block-builder.d.ts +22 -13
  177. package/dest/interfaces/block-builder.d.ts.map +1 -1
  178. package/dest/interfaces/block-builder.js +16 -1
  179. package/dest/interfaces/configs.d.ts +56 -27
  180. package/dest/interfaces/configs.d.ts.map +1 -1
  181. package/dest/interfaces/configs.js +12 -6
  182. package/dest/interfaces/get_logs_response.d.ts +27 -5
  183. package/dest/interfaces/get_logs_response.d.ts.map +1 -1
  184. package/dest/interfaces/get_logs_response.js +5 -4
  185. package/dest/interfaces/l2_logs_source.d.ts +21 -8
  186. package/dest/interfaces/l2_logs_source.d.ts.map +1 -1
  187. package/dest/interfaces/merkle_tree_operations.d.ts +2 -2
  188. package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
  189. package/dest/interfaces/p2p.d.ts +7 -9
  190. package/dest/interfaces/p2p.d.ts.map +1 -1
  191. package/dest/interfaces/p2p.js +3 -4
  192. package/dest/interfaces/prover-broker.d.ts +16 -1
  193. package/dest/interfaces/prover-broker.d.ts.map +1 -1
  194. package/dest/interfaces/prover-broker.js +4 -1
  195. package/dest/interfaces/prover-client.d.ts +19 -3
  196. package/dest/interfaces/prover-client.d.ts.map +1 -1
  197. package/dest/interfaces/prover-client.js +16 -4
  198. package/dest/interfaces/proving-job.d.ts +218 -218
  199. package/dest/interfaces/proving-job.d.ts.map +1 -1
  200. package/dest/interfaces/proving-job.js +1 -7
  201. package/dest/interfaces/server_circuit_prover.d.ts +4 -3
  202. package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
  203. package/dest/interfaces/slasher.d.ts +9 -1
  204. package/dest/interfaces/slasher.d.ts.map +1 -1
  205. package/dest/interfaces/slasher.js +5 -3
  206. package/dest/interfaces/tx_provider.d.ts +3 -3
  207. package/dest/interfaces/tx_provider.d.ts.map +1 -1
  208. package/dest/interfaces/validator.d.ts +161 -26
  209. package/dest/interfaces/validator.d.ts.map +1 -1
  210. package/dest/interfaces/validator.js +12 -7
  211. package/dest/interfaces/world_state.d.ts +17 -8
  212. package/dest/interfaces/world_state.d.ts.map +1 -1
  213. package/dest/kernel/claimed_length_array.js +3 -1
  214. package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts +6 -5
  215. package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts.map +1 -1
  216. package/dest/kernel/hints/build_note_hash_read_request_hints.js +19 -10
  217. package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts +3 -3
  218. package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts.map +1 -1
  219. package/dest/kernel/hints/build_nullifier_read_request_hints.js +16 -8
  220. package/dest/kernel/hints/find_private_kernel_reset_dimensions.d.ts +1 -1
  221. package/dest/kernel/hints/find_private_kernel_reset_dimensions.d.ts.map +1 -1
  222. package/dest/kernel/hints/find_private_kernel_reset_dimensions.js +1 -3
  223. package/dest/kernel/hints/key_validation_hint.d.ts +2 -1
  224. package/dest/kernel/hints/key_validation_hint.d.ts.map +1 -1
  225. package/dest/kernel/hints/key_validation_request.d.ts +2 -1
  226. package/dest/kernel/hints/key_validation_request.d.ts.map +1 -1
  227. package/dest/kernel/hints/key_validation_request_and_generator.d.ts +6 -1
  228. package/dest/kernel/hints/key_validation_request_and_generator.d.ts.map +1 -1
  229. package/dest/kernel/hints/private_kernel_reset_hints.d.ts +13 -1
  230. package/dest/kernel/hints/private_kernel_reset_hints.d.ts.map +1 -1
  231. package/dest/kernel/hints/read_request.d.ts +7 -1
  232. package/dest/kernel/hints/read_request.d.ts.map +1 -1
  233. package/dest/kernel/hints/read_request_hints.d.ts +7 -1
  234. package/dest/kernel/hints/read_request_hints.d.ts.map +1 -1
  235. package/dest/kernel/hints/transient_data_squashing_hint.js +3 -1
  236. package/dest/kernel/log_hash.js +3 -1
  237. package/dest/kernel/private_accumulated_data.d.ts +23 -1
  238. package/dest/kernel/private_accumulated_data.d.ts.map +1 -1
  239. package/dest/kernel/private_call_data.d.ts +25 -1
  240. package/dest/kernel/private_call_data.d.ts.map +1 -1
  241. package/dest/kernel/private_call_request.d.ts +16 -1
  242. package/dest/kernel/private_call_request.d.ts.map +1 -1
  243. package/dest/kernel/private_circuit_public_inputs.d.ts +120 -47
  244. package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
  245. package/dest/kernel/private_circuit_public_inputs.js +59 -59
  246. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts +31 -1
  247. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts.map +1 -1
  248. package/dest/kernel/private_kernel_data.d.ts +7 -1
  249. package/dest/kernel/private_kernel_data.d.ts.map +1 -1
  250. package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts +22 -1
  251. package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts.map +1 -1
  252. package/dest/kernel/private_kernel_inner_circuit_private_inputs.d.ts +7 -1
  253. package/dest/kernel/private_kernel_inner_circuit_private_inputs.d.ts.map +1 -1
  254. package/dest/kernel/private_kernel_reset_circuit_private_inputs.d.ts +4 -1
  255. package/dest/kernel/private_kernel_reset_circuit_private_inputs.d.ts.map +1 -1
  256. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts +10 -1
  257. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts.map +1 -1
  258. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts +23 -1
  259. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts.map +1 -1
  260. package/dest/kernel/private_log_data.js +5 -2
  261. package/dest/kernel/private_to_avm_accumulated_data.d.ts +2 -2
  262. package/dest/kernel/private_to_avm_accumulated_data.js +5 -2
  263. package/dest/kernel/private_to_public_accumulated_data.js +3 -1
  264. package/dest/kernel/private_to_rollup_accumulated_data.d.ts +17 -1
  265. package/dest/kernel/private_to_rollup_accumulated_data.d.ts.map +1 -1
  266. package/dest/kernel/private_to_rollup_accumulated_data.js +3 -1
  267. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts +16 -1
  268. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts.map +1 -1
  269. package/dest/kernel/private_validation_requests.d.ts +10 -1
  270. package/dest/kernel/private_validation_requests.d.ts.map +1 -1
  271. package/dest/kernel/private_validation_requests.js +3 -1
  272. package/dest/kernel/public_call_request.d.ts +22 -1
  273. package/dest/kernel/public_call_request.d.ts.map +1 -1
  274. package/dest/kernel/public_call_request.js +5 -2
  275. package/dest/kernel/utils/optional_number.d.ts +7 -1
  276. package/dest/kernel/utils/optional_number.d.ts.map +1 -1
  277. package/dest/keys/derivation.d.ts +3 -3
  278. package/dest/keys/derivation.js +8 -8
  279. package/dest/keys/key_types.d.ts +1 -1
  280. package/dest/keys/public_keys.d.ts +5 -1
  281. package/dest/keys/public_keys.d.ts.map +1 -1
  282. package/dest/keys/utils.d.ts +1 -1
  283. package/dest/keys/utils.d.ts.map +1 -1
  284. package/dest/keys/utils.js +7 -3
  285. package/dest/l1-contracts/slash_factory.d.ts +1 -1
  286. package/dest/l1-contracts/slash_factory.d.ts.map +1 -1
  287. package/dest/l1-contracts/slash_factory.js +1 -0
  288. package/dest/logs/contract_class_log.js +3 -1
  289. package/dest/logs/extended_contract_class_log.d.ts +3 -1
  290. package/dest/logs/extended_contract_class_log.d.ts.map +1 -1
  291. package/dest/logs/extended_public_log.d.ts +17 -3
  292. package/dest/logs/extended_public_log.d.ts.map +1 -1
  293. package/dest/logs/index.d.ts +3 -2
  294. package/dest/logs/index.d.ts.map +1 -1
  295. package/dest/logs/index.js +2 -1
  296. package/dest/logs/log_id.d.ts +22 -7
  297. package/dest/logs/log_id.d.ts.map +1 -1
  298. package/dest/logs/log_id.js +23 -13
  299. package/dest/logs/private_log.d.ts +1 -1
  300. package/dest/logs/private_log.d.ts.map +1 -1
  301. package/dest/logs/private_log.js +5 -2
  302. package/dest/logs/public_log.js +3 -1
  303. package/dest/logs/siloed_tag.d.ts +23 -0
  304. package/dest/logs/siloed_tag.d.ts.map +1 -0
  305. package/dest/logs/siloed_tag.js +31 -0
  306. package/dest/logs/tag.d.ts +21 -0
  307. package/dest/logs/tag.d.ts.map +1 -0
  308. package/dest/logs/tag.js +30 -0
  309. package/dest/logs/tx_scoped_l2_log.d.ts +24 -33
  310. package/dest/logs/tx_scoped_l2_log.d.ts.map +1 -1
  311. package/dest/logs/tx_scoped_l2_log.js +37 -43
  312. package/dest/messaging/in_hash.d.ts +4 -2
  313. package/dest/messaging/in_hash.d.ts.map +1 -1
  314. package/dest/messaging/in_hash.js +3 -1
  315. package/dest/messaging/inbox_leaf.d.ts +3 -1
  316. package/dest/messaging/inbox_leaf.d.ts.map +1 -1
  317. package/dest/messaging/l1_actor.d.ts +7 -1
  318. package/dest/messaging/l1_actor.d.ts.map +1 -1
  319. package/dest/messaging/l1_to_l2_message.d.ts +6 -1
  320. package/dest/messaging/l1_to_l2_message.d.ts.map +1 -1
  321. package/dest/messaging/l2_actor.d.ts +7 -1
  322. package/dest/messaging/l2_actor.d.ts.map +1 -1
  323. package/dest/messaging/l2_to_l1_membership.d.ts +88 -6
  324. package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -1
  325. package/dest/messaging/l2_to_l1_membership.js +160 -42
  326. package/dest/messaging/out_hash.d.ts +41 -3
  327. package/dest/messaging/out_hash.d.ts.map +1 -1
  328. package/dest/messaging/out_hash.js +54 -19
  329. package/dest/note/note_dao.d.ts +36 -5
  330. package/dest/note/note_dao.d.ts.map +1 -1
  331. package/dest/note/note_dao.js +15 -12
  332. package/dest/p2p/attestation_utils.d.ts +3 -3
  333. package/dest/p2p/attestation_utils.d.ts.map +1 -1
  334. package/dest/p2p/attestation_utils.js +1 -1
  335. package/dest/p2p/block_proposal.d.ts +102 -23
  336. package/dest/p2p/block_proposal.d.ts.map +1 -1
  337. package/dest/p2p/block_proposal.js +140 -39
  338. package/dest/p2p/checkpoint_attestation.d.ts +81 -0
  339. package/dest/p2p/checkpoint_attestation.d.ts.map +1 -0
  340. package/dest/p2p/{block_attestation.js → checkpoint_attestation.js} +22 -19
  341. package/dest/p2p/checkpoint_proposal.d.ts +174 -0
  342. package/dest/p2p/checkpoint_proposal.d.ts.map +1 -0
  343. package/dest/p2p/checkpoint_proposal.js +238 -0
  344. package/dest/p2p/consensus_payload.d.ts +9 -9
  345. package/dest/p2p/consensus_payload.d.ts.map +1 -1
  346. package/dest/p2p/consensus_payload.js +3 -5
  347. package/dest/p2p/constants.d.ts +5 -0
  348. package/dest/p2p/constants.d.ts.map +1 -0
  349. package/dest/p2p/constants.js +3 -0
  350. package/dest/p2p/gossipable.d.ts +4 -3
  351. package/dest/p2p/gossipable.d.ts.map +1 -1
  352. package/dest/p2p/gossipable.js +16 -5
  353. package/dest/p2p/index.d.ts +5 -2
  354. package/dest/p2p/index.d.ts.map +1 -1
  355. package/dest/p2p/index.js +4 -1
  356. package/dest/p2p/message_validator.d.ts +18 -3
  357. package/dest/p2p/message_validator.d.ts.map +1 -1
  358. package/dest/p2p/message_validator.js +2 -1
  359. package/dest/p2p/signature_utils.d.ts +5 -3
  360. package/dest/p2p/signature_utils.d.ts.map +1 -1
  361. package/dest/p2p/signature_utils.js +3 -1
  362. package/dest/p2p/signed_txs.d.ts +42 -0
  363. package/dest/p2p/signed_txs.d.ts.map +1 -0
  364. package/dest/p2p/signed_txs.js +75 -0
  365. package/dest/p2p/topic_type.d.ts +3 -2
  366. package/dest/p2p/topic_type.d.ts.map +1 -1
  367. package/dest/p2p/topic_type.js +10 -3
  368. package/dest/parity/parity_base_private_inputs.d.ts +3 -1
  369. package/dest/parity/parity_base_private_inputs.d.ts.map +1 -1
  370. package/dest/parity/parity_public_inputs.d.ts +4 -1
  371. package/dest/parity/parity_public_inputs.d.ts.map +1 -1
  372. package/dest/parity/parity_root_private_inputs.d.ts +2 -1
  373. package/dest/parity/parity_root_private_inputs.d.ts.map +1 -1
  374. package/dest/proofs/chonk_proof.d.ts +1 -1
  375. package/dest/proofs/chonk_proof.d.ts.map +1 -1
  376. package/dest/proofs/chonk_proof.js +9 -4
  377. package/dest/proofs/proof.d.ts +4 -1
  378. package/dest/proofs/proof.d.ts.map +1 -1
  379. package/dest/proofs/recursive_proof.d.ts +10 -1
  380. package/dest/proofs/recursive_proof.d.ts.map +1 -1
  381. package/dest/rollup/avm_proof_data.d.ts +1 -3
  382. package/dest/rollup/avm_proof_data.d.ts.map +1 -1
  383. package/dest/rollup/avm_proof_data.js +1 -9
  384. package/dest/rollup/base_rollup_hints.d.ts +34 -1
  385. package/dest/rollup/base_rollup_hints.d.ts.map +1 -1
  386. package/dest/rollup/block_constant_data.d.ts +12 -1
  387. package/dest/rollup/block_constant_data.d.ts.map +1 -1
  388. package/dest/rollup/block_headers_hash.js +1 -1
  389. package/dest/rollup/block_merge_rollup_private_inputs.d.ts +4 -1
  390. package/dest/rollup/block_merge_rollup_private_inputs.d.ts.map +1 -1
  391. package/dest/rollup/block_rollup_public_inputs.d.ts +47 -11
  392. package/dest/rollup/block_rollup_public_inputs.d.ts.map +1 -1
  393. package/dest/rollup/block_rollup_public_inputs.js +8 -12
  394. package/dest/rollup/block_root_rollup_private_inputs.d.ts +64 -1
  395. package/dest/rollup/block_root_rollup_private_inputs.d.ts.map +1 -1
  396. package/dest/rollup/checkpoint_constant_data.d.ts +11 -1
  397. package/dest/rollup/checkpoint_constant_data.d.ts.map +1 -1
  398. package/dest/rollup/checkpoint_constant_data.js +4 -1
  399. package/dest/rollup/checkpoint_header.d.ts +46 -12
  400. package/dest/rollup/checkpoint_header.d.ts.map +1 -1
  401. package/dest/rollup/checkpoint_header.js +53 -20
  402. package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts +4 -1
  403. package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts.map +1 -1
  404. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +46 -6
  405. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -1
  406. package/dest/rollup/checkpoint_rollup_public_inputs.js +11 -3
  407. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts +44 -3
  408. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts.map +1 -1
  409. package/dest/rollup/checkpoint_root_rollup_private_inputs.js +13 -2
  410. package/dest/rollup/epoch_constant_data.d.ts +16 -1
  411. package/dest/rollup/epoch_constant_data.d.ts.map +1 -1
  412. package/dest/rollup/root_rollup_private_inputs.d.ts +6 -1
  413. package/dest/rollup/root_rollup_private_inputs.d.ts.map +1 -1
  414. package/dest/rollup/root_rollup_public_inputs.d.ts +21 -6
  415. package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -1
  416. package/dest/rollup/root_rollup_public_inputs.js +10 -4
  417. package/dest/rollup/tree_snapshot_diff_hints.d.ts +24 -1
  418. package/dest/rollup/tree_snapshot_diff_hints.d.ts.map +1 -1
  419. package/dest/rollup/tx_merge_rollup_private_inputs.d.ts +4 -1
  420. package/dest/rollup/tx_merge_rollup_private_inputs.d.ts.map +1 -1
  421. package/dest/rollup/tx_rollup_public_inputs.d.ts +29 -1
  422. package/dest/rollup/tx_rollup_public_inputs.d.ts.map +1 -1
  423. package/dest/schemas/schemas.d.ts +5 -3
  424. package/dest/schemas/schemas.d.ts.map +1 -1
  425. package/dest/schemas/schemas.js +2 -1
  426. package/dest/slashing/empire.d.ts +1 -1
  427. package/dest/slashing/empire.d.ts.map +1 -1
  428. package/dest/slashing/empire.js +2 -0
  429. package/dest/slashing/helpers.d.ts +2 -2
  430. package/dest/slashing/helpers.d.ts.map +1 -1
  431. package/dest/slashing/helpers.js +6 -0
  432. package/dest/slashing/tally.d.ts +2 -1
  433. package/dest/slashing/tally.d.ts.map +1 -1
  434. package/dest/slashing/tally.js +6 -2
  435. package/dest/slashing/types.d.ts +10 -7
  436. package/dest/slashing/types.d.ts.map +1 -1
  437. package/dest/slashing/types.js +18 -6
  438. package/dest/snapshots/types.d.ts +1 -1
  439. package/dest/snapshots/types.d.ts.map +1 -1
  440. package/dest/snapshots/types.js +5 -5
  441. package/dest/stats/stats.d.ts +10 -8
  442. package/dest/stats/stats.d.ts.map +1 -1
  443. package/dest/tests/factories.d.ts +39 -10
  444. package/dest/tests/factories.d.ts.map +1 -1
  445. package/dest/tests/factories.js +81 -26
  446. package/dest/tests/jest.js +1 -1
  447. package/dest/tests/mocks.d.ts +76 -20
  448. package/dest/tests/mocks.d.ts.map +1 -1
  449. package/dest/tests/mocks.js +139 -60
  450. package/dest/timetable/index.d.ts +37 -0
  451. package/dest/timetable/index.d.ts.map +1 -0
  452. package/dest/timetable/index.js +39 -0
  453. package/dest/trees/append_only_tree_snapshot.d.ts +13 -1
  454. package/dest/trees/append_only_tree_snapshot.d.ts.map +1 -1
  455. package/dest/trees/append_only_tree_snapshot.js +3 -1
  456. package/dest/trees/nullifier_leaf.d.ts +13 -1
  457. package/dest/trees/nullifier_leaf.d.ts.map +1 -1
  458. package/dest/trees/nullifier_membership_witness.d.ts +10 -1
  459. package/dest/trees/nullifier_membership_witness.d.ts.map +1 -1
  460. package/dest/trees/public_data_leaf.d.ts +16 -1
  461. package/dest/trees/public_data_leaf.d.ts.map +1 -1
  462. package/dest/trees/public_data_witness.d.ts +11 -1
  463. package/dest/trees/public_data_witness.d.ts.map +1 -1
  464. package/dest/tx/block_header.d.ts +21 -8
  465. package/dest/tx/block_header.d.ts.map +1 -1
  466. package/dest/tx/block_header.js +12 -2
  467. package/dest/tx/call_context.d.ts +13 -1
  468. package/dest/tx/call_context.d.ts.map +1 -1
  469. package/dest/tx/call_context.js +3 -1
  470. package/dest/tx/capsule.d.ts +4 -1
  471. package/dest/tx/capsule.d.ts.map +1 -1
  472. package/dest/tx/execution_payload.d.ts +9 -1
  473. package/dest/tx/execution_payload.d.ts.map +1 -1
  474. package/dest/tx/function_data.d.ts +4 -2
  475. package/dest/tx/function_data.d.ts.map +1 -1
  476. package/dest/tx/global_variable_builder.d.ts +5 -3
  477. package/dest/tx/global_variable_builder.d.ts.map +1 -1
  478. package/dest/tx/global_variables.d.ts +14 -1
  479. package/dest/tx/global_variables.d.ts.map +1 -1
  480. package/dest/tx/global_variables.js +3 -1
  481. package/dest/tx/hashed_values.d.ts +7 -1
  482. package/dest/tx/hashed_values.d.ts.map +1 -1
  483. package/dest/tx/in_tx.d.ts +4 -4
  484. package/dest/tx/index.d.ts +1 -2
  485. package/dest/tx/index.d.ts.map +1 -1
  486. package/dest/tx/index.js +0 -1
  487. package/dest/tx/indexed_tx_effect.d.ts +5 -5
  488. package/dest/tx/indexed_tx_effect.d.ts.map +1 -1
  489. package/dest/tx/indexed_tx_effect.js +3 -2
  490. package/dest/tx/partial_state_reference.d.ts +4 -1
  491. package/dest/tx/partial_state_reference.d.ts.map +1 -1
  492. package/dest/tx/private_execution_result.d.ts +24 -7
  493. package/dest/tx/private_execution_result.d.ts.map +1 -1
  494. package/dest/tx/private_execution_result.js +4 -21
  495. package/dest/tx/private_tx_constant_data.d.ts +16 -1
  496. package/dest/tx/private_tx_constant_data.d.ts.map +1 -1
  497. package/dest/tx/profiling.d.ts +149 -26
  498. package/dest/tx/profiling.d.ts.map +1 -1
  499. package/dest/tx/profiling.js +44 -7
  500. package/dest/tx/protocol_contracts.d.ts +1 -1
  501. package/dest/tx/public_call_request_with_calldata.d.ts +7 -1
  502. package/dest/tx/public_call_request_with_calldata.d.ts.map +1 -1
  503. package/dest/tx/public_call_request_with_calldata.js +3 -1
  504. package/dest/tx/simulated_tx.d.ts +1031 -7
  505. package/dest/tx/simulated_tx.d.ts.map +1 -1
  506. package/dest/tx/state_reference.d.ts +3 -1
  507. package/dest/tx/state_reference.d.ts.map +1 -1
  508. package/dest/tx/state_reference.js +3 -1
  509. package/dest/tx/tree_snapshots.js +3 -1
  510. package/dest/tx/tx.d.ts +33 -3
  511. package/dest/tx/tx.d.ts.map +1 -1
  512. package/dest/tx/tx.js +18 -6
  513. package/dest/tx/tx_context.d.ts +2 -1
  514. package/dest/tx/tx_context.d.ts.map +1 -1
  515. package/dest/tx/tx_effect.d.ts +32 -6
  516. package/dest/tx/tx_effect.d.ts.map +1 -1
  517. package/dest/tx/tx_effect.js +6 -9
  518. package/dest/tx/tx_execution_request.d.ts +30 -1
  519. package/dest/tx/tx_execution_request.d.ts.map +1 -1
  520. package/dest/tx/tx_execution_request.js +6 -2
  521. package/dest/tx/tx_hash.d.ts +2 -1
  522. package/dest/tx/tx_hash.d.ts.map +1 -1
  523. package/dest/tx/tx_receipt.d.ts +47 -13
  524. package/dest/tx/tx_receipt.d.ts.map +1 -1
  525. package/dest/tx/tx_receipt.js +46 -15
  526. package/dest/tx/tx_request.d.ts +6 -1
  527. package/dest/tx/tx_request.d.ts.map +1 -1
  528. package/dest/tx/validator/empty_validator.d.ts +2 -2
  529. package/dest/tx/validator/empty_validator.d.ts.map +1 -1
  530. package/dest/tx/validator/error_texts.d.ts +2 -1
  531. package/dest/tx/validator/error_texts.d.ts.map +1 -1
  532. package/dest/tx/validator/error_texts.js +2 -0
  533. package/dest/tx/validator/tx_validator.d.ts +2 -5
  534. package/dest/tx/validator/tx_validator.d.ts.map +1 -1
  535. package/dest/tx/validator/tx_validator.js +4 -4
  536. package/dest/types/shared.d.ts +4 -1
  537. package/dest/types/shared.d.ts.map +1 -1
  538. package/dest/validators/schemas.d.ts +9 -9
  539. package/dest/validators/schemas.d.ts.map +1 -1
  540. package/dest/validators/schemas.js +13 -13
  541. package/dest/vks/verification_key.d.ts +22 -1
  542. package/dest/vks/verification_key.d.ts.map +1 -1
  543. package/dest/vks/vk_data.d.ts +7 -1
  544. package/dest/vks/vk_data.d.ts.map +1 -1
  545. package/dest/zkpassport/index.d.ts +3 -4
  546. package/dest/zkpassport/index.d.ts.map +1 -1
  547. package/dest/zkpassport/index.js +9 -9
  548. package/package.json +27 -13
  549. package/src/abi/abi.ts +39 -33
  550. package/src/abi/contract_artifact.ts +10 -10
  551. package/src/abi/function_call.ts +25 -3
  552. package/src/abi/function_selector.ts +8 -0
  553. package/src/abi/utils.ts +17 -0
  554. package/src/avm/avm.ts +1 -1
  555. package/src/block/attestation_info.ts +9 -6
  556. package/src/block/block_hash.ts +26 -25
  557. package/src/block/block_parameter.ts +4 -2
  558. package/src/block/body.ts +2 -1
  559. package/src/block/checkpointed_l2_block.ts +70 -0
  560. package/src/block/in_block.ts +6 -6
  561. package/src/block/index.ts +1 -3
  562. package/src/block/l2_block.ts +102 -149
  563. package/src/block/l2_block_source.ts +175 -68
  564. package/src/block/l2_block_stream/index.ts +1 -0
  565. package/src/block/l2_block_stream/interfaces.ts +15 -4
  566. package/src/block/l2_block_stream/l2_block_stream.ts +139 -39
  567. package/src/block/l2_block_stream/l2_tips_memory_store.ts +62 -56
  568. package/src/block/l2_block_stream/l2_tips_store_base.ts +226 -0
  569. package/src/block/test/l2_tips_store_test_suite.ts +480 -35
  570. package/src/block/validate_block_result.ts +40 -35
  571. package/src/checkpoint/checkpoint.ts +82 -12
  572. package/src/checkpoint/checkpoint_info.ts +52 -0
  573. package/src/checkpoint/index.ts +1 -0
  574. package/src/checkpoint/published_checkpoint.ts +22 -7
  575. package/src/config/index.ts +1 -0
  576. package/src/config/node-rpc-config.ts +1 -1
  577. package/src/config/sequencer-config.ts +19 -0
  578. package/src/contract/contract_address.ts +1 -1
  579. package/src/contract/contract_class_id.ts +2 -2
  580. package/src/contract/index.ts +0 -2
  581. package/src/contract/interfaces/contract_class.ts +59 -46
  582. package/src/contract/interfaces/contract_instance.ts +15 -13
  583. package/src/contract/interfaces/contract_instance_update.ts +11 -9
  584. package/src/contract/private_function.ts +2 -3
  585. package/src/contract/private_function_membership_proof.ts +1 -1
  586. package/src/database-version/database_version.ts +87 -0
  587. package/src/database-version/version_manager.ts +1 -77
  588. package/src/delayed_public_mutable/delayed_public_mutable_values.ts +9 -10
  589. package/src/deserialization/index.ts +21 -0
  590. package/src/epoch-helpers/index.ts +24 -10
  591. package/src/hash/hash.ts +2 -13
  592. package/src/hash/map_slot.ts +3 -2
  593. package/src/interfaces/allowed_element.ts +9 -7
  594. package/src/interfaces/api_limit.ts +2 -0
  595. package/src/interfaces/archiver.ts +33 -23
  596. package/src/interfaces/aztec-node-admin.ts +10 -6
  597. package/src/interfaces/aztec-node.ts +118 -134
  598. package/src/interfaces/block-builder.ts +50 -23
  599. package/src/interfaces/configs.ts +67 -33
  600. package/src/interfaces/get_logs_response.ts +13 -9
  601. package/src/interfaces/l2_logs_source.ts +25 -7
  602. package/src/interfaces/merkle_tree_operations.ts +4 -1
  603. package/src/interfaces/p2p.ts +8 -12
  604. package/src/interfaces/prover-broker.ts +22 -0
  605. package/src/interfaces/prover-client.ts +35 -10
  606. package/src/interfaces/proving-job.ts +2 -11
  607. package/src/interfaces/server_circuit_prover.ts +3 -3
  608. package/src/interfaces/slasher.ts +28 -22
  609. package/src/interfaces/tx_provider.ts +2 -2
  610. package/src/interfaces/validator.ts +92 -31
  611. package/src/interfaces/world_state.ts +16 -9
  612. package/src/kernel/hints/build_note_hash_read_request_hints.ts +20 -12
  613. package/src/kernel/hints/build_nullifier_read_request_hints.ts +17 -14
  614. package/src/kernel/hints/find_private_kernel_reset_dimensions.ts +2 -4
  615. package/src/kernel/private_circuit_public_inputs.ts +85 -85
  616. package/src/keys/derivation.ts +8 -8
  617. package/src/keys/key_types.ts +1 -1
  618. package/src/keys/utils.ts +7 -3
  619. package/src/l1-contracts/slash_factory.ts +1 -0
  620. package/src/logs/index.ts +2 -1
  621. package/src/logs/log_id.ts +26 -12
  622. package/src/logs/private_log.ts +2 -1
  623. package/src/logs/siloed_tag.ts +45 -0
  624. package/src/logs/tag.ts +42 -0
  625. package/src/logs/tx_scoped_l2_log.ts +45 -43
  626. package/src/messaging/in_hash.ts +3 -1
  627. package/src/messaging/l1_to_l2_message.ts +1 -0
  628. package/src/messaging/l2_to_l1_membership.ts +178 -52
  629. package/src/messaging/out_hash.ts +62 -21
  630. package/src/note/note_dao.ts +18 -13
  631. package/src/p2p/attestation_utils.ts +3 -3
  632. package/src/p2p/block_proposal.ts +213 -46
  633. package/src/p2p/{block_attestation.ts → checkpoint_attestation.ts} +31 -25
  634. package/src/p2p/checkpoint_proposal.ts +365 -0
  635. package/src/p2p/consensus_payload.ts +5 -7
  636. package/src/p2p/constants.ts +6 -0
  637. package/src/p2p/gossipable.ts +14 -4
  638. package/src/p2p/index.ts +4 -1
  639. package/src/p2p/message_validator.ts +14 -2
  640. package/src/p2p/signature_utils.ts +3 -1
  641. package/src/p2p/signed_txs.ts +88 -0
  642. package/src/p2p/topic_type.ts +4 -3
  643. package/src/proofs/chonk_proof.ts +9 -5
  644. package/src/rollup/avm_proof_data.ts +0 -7
  645. package/src/rollup/block_headers_hash.ts +1 -1
  646. package/src/rollup/block_rollup_public_inputs.ts +5 -11
  647. package/src/rollup/checkpoint_constant_data.ts +1 -0
  648. package/src/rollup/checkpoint_header.ts +67 -20
  649. package/src/rollup/checkpoint_rollup_public_inputs.ts +17 -5
  650. package/src/rollup/checkpoint_root_rollup_private_inputs.ts +14 -1
  651. package/src/rollup/root_rollup_public_inputs.ts +16 -7
  652. package/src/schemas/schemas.ts +4 -0
  653. package/src/slashing/empire.ts +3 -1
  654. package/src/slashing/helpers.ts +8 -0
  655. package/src/slashing/tally.ts +8 -2
  656. package/src/slashing/types.ts +38 -20
  657. package/src/snapshots/types.ts +33 -29
  658. package/src/stats/stats.ts +10 -7
  659. package/src/tests/factories.ts +103 -42
  660. package/src/tests/jest.ts +1 -1
  661. package/src/tests/mocks.ts +226 -92
  662. package/src/timetable/index.ts +66 -0
  663. package/src/tx/block_header.ts +21 -8
  664. package/src/tx/global_variable_builder.ts +9 -2
  665. package/src/tx/global_variables.ts +6 -0
  666. package/src/tx/index.ts +0 -1
  667. package/src/tx/indexed_tx_effect.ts +3 -2
  668. package/src/tx/private_execution_result.ts +2 -17
  669. package/src/tx/profiling.ts +46 -4
  670. package/src/tx/tx.ts +19 -11
  671. package/src/tx/tx_effect.ts +3 -10
  672. package/src/tx/tx_execution_request.ts +2 -0
  673. package/src/tx/tx_receipt.ts +75 -18
  674. package/src/tx/validator/empty_validator.ts +1 -1
  675. package/src/tx/validator/error_texts.ts +3 -0
  676. package/src/tx/validator/tx_validator.ts +9 -7
  677. package/src/validators/schemas.ts +54 -48
  678. package/src/zkpassport/index.ts +11 -12
  679. package/dest/block/l2_block_code_to_purge.d.ts +0 -12
  680. package/dest/block/l2_block_code_to_purge.d.ts.map +0 -1
  681. package/dest/block/l2_block_code_to_purge.js +0 -61
  682. package/dest/block/l2_block_header.d.ts +0 -98
  683. package/dest/block/l2_block_header.d.ts.map +0 -1
  684. package/dest/block/l2_block_header.js +0 -153
  685. package/dest/block/l2_block_new.d.ts +0 -130
  686. package/dest/block/l2_block_new.d.ts.map +0 -1
  687. package/dest/block/l2_block_new.js +0 -151
  688. package/dest/block/published_l2_block.d.ts +0 -130
  689. package/dest/block/published_l2_block.d.ts.map +0 -1
  690. package/dest/block/published_l2_block.js +0 -48
  691. package/dest/contract/contract_class_metadata.d.ts +0 -8
  692. package/dest/contract/contract_class_metadata.d.ts.map +0 -1
  693. package/dest/contract/contract_class_metadata.js +0 -1
  694. package/dest/contract/contract_metadata.d.ts +0 -7
  695. package/dest/contract/contract_metadata.d.ts.map +0 -1
  696. package/dest/contract/contract_metadata.js +0 -1
  697. package/dest/database-version/index.d.ts +0 -2
  698. package/dest/database-version/index.d.ts.map +0 -1
  699. package/dest/database-version/index.js +0 -1
  700. package/dest/logs/log_with_tx_data.d.ts +0 -19
  701. package/dest/logs/log_with_tx_data.d.ts.map +0 -1
  702. package/dest/logs/log_with_tx_data.js +0 -49
  703. package/dest/p2p/block_attestation.d.ts +0 -80
  704. package/dest/p2p/block_attestation.d.ts.map +0 -1
  705. package/dest/tx/content_commitment.d.ts +0 -49
  706. package/dest/tx/content_commitment.d.ts.map +0 -1
  707. package/dest/tx/content_commitment.js +0 -90
  708. package/src/block/l2_block_code_to_purge.ts +0 -88
  709. package/src/block/l2_block_header.ts +0 -246
  710. package/src/block/l2_block_new.ts +0 -197
  711. package/src/block/published_l2_block.ts +0 -65
  712. package/src/contract/contract_class_metadata.ts +0 -8
  713. package/src/contract/contract_metadata.ts +0 -7
  714. package/src/database-version/index.ts +0 -1
  715. package/src/logs/log_with_tx_data.ts +0 -46
  716. package/src/tx/content_commitment.ts +0 -113
@@ -43,17 +43,13 @@ export class BlockRollupPublicInputs {
43
43
  */
44
44
  public endSpongeBlob: SpongeBlob,
45
45
  /**
46
- * Timestamp of the first block in this block range.
46
+ * Timestamp of the blocks in this block range.
47
47
  */
48
- public startTimestamp: UInt64,
49
- /**
50
- * Timestamp of the last block in this block range.
51
- */
52
- public endTimestamp: UInt64,
48
+ public timestamp: UInt64,
53
49
  /**
54
50
  * Hash of the headers of all blocks in this block range. It will be combined with the `blockHeadersHash` from
55
- * other blocks in the same checkpoint to form a wonky tree. The root of that tree becomes the final hash stored in
56
- * the checkpoint header, enabling validation of the blocks included in a checkpoint given their headers.
51
+ * other blocks in the same checkpoint to form an unbalanced tree. The root of that tree becomes the final hash
52
+ * stored in the checkpoint header, enabling validation of the blocks included in a checkpoint given their headers.
57
53
  */
58
54
  public blockHeadersHash: Fr,
59
55
  /**
@@ -85,7 +81,6 @@ export class BlockRollupPublicInputs {
85
81
  reader.readObject(SpongeBlob),
86
82
  reader.readObject(SpongeBlob),
87
83
  reader.readUInt64(),
88
- reader.readUInt64(),
89
84
  Fr.fromBuffer(reader),
90
85
  Fr.fromBuffer(reader),
91
86
  Fr.fromBuffer(reader),
@@ -103,8 +98,7 @@ export class BlockRollupPublicInputs {
103
98
  this.endState,
104
99
  this.startSpongeBlob,
105
100
  this.endSpongeBlob,
106
- bigintToUInt64BE(this.startTimestamp),
107
- bigintToUInt64BE(this.endTimestamp),
101
+ bigintToUInt64BE(this.timestamp),
108
102
  this.blockHeadersHash,
109
103
  this.inHash,
110
104
  this.outHash,
@@ -11,6 +11,7 @@ import { GasFees } from '../gas/gas_fees.js';
11
11
 
12
12
  /**
13
13
  * Constants that are the same for the entire checkpoint.
14
+ * Used in circuits during rollup proving.
14
15
  */
15
16
  export class CheckpointConstantData {
16
17
  constructor(
@@ -14,17 +14,32 @@ import { z } from 'zod';
14
14
  import { AztecAddress } from '../aztec-address/index.js';
15
15
  import { GasFees } from '../gas/index.js';
16
16
  import { schemas } from '../schemas/index.js';
17
- import { ContentCommitment } from '../tx/content_commitment.js';
17
+ import type { GlobalVariables } from '../tx/global_variables.js';
18
18
  import type { UInt64 } from '../types/shared.js';
19
19
 
20
+ /**
21
+ * Header of a checkpoint. A checkpoint is a collection of blocks submitted to L1 all within the same slot.
22
+ * TODO(palla/mbps): Should this include chainId and version as well? Is this used just in circuits?
23
+ * TODO(palla/mbps): What about CheckpointNumber?
24
+ */
20
25
  export class CheckpointHeader {
21
26
  constructor(
22
27
  /** Root of the archive tree before this block is added. */
23
28
  public lastArchiveRoot: Fr,
24
29
  /** Hash of the headers of all blocks in this checkpoint. */
25
30
  public blockHeadersHash: Fr,
26
- /** Content commitment of the L2 block. */
27
- public contentCommitment: ContentCommitment,
31
+ /** Hash of the blobs in the checkpoint. */
32
+ public blobsHash: Fr,
33
+ /** Root of the l1 to l2 messages subtree. */
34
+ public inHash: Fr,
35
+ /**
36
+ * The root of the epoch out hash balanced tree. The out hash of the first checkpoint in the epoch is inserted at
37
+ * index 0, the second at index 1, and so on.
38
+ * Note: This is not necessarily the final epoch out hash. It includes only the out hashes of checkpoints up to and
39
+ * including the current checkpoint. Any subsequent checkpoints added to the same epoch are not reflected in this
40
+ * value.
41
+ */
42
+ public epochOutHash: Fr,
28
43
  /** Slot number of the L2 block */
29
44
  public slotNumber: SlotNumber,
30
45
  /** Timestamp of the L2 block. */
@@ -44,7 +59,9 @@ export class CheckpointHeader {
44
59
  .object({
45
60
  lastArchiveRoot: schemas.Fr,
46
61
  blockHeadersHash: schemas.Fr,
47
- contentCommitment: ContentCommitment.schema,
62
+ blobsHash: schemas.Fr,
63
+ inHash: schemas.Fr,
64
+ epochOutHash: schemas.Fr,
48
65
  slotNumber: schemas.SlotNumber,
49
66
  timestamp: schemas.BigInt,
50
67
  coinbase: schemas.EthAddress,
@@ -59,7 +76,9 @@ export class CheckpointHeader {
59
76
  return [
60
77
  fields.lastArchiveRoot,
61
78
  fields.blockHeadersHash,
62
- fields.contentCommitment,
79
+ fields.blobsHash,
80
+ fields.inHash,
81
+ fields.epochOutHash,
63
82
  fields.slotNumber,
64
83
  fields.timestamp,
65
84
  fields.coinbase,
@@ -79,7 +98,9 @@ export class CheckpointHeader {
79
98
  return new CheckpointHeader(
80
99
  reader.readObject(Fr),
81
100
  reader.readObject(Fr),
82
- reader.readObject(ContentCommitment),
101
+ reader.readObject(Fr),
102
+ reader.readObject(Fr),
103
+ reader.readObject(Fr),
83
104
  SlotNumber(Fr.fromBuffer(reader).toNumber()),
84
105
  reader.readUInt64(),
85
106
  reader.readObject(EthAddress),
@@ -93,7 +114,9 @@ export class CheckpointHeader {
93
114
  return (
94
115
  this.lastArchiveRoot.equals(other.lastArchiveRoot) &&
95
116
  this.blockHeadersHash.equals(other.blockHeadersHash) &&
96
- this.contentCommitment.equals(other.contentCommitment) &&
117
+ this.blobsHash.equals(other.blobsHash) &&
118
+ this.inHash.equals(other.inHash) &&
119
+ this.epochOutHash.equals(other.epochOutHash) &&
97
120
  this.slotNumber === other.slotNumber &&
98
121
  this.timestamp === other.timestamp &&
99
122
  this.coinbase.equals(other.coinbase) &&
@@ -103,12 +126,25 @@ export class CheckpointHeader {
103
126
  );
104
127
  }
105
128
 
129
+ /** Returns true if the global variables match those in the checkpoint header. */
130
+ matchesGlobalVariables(other: GlobalVariables) {
131
+ return (
132
+ this.coinbase.equals(other.coinbase) &&
133
+ this.feeRecipient.equals(other.feeRecipient) &&
134
+ this.gasFees.equals(other.gasFees) &&
135
+ this.slotNumber === other.slotNumber &&
136
+ this.timestamp === other.timestamp
137
+ );
138
+ }
139
+
106
140
  toBuffer() {
107
141
  // Note: The order here must match the order in the ProposedHeaderLib solidity library.
108
142
  return serializeToBuffer([
109
143
  this.lastArchiveRoot,
110
144
  this.blockHeadersHash,
111
- this.contentCommitment,
145
+ this.blobsHash,
146
+ this.inHash,
147
+ this.epochOutHash,
112
148
  new Fr(this.slotNumber),
113
149
  bigintToUInt64BE(this.timestamp),
114
150
  this.coinbase,
@@ -126,7 +162,9 @@ export class CheckpointHeader {
126
162
  return CheckpointHeader.from({
127
163
  lastArchiveRoot: Fr.ZERO,
128
164
  blockHeadersHash: Fr.ZERO,
129
- contentCommitment: ContentCommitment.empty(),
165
+ blobsHash: Fr.ZERO,
166
+ inHash: Fr.ZERO,
167
+ epochOutHash: Fr.ZERO,
130
168
  slotNumber: SlotNumber.ZERO,
131
169
  timestamp: 0n,
132
170
  coinbase: EthAddress.ZERO,
@@ -137,13 +175,13 @@ export class CheckpointHeader {
137
175
  });
138
176
  }
139
177
 
140
- static random(
141
- overrides: Partial<FieldsOf<CheckpointHeader>> & Partial<FieldsOf<ContentCommitment>> = {},
142
- ): CheckpointHeader {
178
+ static random(overrides: Partial<FieldsOf<CheckpointHeader>> = {}): CheckpointHeader {
143
179
  return CheckpointHeader.from({
144
180
  lastArchiveRoot: Fr.random(),
145
181
  blockHeadersHash: Fr.random(),
146
- contentCommitment: ContentCommitment.random(overrides),
182
+ blobsHash: Fr.random(),
183
+ inHash: Fr.random(),
184
+ epochOutHash: Fr.random(),
147
185
  slotNumber: SlotNumber(Math.floor(Math.random() * 1000) + 1),
148
186
  timestamp: BigInt(Math.floor(Date.now() / 1000)),
149
187
  coinbase: EthAddress.random(),
@@ -158,7 +196,9 @@ export class CheckpointHeader {
158
196
  return (
159
197
  this.lastArchiveRoot.isZero() &&
160
198
  this.blockHeadersHash.isZero() &&
161
- this.contentCommitment.isEmpty() &&
199
+ this.blobsHash.isZero() &&
200
+ this.inHash.isZero() &&
201
+ this.epochOutHash.isZero() &&
162
202
  this.slotNumber === 0 &&
163
203
  this.timestamp === 0n &&
164
204
  this.coinbase.isZero() &&
@@ -184,7 +224,9 @@ export class CheckpointHeader {
184
224
  return new CheckpointHeader(
185
225
  Fr.fromString(header.lastArchiveRoot),
186
226
  Fr.fromString(header.blockHeadersHash),
187
- ContentCommitment.fromViem(header.contentCommitment),
227
+ Fr.fromString(header.blobsHash),
228
+ Fr.fromString(header.inHash),
229
+ Fr.fromString(header.outHash),
188
230
  SlotNumber.fromBigInt(header.slotNumber),
189
231
  header.timestamp,
190
232
  new EthAddress(hexToBuffer(header.coinbase)),
@@ -206,7 +248,9 @@ export class CheckpointHeader {
206
248
  return {
207
249
  lastArchiveRoot: this.lastArchiveRoot.toString(),
208
250
  blockHeadersHash: this.blockHeadersHash.toString(),
209
- contentCommitment: this.contentCommitment.toViem(),
251
+ blobsHash: this.blobsHash.toString(),
252
+ inHash: this.inHash.toString(),
253
+ outHash: this.epochOutHash.toString(),
210
254
  slotNumber: BigInt(this.slotNumber),
211
255
  timestamp: this.timestamp,
212
256
  coinbase: this.coinbase.toString(),
@@ -223,7 +267,9 @@ export class CheckpointHeader {
223
267
  return {
224
268
  lastArchive: this.lastArchiveRoot.toString(),
225
269
  blockHeadersHash: this.blockHeadersHash.toString(),
226
- contentCommitment: this.contentCommitment.toInspect(),
270
+ blobsHash: this.blobsHash.toString(),
271
+ inHash: this.inHash.toString(),
272
+ epochOutHash: this.epochOutHash.toString(),
227
273
  slotNumber: this.slotNumber,
228
274
  timestamp: this.timestamp,
229
275
  coinbase: this.coinbase.toString(),
@@ -234,16 +280,17 @@ export class CheckpointHeader {
234
280
  }
235
281
 
236
282
  [inspect.custom]() {
237
- const gasfees = `da:${this.gasFees.feePerDaGas}, l2:${this.gasFees.feePerL2Gas}`;
238
283
  return `Header {
239
284
  lastArchiveRoot: ${this.lastArchiveRoot.toString()},
240
285
  blockHeadersHash: ${this.blockHeadersHash.toString()},
241
- contentCommitment: ${inspect(this.contentCommitment)},
286
+ blobsHash: ${inspect(this.blobsHash)},
287
+ inHash: ${inspect(this.inHash)},
288
+ epochOutHash: ${inspect(this.epochOutHash)},
242
289
  slotNumber: ${this.slotNumber},
243
290
  timestamp: ${this.timestamp},
244
291
  coinbase: ${this.coinbase.toString()},
245
292
  feeRecipient: ${this.feeRecipient.toString()},
246
- gasFees: ${gasfees},
293
+ gasFees: { da:${this.gasFees.feePerDaGas}, l2:${this.gasFees.feePerL2Gas} },
247
294
  totalManaUsed: ${this.totalManaUsed.toBigInt()},
248
295
  }`;
249
296
  }
@@ -1,5 +1,5 @@
1
1
  import { BlobAccumulator, FinalBlobBatchingChallenges } from '@aztec/blob-lib/types';
2
- import { AZTEC_MAX_EPOCH_DURATION } from '@aztec/constants';
2
+ import { MAX_CHECKPOINTS_PER_EPOCH } from '@aztec/constants';
3
3
  import { Fr } from '@aztec/foundation/curves/bn254';
4
4
  import { EthAddress } from '@aztec/foundation/eth-address';
5
5
  import { bufferSchemaFor } from '@aztec/foundation/schemas';
@@ -27,14 +27,22 @@ export class CheckpointRollupPublicInputs {
27
27
  * Archive tree after adding this checkpoint range.
28
28
  */
29
29
  public newArchive: AppendOnlyTreeSnapshot,
30
+ /**
31
+ * The out hash tree snapshot immediately before this checkpoint range.
32
+ */
33
+ public previousOutHash: AppendOnlyTreeSnapshot,
34
+ /**
35
+ * The out hash tree snapshot after applying this checkpoint range.
36
+ */
37
+ public newOutHash: AppendOnlyTreeSnapshot,
30
38
  /**
31
39
  * The hashes of the headers of the constituent checkpoints.
32
40
  */
33
- public checkpointHeaderHashes: Tuple<Fr, typeof AZTEC_MAX_EPOCH_DURATION>,
41
+ public checkpointHeaderHashes: Tuple<Fr, typeof MAX_CHECKPOINTS_PER_EPOCH>,
34
42
  /**
35
43
  * The summed transaction fees and recipients of the constituent checkpoints.
36
44
  */
37
- public fees: Tuple<FeeRecipient, typeof AZTEC_MAX_EPOCH_DURATION>,
45
+ public fees: Tuple<FeeRecipient, typeof MAX_CHECKPOINTS_PER_EPOCH>,
38
46
  /**
39
47
  * Accumulated opening proofs for all blobs before this checkpoint range.
40
48
  */
@@ -55,8 +63,10 @@ export class CheckpointRollupPublicInputs {
55
63
  reader.readObject(EpochConstantData),
56
64
  reader.readObject(AppendOnlyTreeSnapshot),
57
65
  reader.readObject(AppendOnlyTreeSnapshot),
58
- reader.readArray(AZTEC_MAX_EPOCH_DURATION, Fr),
59
- reader.readArray(AZTEC_MAX_EPOCH_DURATION, FeeRecipient),
66
+ reader.readObject(AppendOnlyTreeSnapshot),
67
+ reader.readObject(AppendOnlyTreeSnapshot),
68
+ reader.readArray(MAX_CHECKPOINTS_PER_EPOCH, Fr),
69
+ reader.readArray(MAX_CHECKPOINTS_PER_EPOCH, FeeRecipient),
60
70
  reader.readObject(BlobAccumulator),
61
71
  reader.readObject(BlobAccumulator),
62
72
  reader.readObject(FinalBlobBatchingChallenges),
@@ -68,6 +78,8 @@ export class CheckpointRollupPublicInputs {
68
78
  this.constants,
69
79
  this.previousArchive,
70
80
  this.newArchive,
81
+ this.previousOutHash,
82
+ this.newOutHash,
71
83
  this.checkpointHeaderHashes,
72
84
  this.fees,
73
85
  this.startBlobAccumulator,
@@ -1,5 +1,5 @@
1
1
  import { BlobAccumulator, FinalBlobBatchingChallenges } from '@aztec/blob-lib/types';
2
- import { ARCHIVE_HEIGHT, BLOBS_PER_CHECKPOINT, FIELDS_PER_BLOB } from '@aztec/constants';
2
+ import { ARCHIVE_HEIGHT, BLOBS_PER_CHECKPOINT, FIELDS_PER_BLOB, OUT_HASH_TREE_HEIGHT } from '@aztec/constants';
3
3
  import { BLS12Point } from '@aztec/foundation/curves/bls12';
4
4
  import { Fr } from '@aztec/foundation/curves/bn254';
5
5
  import { bufferSchemaFor } from '@aztec/foundation/schemas';
@@ -8,6 +8,7 @@ import { bufferToHex, hexToBuffer } from '@aztec/foundation/string';
8
8
  import type { FieldsOf } from '@aztec/foundation/types';
9
9
 
10
10
  import { ProofData, type RollupHonkProofData } from '../proofs/proof_data.js';
11
+ import { AppendOnlyTreeSnapshot } from '../trees/append_only_tree_snapshot.js';
11
12
  import { BlockHeader } from '../tx/block_header.js';
12
13
  import { BlockRollupPublicInputs } from './block_rollup_public_inputs.js';
13
14
 
@@ -21,6 +22,14 @@ export class CheckpointRootRollupHints {
21
22
  * Hint for checking the hash of previous_block_header is the last leaf of the previous archive.
22
23
  */
23
24
  public previousArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>,
25
+ /**
26
+ * The out hash tree snapshot immediately before this checkpoint.
27
+ */
28
+ public previousOutHash: AppendOnlyTreeSnapshot,
29
+ /**
30
+ * Hint for inserting the new out hash into the out hash tree.
31
+ */
32
+ public newOutHashSiblingPath: Tuple<Fr, typeof OUT_HASH_TREE_HEIGHT>,
24
33
  /**
25
34
  * The current blob accumulation state across the epoch.
26
35
  */
@@ -54,6 +63,8 @@ export class CheckpointRootRollupHints {
54
63
  return [
55
64
  fields.previousBlockHeader,
56
65
  fields.previousArchiveSiblingPath,
66
+ fields.previousOutHash,
67
+ fields.newOutHashSiblingPath,
57
68
  fields.startBlobAccumulator,
58
69
  fields.finalBlobChallenges,
59
70
  fields.blobFields,
@@ -71,6 +82,8 @@ export class CheckpointRootRollupHints {
71
82
  return new CheckpointRootRollupHints(
72
83
  BlockHeader.fromBuffer(reader),
73
84
  reader.readArray(ARCHIVE_HEIGHT, Fr),
85
+ reader.readObject(AppendOnlyTreeSnapshot),
86
+ reader.readArray(OUT_HASH_TREE_HEIGHT, Fr),
74
87
  reader.readObject(BlobAccumulator),
75
88
  reader.readObject(FinalBlobBatchingChallenges),
76
89
  // Below line gives error 'Type instantiation is excessively deep and possibly infinite. ts(2589)'
@@ -1,5 +1,5 @@
1
1
  import { FinalBlobAccumulator } from '@aztec/blob-lib/types';
2
- import { AZTEC_MAX_EPOCH_DURATION } from '@aztec/constants';
2
+ import { MAX_CHECKPOINTS_PER_EPOCH } from '@aztec/constants';
3
3
  import { makeTuple } from '@aztec/foundation/array';
4
4
  import { Fr } from '@aztec/foundation/curves/bn254';
5
5
  import { bufferSchemaFor } from '@aztec/foundation/schemas';
@@ -21,8 +21,14 @@ export class RootRollupPublicInputs {
21
21
  public previousArchiveRoot: Fr,
22
22
  /** Root of the archive tree after this rollup is processed */
23
23
  public endArchiveRoot: Fr,
24
- public checkpointHeaderHashes: Tuple<Fr, typeof AZTEC_MAX_EPOCH_DURATION>,
25
- public fees: Tuple<FeeRecipient, typeof AZTEC_MAX_EPOCH_DURATION>,
24
+ /**
25
+ * Root of the balanced merkle tree consisting of the out hashes of all checkpoints in this epoch.
26
+ * The out hash of the first checkpoint in the epoch is inserted at index 0, the second at index 1, and so on.
27
+ */
28
+ public outHash: Fr,
29
+ /** Hashes of checkpoint headers for this rollup. */
30
+ public checkpointHeaderHashes: Tuple<Fr, typeof MAX_CHECKPOINTS_PER_EPOCH>,
31
+ public fees: Tuple<FeeRecipient, typeof MAX_CHECKPOINTS_PER_EPOCH>,
26
32
  public constants: EpochConstantData,
27
33
  public blobPublicInputs: FinalBlobAccumulator,
28
34
  ) {}
@@ -31,6 +37,7 @@ export class RootRollupPublicInputs {
31
37
  return [
32
38
  fields.previousArchiveRoot,
33
39
  fields.endArchiveRoot,
40
+ fields.outHash,
34
41
  fields.checkpointHeaderHashes,
35
42
  fields.fees,
36
43
  fields.constants,
@@ -60,8 +67,9 @@ export class RootRollupPublicInputs {
60
67
  return new RootRollupPublicInputs(
61
68
  Fr.fromBuffer(reader),
62
69
  Fr.fromBuffer(reader),
63
- reader.readArray(AZTEC_MAX_EPOCH_DURATION, Fr),
64
- reader.readArray(AZTEC_MAX_EPOCH_DURATION, FeeRecipient),
70
+ Fr.fromBuffer(reader),
71
+ reader.readArray(MAX_CHECKPOINTS_PER_EPOCH, Fr),
72
+ reader.readArray(MAX_CHECKPOINTS_PER_EPOCH, FeeRecipient),
65
73
  EpochConstantData.fromBuffer(reader),
66
74
  reader.readObject(FinalBlobAccumulator),
67
75
  );
@@ -90,8 +98,9 @@ export class RootRollupPublicInputs {
90
98
  return new RootRollupPublicInputs(
91
99
  Fr.random(),
92
100
  Fr.random(),
93
- makeTuple(AZTEC_MAX_EPOCH_DURATION, Fr.random),
94
- makeTuple(AZTEC_MAX_EPOCH_DURATION, FeeRecipient.random),
101
+ Fr.random(),
102
+ makeTuple(MAX_CHECKPOINTS_PER_EPOCH, Fr.random),
103
+ makeTuple(MAX_CHECKPOINTS_PER_EPOCH, FeeRecipient.random),
95
104
  new EpochConstantData(Fr.random(), Fr.random(), Fr.random(), Fr.random(), Fr.random()),
96
105
  FinalBlobAccumulator.random(),
97
106
  );
@@ -40,6 +40,9 @@ export const schemas = {
40
40
  /** Coerces input to UInt32. */
41
41
  UInt32: foundationSchemas.UInt32,
42
42
 
43
+ /** Coerces input to UInt64. */
44
+ UInt64: foundationSchemas.UInt64,
45
+
43
46
  /** Accepts a hex string as a Buffer32 type. */
44
47
  Buffer32: foundationSchemas.Buffer32 as ZodFor<Buffer32>,
45
48
 
@@ -94,6 +97,7 @@ export const NullishToUndefined = (schema: ZodFor<any>) => schema.nullish().tran
94
97
 
95
98
  export {
96
99
  type ZodFor,
100
+ zodFor,
97
101
  bufferSchema,
98
102
  hexSchema,
99
103
  hexSchemaFor,
@@ -83,7 +83,9 @@ export function getFirstEligibleRoundForOffense(
83
83
  case OffenseType.PROPOSED_INSUFFICIENT_ATTESTATIONS:
84
84
  case OffenseType.PROPOSED_INCORRECT_ATTESTATIONS:
85
85
  case OffenseType.ATTESTED_DESCENDANT_OF_INVALID:
86
- case OffenseType.BROADCASTED_INVALID_BLOCK_PROPOSAL: {
86
+ case OffenseType.BROADCASTED_INVALID_BLOCK_PROPOSAL:
87
+ case OffenseType.DUPLICATE_PROPOSAL:
88
+ case OffenseType.DUPLICATE_ATTESTATION: {
87
89
  const slot = offense.epochOrSlot;
88
90
  const detectedSlot = SlotNumber.fromBigInt(slot + 1n);
89
91
  return getRoundForSlot(detectedSlot, constants).round + 1n;
@@ -50,6 +50,8 @@ export function getPenaltyForOffense(
50
50
  SlasherConfig,
51
51
  | 'slashAttestDescendantOfInvalidPenalty'
52
52
  | 'slashBroadcastedInvalidBlockPenalty'
53
+ | 'slashDuplicateProposalPenalty'
54
+ | 'slashDuplicateAttestationPenalty'
53
55
  | 'slashPrunePenalty'
54
56
  | 'slashDataWithholdingPenalty'
55
57
  | 'slashUnknownPenalty'
@@ -71,6 +73,10 @@ export function getPenaltyForOffense(
71
73
  return config.slashAttestDescendantOfInvalidPenalty;
72
74
  case OffenseType.BROADCASTED_INVALID_BLOCK_PROPOSAL:
73
75
  return config.slashBroadcastedInvalidBlockPenalty;
76
+ case OffenseType.DUPLICATE_PROPOSAL:
77
+ return config.slashDuplicateProposalPenalty;
78
+ case OffenseType.DUPLICATE_ATTESTATION:
79
+ return config.slashDuplicateAttestationPenalty;
74
80
  case OffenseType.UNKNOWN:
75
81
  return config.slashUnknownPenalty;
76
82
  default: {
@@ -85,6 +91,8 @@ export function getTimeUnitForOffense(offense: OffenseType): 'epoch' | 'slot' {
85
91
  switch (offense) {
86
92
  case OffenseType.ATTESTED_DESCENDANT_OF_INVALID:
87
93
  case OffenseType.BROADCASTED_INVALID_BLOCK_PROPOSAL:
94
+ case OffenseType.DUPLICATE_PROPOSAL:
95
+ case OffenseType.DUPLICATE_ATTESTATION:
88
96
  case OffenseType.PROPOSED_INCORRECT_ATTESTATIONS:
89
97
  case OffenseType.PROPOSED_INSUFFICIENT_ATTESTATIONS:
90
98
  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;
@@ -2,7 +2,7 @@ import { EthAddress } from '@aztec/foundation/eth-address';
2
2
 
3
3
  import { z } from 'zod';
4
4
 
5
- import { type ZodFor, schemas } from '../schemas/index.js';
5
+ import { schemas, zodFor } from '../schemas/index.js';
6
6
 
7
7
  export enum OffenseType {
8
8
  UNKNOWN = 0,
@@ -20,6 +20,10 @@ 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,
25
+ /** A validator signed attestations for different proposals at the same slot (equivocation) */
26
+ DUPLICATE_ATTESTATION = 9,
23
27
  }
24
28
 
25
29
  export function getOffenseTypeName(offense: OffenseType) {
@@ -40,6 +44,10 @@ export function getOffenseTypeName(offense: OffenseType) {
40
44
  return 'proposed_incorrect_attestations';
41
45
  case OffenseType.ATTESTED_DESCENDANT_OF_INVALID:
42
46
  return 'attested_descendant_of_invalid';
47
+ case OffenseType.DUPLICATE_PROPOSAL:
48
+ return 'duplicate_proposal';
49
+ case OffenseType.DUPLICATE_ATTESTATION:
50
+ return 'duplicate_attestation';
43
51
  default:
44
52
  throw new Error(`Unknown offense type: ${offense}`);
45
53
  }
@@ -56,6 +64,8 @@ export const OffenseToBigInt: Record<OffenseType, bigint> = {
56
64
  [OffenseType.PROPOSED_INSUFFICIENT_ATTESTATIONS]: 5n,
57
65
  [OffenseType.PROPOSED_INCORRECT_ATTESTATIONS]: 6n,
58
66
  [OffenseType.ATTESTED_DESCENDANT_OF_INVALID]: 7n,
67
+ [OffenseType.DUPLICATE_PROPOSAL]: 8n,
68
+ [OffenseType.DUPLICATE_ATTESTATION]: 9n,
59
69
  };
60
70
 
61
71
  export function bigIntToOffense(offense: bigint): OffenseType {
@@ -76,6 +86,10 @@ export function bigIntToOffense(offense: bigint): OffenseType {
76
86
  return OffenseType.PROPOSED_INCORRECT_ATTESTATIONS;
77
87
  case 7n:
78
88
  return OffenseType.ATTESTED_DESCENDANT_OF_INVALID;
89
+ case 8n:
90
+ return OffenseType.DUPLICATE_PROPOSAL;
91
+ case 9n:
92
+ return OffenseType.DUPLICATE_ATTESTATION;
79
93
  default:
80
94
  throw new Error(`Unknown offense: ${offense}`);
81
95
  }
@@ -90,12 +104,14 @@ export type Offense = {
90
104
 
91
105
  export type OffenseIdentifier = Pick<Offense, 'validator' | 'offenseType' | 'epochOrSlot'>;
92
106
 
93
- export const OffenseSchema = z.object({
94
- validator: schemas.EthAddress,
95
- amount: schemas.BigInt,
96
- offenseType: OffenseTypeSchema,
97
- epochOrSlot: schemas.BigInt,
98
- }) satisfies ZodFor<Offense>;
107
+ export const OffenseSchema = zodFor<Offense>()(
108
+ z.object({
109
+ validator: schemas.EthAddress,
110
+ amount: schemas.BigInt,
111
+ offenseType: OffenseTypeSchema,
112
+ epochOrSlot: schemas.BigInt,
113
+ }),
114
+ );
99
115
 
100
116
  /** Offense by a validator in the context of a slash payload */
101
117
  export type ValidatorSlashOffense = {
@@ -120,19 +136,21 @@ export type SlashPayload = {
120
136
  /** Slash payload with round information from empire slash proposer */
121
137
  export type SlashPayloadRound = SlashPayload & { votes: bigint; round: bigint };
122
138
 
123
- export const SlashPayloadRoundSchema = z.object({
124
- address: schemas.EthAddress,
125
- timestamp: schemas.BigInt,
126
- votes: schemas.BigInt,
127
- round: schemas.BigInt,
128
- slashes: z.array(
129
- z.object({
130
- validator: schemas.EthAddress,
131
- amount: schemas.BigInt,
132
- offenses: z.array(z.object({ offenseType: OffenseTypeSchema, epochOrSlot: schemas.BigInt })),
133
- }),
134
- ),
135
- }) satisfies ZodFor<SlashPayloadRound>;
139
+ export const SlashPayloadRoundSchema = zodFor<SlashPayloadRound>()(
140
+ z.object({
141
+ address: schemas.EthAddress,
142
+ timestamp: schemas.BigInt,
143
+ votes: schemas.BigInt,
144
+ round: schemas.BigInt,
145
+ slashes: z.array(
146
+ z.object({
147
+ validator: schemas.EthAddress,
148
+ amount: schemas.BigInt,
149
+ offenses: z.array(z.object({ offenseType: OffenseTypeSchema, epochOrSlot: schemas.BigInt })),
150
+ }),
151
+ ),
152
+ }),
153
+ );
136
154
 
137
155
  /** Votes for a validator slash in the consensus slash proposer */
138
156
  export type ValidatorSlashVote = number;