@aztec/stdlib 0.0.1-commit.03f7ef2 → 0.0.1-commit.0b941701

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 (546) hide show
  1. package/dest/abi/contract_artifact.d.ts +2 -2
  2. package/dest/abi/contract_artifact.d.ts.map +1 -1
  3. package/dest/abi/contract_artifact.js +1 -1
  4. package/dest/abi/function_call.d.ts +9 -1
  5. package/dest/abi/function_call.d.ts.map +1 -1
  6. package/dest/abi/selector.js +3 -1
  7. package/dest/abi/utils.d.ts +7 -1
  8. package/dest/abi/utils.d.ts.map +1 -1
  9. package/dest/abi/utils.js +7 -0
  10. package/dest/auth_witness/auth_witness.d.ts +2 -1
  11. package/dest/auth_witness/auth_witness.d.ts.map +1 -1
  12. package/dest/avm/avm.d.ts +62 -62
  13. package/dest/avm/avm_accumulated_data.d.ts +30 -3
  14. package/dest/avm/avm_accumulated_data.d.ts.map +1 -1
  15. package/dest/avm/avm_accumulated_data.js +5 -2
  16. package/dest/avm/avm_circuit_public_inputs.d.ts +9 -9
  17. package/dest/avm/avm_circuit_public_inputs.js +3 -1
  18. package/dest/avm/avm_proving_request.d.ts +299 -299
  19. package/dest/avm/contract_storage_read.d.ts +13 -1
  20. package/dest/avm/contract_storage_read.d.ts.map +1 -1
  21. package/dest/avm/contract_storage_update_request.d.ts +13 -1
  22. package/dest/avm/contract_storage_update_request.d.ts.map +1 -1
  23. package/dest/avm/public_call_stack_item_compressed.d.ts +3 -1
  24. package/dest/avm/public_call_stack_item_compressed.d.ts.map +1 -1
  25. package/dest/avm/public_data_read.d.ts +10 -1
  26. package/dest/avm/public_data_read.d.ts.map +1 -1
  27. package/dest/avm/public_data_update_request.d.ts +10 -1
  28. package/dest/avm/public_data_update_request.d.ts.map +1 -1
  29. package/dest/avm/public_data_update_request.js +3 -1
  30. package/dest/avm/public_data_write.d.ts +7 -1
  31. package/dest/avm/public_data_write.d.ts.map +1 -1
  32. package/dest/avm/public_inner_call_request.d.ts +4 -1
  33. package/dest/avm/public_inner_call_request.d.ts.map +1 -1
  34. package/dest/avm/public_inner_call_request.js +3 -1
  35. package/dest/avm/revert_code.d.ts +4 -4
  36. package/dest/avm/revert_code.d.ts.map +1 -1
  37. package/dest/avm/revert_code.js +3 -1
  38. package/dest/aztec-address/index.js +4 -2
  39. package/dest/block/attestation_info.d.ts +5 -5
  40. package/dest/block/attestation_info.d.ts.map +1 -1
  41. package/dest/block/attestation_info.js +4 -4
  42. package/dest/block/block_hash.d.ts +9 -2
  43. package/dest/block/block_hash.d.ts.map +1 -1
  44. package/dest/block/block_hash.js +15 -0
  45. package/dest/block/block_parameter.d.ts +4 -3
  46. package/dest/block/block_parameter.d.ts.map +1 -1
  47. package/dest/block/block_parameter.js +2 -0
  48. package/dest/block/body.d.ts +1 -1
  49. package/dest/block/body.d.ts.map +1 -1
  50. package/dest/block/body.js +5 -2
  51. package/dest/block/checkpointed_l2_block.d.ts +20 -137
  52. package/dest/block/checkpointed_l2_block.d.ts.map +1 -1
  53. package/dest/block/checkpointed_l2_block.js +7 -45
  54. package/dest/block/index.d.ts +1 -3
  55. package/dest/block/index.d.ts.map +1 -1
  56. package/dest/block/index.js +0 -2
  57. package/dest/block/l2_block.d.ts +56 -57
  58. package/dest/block/l2_block.d.ts.map +1 -1
  59. package/dest/block/l2_block.js +64 -107
  60. package/dest/block/l2_block_source.d.ts +296 -67
  61. package/dest/block/l2_block_source.d.ts.map +1 -1
  62. package/dest/block/l2_block_source.js +25 -6
  63. package/dest/block/l2_block_stream/index.d.ts +2 -1
  64. package/dest/block/l2_block_stream/index.d.ts.map +1 -1
  65. package/dest/block/l2_block_stream/index.js +1 -0
  66. package/dest/block/l2_block_stream/interfaces.d.ts +15 -5
  67. package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
  68. package/dest/block/l2_block_stream/l2_block_stream.d.ts +8 -3
  69. package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
  70. package/dest/block/l2_block_stream/l2_block_stream.js +106 -31
  71. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts +24 -16
  72. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts.map +1 -1
  73. package/dest/block/l2_block_stream/l2_tips_memory_store.js +55 -61
  74. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +49 -0
  75. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -0
  76. package/dest/block/l2_block_stream/l2_tips_store_base.js +179 -0
  77. package/dest/block/test/l2_tips_store_test_suite.d.ts +1 -1
  78. package/dest/block/test/l2_tips_store_test_suite.d.ts.map +1 -1
  79. package/dest/block/test/l2_tips_store_test_suite.js +478 -38
  80. package/dest/block/validate_block_result.d.ts +24 -24
  81. package/dest/block/validate_block_result.d.ts.map +1 -1
  82. package/dest/block/validate_block_result.js +18 -17
  83. package/dest/checkpoint/checkpoint.d.ts +30 -20
  84. package/dest/checkpoint/checkpoint.d.ts.map +1 -1
  85. package/dest/checkpoint/checkpoint.js +19 -6
  86. package/dest/checkpoint/checkpoint_info.d.ts +32 -3
  87. package/dest/checkpoint/checkpoint_info.d.ts.map +1 -1
  88. package/dest/checkpoint/checkpoint_info.js +34 -1
  89. package/dest/checkpoint/index.d.ts +2 -1
  90. package/dest/checkpoint/index.d.ts.map +1 -1
  91. package/dest/checkpoint/index.js +1 -0
  92. package/dest/checkpoint/published_checkpoint.d.ts +17 -15
  93. package/dest/checkpoint/published_checkpoint.d.ts.map +1 -1
  94. package/dest/checkpoint/published_checkpoint.js +4 -3
  95. package/dest/config/node-rpc-config.js +1 -1
  96. package/dest/contract/complete_address.d.ts +4 -1
  97. package/dest/contract/complete_address.d.ts.map +1 -1
  98. package/dest/contract/contract_deployment_data.d.ts +5 -5
  99. package/dest/contract/index.d.ts +1 -3
  100. package/dest/contract/index.d.ts.map +1 -1
  101. package/dest/contract/index.js +0 -2
  102. package/dest/contract/interfaces/contract_instance.d.ts +16 -16
  103. package/dest/contract/private_function.d.ts +1 -1
  104. package/dest/contract/private_function.d.ts.map +1 -1
  105. package/dest/contract/private_function.js +1 -2
  106. package/dest/database-version/version_manager.d.ts +4 -2
  107. package/dest/database-version/version_manager.d.ts.map +1 -1
  108. package/dest/database-version/version_manager.js +3 -1
  109. package/dest/delayed_public_mutable/delayed_public_mutable_values.d.ts +2 -2
  110. package/dest/delayed_public_mutable/delayed_public_mutable_values.d.ts.map +1 -1
  111. package/dest/delayed_public_mutable/delayed_public_mutable_values.js +7 -10
  112. package/dest/deserialization/index.d.ts +11 -0
  113. package/dest/deserialization/index.d.ts.map +1 -0
  114. package/dest/deserialization/index.js +10 -0
  115. package/dest/epoch-helpers/index.js +1 -1
  116. package/dest/errors/proving_error.d.ts +2 -2
  117. package/dest/errors/proving_error.d.ts.map +1 -1
  118. package/dest/gas/gas.js +3 -1
  119. package/dest/gas/gas_fees.js +3 -1
  120. package/dest/interfaces/api_limit.d.ts +3 -1
  121. package/dest/interfaces/api_limit.d.ts.map +1 -1
  122. package/dest/interfaces/api_limit.js +2 -0
  123. package/dest/interfaces/archiver.d.ts +6 -6
  124. package/dest/interfaces/archiver.d.ts.map +1 -1
  125. package/dest/interfaces/archiver.js +20 -16
  126. package/dest/interfaces/aztec-node-admin.d.ts +71 -35
  127. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  128. package/dest/interfaces/aztec-node-admin.js +3 -3
  129. package/dest/interfaces/aztec-node.d.ts +70 -51
  130. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  131. package/dest/interfaces/aztec-node.js +12 -9
  132. package/dest/interfaces/block-builder.d.ts +16 -14
  133. package/dest/interfaces/block-builder.d.ts.map +1 -1
  134. package/dest/interfaces/configs.d.ts +12 -7
  135. package/dest/interfaces/configs.d.ts.map +1 -1
  136. package/dest/interfaces/configs.js +2 -1
  137. package/dest/interfaces/get_logs_response.d.ts +1 -1
  138. package/dest/interfaces/l2_logs_source.d.ts +14 -5
  139. package/dest/interfaces/l2_logs_source.d.ts.map +1 -1
  140. package/dest/interfaces/p2p.d.ts +7 -9
  141. package/dest/interfaces/p2p.d.ts.map +1 -1
  142. package/dest/interfaces/p2p.js +3 -4
  143. package/dest/interfaces/prover-client.d.ts +10 -1
  144. package/dest/interfaces/prover-client.d.ts.map +1 -1
  145. package/dest/interfaces/prover-client.js +7 -1
  146. package/dest/interfaces/proving-job.d.ts +184 -184
  147. package/dest/interfaces/proving-job.d.ts.map +1 -1
  148. package/dest/interfaces/proving-job.js +1 -7
  149. package/dest/interfaces/server_circuit_prover.d.ts +4 -3
  150. package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
  151. package/dest/interfaces/tx_provider.d.ts +3 -3
  152. package/dest/interfaces/tx_provider.d.ts.map +1 -1
  153. package/dest/interfaces/validator.d.ts +108 -18
  154. package/dest/interfaces/validator.d.ts.map +1 -1
  155. package/dest/interfaces/validator.js +5 -3
  156. package/dest/interfaces/world_state.d.ts +8 -6
  157. package/dest/interfaces/world_state.d.ts.map +1 -1
  158. package/dest/kernel/claimed_length_array.js +3 -1
  159. package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts +6 -5
  160. package/dest/kernel/hints/build_note_hash_read_request_hints.d.ts.map +1 -1
  161. package/dest/kernel/hints/build_note_hash_read_request_hints.js +19 -10
  162. package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts +3 -3
  163. package/dest/kernel/hints/build_nullifier_read_request_hints.d.ts.map +1 -1
  164. package/dest/kernel/hints/build_nullifier_read_request_hints.js +16 -8
  165. package/dest/kernel/hints/key_validation_hint.d.ts +2 -1
  166. package/dest/kernel/hints/key_validation_hint.d.ts.map +1 -1
  167. package/dest/kernel/hints/key_validation_request.d.ts +2 -1
  168. package/dest/kernel/hints/key_validation_request.d.ts.map +1 -1
  169. package/dest/kernel/hints/key_validation_request_and_generator.d.ts +6 -1
  170. package/dest/kernel/hints/key_validation_request_and_generator.d.ts.map +1 -1
  171. package/dest/kernel/hints/private_kernel_reset_hints.d.ts +13 -1
  172. package/dest/kernel/hints/private_kernel_reset_hints.d.ts.map +1 -1
  173. package/dest/kernel/hints/read_request.d.ts +7 -1
  174. package/dest/kernel/hints/read_request.d.ts.map +1 -1
  175. package/dest/kernel/hints/read_request_hints.d.ts +7 -1
  176. package/dest/kernel/hints/read_request_hints.d.ts.map +1 -1
  177. package/dest/kernel/hints/transient_data_squashing_hint.js +3 -1
  178. package/dest/kernel/log_hash.js +3 -1
  179. package/dest/kernel/private_accumulated_data.d.ts +23 -1
  180. package/dest/kernel/private_accumulated_data.d.ts.map +1 -1
  181. package/dest/kernel/private_call_data.d.ts +25 -1
  182. package/dest/kernel/private_call_data.d.ts.map +1 -1
  183. package/dest/kernel/private_call_request.d.ts +16 -1
  184. package/dest/kernel/private_call_request.d.ts.map +1 -1
  185. package/dest/kernel/private_circuit_public_inputs.d.ts +74 -1
  186. package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
  187. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts +31 -1
  188. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts.map +1 -1
  189. package/dest/kernel/private_kernel_data.d.ts +7 -1
  190. package/dest/kernel/private_kernel_data.d.ts.map +1 -1
  191. package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts +22 -1
  192. package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts.map +1 -1
  193. package/dest/kernel/private_kernel_inner_circuit_private_inputs.d.ts +7 -1
  194. package/dest/kernel/private_kernel_inner_circuit_private_inputs.d.ts.map +1 -1
  195. package/dest/kernel/private_kernel_reset_circuit_private_inputs.d.ts +4 -1
  196. package/dest/kernel/private_kernel_reset_circuit_private_inputs.d.ts.map +1 -1
  197. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts +10 -1
  198. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts.map +1 -1
  199. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts +23 -1
  200. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts.map +1 -1
  201. package/dest/kernel/private_log_data.js +5 -2
  202. package/dest/kernel/private_to_avm_accumulated_data.d.ts +2 -2
  203. package/dest/kernel/private_to_avm_accumulated_data.js +5 -2
  204. package/dest/kernel/private_to_public_accumulated_data.js +3 -1
  205. package/dest/kernel/private_to_rollup_accumulated_data.d.ts +17 -1
  206. package/dest/kernel/private_to_rollup_accumulated_data.d.ts.map +1 -1
  207. package/dest/kernel/private_to_rollup_accumulated_data.js +3 -1
  208. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts +16 -1
  209. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts.map +1 -1
  210. package/dest/kernel/private_validation_requests.d.ts +10 -1
  211. package/dest/kernel/private_validation_requests.d.ts.map +1 -1
  212. package/dest/kernel/private_validation_requests.js +3 -1
  213. package/dest/kernel/public_call_request.d.ts +22 -1
  214. package/dest/kernel/public_call_request.d.ts.map +1 -1
  215. package/dest/kernel/public_call_request.js +5 -2
  216. package/dest/kernel/utils/optional_number.d.ts +7 -1
  217. package/dest/kernel/utils/optional_number.d.ts.map +1 -1
  218. package/dest/keys/public_keys.d.ts +5 -1
  219. package/dest/keys/public_keys.d.ts.map +1 -1
  220. package/dest/logs/contract_class_log.js +3 -1
  221. package/dest/logs/extended_contract_class_log.d.ts +3 -1
  222. package/dest/logs/extended_contract_class_log.d.ts.map +1 -1
  223. package/dest/logs/extended_public_log.d.ts +5 -3
  224. package/dest/logs/extended_public_log.d.ts.map +1 -1
  225. package/dest/logs/index.d.ts +1 -2
  226. package/dest/logs/index.d.ts.map +1 -1
  227. package/dest/logs/index.js +0 -1
  228. package/dest/logs/log_id.d.ts +5 -1
  229. package/dest/logs/log_id.d.ts.map +1 -1
  230. package/dest/logs/private_log.js +3 -1
  231. package/dest/logs/public_log.js +3 -1
  232. package/dest/logs/tx_scoped_l2_log.d.ts +18 -39
  233. package/dest/logs/tx_scoped_l2_log.d.ts.map +1 -1
  234. package/dest/logs/tx_scoped_l2_log.js +29 -50
  235. package/dest/messaging/in_hash.d.ts +4 -2
  236. package/dest/messaging/in_hash.d.ts.map +1 -1
  237. package/dest/messaging/in_hash.js +3 -1
  238. package/dest/messaging/inbox_leaf.d.ts +3 -1
  239. package/dest/messaging/inbox_leaf.d.ts.map +1 -1
  240. package/dest/messaging/l1_actor.d.ts +7 -1
  241. package/dest/messaging/l1_actor.d.ts.map +1 -1
  242. package/dest/messaging/l1_to_l2_message.d.ts +6 -1
  243. package/dest/messaging/l1_to_l2_message.d.ts.map +1 -1
  244. package/dest/messaging/l2_actor.d.ts +7 -1
  245. package/dest/messaging/l2_actor.d.ts.map +1 -1
  246. package/dest/messaging/l2_to_l1_membership.d.ts +88 -6
  247. package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -1
  248. package/dest/messaging/l2_to_l1_membership.js +160 -42
  249. package/dest/messaging/out_hash.d.ts +41 -3
  250. package/dest/messaging/out_hash.d.ts.map +1 -1
  251. package/dest/messaging/out_hash.js +54 -19
  252. package/dest/note/note_dao.d.ts +36 -5
  253. package/dest/note/note_dao.d.ts.map +1 -1
  254. package/dest/note/note_dao.js +15 -12
  255. package/dest/p2p/attestation_utils.d.ts +3 -3
  256. package/dest/p2p/attestation_utils.d.ts.map +1 -1
  257. package/dest/p2p/attestation_utils.js +1 -1
  258. package/dest/p2p/block_proposal.d.ts +93 -21
  259. package/dest/p2p/block_proposal.d.ts.map +1 -1
  260. package/dest/p2p/block_proposal.js +140 -39
  261. package/dest/p2p/checkpoint_attestation.d.ts +81 -0
  262. package/dest/p2p/checkpoint_attestation.d.ts.map +1 -0
  263. package/dest/p2p/{block_attestation.js → checkpoint_attestation.js} +22 -19
  264. package/dest/p2p/checkpoint_proposal.d.ts +160 -0
  265. package/dest/p2p/checkpoint_proposal.d.ts.map +1 -0
  266. package/dest/p2p/checkpoint_proposal.js +229 -0
  267. package/dest/p2p/consensus_payload.d.ts +9 -9
  268. package/dest/p2p/consensus_payload.d.ts.map +1 -1
  269. package/dest/p2p/consensus_payload.js +3 -5
  270. package/dest/p2p/constants.d.ts +3 -0
  271. package/dest/p2p/constants.d.ts.map +1 -0
  272. package/dest/p2p/constants.js +2 -0
  273. package/dest/p2p/gossipable.d.ts +4 -3
  274. package/dest/p2p/gossipable.d.ts.map +1 -1
  275. package/dest/p2p/gossipable.js +16 -5
  276. package/dest/p2p/index.d.ts +5 -2
  277. package/dest/p2p/index.d.ts.map +1 -1
  278. package/dest/p2p/index.js +4 -1
  279. package/dest/p2p/message_validator.d.ts +18 -3
  280. package/dest/p2p/message_validator.d.ts.map +1 -1
  281. package/dest/p2p/message_validator.js +2 -1
  282. package/dest/p2p/signature_utils.d.ts +5 -3
  283. package/dest/p2p/signature_utils.d.ts.map +1 -1
  284. package/dest/p2p/signature_utils.js +3 -1
  285. package/dest/p2p/signed_txs.d.ts +42 -0
  286. package/dest/p2p/signed_txs.d.ts.map +1 -0
  287. package/dest/p2p/signed_txs.js +75 -0
  288. package/dest/p2p/topic_type.d.ts +3 -2
  289. package/dest/p2p/topic_type.d.ts.map +1 -1
  290. package/dest/p2p/topic_type.js +10 -3
  291. package/dest/parity/parity_base_private_inputs.d.ts +3 -1
  292. package/dest/parity/parity_base_private_inputs.d.ts.map +1 -1
  293. package/dest/parity/parity_public_inputs.d.ts +4 -1
  294. package/dest/parity/parity_public_inputs.d.ts.map +1 -1
  295. package/dest/parity/parity_root_private_inputs.d.ts +2 -1
  296. package/dest/parity/parity_root_private_inputs.d.ts.map +1 -1
  297. package/dest/proofs/chonk_proof.d.ts +1 -1
  298. package/dest/proofs/chonk_proof.d.ts.map +1 -1
  299. package/dest/proofs/chonk_proof.js +9 -4
  300. package/dest/proofs/proof.d.ts +4 -1
  301. package/dest/proofs/proof.d.ts.map +1 -1
  302. package/dest/proofs/recursive_proof.d.ts +10 -1
  303. package/dest/proofs/recursive_proof.d.ts.map +1 -1
  304. package/dest/rollup/base_rollup_hints.d.ts +34 -1
  305. package/dest/rollup/base_rollup_hints.d.ts.map +1 -1
  306. package/dest/rollup/block_constant_data.d.ts +12 -1
  307. package/dest/rollup/block_constant_data.d.ts.map +1 -1
  308. package/dest/rollup/block_headers_hash.js +1 -1
  309. package/dest/rollup/block_merge_rollup_private_inputs.d.ts +4 -1
  310. package/dest/rollup/block_merge_rollup_private_inputs.d.ts.map +1 -1
  311. package/dest/rollup/block_rollup_public_inputs.d.ts +47 -11
  312. package/dest/rollup/block_rollup_public_inputs.d.ts.map +1 -1
  313. package/dest/rollup/block_rollup_public_inputs.js +8 -12
  314. package/dest/rollup/block_root_rollup_private_inputs.d.ts +64 -1
  315. package/dest/rollup/block_root_rollup_private_inputs.d.ts.map +1 -1
  316. package/dest/rollup/checkpoint_constant_data.d.ts +10 -1
  317. package/dest/rollup/checkpoint_constant_data.d.ts.map +1 -1
  318. package/dest/rollup/checkpoint_constant_data.js +3 -1
  319. package/dest/rollup/checkpoint_header.d.ts +42 -12
  320. package/dest/rollup/checkpoint_header.d.ts.map +1 -1
  321. package/dest/rollup/checkpoint_header.js +49 -19
  322. package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts +4 -1
  323. package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts.map +1 -1
  324. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +41 -1
  325. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -1
  326. package/dest/rollup/checkpoint_rollup_public_inputs.js +10 -2
  327. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts +44 -3
  328. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts.map +1 -1
  329. package/dest/rollup/checkpoint_root_rollup_private_inputs.js +13 -2
  330. package/dest/rollup/epoch_constant_data.d.ts +16 -1
  331. package/dest/rollup/epoch_constant_data.d.ts.map +1 -1
  332. package/dest/rollup/root_rollup_private_inputs.d.ts +6 -1
  333. package/dest/rollup/root_rollup_private_inputs.d.ts.map +1 -1
  334. package/dest/rollup/root_rollup_public_inputs.d.ts +18 -3
  335. package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -1
  336. package/dest/rollup/root_rollup_public_inputs.js +9 -3
  337. package/dest/rollup/tree_snapshot_diff_hints.d.ts +24 -1
  338. package/dest/rollup/tree_snapshot_diff_hints.d.ts.map +1 -1
  339. package/dest/rollup/tx_merge_rollup_private_inputs.d.ts +4 -1
  340. package/dest/rollup/tx_merge_rollup_private_inputs.d.ts.map +1 -1
  341. package/dest/rollup/tx_rollup_public_inputs.d.ts +29 -1
  342. package/dest/rollup/tx_rollup_public_inputs.d.ts.map +1 -1
  343. package/dest/schemas/schemas.d.ts +1 -1
  344. package/dest/tests/factories.d.ts +39 -10
  345. package/dest/tests/factories.d.ts.map +1 -1
  346. package/dest/tests/factories.js +80 -25
  347. package/dest/tests/jest.js +1 -1
  348. package/dest/tests/mocks.d.ts +69 -18
  349. package/dest/tests/mocks.d.ts.map +1 -1
  350. package/dest/tests/mocks.js +119 -54
  351. package/dest/trees/append_only_tree_snapshot.d.ts +13 -1
  352. package/dest/trees/append_only_tree_snapshot.d.ts.map +1 -1
  353. package/dest/trees/append_only_tree_snapshot.js +3 -1
  354. package/dest/trees/nullifier_leaf.d.ts +13 -1
  355. package/dest/trees/nullifier_leaf.d.ts.map +1 -1
  356. package/dest/trees/nullifier_membership_witness.d.ts +10 -1
  357. package/dest/trees/nullifier_membership_witness.d.ts.map +1 -1
  358. package/dest/trees/public_data_leaf.d.ts +16 -1
  359. package/dest/trees/public_data_leaf.d.ts.map +1 -1
  360. package/dest/trees/public_data_witness.d.ts +11 -1
  361. package/dest/trees/public_data_witness.d.ts.map +1 -1
  362. package/dest/tx/block_header.d.ts +14 -2
  363. package/dest/tx/block_header.d.ts.map +1 -1
  364. package/dest/tx/block_header.js +8 -2
  365. package/dest/tx/call_context.d.ts +13 -1
  366. package/dest/tx/call_context.d.ts.map +1 -1
  367. package/dest/tx/call_context.js +3 -1
  368. package/dest/tx/capsule.d.ts +4 -1
  369. package/dest/tx/capsule.d.ts.map +1 -1
  370. package/dest/tx/execution_payload.d.ts +9 -1
  371. package/dest/tx/execution_payload.d.ts.map +1 -1
  372. package/dest/tx/function_data.d.ts +4 -2
  373. package/dest/tx/function_data.d.ts.map +1 -1
  374. package/dest/tx/global_variable_builder.d.ts +2 -2
  375. package/dest/tx/global_variable_builder.d.ts.map +1 -1
  376. package/dest/tx/global_variables.d.ts +9 -1
  377. package/dest/tx/global_variables.d.ts.map +1 -1
  378. package/dest/tx/global_variables.js +3 -1
  379. package/dest/tx/hashed_values.d.ts +7 -1
  380. package/dest/tx/hashed_values.d.ts.map +1 -1
  381. package/dest/tx/in_tx.d.ts +1 -1
  382. package/dest/tx/index.d.ts +1 -2
  383. package/dest/tx/index.d.ts.map +1 -1
  384. package/dest/tx/index.js +0 -1
  385. package/dest/tx/partial_state_reference.d.ts +4 -1
  386. package/dest/tx/partial_state_reference.d.ts.map +1 -1
  387. package/dest/tx/private_execution_result.d.ts +23 -6
  388. package/dest/tx/private_execution_result.d.ts.map +1 -1
  389. package/dest/tx/private_execution_result.js +4 -21
  390. package/dest/tx/private_tx_constant_data.d.ts +16 -1
  391. package/dest/tx/private_tx_constant_data.d.ts.map +1 -1
  392. package/dest/tx/profiling.d.ts +149 -26
  393. package/dest/tx/profiling.d.ts.map +1 -1
  394. package/dest/tx/profiling.js +44 -7
  395. package/dest/tx/protocol_contracts.d.ts +1 -1
  396. package/dest/tx/public_call_request_with_calldata.d.ts +7 -1
  397. package/dest/tx/public_call_request_with_calldata.d.ts.map +1 -1
  398. package/dest/tx/public_call_request_with_calldata.js +3 -1
  399. package/dest/tx/state_reference.d.ts +3 -1
  400. package/dest/tx/state_reference.d.ts.map +1 -1
  401. package/dest/tx/state_reference.js +3 -1
  402. package/dest/tx/tree_snapshots.js +3 -1
  403. package/dest/tx/tx.d.ts +33 -3
  404. package/dest/tx/tx.d.ts.map +1 -1
  405. package/dest/tx/tx.js +18 -6
  406. package/dest/tx/tx_context.d.ts +2 -1
  407. package/dest/tx/tx_context.d.ts.map +1 -1
  408. package/dest/tx/tx_effect.d.ts +32 -6
  409. package/dest/tx/tx_effect.d.ts.map +1 -1
  410. package/dest/tx/tx_effect.js +6 -9
  411. package/dest/tx/tx_execution_request.d.ts +30 -1
  412. package/dest/tx/tx_execution_request.d.ts.map +1 -1
  413. package/dest/tx/tx_execution_request.js +6 -2
  414. package/dest/tx/tx_hash.d.ts +2 -1
  415. package/dest/tx/tx_hash.d.ts.map +1 -1
  416. package/dest/tx/tx_receipt.d.ts +44 -10
  417. package/dest/tx/tx_receipt.d.ts.map +1 -1
  418. package/dest/tx/tx_receipt.js +44 -13
  419. package/dest/tx/tx_request.d.ts +6 -1
  420. package/dest/tx/tx_request.d.ts.map +1 -1
  421. package/dest/tx/validator/error_texts.d.ts +2 -1
  422. package/dest/tx/validator/error_texts.d.ts.map +1 -1
  423. package/dest/tx/validator/error_texts.js +2 -0
  424. package/dest/types/shared.d.ts +4 -1
  425. package/dest/types/shared.d.ts.map +1 -1
  426. package/dest/validators/schemas.d.ts +8 -8
  427. package/dest/vks/verification_key.d.ts +22 -1
  428. package/dest/vks/verification_key.d.ts.map +1 -1
  429. package/dest/vks/vk_data.d.ts +7 -1
  430. package/dest/vks/vk_data.d.ts.map +1 -1
  431. package/dest/zkpassport/index.d.ts +3 -4
  432. package/dest/zkpassport/index.d.ts.map +1 -1
  433. package/dest/zkpassport/index.js +9 -9
  434. package/package.json +12 -10
  435. package/src/abi/contract_artifact.ts +10 -10
  436. package/src/abi/utils.ts +17 -0
  437. package/src/block/attestation_info.ts +9 -6
  438. package/src/block/block_hash.ts +27 -1
  439. package/src/block/block_parameter.ts +4 -2
  440. package/src/block/body.ts +2 -1
  441. package/src/block/checkpointed_l2_block.ts +8 -58
  442. package/src/block/index.ts +0 -2
  443. package/src/block/l2_block.ts +101 -148
  444. package/src/block/l2_block_source.ts +121 -43
  445. package/src/block/l2_block_stream/index.ts +1 -0
  446. package/src/block/l2_block_stream/interfaces.ts +15 -4
  447. package/src/block/l2_block_stream/l2_block_stream.ts +130 -39
  448. package/src/block/l2_block_stream/l2_tips_memory_store.ts +62 -56
  449. package/src/block/l2_block_stream/l2_tips_store_base.ts +226 -0
  450. package/src/block/test/l2_tips_store_test_suite.ts +480 -36
  451. package/src/block/validate_block_result.ts +40 -35
  452. package/src/checkpoint/checkpoint.ts +34 -11
  453. package/src/checkpoint/checkpoint_info.ts +45 -2
  454. package/src/checkpoint/index.ts +1 -0
  455. package/src/checkpoint/published_checkpoint.ts +4 -3
  456. package/src/config/node-rpc-config.ts +1 -1
  457. package/src/contract/index.ts +0 -2
  458. package/src/contract/private_function.ts +1 -2
  459. package/src/delayed_public_mutable/delayed_public_mutable_values.ts +9 -10
  460. package/src/deserialization/index.ts +21 -0
  461. package/src/epoch-helpers/index.ts +1 -1
  462. package/src/interfaces/api_limit.ts +2 -0
  463. package/src/interfaces/archiver.ts +24 -23
  464. package/src/interfaces/aztec-node-admin.ts +7 -4
  465. package/src/interfaces/aztec-node.ts +100 -68
  466. package/src/interfaces/block-builder.ts +31 -24
  467. package/src/interfaces/configs.ts +3 -0
  468. package/src/interfaces/l2_logs_source.ts +17 -4
  469. package/src/interfaces/p2p.ts +8 -12
  470. package/src/interfaces/prover-client.ts +15 -0
  471. package/src/interfaces/proving-job.ts +2 -11
  472. package/src/interfaces/server_circuit_prover.ts +3 -2
  473. package/src/interfaces/tx_provider.ts +2 -2
  474. package/src/interfaces/validator.ts +63 -14
  475. package/src/interfaces/world_state.ts +9 -7
  476. package/src/kernel/hints/build_note_hash_read_request_hints.ts +20 -12
  477. package/src/kernel/hints/build_nullifier_read_request_hints.ts +17 -14
  478. package/src/logs/index.ts +0 -1
  479. package/src/logs/tx_scoped_l2_log.ts +37 -53
  480. package/src/messaging/in_hash.ts +3 -1
  481. package/src/messaging/l2_to_l1_membership.ts +178 -52
  482. package/src/messaging/out_hash.ts +62 -21
  483. package/src/note/note_dao.ts +18 -13
  484. package/src/p2p/attestation_utils.ts +3 -3
  485. package/src/p2p/block_proposal.ts +204 -44
  486. package/src/p2p/{block_attestation.ts → checkpoint_attestation.ts} +31 -25
  487. package/src/p2p/checkpoint_proposal.ts +348 -0
  488. package/src/p2p/consensus_payload.ts +5 -7
  489. package/src/p2p/constants.ts +3 -0
  490. package/src/p2p/gossipable.ts +14 -4
  491. package/src/p2p/index.ts +4 -1
  492. package/src/p2p/message_validator.ts +14 -2
  493. package/src/p2p/signature_utils.ts +3 -1
  494. package/src/p2p/signed_txs.ts +88 -0
  495. package/src/p2p/topic_type.ts +4 -3
  496. package/src/proofs/chonk_proof.ts +9 -5
  497. package/src/rollup/block_headers_hash.ts +1 -1
  498. package/src/rollup/block_rollup_public_inputs.ts +5 -11
  499. package/src/rollup/checkpoint_header.ts +63 -20
  500. package/src/rollup/checkpoint_rollup_public_inputs.ts +12 -0
  501. package/src/rollup/checkpoint_root_rollup_private_inputs.ts +14 -1
  502. package/src/rollup/root_rollup_public_inputs.ts +9 -0
  503. package/src/tests/factories.ts +101 -40
  504. package/src/tests/jest.ts +1 -1
  505. package/src/tests/mocks.ts +207 -87
  506. package/src/tx/block_header.ts +11 -3
  507. package/src/tx/global_variable_builder.ts +1 -1
  508. package/src/tx/index.ts +0 -1
  509. package/src/tx/private_execution_result.ts +1 -16
  510. package/src/tx/profiling.ts +46 -4
  511. package/src/tx/tx.ts +19 -11
  512. package/src/tx/tx_effect.ts +3 -10
  513. package/src/tx/tx_execution_request.ts +2 -0
  514. package/src/tx/tx_receipt.ts +72 -15
  515. package/src/tx/validator/error_texts.ts +3 -0
  516. package/src/zkpassport/index.ts +11 -12
  517. package/dest/block/l2_block_code_to_purge.d.ts +0 -12
  518. package/dest/block/l2_block_code_to_purge.d.ts.map +0 -1
  519. package/dest/block/l2_block_code_to_purge.js +0 -61
  520. package/dest/block/l2_block_header.d.ts +0 -98
  521. package/dest/block/l2_block_header.d.ts.map +0 -1
  522. package/dest/block/l2_block_header.js +0 -153
  523. package/dest/block/l2_block_new.d.ts +0 -135
  524. package/dest/block/l2_block_new.d.ts.map +0 -1
  525. package/dest/block/l2_block_new.js +0 -152
  526. package/dest/contract/contract_class_metadata.d.ts +0 -8
  527. package/dest/contract/contract_class_metadata.d.ts.map +0 -1
  528. package/dest/contract/contract_class_metadata.js +0 -1
  529. package/dest/contract/contract_metadata.d.ts +0 -7
  530. package/dest/contract/contract_metadata.d.ts.map +0 -1
  531. package/dest/contract/contract_metadata.js +0 -1
  532. package/dest/logs/log_with_tx_data.d.ts +0 -19
  533. package/dest/logs/log_with_tx_data.d.ts.map +0 -1
  534. package/dest/logs/log_with_tx_data.js +0 -49
  535. package/dest/p2p/block_attestation.d.ts +0 -80
  536. package/dest/p2p/block_attestation.d.ts.map +0 -1
  537. package/dest/tx/content_commitment.d.ts +0 -49
  538. package/dest/tx/content_commitment.d.ts.map +0 -1
  539. package/dest/tx/content_commitment.js +0 -90
  540. package/src/block/l2_block_code_to_purge.ts +0 -88
  541. package/src/block/l2_block_header.ts +0 -246
  542. package/src/block/l2_block_new.ts +0 -207
  543. package/src/contract/contract_class_metadata.ts +0 -8
  544. package/src/contract/contract_metadata.ts +0 -7
  545. package/src/logs/log_with_tx_data.ts +0 -46
  546. package/src/tx/content_commitment.ts +0 -113
@@ -9,6 +9,7 @@ import type { AvmCircuitInputs } from '../avm/avm.js';
9
9
  import type { ParityBasePrivateInputs } from '../parity/parity_base_private_inputs.js';
10
10
  import type { ParityPublicInputs } from '../parity/parity_public_inputs.js';
11
11
  import type { ParityRootPrivateInputs } from '../parity/parity_root_private_inputs.js';
12
+ import type { RecursiveProof } from '../proofs/recursive_proof.js';
12
13
  import type { BlockMergeRollupPrivateInputs } from '../rollup/block_merge_rollup_private_inputs.js';
13
14
  import type { BlockRollupPublicInputs } from '../rollup/block_rollup_public_inputs.js';
14
15
  import type {
@@ -34,7 +35,7 @@ import type { RootRollupPublicInputs } from '../rollup/root_rollup_public_inputs
34
35
  import type { TxMergeRollupPrivateInputs } from '../rollup/tx_merge_rollup_private_inputs.js';
35
36
  import type { TxRollupPublicInputs } from '../rollup/tx_rollup_public_inputs.js';
36
37
  import type { Tx } from '../tx/tx.js';
37
- import type { ProofAndVerificationKey, PublicInputsAndRecursiveProof } from './proving-job.js';
38
+ import type { PublicInputsAndRecursiveProof } from './proving-job.js';
38
39
 
39
40
  /**
40
41
  * Generates proofs for parity and rollup circuits.
@@ -188,7 +189,7 @@ export interface ServerCircuitProver {
188
189
  inputs: AvmCircuitInputs,
189
190
  signal?: AbortSignal,
190
191
  epochNumber?: number,
191
- ): Promise<ProofAndVerificationKey<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>>;
192
+ ): Promise<RecursiveProof<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>>;
192
193
  }
193
194
 
194
195
  export type IVCProofVerificationResult = {
@@ -1,4 +1,4 @@
1
- import type { L2BlockNew } from '@aztec/stdlib/block';
1
+ import type { L2Block } from '@aztec/stdlib/block';
2
2
  import type { BlockProposal } from '@aztec/stdlib/p2p';
3
3
  import { type Tx, TxHash } from '@aztec/stdlib/tx';
4
4
 
@@ -13,5 +13,5 @@ export interface ITxProvider {
13
13
  opts: { pinnedPeer: PeerId | undefined; deadline: Date },
14
14
  ): Promise<{ txs: Tx[]; missingTxs: TxHash[] }>;
15
15
 
16
- getTxsForBlock(block: L2BlockNew, opts: { deadline: Date }): Promise<{ txs: Tx[]; missingTxs: TxHash[] }>;
16
+ getTxsForBlock(block: L2Block, opts: { deadline: Date }): Promise<{ txs: Tx[]; missingTxs: TxHash[] }>;
17
17
  }
@@ -1,23 +1,32 @@
1
+ import type { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
1
2
  import type { SecretValue } from '@aztec/foundation/config';
2
3
  import { Fr } from '@aztec/foundation/curves/bn254';
3
4
  import type { EthAddress } from '@aztec/foundation/eth-address';
4
5
  import type { Signature } from '@aztec/foundation/eth-signature';
5
6
  import { schemas, zodFor } from '@aztec/foundation/schemas';
6
7
  import type { SequencerConfig, SlasherConfig } from '@aztec/stdlib/interfaces/server';
7
- import type { BlockAttestation, BlockProposal, BlockProposalOptions } from '@aztec/stdlib/p2p';
8
- import type { Tx } from '@aztec/stdlib/tx';
8
+ import type {
9
+ BlockProposal,
10
+ BlockProposalOptions,
11
+ CheckpointAttestation,
12
+ CheckpointLastBlockData,
13
+ CheckpointProposal,
14
+ CheckpointProposalOptions,
15
+ } from '@aztec/stdlib/p2p';
16
+ import type { CheckpointHeader } from '@aztec/stdlib/rollup';
17
+ import type { BlockHeader, Tx } from '@aztec/stdlib/tx';
18
+ import { type ValidatorHASignerConfig, ValidatorHASignerConfigSchema } from '@aztec/validator-ha-signer/config';
9
19
 
10
20
  import type { PeerId } from '@libp2p/interface';
11
21
  import { z } from 'zod';
12
22
 
13
23
  import type { CommitteeAttestationsAndSigners } from '../block/index.js';
14
- import type { CheckpointHeader } from '../rollup/checkpoint_header.js';
15
24
  import { AllowedElementSchema } from './allowed_element.js';
16
25
 
17
26
  /**
18
27
  * Validator client configuration
19
28
  */
20
- export interface ValidatorClientConfig {
29
+ export type ValidatorClientConfig = ValidatorHASignerConfig & {
21
30
  /** The private keys of the validators participating in attestation duties */
22
31
  validatorPrivateKeys?: SecretValue<`0x${string}`[]>;
23
32
 
@@ -36,15 +45,19 @@ export interface ValidatorClientConfig {
36
45
  /** Whether to re-execute transactions in a block proposal before attesting */
37
46
  validatorReexecute: boolean;
38
47
 
39
- /** Will re-execute until this many milliseconds are left in the slot */
40
- validatorReexecuteDeadlineMs: number;
41
-
42
48
  /** Whether to always reexecute block proposals, even for non-validator nodes or when out of the currnet committee */
43
49
  alwaysReexecuteBlockProposals?: boolean;
44
50
 
45
51
  /** Whether to run in fisherman mode: validates all proposals and attestations but does not broadcast attestations or participate in consensus */
46
52
  fishermanMode?: boolean;
47
- }
53
+
54
+ // TODO(palla/mbps): Change default to false once checkpoint validation is stable
55
+ /** Skip checkpoint proposal validation and always attest (default: true) */
56
+ skipCheckpointProposalValidation?: boolean;
57
+
58
+ /** Skip pushing re-executed blocks to archiver (default: false) */
59
+ skipPushProposedBlocksToArchiver?: boolean;
60
+ };
48
61
 
49
62
  export type ValidatorClientFullConfig = ValidatorClientConfig &
50
63
  Pick<SequencerConfig, 'txPublicSetupAllowList' | 'broadcastInvalidBlockProposal'> &
@@ -57,15 +70,16 @@ export type ValidatorClientFullConfig = ValidatorClientConfig &
57
70
  };
58
71
 
59
72
  export const ValidatorClientConfigSchema = zodFor<Omit<ValidatorClientConfig, 'validatorPrivateKeys'>>()(
60
- z.object({
73
+ ValidatorHASignerConfigSchema.extend({
61
74
  validatorAddresses: z.array(schemas.EthAddress).optional(),
62
75
  disableValidator: z.boolean(),
63
76
  disabledValidators: z.array(schemas.EthAddress),
64
77
  attestationPollingIntervalMs: z.number().min(0),
65
78
  validatorReexecute: z.boolean(),
66
- validatorReexecuteDeadlineMs: z.number().min(0),
67
79
  alwaysReexecuteBlockProposals: z.boolean().optional(),
68
80
  fishermanMode: z.boolean().optional(),
81
+ skipCheckpointProposalValidation: z.boolean().optional(),
82
+ skipPushProposedBlocksToArchiver: z.boolean().optional(),
69
83
  }),
70
84
  );
71
85
 
@@ -78,25 +92,60 @@ export const ValidatorClientFullConfigSchema = zodFor<Omit<ValidatorClientFullCo
78
92
  }),
79
93
  );
80
94
 
95
+ export type CreateCheckpointProposalLastBlockData = Omit<CheckpointLastBlockData, 'txHashes'> & { txs: Tx[] };
96
+
81
97
  export interface Validator {
82
98
  start(): Promise<void>;
83
99
  updateConfig(config: Partial<ValidatorClientFullConfig>): void;
84
100
 
85
101
  // Block validation responsibilities
86
102
  createBlockProposal(
87
- blockNumber: number,
88
- header: CheckpointHeader,
103
+ blockHeader: BlockHeader,
104
+ indexWithinCheckpoint: number,
105
+ inHash: Fr,
89
106
  archive: Fr,
90
107
  txs: Tx[],
91
108
  proposerAddress: EthAddress | undefined,
92
109
  options: BlockProposalOptions,
93
110
  ): Promise<BlockProposal | undefined>;
94
- attestToProposal(proposal: BlockProposal, sender: PeerId): Promise<BlockAttestation[] | undefined>;
111
+
112
+ /** Creates a checkpoint proposal for the last block in a checkpoint */
113
+ createCheckpointProposal(
114
+ checkpointHeader: CheckpointHeader,
115
+ archive: Fr,
116
+ lastBlockInfo: CreateCheckpointProposalLastBlockData | undefined,
117
+ proposerAddress: EthAddress | undefined,
118
+ options: CheckpointProposalOptions,
119
+ ): Promise<CheckpointProposal>;
120
+
121
+ /**
122
+ * Validate a block proposal from a peer.
123
+ * Note: Validators do NOT attest to individual blocks - attestations are only for checkpoint proposals.
124
+ * @returns true if the proposal is valid, false otherwise
125
+ */
126
+ validateBlockProposal(proposal: BlockProposal, sender: PeerId): Promise<boolean>;
127
+
128
+ /**
129
+ * Validate and attest to a checkpoint proposal from a peer.
130
+ * @returns Checkpoint attestations if valid, undefined otherwise
131
+ */
132
+ attestToCheckpointProposal(
133
+ proposal: CheckpointProposal,
134
+ sender: PeerId,
135
+ ): Promise<CheckpointAttestation[] | undefined>;
95
136
 
96
137
  broadcastBlockProposal(proposal: BlockProposal): Promise<void>;
97
- collectAttestations(proposal: BlockProposal, required: number, deadline: Date): Promise<BlockAttestation[]>;
138
+
139
+ /** Collect own attestations for a checkpoint proposal (used when skipping p2p attestation collection) */
140
+ collectOwnAttestations(proposal: CheckpointProposal): Promise<CheckpointAttestation[]>;
141
+
142
+ /** Collect attestations from the p2p network for a checkpoint proposal */
143
+ collectAttestations(proposal: CheckpointProposal, required: number, deadline: Date): Promise<CheckpointAttestation[]>;
144
+
98
145
  signAttestationsAndSigners(
99
146
  attestationsAndSigners: CommitteeAttestationsAndSigners,
100
147
  proposer: EthAddress,
148
+ slot: SlotNumber,
149
+ blockNumber: BlockNumber | CheckpointNumber,
101
150
  ): Promise<Signature>;
102
151
  }
@@ -50,15 +50,20 @@ export interface ForkMerkleTreeOperations {
50
50
  */
51
51
  fork(block?: BlockNumber, opts?: { closeDelayMs?: number }): Promise<MerkleTreeWriteOperations>;
52
52
 
53
- /** Gets a handle that allows reading the state as it was at the given block number. */
54
- getSnapshot(blockNumber: BlockNumber): MerkleTreeReadOperations;
55
-
56
53
  /** Backups the db to the target path. */
57
54
  backupTo(dstPath: string, compact?: boolean): Promise<Record<Exclude<SnapshotDataKeys, 'archiver'>, string>>;
58
55
  }
59
56
 
57
+ export interface ReadonlyWorldStateAccess {
58
+ /** Returns an instance of MerkleTreeAdminOperations that will not include uncommitted data. */
59
+ getCommitted(): MerkleTreeReadOperations;
60
+
61
+ /** Gets a handle that allows reading the state as it was at the given block number. */
62
+ getSnapshot(blockNumber: number): MerkleTreeReadOperations;
63
+ }
64
+
60
65
  /** Defines the interface for a world state synchronizer. */
61
- export interface WorldStateSynchronizer extends ForkMerkleTreeOperations {
66
+ export interface WorldStateSynchronizer extends ReadonlyWorldStateAccess, ForkMerkleTreeOperations {
62
67
  /** Starts the synchronizer. */
63
68
  start(): Promise<void | PromiseWithResolvers<void>>;
64
69
 
@@ -82,9 +87,6 @@ export interface WorldStateSynchronizer extends ForkMerkleTreeOperations {
82
87
  */
83
88
  syncImmediate(minBlockNumber?: BlockNumber, skipThrowIfTargetNotReached?: boolean): Promise<BlockNumber>;
84
89
 
85
- /** Returns an instance of MerkleTreeAdminOperations that will not include uncommitted data. */
86
- getCommitted(): MerkleTreeReadOperations;
87
-
88
90
  /** Deletes the db */
89
91
  clear(): Promise<void>;
90
92
  }
@@ -3,6 +3,7 @@ import {
3
3
  MAX_NOTE_HASH_READ_REQUESTS_PER_TX,
4
4
  type NOTE_HASH_TREE_HEIGHT,
5
5
  } from '@aztec/constants';
6
+ import type { Fr } from '@aztec/foundation/curves/bn254';
6
7
  import type { MembershipWitness } from '@aztec/foundation/trees';
7
8
 
8
9
  import type { ClaimedLengthArray } from '../claimed_length_array.js';
@@ -61,12 +62,11 @@ export function getNoteHashReadRequestResetActions(
61
62
 
62
63
  export async function buildNoteHashReadRequestHintsFromResetActions<PENDING extends number, SETTLED extends number>(
63
64
  oracle: {
64
- getNoteHashMembershipWitness(leafIndex: bigint): Promise<MembershipWitness<typeof NOTE_HASH_TREE_HEIGHT>>;
65
+ getNoteHashMembershipWitness(noteHash: Fr): Promise<MembershipWitness<typeof NOTE_HASH_TREE_HEIGHT> | undefined>;
65
66
  },
66
67
  noteHashReadRequests: ClaimedLengthArray<ScopedReadRequest, typeof MAX_NOTE_HASH_READ_REQUESTS_PER_TX>,
67
68
  noteHashes: ClaimedLengthArray<ScopedNoteHash, typeof MAX_NOTE_HASHES_PER_TX>,
68
69
  resetActions: ReadRequestResetActions<typeof MAX_NOTE_HASH_READ_REQUESTS_PER_TX>,
69
- noteHashLeafIndexMap: Map<bigint, bigint>,
70
70
  maxPending: PENDING = MAX_NOTE_HASH_READ_REQUESTS_PER_TX as PENDING,
71
71
  maxSettled: SETTLED = MAX_NOTE_HASH_READ_REQUESTS_PER_TX as SETTLED,
72
72
  ) {
@@ -76,18 +76,28 @@ export async function buildNoteHashReadRequestHintsFromResetActions<PENDING exte
76
76
  builder.addPendingReadRequest(hint.readRequestIndex, hint.pendingValueIndex);
77
77
  });
78
78
 
79
+ // Collect all settled read requests
80
+ const settledRequests: { index: number; readRequest: ScopedReadRequest }[] = [];
79
81
  for (let i = 0; i < resetActions.actions.length; i++) {
80
82
  if (resetActions.actions[i] === ReadRequestActionEnum.READ_AS_SETTLED) {
81
- const readRequest = noteHashReadRequests.array[i];
82
- const leafIndex = noteHashLeafIndexMap.get(readRequest.value.toBigInt());
83
- if (leafIndex === undefined) {
84
- throw new Error('Read request is reading an unknown note hash.');
85
- }
86
- const membershipWitness = await oracle.getNoteHashMembershipWitness(leafIndex);
87
- builder.addSettledReadRequest(i, membershipWitness, readRequest.value);
83
+ settledRequests.push({ index: i, readRequest: noteHashReadRequests.array[i] });
88
84
  }
89
85
  }
90
86
 
87
+ // Fetch all membership witnesses in parallel
88
+ const membershipWitnesses = await Promise.all(
89
+ settledRequests.map(({ readRequest }) => oracle.getNoteHashMembershipWitness(readRequest.value)),
90
+ );
91
+
92
+ // Add settled read requests to builder
93
+ for (let i = 0; i < settledRequests.length; i++) {
94
+ const membershipWitness = membershipWitnesses[i];
95
+ if (!membershipWitness) {
96
+ throw new Error('Read request is reading an unknown note hash.');
97
+ }
98
+ builder.addSettledReadRequest(settledRequests[i].index, membershipWitness, settledRequests[i].readRequest.value);
99
+ }
100
+
91
101
  const noteHashMap: Map<bigint, { noteHash: ScopedNoteHash; index: number }[]> = new Map();
92
102
  noteHashes.getActiveItems().forEach((noteHash, index) => {
93
103
  const value = noteHash.value.toBigInt();
@@ -101,11 +111,10 @@ export async function buildNoteHashReadRequestHintsFromResetActions<PENDING exte
101
111
 
102
112
  export async function buildNoteHashReadRequestHints<PENDING extends number, SETTLED extends number>(
103
113
  oracle: {
104
- getNoteHashMembershipWitness(leafIndex: bigint): Promise<MembershipWitness<typeof NOTE_HASH_TREE_HEIGHT>>;
114
+ getNoteHashMembershipWitness(noteHash: Fr): Promise<MembershipWitness<typeof NOTE_HASH_TREE_HEIGHT>>;
105
115
  },
106
116
  noteHashReadRequests: ClaimedLengthArray<ScopedReadRequest, typeof MAX_NOTE_HASH_READ_REQUESTS_PER_TX>,
107
117
  noteHashes: ClaimedLengthArray<ScopedNoteHash, typeof MAX_NOTE_HASHES_PER_TX>,
108
- noteHashLeafIndexMap: Map<bigint, bigint>,
109
118
  futureNoteHashes: ScopedNoteHash[],
110
119
  maxPending: PENDING = MAX_NOTE_HASH_READ_REQUESTS_PER_TX as PENDING,
111
120
  maxSettled: SETTLED = MAX_NOTE_HASH_READ_REQUESTS_PER_TX as SETTLED,
@@ -116,7 +125,6 @@ export async function buildNoteHashReadRequestHints<PENDING extends number, SETT
116
125
  noteHashReadRequests,
117
126
  noteHashes,
118
127
  resetActions,
119
- noteHashLeafIndexMap,
120
128
  maxPending,
121
129
  maxSettled,
122
130
  );
@@ -6,7 +6,6 @@ import {
6
6
  import type { Fr } from '@aztec/foundation/curves/bn254';
7
7
  import { MembershipWitness } from '@aztec/foundation/trees';
8
8
 
9
- import { siloNullifier } from '../../hash/hash.js';
10
9
  import type { NullifierLeafPreimage } from '../../trees/nullifier_leaf.js';
11
10
  import type { ClaimedLengthArray } from '../claimed_length_array.js';
12
11
  import type { ScopedNullifier } from '../nullifier.js';
@@ -74,7 +73,6 @@ export async function buildNullifierReadRequestHintsFromResetActions<PENDING ext
74
73
  resetActions: ReadRequestResetActions<typeof MAX_NULLIFIER_READ_REQUESTS_PER_TX>,
75
74
  maxPending: PENDING = MAX_NULLIFIER_READ_REQUESTS_PER_TX as PENDING,
76
75
  maxSettled: SETTLED = MAX_NULLIFIER_READ_REQUESTS_PER_TX as SETTLED,
77
- siloed = false,
78
76
  ) {
79
77
  const builder = new NullifierReadRequestHintsBuilder(maxPending, maxSettled);
80
78
 
@@ -82,21 +80,28 @@ export async function buildNullifierReadRequestHintsFromResetActions<PENDING ext
82
80
  builder.addPendingReadRequest(hint.readRequestIndex, hint.pendingValueIndex);
83
81
  });
84
82
 
83
+ // Collect all settled read requests
84
+ const settledRequests: { index: number; readRequest: ScopedReadRequest }[] = [];
85
85
  for (let i = 0; i < resetActions.actions.length; i++) {
86
86
  if (resetActions.actions[i] === ReadRequestActionEnum.READ_AS_SETTLED) {
87
- const readRequest = nullifierReadRequests.array[i];
88
- const siloedValue = siloed
89
- ? readRequest.value
90
- : await siloNullifier(readRequest.contractAddress, readRequest.value);
91
- const membershipWitnessWithPreimage = await oracle.getNullifierMembershipWitness(siloedValue);
92
- builder.addSettledReadRequest(
93
- i,
94
- membershipWitnessWithPreimage.membershipWitness,
95
- membershipWitnessWithPreimage.leafPreimage,
96
- );
87
+ settledRequests.push({ index: i, readRequest: nullifierReadRequests.array[i] });
97
88
  }
98
89
  }
99
90
 
91
+ const siloedValues = settledRequests.map(({ readRequest }) => readRequest.value);
92
+
93
+ // Fetch all membership witnesses in parallel
94
+ const membershipWitnesses = await Promise.all(siloedValues.map(value => oracle.getNullifierMembershipWitness(value)));
95
+
96
+ // Add settled read requests to builder
97
+ for (let i = 0; i < settledRequests.length; i++) {
98
+ builder.addSettledReadRequest(
99
+ settledRequests[i].index,
100
+ membershipWitnesses[i].membershipWitness,
101
+ membershipWitnesses[i].leafPreimage,
102
+ );
103
+ }
104
+
100
105
  return builder.toHints();
101
106
  }
102
107
 
@@ -109,7 +114,6 @@ export async function buildNullifierReadRequestHints<PENDING extends number, SET
109
114
  futureNullifiers: ScopedNullifier[],
110
115
  maxPending: PENDING = MAX_NULLIFIER_READ_REQUESTS_PER_TX as PENDING,
111
116
  maxSettled: SETTLED = MAX_NULLIFIER_READ_REQUESTS_PER_TX as SETTLED,
112
- siloed = false,
113
117
  ) {
114
118
  const resetActions = getNullifierReadRequestResetActions(nullifierReadRequests, nullifiers, futureNullifiers);
115
119
  return await buildNullifierReadRequestHintsFromResetActions(
@@ -118,6 +122,5 @@ export async function buildNullifierReadRequestHints<PENDING extends number, SET
118
122
  resetActions,
119
123
  maxPending,
120
124
  maxSettled,
121
- siloed,
122
125
  );
123
126
  }
package/src/logs/index.ts CHANGED
@@ -1,4 +1,3 @@
1
- export * from './log_with_tx_data.js';
2
1
  export * from './directional_app_tagging_secret.js';
3
2
  export * from './pre_tag.js';
4
3
  export * from './contract_class_log.js';
@@ -1,114 +1,98 @@
1
1
  import { BlockNumber, BlockNumberSchema } from '@aztec/foundation/branded-types';
2
- import { BufferReader, bigintToUInt64BE, boolToBuffer, numToUInt32BE } from '@aztec/foundation/serialize';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
+ import { schemas as foundationSchemas } from '@aztec/foundation/schemas';
4
+ import {
5
+ BufferReader,
6
+ bigintToUInt64BE,
7
+ numToUInt32BE,
8
+ serializeArrayOfBufferableToVector,
9
+ } from '@aztec/foundation/serialize';
3
10
 
4
11
  import { z } from 'zod';
5
12
 
6
- import { L2BlockHash } from '../block/block_hash.js';
7
13
  import { schemas } from '../schemas/schemas.js';
8
14
  import { TxHash } from '../tx/tx_hash.js';
9
15
  import type { UInt64 } from '../types/shared.js';
10
- import { PrivateLog } from './private_log.js';
11
- import { PublicLog } from './public_log.js';
12
16
 
13
- // TODO(#14460): Split to private and public versions instead of having this weird mix.
14
17
  export class TxScopedL2Log {
15
18
  constructor(
16
19
  /*
17
20
  * Hash of the tx where the log is included
18
21
  */
19
22
  public txHash: TxHash,
20
- /*
21
- * The next available leaf index for the note hash tree for this transaction. It is stored
22
- * with the log so the noteHashIndex can be reconstructed after decryption.
23
- */
24
- public dataStartIndexForTx: number,
25
- /*
26
- * The index of the log in the transaction. Note that public and private logs are in separate arrays in the tx
27
- * effect and for this reason these indices are independent (a private and public log can have the same index).
28
- */
29
- public logIndexInTx: number,
30
23
  /*
31
24
  * The block this log is included in
32
25
  */
33
26
  public blockNumber: BlockNumber,
34
- /*
35
- * The block this log is included in
36
- */
37
- public blockHash: L2BlockHash,
38
27
  /*
39
28
  * The timestamp of the block this log is included in
40
29
  */
41
30
  public blockTimestamp: UInt64,
42
31
  /*
43
- * The log data as either a PrivateLog or PublicLog
32
+ * The log data as an array of field elements
44
33
  */
45
- public log: PrivateLog | PublicLog,
34
+ public logData: Fr[],
35
+ /*
36
+ * The note hashes from the tx effect
37
+ */
38
+ public noteHashes: Fr[],
39
+ /*
40
+ * The first nullifier from the tx effect. Used for nonce discovery when processing notes from logs.
41
+ *
42
+ * (Note nonces are computed as `hash(firstNullifier, noteIndexInTx)`.)
43
+ */
44
+ public firstNullifier: Fr,
46
45
  ) {}
47
46
 
48
- get isFromPublic() {
49
- return this.log instanceof PublicLog;
50
- }
51
-
52
47
  static get schema() {
53
48
  return z
54
49
  .object({
55
50
  txHash: TxHash.schema,
56
- dataStartIndexForTx: z.number(),
57
- logIndexInTx: z.number(),
58
51
  blockNumber: BlockNumberSchema,
59
- blockHash: L2BlockHash.schema,
60
52
  blockTimestamp: schemas.UInt64,
61
- log: z.union([PrivateLog.schema, PublicLog.schema]),
53
+ logData: z.array(foundationSchemas.Fr),
54
+ noteHashes: z.array(foundationSchemas.Fr),
55
+ firstNullifier: foundationSchemas.Fr,
62
56
  })
63
57
  .transform(
64
- ({ txHash, dataStartIndexForTx, logIndexInTx, blockNumber, blockHash, blockTimestamp, log }) =>
65
- new TxScopedL2Log(txHash, dataStartIndexForTx, logIndexInTx, blockNumber, blockHash, blockTimestamp, log),
58
+ ({ txHash, blockNumber, blockTimestamp, logData, noteHashes, firstNullifier }) =>
59
+ new TxScopedL2Log(txHash, blockNumber, blockTimestamp, logData, noteHashes, firstNullifier),
66
60
  );
67
61
  }
68
62
 
69
63
  toBuffer() {
70
64
  return Buffer.concat([
71
65
  this.txHash.toBuffer(),
72
- numToUInt32BE(this.dataStartIndexForTx),
73
- numToUInt32BE(this.logIndexInTx),
74
66
  numToUInt32BE(this.blockNumber),
75
- this.blockHash.toBuffer(),
76
67
  bigintToUInt64BE(this.blockTimestamp),
77
- boolToBuffer(this.isFromPublic),
78
- this.log.toBuffer(),
68
+ serializeArrayOfBufferableToVector(this.logData),
69
+ serializeArrayOfBufferableToVector(this.noteHashes),
70
+ this.firstNullifier.toBuffer(),
79
71
  ]);
80
72
  }
81
73
 
82
74
  static fromBuffer(buffer: Buffer) {
83
75
  const reader = BufferReader.asReader(buffer);
84
76
  const txHash = reader.readObject(TxHash);
85
- const dataStartIndexForTx = reader.readNumber();
86
- const logIndexInTx = reader.readNumber();
87
77
  const blockNumber = BlockNumber(reader.readNumber());
88
- const blockHash = reader.readObject(L2BlockHash);
89
78
  const blockTimestamp = reader.readUInt64();
90
- const isFromPublic = reader.readBoolean();
91
- const log = isFromPublic ? PublicLog.fromBuffer(reader) : PrivateLog.fromBuffer(reader);
92
-
93
- return new TxScopedL2Log(txHash, dataStartIndexForTx, logIndexInTx, blockNumber, blockHash, blockTimestamp, log);
94
- }
79
+ const logData = reader.readVector(Fr);
80
+ const noteHashes = reader.readVector(Fr);
81
+ const firstNullifier = reader.readObject(Fr);
95
82
 
96
- static async random(isFromPublic = Math.random() < 0.5) {
97
- const log = isFromPublic ? await PublicLog.random() : PrivateLog.random();
98
- return new TxScopedL2Log(TxHash.random(), 1, 1, BlockNumber(1), L2BlockHash.random(), 1n, log);
83
+ return new TxScopedL2Log(txHash, blockNumber, blockTimestamp, logData, noteHashes, firstNullifier);
99
84
  }
100
85
 
101
86
  equals(other: TxScopedL2Log) {
102
87
  return (
103
88
  this.txHash.equals(other.txHash) &&
104
- this.dataStartIndexForTx === other.dataStartIndexForTx &&
105
- this.logIndexInTx === other.logIndexInTx &&
106
89
  this.blockNumber === other.blockNumber &&
107
- this.blockHash.equals(other.blockHash) &&
108
90
  this.blockTimestamp === other.blockTimestamp &&
109
- ((this.log instanceof PublicLog && other.log instanceof PublicLog) ||
110
- (this.log instanceof PrivateLog && other.log instanceof PrivateLog)) &&
111
- this.log.equals(other.log as any)
91
+ this.logData.length === other.logData.length &&
92
+ this.logData.every((f, i) => f.equals(other.logData[i])) &&
93
+ this.noteHashes.length === other.noteHashes.length &&
94
+ this.noteHashes.every((h, i) => h.equals(other.noteHashes[i])) &&
95
+ this.firstNullifier.equals(other.firstNullifier)
112
96
  );
113
97
  }
114
98
  }
@@ -3,7 +3,9 @@ import { padArrayEnd } from '@aztec/foundation/collection';
3
3
  import { Fr } from '@aztec/foundation/curves/bn254';
4
4
  import { computeBalancedShaRoot } from '@aztec/foundation/trees';
5
5
 
6
- /** Computes the inHash for a block's ContentCommitment given its l1 to l2 messages. */
6
+ /**
7
+ * Computes the inHash for a checkpoint (or the first block in a checkpoint) given its l1 to l2 messages.
8
+ */
7
9
  export function computeInHashFromL1ToL2Messages(unpaddedL1ToL2Messages: Fr[]): Fr {
8
10
  const l1ToL2Messages = padArrayEnd<Fr, number>(unpaddedL1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
9
11
  return new Fr(computeBalancedShaRoot(l1ToL2Messages.map(msg => msg.toBuffer())));