@aztec/stdlib 0.0.1-commit.8c0b8ff → 0.0.1-commit.8cb2d04d8

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 (356) hide show
  1. package/dest/abi/abi.d.ts +191 -26
  2. package/dest/abi/abi.d.ts.map +1 -1
  3. package/dest/abi/abi.js +4 -45
  4. package/dest/abi/authorization_selector.d.ts +3 -6
  5. package/dest/abi/authorization_selector.d.ts.map +1 -1
  6. package/dest/abi/encoder.d.ts +1 -1
  7. package/dest/abi/encoder.d.ts.map +1 -1
  8. package/dest/abi/encoder.js +32 -6
  9. package/dest/abi/event_selector.d.ts +3 -6
  10. package/dest/abi/event_selector.d.ts.map +1 -1
  11. package/dest/abi/function_selector.d.ts +3 -6
  12. package/dest/abi/function_selector.d.ts.map +1 -1
  13. package/dest/abi/function_selector.js +1 -3
  14. package/dest/abi/note_selector.d.ts +3 -6
  15. package/dest/abi/note_selector.d.ts.map +1 -1
  16. package/dest/abi/note_selector.js +1 -3
  17. package/dest/avm/avm_accumulated_data.js +2 -2
  18. package/dest/avm/avm_circuit_public_inputs.js +2 -2
  19. package/dest/aztec-address/index.d.ts +3 -6
  20. package/dest/aztec-address/index.d.ts.map +1 -1
  21. package/dest/aztec-address/index.js +2 -4
  22. package/dest/block/block_data.d.ts +8 -8
  23. package/dest/block/block_data.d.ts.map +1 -1
  24. package/dest/block/block_data.js +2 -2
  25. package/dest/block/block_hash.d.ts +11 -10
  26. package/dest/block/block_hash.d.ts.map +1 -1
  27. package/dest/block/block_hash.js +10 -9
  28. package/dest/block/l2_block_info.d.ts +6 -5
  29. package/dest/block/l2_block_info.d.ts.map +1 -1
  30. package/dest/block/l2_block_info.js +6 -5
  31. package/dest/block/l2_block_source.d.ts +80 -3
  32. package/dest/block/l2_block_source.d.ts.map +1 -1
  33. package/dest/block/l2_block_source.js +1 -0
  34. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +1 -1
  35. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -1
  36. package/dest/block/l2_block_stream/l2_tips_store_base.js +18 -5
  37. package/dest/block/test/l2_tips_store_test_suite.d.ts +1 -1
  38. package/dest/block/test/l2_tips_store_test_suite.d.ts.map +1 -1
  39. package/dest/block/test/l2_tips_store_test_suite.js +4 -3
  40. package/dest/checkpoint/checkpoint.d.ts +7 -1
  41. package/dest/checkpoint/checkpoint.d.ts.map +1 -1
  42. package/dest/checkpoint/checkpoint.js +9 -1
  43. package/dest/checkpoint/checkpoint_data.d.ts +71 -5
  44. package/dest/checkpoint/checkpoint_data.d.ts.map +1 -1
  45. package/dest/checkpoint/checkpoint_data.js +10 -0
  46. package/dest/config/chain-config.d.ts +1 -1
  47. package/dest/config/chain-config.d.ts.map +1 -1
  48. package/dest/config/chain-config.js +7 -1
  49. package/dest/config/index.d.ts +2 -1
  50. package/dest/config/index.d.ts.map +1 -1
  51. package/dest/config/index.js +1 -0
  52. package/dest/config/pipelining-config.d.ts +19 -0
  53. package/dest/config/pipelining-config.d.ts.map +1 -0
  54. package/dest/config/pipelining-config.js +18 -0
  55. package/dest/config/sequencer-config.d.ts +4 -2
  56. package/dest/config/sequencer-config.d.ts.map +1 -1
  57. package/dest/config/sequencer-config.js +11 -3
  58. package/dest/contract/contract_address.d.ts +3 -3
  59. package/dest/contract/contract_address.js +3 -3
  60. package/dest/contract/contract_class_id.d.ts +2 -2
  61. package/dest/contract/contract_class_id.js +2 -2
  62. package/dest/contract/index.d.ts +1 -3
  63. package/dest/contract/index.d.ts.map +1 -1
  64. package/dest/contract/index.js +0 -2
  65. package/dest/contract/interfaces/contract_class.d.ts +3 -156
  66. package/dest/contract/interfaces/contract_class.d.ts.map +1 -1
  67. package/dest/contract/interfaces/contract_class.js +1 -28
  68. package/dest/contract/private_function.d.ts +1 -1
  69. package/dest/contract/private_function.d.ts.map +1 -1
  70. package/dest/contract/private_function.js +2 -4
  71. package/dest/epoch-helpers/index.d.ts +3 -1
  72. package/dest/epoch-helpers/index.d.ts.map +1 -1
  73. package/dest/epoch-helpers/index.js +3 -0
  74. package/dest/file-store/factory.d.ts +4 -3
  75. package/dest/file-store/factory.d.ts.map +1 -1
  76. package/dest/file-store/factory.js +2 -2
  77. package/dest/file-store/http.d.ts +9 -2
  78. package/dest/file-store/http.d.ts.map +1 -1
  79. package/dest/file-store/http.js +20 -9
  80. package/dest/file-store/index.d.ts +2 -1
  81. package/dest/file-store/index.d.ts.map +1 -1
  82. package/dest/gas/fee_math.d.ts +49 -0
  83. package/dest/gas/fee_math.d.ts.map +1 -0
  84. package/dest/gas/fee_math.js +80 -0
  85. package/dest/gas/gas_fees.d.ts +1 -1
  86. package/dest/gas/gas_fees.d.ts.map +1 -1
  87. package/dest/gas/gas_fees.js +10 -1
  88. package/dest/gas/index.d.ts +2 -1
  89. package/dest/gas/index.d.ts.map +1 -1
  90. package/dest/gas/index.js +1 -0
  91. package/dest/ha-signing/config.d.ts +136 -0
  92. package/dest/ha-signing/config.d.ts.map +1 -0
  93. package/dest/ha-signing/config.js +97 -0
  94. package/dest/ha-signing/index.d.ts +4 -0
  95. package/dest/ha-signing/index.d.ts.map +1 -0
  96. package/dest/ha-signing/index.js +3 -0
  97. package/dest/ha-signing/local_config.d.ts +63 -0
  98. package/dest/ha-signing/local_config.d.ts.map +1 -0
  99. package/dest/ha-signing/local_config.js +24 -0
  100. package/dest/ha-signing/types.d.ts +90 -0
  101. package/dest/ha-signing/types.d.ts.map +1 -0
  102. package/dest/ha-signing/types.js +39 -0
  103. package/dest/hash/hash.d.ts +16 -1
  104. package/dest/hash/hash.d.ts.map +1 -1
  105. package/dest/hash/hash.js +32 -0
  106. package/dest/interfaces/archiver.d.ts +1 -1
  107. package/dest/interfaces/archiver.d.ts.map +1 -1
  108. package/dest/interfaces/archiver.js +3 -1
  109. package/dest/interfaces/aztec-node-admin.d.ts +16 -17
  110. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  111. package/dest/interfaces/aztec-node-admin.js +3 -3
  112. package/dest/interfaces/aztec-node.d.ts +10 -1
  113. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  114. package/dest/interfaces/aztec-node.js +2 -0
  115. package/dest/interfaces/l2_logs_source.d.ts +5 -3
  116. package/dest/interfaces/l2_logs_source.d.ts.map +1 -1
  117. package/dest/interfaces/merkle_tree_operations.d.ts +4 -3
  118. package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
  119. package/dest/interfaces/prover-client.d.ts +1 -1
  120. package/dest/interfaces/prover-client.d.ts.map +1 -1
  121. package/dest/interfaces/prover-client.js +0 -3
  122. package/dest/interfaces/proving-job.d.ts +200 -200
  123. package/dest/interfaces/slasher.d.ts +1 -10
  124. package/dest/interfaces/slasher.d.ts.map +1 -1
  125. package/dest/interfaces/slasher.js +0 -2
  126. package/dest/interfaces/validator.d.ts +45 -36
  127. package/dest/interfaces/validator.d.ts.map +1 -1
  128. package/dest/interfaces/validator.js +2 -3
  129. package/dest/kernel/claimed_length_array.js +1 -1
  130. package/dest/kernel/hints/private_kernel_reset_hints.d.ts +1 -1
  131. package/dest/kernel/hints/private_kernel_reset_hints.d.ts.map +1 -1
  132. package/dest/kernel/padded_side_effects.js +1 -1
  133. package/dest/kernel/private_to_avm_accumulated_data.js +2 -2
  134. package/dest/kernel/private_to_public_accumulated_data.js +2 -2
  135. package/dest/kernel/private_to_rollup_accumulated_data.js +1 -1
  136. package/dest/kv-store/config.d.ts +17 -0
  137. package/dest/kv-store/config.d.ts.map +1 -0
  138. package/dest/kv-store/config.js +26 -0
  139. package/dest/kv-store/index.d.ts +2 -0
  140. package/dest/kv-store/index.d.ts.map +1 -0
  141. package/dest/kv-store/index.js +1 -0
  142. package/dest/l1-contracts/index.d.ts +2 -2
  143. package/dest/l1-contracts/index.d.ts.map +1 -1
  144. package/dest/l1-contracts/index.js +1 -1
  145. package/dest/logs/log_id.d.ts +1 -1
  146. package/dest/logs/log_id.d.ts.map +1 -1
  147. package/dest/logs/log_id.js +1 -2
  148. package/dest/logs/private_log.js +1 -1
  149. package/dest/logs/public_log.d.ts +1 -1
  150. package/dest/logs/public_log.d.ts.map +1 -1
  151. package/dest/logs/public_log.js +1 -7
  152. package/dest/logs/siloed_tag.d.ts +5 -7
  153. package/dest/logs/siloed_tag.d.ts.map +1 -1
  154. package/dest/logs/siloed_tag.js +4 -0
  155. package/dest/logs/tag.d.ts +5 -6
  156. package/dest/logs/tag.d.ts.map +1 -1
  157. package/dest/logs/tag.js +4 -0
  158. package/dest/messaging/l1_to_l2_message_source.d.ts +4 -2
  159. package/dest/messaging/l1_to_l2_message_source.d.ts.map +1 -1
  160. package/dest/p2p/block_proposal.d.ts +7 -9
  161. package/dest/p2p/block_proposal.d.ts.map +1 -1
  162. package/dest/p2p/block_proposal.js +5 -10
  163. package/dest/p2p/checkpoint_attestation.d.ts +4 -6
  164. package/dest/p2p/checkpoint_attestation.d.ts.map +1 -1
  165. package/dest/p2p/checkpoint_attestation.js +2 -7
  166. package/dest/p2p/checkpoint_proposal.d.ts +9 -11
  167. package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
  168. package/dest/p2p/checkpoint_proposal.js +6 -25
  169. package/dest/p2p/gossipable.d.ts +4 -4
  170. package/dest/p2p/gossipable.d.ts.map +1 -1
  171. package/dest/parity/parity_base_private_inputs.js +1 -1
  172. package/dest/proofs/chonk_proof.d.ts +46 -2
  173. package/dest/proofs/chonk_proof.d.ts.map +1 -1
  174. package/dest/proofs/chonk_proof.js +84 -15
  175. package/dest/rollup/base_rollup_hints.js +2 -2
  176. package/dest/rollup/block_headers_hash.d.ts +1 -1
  177. package/dest/rollup/block_headers_hash.d.ts.map +1 -1
  178. package/dest/rollup/block_headers_hash.js +8 -2
  179. package/dest/rollup/block_root_rollup_private_inputs.js +5 -5
  180. package/dest/rollup/checkpoint_rollup_public_inputs.js +1 -1
  181. package/dest/rollup/checkpoint_root_rollup_private_inputs.js +3 -3
  182. package/dest/rollup/root_rollup_public_inputs.js +1 -1
  183. package/dest/rollup/tree_snapshot_diff_hints.js +2 -2
  184. package/dest/slashing/index.d.ts +2 -3
  185. package/dest/slashing/index.d.ts.map +1 -1
  186. package/dest/slashing/index.js +1 -2
  187. package/dest/slashing/serialization.d.ts +2 -6
  188. package/dest/slashing/serialization.d.ts.map +1 -1
  189. package/dest/slashing/serialization.js +0 -60
  190. package/dest/slashing/types.d.ts +4 -90
  191. package/dest/slashing/types.d.ts.map +1 -1
  192. package/dest/slashing/types.js +0 -14
  193. package/dest/slashing/{tally.d.ts → votes.d.ts} +1 -1
  194. package/dest/slashing/{tally.d.ts.map → votes.d.ts.map} +1 -1
  195. package/dest/slashing/{tally.js → votes.js} +1 -1
  196. package/dest/tests/factories.d.ts +3 -10
  197. package/dest/tests/factories.d.ts.map +1 -1
  198. package/dest/tests/factories.js +11 -34
  199. package/dest/tests/mocks.d.ts +1 -1
  200. package/dest/tests/mocks.d.ts.map +1 -1
  201. package/dest/tests/mocks.js +12 -17
  202. package/dest/timetable/index.d.ts +51 -1
  203. package/dest/timetable/index.d.ts.map +1 -1
  204. package/dest/timetable/index.js +204 -14
  205. package/dest/trees/nullifier_leaf.d.ts +2 -1
  206. package/dest/trees/nullifier_leaf.d.ts.map +1 -1
  207. package/dest/trees/nullifier_leaf.js +3 -0
  208. package/dest/tx/block_header.d.ts +2 -2
  209. package/dest/tx/block_header.d.ts.map +1 -1
  210. package/dest/tx/block_header.js +1 -1
  211. package/dest/tx/fee_provider.d.ts +10 -0
  212. package/dest/tx/fee_provider.d.ts.map +1 -0
  213. package/dest/tx/fee_provider.js +1 -0
  214. package/dest/tx/global_variable_builder.d.ts +3 -4
  215. package/dest/tx/global_variable_builder.d.ts.map +1 -1
  216. package/dest/tx/index.d.ts +2 -1
  217. package/dest/tx/index.d.ts.map +1 -1
  218. package/dest/tx/index.js +1 -0
  219. package/dest/tx/indexed_tx_effect.d.ts +1 -1
  220. package/dest/tx/indexed_tx_effect.d.ts.map +1 -1
  221. package/dest/tx/indexed_tx_effect.js +1 -2
  222. package/dest/tx/protocol_contracts.js +2 -2
  223. package/dest/tx/simulated_tx.d.ts +151 -26
  224. package/dest/tx/simulated_tx.d.ts.map +1 -1
  225. package/dest/tx/tx.d.ts +3 -3
  226. package/dest/tx/tx.d.ts.map +1 -1
  227. package/dest/types/shared.d.ts +1 -10
  228. package/dest/types/shared.d.ts.map +1 -1
  229. package/dest/types/shared.js +0 -9
  230. package/dest/vks/verification_key.d.ts +2 -137
  231. package/dest/vks/verification_key.d.ts.map +1 -1
  232. package/dest/vks/verification_key.js +5 -126
  233. package/dest/vks/vk_data.js +1 -1
  234. package/dest/world-state/genesis_data.d.ts +11 -0
  235. package/dest/world-state/genesis_data.d.ts.map +1 -0
  236. package/dest/world-state/genesis_data.js +4 -0
  237. package/dest/world-state/index.d.ts +2 -1
  238. package/dest/world-state/index.d.ts.map +1 -1
  239. package/dest/world-state/index.js +1 -0
  240. package/package.json +11 -10
  241. package/src/abi/abi.ts +14 -67
  242. package/src/abi/authorization_selector.ts +2 -8
  243. package/src/abi/encoder.ts +42 -6
  244. package/src/abi/event_selector.ts +2 -8
  245. package/src/abi/function_selector.ts +3 -12
  246. package/src/abi/note_selector.ts +3 -12
  247. package/src/avm/avm_accumulated_data.ts +6 -6
  248. package/src/avm/avm_circuit_public_inputs.ts +4 -4
  249. package/src/aztec-address/index.ts +4 -10
  250. package/src/block/block_data.ts +3 -4
  251. package/src/block/block_hash.ts +21 -14
  252. package/src/block/l2_block_info.ts +8 -6
  253. package/src/block/l2_block_source.ts +10 -2
  254. package/src/block/l2_block_stream/l2_tips_store_base.ts +25 -13
  255. package/src/block/test/l2_tips_store_test_suite.ts +9 -2
  256. package/src/checkpoint/checkpoint.ts +11 -1
  257. package/src/checkpoint/checkpoint_data.ts +40 -4
  258. package/src/config/chain-config.ts +7 -1
  259. package/src/config/index.ts +1 -0
  260. package/src/config/pipelining-config.ts +31 -0
  261. package/src/config/sequencer-config.ts +17 -4
  262. package/src/contract/contract_address.ts +3 -3
  263. package/src/contract/contract_class_id.ts +2 -2
  264. package/src/contract/index.ts +0 -2
  265. package/src/contract/interfaces/contract_class.ts +2 -82
  266. package/src/contract/private_function.ts +3 -1
  267. package/src/epoch-helpers/index.ts +5 -0
  268. package/src/file-store/factory.ts +13 -4
  269. package/src/file-store/http.ts +29 -10
  270. package/src/file-store/index.ts +1 -0
  271. package/src/gas/README.md +31 -0
  272. package/src/gas/fee_math.ts +120 -0
  273. package/src/gas/gas_fees.ts +12 -4
  274. package/src/gas/index.ts +1 -0
  275. package/src/ha-signing/config.ts +156 -0
  276. package/src/ha-signing/index.ts +29 -0
  277. package/src/ha-signing/local_config.ts +46 -0
  278. package/src/ha-signing/types.ts +126 -0
  279. package/src/hash/hash.ts +27 -0
  280. package/src/interfaces/archiver.ts +3 -1
  281. package/src/interfaces/aztec-node-admin.ts +5 -7
  282. package/src/interfaces/aztec-node.ts +15 -0
  283. package/src/interfaces/l2_logs_source.ts +4 -1
  284. package/src/interfaces/merkle_tree_operations.ts +3 -2
  285. package/src/interfaces/prover-client.ts +2 -5
  286. package/src/interfaces/slasher.ts +0 -6
  287. package/src/interfaces/validator.ts +53 -44
  288. package/src/kernel/claimed_length_array.ts +2 -2
  289. package/src/kernel/hints/private_kernel_reset_hints.ts +2 -5
  290. package/src/kernel/hints/read_request_hints.ts +3 -3
  291. package/src/kernel/padded_side_effects.ts +3 -3
  292. package/src/kernel/private_to_avm_accumulated_data.ts +4 -4
  293. package/src/kernel/private_to_public_accumulated_data.ts +10 -10
  294. package/src/kernel/private_to_rollup_accumulated_data.ts +5 -5
  295. package/src/kv-store/config.ts +36 -0
  296. package/src/kv-store/index.ts +1 -0
  297. package/src/l1-contracts/index.ts +1 -1
  298. package/src/logs/log_id.ts +1 -2
  299. package/src/logs/private_log.ts +1 -1
  300. package/src/logs/public_log.ts +1 -11
  301. package/src/logs/siloed_tag.ts +8 -9
  302. package/src/logs/tag.ts +8 -8
  303. package/src/messaging/l1_to_l2_message_source.ts +3 -1
  304. package/src/p2p/block_proposal.ts +14 -10
  305. package/src/p2p/checkpoint_attestation.ts +5 -9
  306. package/src/p2p/checkpoint_proposal.ts +22 -37
  307. package/src/p2p/gossipable.ts +4 -4
  308. package/src/parity/parity_base_private_inputs.ts +1 -1
  309. package/src/proofs/chonk_proof.ts +90 -12
  310. package/src/rollup/base_rollup_hints.ts +2 -2
  311. package/src/rollup/block_headers_hash.ts +11 -2
  312. package/src/rollup/block_root_rollup_private_inputs.ts +8 -8
  313. package/src/rollup/checkpoint_rollup_public_inputs.ts +2 -2
  314. package/src/rollup/checkpoint_root_rollup_private_inputs.ts +4 -4
  315. package/src/rollup/root_rollup_public_inputs.ts +2 -2
  316. package/src/rollup/tree_snapshot_diff_hints.ts +5 -5
  317. package/src/slashing/index.ts +1 -2
  318. package/src/slashing/serialization.ts +1 -81
  319. package/src/slashing/types.ts +3 -35
  320. package/src/slashing/{tally.ts → votes.ts} +1 -1
  321. package/src/tests/factories.ts +5 -42
  322. package/src/tests/mocks.ts +14 -10
  323. package/src/timetable/index.ts +293 -13
  324. package/src/trees/nullifier_leaf.ts +4 -0
  325. package/src/tx/block_header.ts +2 -2
  326. package/src/tx/fee_provider.ts +10 -0
  327. package/src/tx/global_variable_builder.ts +2 -3
  328. package/src/tx/index.ts +1 -0
  329. package/src/tx/indexed_tx_effect.ts +1 -2
  330. package/src/tx/protocol_contracts.ts +2 -2
  331. package/src/tx/tx.ts +2 -2
  332. package/src/types/shared.ts +0 -10
  333. package/src/vks/verification_key.ts +5 -184
  334. package/src/vks/vk_data.ts +1 -1
  335. package/src/world-state/genesis_data.ts +15 -0
  336. package/src/world-state/index.ts +1 -0
  337. package/dest/abi/mocked_keys.d.ts +0 -2
  338. package/dest/abi/mocked_keys.d.ts.map +0 -1
  339. package/dest/abi/mocked_keys.js +0 -1
  340. package/dest/contract/private_function_membership_proof.d.ts +0 -32
  341. package/dest/contract/private_function_membership_proof.d.ts.map +0 -1
  342. package/dest/contract/private_function_membership_proof.js +0 -124
  343. package/dest/contract/utility_function_membership_proof.d.ts +0 -27
  344. package/dest/contract/utility_function_membership_proof.d.ts.map +0 -1
  345. package/dest/contract/utility_function_membership_proof.js +0 -87
  346. package/dest/l1-contracts/slash_factory.d.ts +0 -45
  347. package/dest/l1-contracts/slash_factory.d.ts.map +0 -1
  348. package/dest/l1-contracts/slash_factory.js +0 -158
  349. package/dest/slashing/empire.d.ts +0 -31
  350. package/dest/slashing/empire.d.ts.map +0 -1
  351. package/dest/slashing/empire.js +0 -87
  352. package/src/abi/mocked_keys.ts +0 -2
  353. package/src/contract/private_function_membership_proof.ts +0 -167
  354. package/src/contract/utility_function_membership_proof.ts +0 -118
  355. package/src/l1-contracts/slash_factory.ts +0 -180
  356. package/src/slashing/empire.ts +0 -104
package/src/hash/hash.ts CHANGED
@@ -6,6 +6,21 @@ import type { EthAddress } from '@aztec/foundation/eth-address';
6
6
 
7
7
  import { AztecAddress } from '../aztec-address/index.js';
8
8
 
9
+ /** Computes a Poseidon2 merkle tree internal node hash for append-only trees (note-hash, L1->L2, archive). */
10
+ export function computeMerkleHash(left: Fr, right: Fr): Promise<Fr> {
11
+ return poseidon2HashWithSeparator([left, right], DomainSeparator.MERKLE_HASH);
12
+ }
13
+
14
+ /** Merkle-node hasher for the nullifier tree's sibling paths. */
15
+ export function computeNullifierMerkleHash(left: Fr, right: Fr): Promise<Fr> {
16
+ return poseidon2HashWithSeparator([left, right], DomainSeparator.NULLIFIER_MERKLE);
17
+ }
18
+
19
+ /** Merkle-node hasher for the public-data tree's sibling paths. */
20
+ export function computePublicDataMerkleHash(left: Fr, right: Fr): Promise<Fr> {
21
+ return poseidon2HashWithSeparator([left, right], DomainSeparator.PUBLIC_DATA_MERKLE);
22
+ }
23
+
9
24
  /**
10
25
  * Computes a hash of a given verification key.
11
26
  * @param keyAsFields - The verification key as fields.
@@ -103,6 +118,18 @@ export function computeLogTag(rawTag: number | bigint | boolean | Fr | Buffer, d
103
118
  return poseidon2HashWithSeparator([new Fr(rawTag)], domSep);
104
119
  }
105
120
 
121
+ /**
122
+ * Computes the commitment of a private event from its preimage.
123
+ * @param randomness - Random value emitted alongside the event to prevent preimage brute-forcing.
124
+ * @param eventSelector - Event selector as an Fr.
125
+ * @param content - Serialized event content.
126
+ *
127
+ * @dev Must match the implementation in aztec-nr/aztec/src/event/event_interface.nr > compute_private_serialized_event_commitment
128
+ */
129
+ export function computePrivateEventCommitment(randomness: Fr, eventSelector: Fr, content: Fr[]): Promise<Fr> {
130
+ return poseidon2HashWithSeparator([randomness, eventSelector, ...content], DomainSeparator.EVENT_COMMITMENT);
131
+ }
132
+
106
133
  export function computeSiloedPrivateLogFirstField(contract: AztecAddress, field: Fr): Promise<Fr> {
107
134
  return poseidon2HashWithSeparator([contract, field], DomainSeparator.PRIVATE_LOG_FIRST_FIELD);
108
135
  }
@@ -11,7 +11,7 @@ import { L2Block } from '../block/l2_block.js';
11
11
  import { type L2BlockSource, L2TipsSchema } from '../block/l2_block_source.js';
12
12
  import { ValidateCheckpointResultSchema } from '../block/validate_block_result.js';
13
13
  import { Checkpoint } from '../checkpoint/checkpoint.js';
14
- import { CheckpointDataSchema } from '../checkpoint/checkpoint_data.js';
14
+ import { CheckpointDataSchema, ProposedCheckpointDataSchema } from '../checkpoint/checkpoint_data.js';
15
15
  import { PublishedCheckpoint } from '../checkpoint/published_checkpoint.js';
16
16
  import {
17
17
  ContractClassPublicSchema,
@@ -150,6 +150,8 @@ export const ArchiverApiSchema: ApiSchemaFor<ArchiverApi> = {
150
150
  .args()
151
151
  .returns(z.object({ genesisArchiveRoot: schemas.Fr })),
152
152
  getL1Timestamp: z.function().args().returns(schemas.BigInt.optional()),
153
+ getProposedCheckpoint: z.function().args().returns(ProposedCheckpointDataSchema.optional()),
154
+ getProposedCheckpointOnly: z.function().args().returns(ProposedCheckpointDataSchema.optional()),
153
155
  syncImmediate: z.function().args().returns(z.void()),
154
156
  isPendingChainInvalid: z.function().args().returns(z.boolean()),
155
157
  getPendingChainValidationStatus: z.function().args().returns(ValidateCheckpointResultSchema),
@@ -3,7 +3,8 @@ import { createSafeJsonRpcClient, defaultFetch } from '@aztec/foundation/json-rp
3
3
  import { z } from 'zod';
4
4
 
5
5
  import type { ApiSchemaFor } from '../schemas/schemas.js';
6
- import { type Offense, OffenseSchema, type SlashPayloadRound, SlashPayloadRoundSchema } from '../slashing/index.js';
6
+ import { optional } from '../schemas/schemas.js';
7
+ import { type Offense, OffenseSchema } from '../slashing/index.js';
7
8
  import { type ComponentsVersions, getVersioningResponseHandler } from '../versioning/index.js';
8
9
  import { type ArchiverSpecificConfig, ArchiverSpecificConfigSchema } from './archiver.js';
9
10
  import { type SequencerConfig, SequencerConfigSchema } from './configs.js';
@@ -36,8 +37,9 @@ export interface AztecNodeAdmin {
36
37
  * Pauses syncing and rolls back the database to the target L2 block number.
37
38
  * @param targetBlockNumber - The block number to roll back to.
38
39
  * @param force - If true, clears the world state db and p2p dbs if rolling back to behind the finalized block.
40
+ * @param resumeSync - If true (default), resumes archiver and world state sync after rollback.
39
41
  */
40
- rollbackTo(targetBlockNumber: number, force?: boolean): Promise<void>;
42
+ rollbackTo(targetBlockNumber: number, force?: boolean, resumeSync?: boolean): Promise<void>;
41
43
 
42
44
  /** Pauses archiver and world state syncing. */
43
45
  pauseSync(): Promise<void>;
@@ -45,9 +47,6 @@ export interface AztecNodeAdmin {
45
47
  /** Resumes archiver and world state syncing. */
46
48
  resumeSync(): Promise<void>;
47
49
 
48
- /** Returns all monitored payloads by the slasher for the current round. */
49
- getSlashPayloads(): Promise<SlashPayloadRound[]>;
50
-
51
50
  /** Returns all offenses applicable for the given round. */
52
51
  getSlashOffenses(round: bigint | 'all' | 'current'): Promise<Offense[]>;
53
52
 
@@ -100,10 +99,9 @@ export const AztecNodeAdminApiSchema: ApiSchemaFor<AztecNodeAdmin> = {
100
99
  getConfig: z.function().returns(AztecNodeAdminConfigSchema),
101
100
  setConfig: z.function().args(AztecNodeAdminConfigSchema.partial()).returns(z.void()),
102
101
  startSnapshotUpload: z.function().args(z.string()).returns(z.void()),
103
- rollbackTo: z.function().args(z.number()).returns(z.void()),
102
+ rollbackTo: z.function().args(z.number(), optional(z.boolean()), optional(z.boolean())).returns(z.void()),
104
103
  pauseSync: z.function().returns(z.void()),
105
104
  resumeSync: z.function().returns(z.void()),
106
- getSlashPayloads: z.function().returns(z.array(SlashPayloadRoundSchema)),
107
105
  getSlashOffenses: z
108
106
  .function()
109
107
  .args(z.union([z.bigint(), z.literal('all'), z.literal('current')]))
@@ -37,6 +37,7 @@ import {
37
37
  type ProtocolContractAddresses,
38
38
  ProtocolContractAddressesSchema,
39
39
  } from '../contract/index.js';
40
+ import { ManaUsageEstimate } from '../gas/fee_math.js';
40
41
  import { GasFees } from '../gas/gas_fees.js';
41
42
  import { SiloedTag, Tag, TxScopedL2Log } from '../logs/index.js';
42
43
  import { type LogFilter, LogFilterSchema } from '../logs/log_filter.js';
@@ -272,6 +273,15 @@ export interface AztecNode
272
273
  */
273
274
  getCurrentMinFees(): Promise<GasFees>;
274
275
 
276
+ /**
277
+ * Returns predicted min fees for the current slot and next N slots.
278
+ * Each entry accounts for the L1 gas oracle transition and congestion growth based on the
279
+ * given mana usage estimate. Defaults to target usage (steady state).
280
+ * @param manaUsage - Expected mana usage per checkpoint (none, target, or limit).
281
+ * @returns An array of GasFees, one per slot in the prediction window.
282
+ */
283
+ getPredictedMinFees(manaUsage?: ManaUsageEstimate): Promise<GasFees[]>;
284
+
275
285
  /**
276
286
  * Method to fetch the current max priority fee of txs in the mempool.
277
287
  * @returns The current max priority fees.
@@ -578,6 +588,11 @@ export const AztecNodeApiSchema: ApiSchemaFor<AztecNode> = {
578
588
 
579
589
  getCurrentMinFees: z.function().returns(GasFees.schema),
580
590
 
591
+ getPredictedMinFees: z
592
+ .function()
593
+ .args(optional(z.nativeEnum(ManaUsageEstimate)))
594
+ .returns(z.array(GasFees.schema)),
595
+
581
596
  getMaxPriorityFees: z.function().returns(GasFees.schema),
582
597
 
583
598
  getNodeVersion: z.function().returns(z.string()),
@@ -16,10 +16,11 @@ export interface L2LogsSource {
16
16
  * array implies no logs match that tag.
17
17
  * @param tags - The tags to search for.
18
18
  * @param page - The page number (0-indexed) for pagination.
19
+ * @param upToBlockNumber - If set, only return logs from blocks up to and including this block number.
19
20
  * @returns An array of log arrays, one per tag. Returns at most 10 logs per tag per page. If 10 logs are returned
20
21
  * for a tag, the caller should fetch the next page to check for more logs.
21
22
  */
22
- getPrivateLogsByTags(tags: SiloedTag[], page?: number): Promise<TxScopedL2Log[][]>;
23
+ getPrivateLogsByTags(tags: SiloedTag[], page?: number, upToBlockNumber?: BlockNumber): Promise<TxScopedL2Log[][]>;
23
24
 
24
25
  /**
25
26
  * Gets public logs that match any of the `tags` from the specified contract. For each tag, an array of matching
@@ -27,6 +28,7 @@ export interface L2LogsSource {
27
28
  * @param contractAddress - The contract address to search logs for.
28
29
  * @param tags - The tags to search for.
29
30
  * @param page - The page number (0-indexed) for pagination.
31
+ * @param upToBlockNumber - If set, only return logs from blocks up to and including this block number.
30
32
  * @returns An array of log arrays, one per tag. Returns at most 10 logs per tag per page. If 10 logs are returned
31
33
  * for a tag, the caller should fetch the next page to check for more logs.
32
34
  */
@@ -34,6 +36,7 @@ export interface L2LogsSource {
34
36
  contractAddress: AztecAddress,
35
37
  tags: Tag[],
36
38
  page?: number,
39
+ upToBlockNumber?: BlockNumber,
37
40
  ): Promise<TxScopedL2Log[][]>;
38
41
 
39
42
  /**
@@ -3,6 +3,7 @@ import type { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import { createLogger } from '@aztec/foundation/log';
4
4
  import { type IndexedTreeLeafPreimage, SiblingPath } from '@aztec/foundation/trees';
5
5
 
6
+ import type { BlockHash } from '../block/block_hash.js';
6
7
  import type { MerkleTreeId, TreeHeights } from '../trees/merkle_tree_id.js';
7
8
  import type { NullifierLeaf } from '../trees/nullifier_leaf.js';
8
9
  import type { PublicDataTreeLeaf } from '../trees/public_data_leaf.js';
@@ -99,7 +100,7 @@ type LeafTypes = {
99
100
  [MerkleTreeId.NOTE_HASH_TREE]: Fr;
100
101
  [MerkleTreeId.PUBLIC_DATA_TREE]: Buffer;
101
102
  [MerkleTreeId.L1_TO_L2_MESSAGE_TREE]: Fr;
102
- [MerkleTreeId.ARCHIVE]: Fr;
103
+ [MerkleTreeId.ARCHIVE]: BlockHash;
103
104
  };
104
105
 
105
106
  type LeafValueTypes = {
@@ -107,7 +108,7 @@ type LeafValueTypes = {
107
108
  [MerkleTreeId.NOTE_HASH_TREE]: Fr;
108
109
  [MerkleTreeId.PUBLIC_DATA_TREE]: PublicDataTreeLeaf;
109
110
  [MerkleTreeId.L1_TO_L2_MESSAGE_TREE]: Fr;
110
- [MerkleTreeId.ARCHIVE]: Fr;
111
+ [MerkleTreeId.ARCHIVE]: BlockHash;
111
112
  };
112
113
 
113
114
  export type MerkleTreeLeafType<ID extends MerkleTreeId> = LeafTypes[ID];
@@ -71,7 +71,7 @@ export const proverConfigMappings: ConfigMappingsType<ProverConfig> = {
71
71
  },
72
72
  proverId: {
73
73
  env: 'PROVER_ID',
74
- parseEnv: (val?: string) => parseProverId(val),
74
+ parseEnv: (val: string) => parseProverId(val),
75
75
  description: 'Hex value that identifies the prover. Defaults to the address used for submitting proofs if not set.',
76
76
  },
77
77
  proverTestDelayType: {
@@ -117,10 +117,7 @@ export const proverConfigMappings: ConfigMappingsType<ProverConfig> = {
117
117
  },
118
118
  };
119
119
 
120
- function parseProverId(str?: string) {
121
- if (!str) {
122
- return undefined;
123
- }
120
+ function parseProverId(str: string) {
124
121
  return EthAddress.fromString(str);
125
122
  }
126
123
 
@@ -3,12 +3,8 @@ import { schemas, zodFor } from '@aztec/foundation/schemas';
3
3
 
4
4
  import { z } from 'zod';
5
5
 
6
- export type SlasherClientType = 'empire' | 'tally';
7
-
8
6
  export interface SlasherConfig {
9
7
  slashOverridePayload?: EthAddress;
10
- slashMinPenaltyPercentage: number;
11
- slashMaxPenaltyPercentage: number;
12
8
  slashSelfAllowed?: boolean; // Whether to allow slashes to own validators
13
9
  slashValidatorsAlways: EthAddress[]; // Array of validator addresses
14
10
  slashValidatorsNever: EthAddress[]; // Array of validator addresses
@@ -32,8 +28,6 @@ export interface SlasherConfig {
32
28
  export const SlasherConfigSchema = zodFor<SlasherConfig>()(
33
29
  z.object({
34
30
  slashOverridePayload: schemas.EthAddress.optional(),
35
- slashMinPenaltyPercentage: z.number(),
36
- slashMaxPenaltyPercentage: z.number(),
37
31
  slashValidatorsAlways: z.array(schemas.EthAddress),
38
32
  slashValidatorsNever: z.array(schemas.EthAddress),
39
33
  slashPrunePenalty: schemas.BigInt,
@@ -1,4 +1,4 @@
1
- import type { BlockNumber, CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
1
+ import type { CheckpointNumber, SlotNumber } from '@aztec/foundation/branded-types';
2
2
  import type { SecretValue } from '@aztec/foundation/config';
3
3
  import { Fr } from '@aztec/foundation/curves/bn254';
4
4
  import type { EthAddress } from '@aztec/foundation/eth-address';
@@ -9,69 +9,71 @@ import type {
9
9
  BlockProposal,
10
10
  BlockProposalOptions,
11
11
  CheckpointAttestation,
12
- CheckpointLastBlockData,
13
12
  CheckpointProposal,
14
13
  CheckpointProposalOptions,
15
14
  } from '@aztec/stdlib/p2p';
16
15
  import type { CheckpointHeader } from '@aztec/stdlib/rollup';
17
16
  import type { BlockHeader, Tx } from '@aztec/stdlib/tx';
18
- import { type ValidatorHASignerConfig, ValidatorHASignerConfigSchema } from '@aztec/validator-ha-signer/config';
19
17
 
20
18
  import type { PeerId } from '@libp2p/interface';
21
19
  import { z } from 'zod';
22
20
 
23
21
  import type { CommitteeAttestationsAndSigners } from '../block/index.js';
22
+ import {
23
+ type LocalSignerConfig,
24
+ LocalSignerConfigSchema,
25
+ type ValidatorHASignerConfig,
26
+ ValidatorHASignerConfigSchema,
27
+ } from '../ha-signing/index.js';
24
28
  import { AllowedElementSchema } from './allowed_element.js';
25
29
 
26
30
  /**
27
31
  * Validator client configuration
28
32
  */
29
- export type ValidatorClientConfig = ValidatorHASignerConfig & {
30
- /** The private keys of the validators participating in attestation duties */
31
- validatorPrivateKeys?: SecretValue<`0x${string}`[]>;
33
+ export type ValidatorClientConfig = ValidatorHASignerConfig &
34
+ LocalSignerConfig & {
35
+ /** The private keys of the validators participating in attestation duties */
36
+ validatorPrivateKeys?: SecretValue<`0x${string}`[]>;
32
37
 
33
- /** The addresses of the validators to use with remote signers */
34
- validatorAddresses?: EthAddress[];
38
+ /** The addresses of the validators to use with remote signers */
39
+ validatorAddresses?: EthAddress[];
35
40
 
36
- /** Do not run the validator */
37
- disableValidator: boolean;
41
+ /** Do not run the validator */
42
+ disableValidator: boolean;
38
43
 
39
- /** Temporarily disable these specific validator addresses */
40
- disabledValidators: EthAddress[];
44
+ /** Temporarily disable these specific validator addresses */
45
+ disabledValidators: EthAddress[];
41
46
 
42
- /** Interval between polling for new attestations from peers */
43
- attestationPollingIntervalMs: number;
47
+ /** Interval between polling for new attestations from peers */
48
+ attestationPollingIntervalMs: number;
44
49
 
45
- /** Whether to re-execute transactions in a block proposal before attesting */
46
- validatorReexecute: boolean;
50
+ /** Whether to always reexecute block proposals, even for non-validator nodes or when out of the current committee */
51
+ alwaysReexecuteBlockProposals?: boolean;
47
52
 
48
- /** Whether to always reexecute block proposals, even for non-validator nodes or when out of the currnet committee */
49
- alwaysReexecuteBlockProposals?: boolean;
53
+ /** Whether to run in fisherman mode: validates all proposals and attestations but does not broadcast attestations or participate in consensus */
54
+ fishermanMode?: boolean;
50
55
 
51
- /** Whether to run in fisherman mode: validates all proposals and attestations but does not broadcast attestations or participate in consensus */
52
- fishermanMode?: boolean;
56
+ /** Skip checkpoint proposal validation and always attest (default: false) */
57
+ skipCheckpointProposalValidation?: boolean;
53
58
 
54
- /** Skip checkpoint proposal validation and always attest (default: false) */
55
- skipCheckpointProposalValidation?: boolean;
59
+ /** Skip pushing re-executed blocks to archiver (default: false) */
60
+ skipPushProposedBlocksToArchiver?: boolean;
56
61
 
57
- /** Skip pushing re-executed blocks to archiver (default: false) */
58
- skipPushProposedBlocksToArchiver?: boolean;
62
+ /** Agree to attest to equivocated checkpoint proposals (for testing purposes only) */
63
+ attestToEquivocatedProposals?: boolean;
59
64
 
60
- /** Agree to attest to equivocated checkpoint proposals (for testing purposes only) */
61
- attestToEquivocatedProposals?: boolean;
65
+ /** Maximum L2 gas per block for validation. Proposals exceeding this limit are rejected. */
66
+ validateMaxL2BlockGas?: number;
62
67
 
63
- /** Maximum L2 gas per block for validation. Proposals exceeding this limit are rejected. */
64
- validateMaxL2BlockGas?: number;
68
+ /** Maximum DA gas per block for validation. Proposals exceeding this limit are rejected. */
69
+ validateMaxDABlockGas?: number;
65
70
 
66
- /** Maximum DA gas per block for validation. Proposals exceeding this limit are rejected. */
67
- validateMaxDABlockGas?: number;
71
+ /** Maximum transactions per block for validation. Proposals exceeding this limit are rejected. */
72
+ validateMaxTxsPerBlock?: number;
68
73
 
69
- /** Maximum transactions per block for validation. Proposals exceeding this limit are rejected. */
70
- validateMaxTxsPerBlock?: number;
71
-
72
- /** Maximum transactions per checkpoint for validation. Proposals exceeding this limit are rejected. */
73
- validateMaxTxsPerCheckpoint?: number;
74
- };
74
+ /** Maximum transactions per checkpoint for validation. Proposals exceeding this limit are rejected. */
75
+ validateMaxTxsPerCheckpoint?: number;
76
+ };
75
77
 
76
78
  export type ValidatorClientFullConfig = ValidatorClientConfig &
77
79
  Pick<SequencerConfig, 'txPublicSetupAllowListExtend' | 'broadcastInvalidBlockProposal'> &
@@ -87,12 +89,11 @@ export type ValidatorClientFullConfig = ValidatorClientConfig &
87
89
  };
88
90
 
89
91
  export const ValidatorClientConfigSchema = zodFor<Omit<ValidatorClientConfig, 'validatorPrivateKeys'>>()(
90
- ValidatorHASignerConfigSchema.extend({
92
+ ValidatorHASignerConfigSchema.merge(LocalSignerConfigSchema).extend({
91
93
  validatorAddresses: z.array(schemas.EthAddress).optional(),
92
94
  disableValidator: z.boolean(),
93
95
  disabledValidators: z.array(schemas.EthAddress),
94
96
  attestationPollingIntervalMs: z.number().min(0),
95
- validatorReexecute: z.boolean(),
96
97
  alwaysReexecuteBlockProposals: z.boolean().optional(),
97
98
  fishermanMode: z.boolean().optional(),
98
99
  skipCheckpointProposalValidation: z.boolean().optional(),
@@ -116,8 +117,6 @@ export const ValidatorClientFullConfigSchema = zodFor<Omit<ValidatorClientFullCo
116
117
  }),
117
118
  );
118
119
 
119
- export type CreateCheckpointProposalLastBlockData = Omit<CheckpointLastBlockData, 'txHashes'> & { txs: Tx[] };
120
-
121
120
  export interface Validator {
122
121
  start(): Promise<void>;
123
122
  updateConfig(config: Partial<ValidatorClientFullConfig>): void;
@@ -125,6 +124,7 @@ export interface Validator {
125
124
  // Block validation responsibilities
126
125
  createBlockProposal(
127
126
  blockHeader: BlockHeader,
127
+ checkpointNumber: CheckpointNumber,
128
128
  indexWithinCheckpoint: number,
129
129
  inHash: Fr,
130
130
  archive: Fr,
@@ -137,8 +137,9 @@ export interface Validator {
137
137
  createCheckpointProposal(
138
138
  checkpointHeader: CheckpointHeader,
139
139
  archive: Fr,
140
+ checkpointNumber: CheckpointNumber,
140
141
  feeAssetPriceModifier: bigint,
141
- lastBlockInfo: CreateCheckpointProposalLastBlockData | undefined,
142
+ lastBlockProposal: BlockProposal | undefined,
142
143
  proposerAddress: EthAddress | undefined,
143
144
  options: CheckpointProposalOptions,
144
145
  ): Promise<CheckpointProposal>;
@@ -162,15 +163,23 @@ export interface Validator {
162
163
  broadcastBlockProposal(proposal: BlockProposal): Promise<void>;
163
164
 
164
165
  /** Collect own attestations for a checkpoint proposal (used when skipping p2p attestation collection) */
165
- collectOwnAttestations(proposal: CheckpointProposal): Promise<CheckpointAttestation[]>;
166
+ collectOwnAttestations(
167
+ proposal: CheckpointProposal,
168
+ checkpointNumber: CheckpointNumber,
169
+ ): Promise<CheckpointAttestation[]>;
166
170
 
167
171
  /** Collect attestations from the p2p network for a checkpoint proposal */
168
- collectAttestations(proposal: CheckpointProposal, required: number, deadline: Date): Promise<CheckpointAttestation[]>;
172
+ collectAttestations(
173
+ proposal: CheckpointProposal,
174
+ required: number,
175
+ deadline: Date,
176
+ checkpointNumber: CheckpointNumber,
177
+ ): Promise<CheckpointAttestation[]>;
169
178
 
170
179
  signAttestationsAndSigners(
171
180
  attestationsAndSigners: CommitteeAttestationsAndSigners,
172
181
  proposer: EthAddress,
173
182
  slot: SlotNumber,
174
- blockNumber: BlockNumber | CheckpointNumber,
183
+ checkpointNumber: CheckpointNumber,
175
184
  ): Promise<Signature>;
176
185
  }
@@ -25,7 +25,7 @@ export class ClaimedLengthArray<T extends Serializable, N extends number> {
25
25
  arrayLength: N,
26
26
  ): ClaimedLengthArray<T, N> {
27
27
  const reader = BufferReader.asReader(buffer);
28
- const array = reader.readArray(arrayLength, deserializer) as Tuple<T, N>;
28
+ const array = reader.readArray(arrayLength, deserializer);
29
29
  const claimedLength = reader.readNumber();
30
30
  return new ClaimedLengthArray(array, claimedLength);
31
31
  }
@@ -42,7 +42,7 @@ export class ClaimedLengthArray<T extends Serializable, N extends number> {
42
42
  arrayLength: N,
43
43
  ): ClaimedLengthArray<T, N> {
44
44
  const reader = FieldReader.asReader(fields);
45
- const array = reader.readTuple(arrayLength, deserializer);
45
+ const array = reader.readArray(arrayLength, deserializer);
46
46
  const claimedLength = reader.readU32();
47
47
  return new ClaimedLengthArray(array, claimedLength);
48
48
  }
@@ -105,11 +105,8 @@ export class PrivateKernelResetHints<
105
105
  fromBuffer: buf =>
106
106
  nullifierReadRequestHintsFromBuffer(buf, numNullifierReadRequestPending, numNullifierReadRequestSettled),
107
107
  }),
108
- reader.readArray(numKeyValidationHints, KeyValidationHint) as Tuple<KeyValidationHint, KEY_VALIDATION_HINTS_LEN>,
109
- reader.readArray(numTransientDataSquashingHints, TransientDataSquashingHint) as Tuple<
110
- TransientDataSquashingHint,
111
- TRANSIENT_DATA_HINTS_LEN
112
- >,
108
+ reader.readArray(numKeyValidationHints, KeyValidationHint),
109
+ reader.readArray(numTransientDataSquashingHints, TransientDataSquashingHint),
113
110
  );
114
111
  }
115
112
  }
@@ -158,11 +158,11 @@ export class ReadRequestResetHints<
158
158
  > {
159
159
  const reader = BufferReader.asReader(buffer);
160
160
  return new ReadRequestResetHints(
161
- reader.readArray(readRequestLen, ReadRequestAction) as Tuple<ReadRequestAction, READ_REQUEST_LEN>,
162
- reader.readArray(numPendingReads, PendingReadHint) as Tuple<PendingReadHint, PENDING_READ_HINTS_LEN>,
161
+ reader.readArray(readRequestLen, ReadRequestAction),
162
+ reader.readArray(numPendingReads, PendingReadHint),
163
163
  reader.readArray(numSettledReads, {
164
164
  fromBuffer: r => SettledReadHint.fromBuffer(r, treeHeight, leafPreimageFromBuffer),
165
- }) as Tuple<SettledReadHint<TREE_HEIGHT, LEAF_PREIMAGE>, SETTLED_READ_HINTS_LEN>,
165
+ }),
166
166
  );
167
167
  }
168
168
 
@@ -19,9 +19,9 @@ export class PaddedSideEffects {
19
19
  static fromBuffer(buffer: Buffer | BufferReader) {
20
20
  const reader = BufferReader.asReader(buffer);
21
21
  return new PaddedSideEffects(
22
- reader.readTuple(MAX_NOTE_HASHES_PER_TX, Fr),
23
- reader.readTuple(MAX_NULLIFIERS_PER_TX, Fr),
24
- reader.readTuple(MAX_PRIVATE_LOGS_PER_TX, PrivateLog),
22
+ reader.readArray(MAX_NOTE_HASHES_PER_TX, Fr),
23
+ reader.readArray(MAX_NULLIFIERS_PER_TX, Fr),
24
+ reader.readArray(MAX_PRIVATE_LOGS_PER_TX, PrivateLog),
25
25
  );
26
26
  }
27
27
 
@@ -73,7 +73,7 @@ export class PrivateToAvmAccumulatedData {
73
73
  return new this(
74
74
  reader.readFieldArray(MAX_NOTE_HASHES_PER_TX),
75
75
  reader.readFieldArray(MAX_NULLIFIERS_PER_TX),
76
- reader.readTuple(MAX_L2_TO_L1_MSGS_PER_TX, ScopedL2ToL1Message),
76
+ reader.readArray(MAX_L2_TO_L1_MSGS_PER_TX, ScopedL2ToL1Message),
77
77
  );
78
78
  }
79
79
 
@@ -94,9 +94,9 @@ export class PrivateToAvmAccumulatedData {
94
94
  static fromBuffer(buffer: Buffer | BufferReader) {
95
95
  const reader = BufferReader.asReader(buffer);
96
96
  return new PrivateToAvmAccumulatedData(
97
- reader.readTuple(MAX_NOTE_HASHES_PER_TX, Fr),
98
- reader.readTuple(MAX_NULLIFIERS_PER_TX, Fr),
99
- reader.readTuple(MAX_L2_TO_L1_MSGS_PER_TX, ScopedL2ToL1Message),
97
+ reader.readArray(MAX_NOTE_HASHES_PER_TX, Fr),
98
+ reader.readArray(MAX_NULLIFIERS_PER_TX, Fr),
99
+ reader.readArray(MAX_L2_TO_L1_MSGS_PER_TX, ScopedL2ToL1Message),
100
100
  );
101
101
  }
102
102
 
@@ -62,10 +62,10 @@ export class PrivateToPublicAccumulatedData {
62
62
  return new this(
63
63
  reader.readFieldArray(MAX_NOTE_HASHES_PER_TX),
64
64
  reader.readFieldArray(MAX_NULLIFIERS_PER_TX),
65
- reader.readTuple(MAX_L2_TO_L1_MSGS_PER_TX, ScopedL2ToL1Message),
66
- reader.readTuple(MAX_PRIVATE_LOGS_PER_TX, PrivateLog),
67
- reader.readTuple(MAX_CONTRACT_CLASS_LOGS_PER_TX, ScopedLogHash),
68
- reader.readTuple(MAX_ENQUEUED_CALLS_PER_TX, PublicCallRequest),
65
+ reader.readArray(MAX_L2_TO_L1_MSGS_PER_TX, ScopedL2ToL1Message),
66
+ reader.readArray(MAX_PRIVATE_LOGS_PER_TX, PrivateLog),
67
+ reader.readArray(MAX_CONTRACT_CLASS_LOGS_PER_TX, ScopedLogHash),
68
+ reader.readArray(MAX_ENQUEUED_CALLS_PER_TX, PublicCallRequest),
69
69
  );
70
70
  }
71
71
 
@@ -76,12 +76,12 @@ export class PrivateToPublicAccumulatedData {
76
76
  static fromBuffer(buffer: Buffer | BufferReader) {
77
77
  const reader = BufferReader.asReader(buffer);
78
78
  return new PrivateToPublicAccumulatedData(
79
- reader.readTuple(MAX_NOTE_HASHES_PER_TX, Fr),
80
- reader.readTuple(MAX_NULLIFIERS_PER_TX, Fr),
81
- reader.readTuple(MAX_L2_TO_L1_MSGS_PER_TX, ScopedL2ToL1Message),
82
- reader.readTuple(MAX_PRIVATE_LOGS_PER_TX, PrivateLog),
83
- reader.readTuple(MAX_CONTRACT_CLASS_LOGS_PER_TX, ScopedLogHash),
84
- reader.readTuple(MAX_ENQUEUED_CALLS_PER_TX, PublicCallRequest),
79
+ reader.readArray(MAX_NOTE_HASHES_PER_TX, Fr),
80
+ reader.readArray(MAX_NULLIFIERS_PER_TX, Fr),
81
+ reader.readArray(MAX_L2_TO_L1_MSGS_PER_TX, ScopedL2ToL1Message),
82
+ reader.readArray(MAX_PRIVATE_LOGS_PER_TX, PrivateLog),
83
+ reader.readArray(MAX_CONTRACT_CLASS_LOGS_PER_TX, ScopedLogHash),
84
+ reader.readArray(MAX_ENQUEUED_CALLS_PER_TX, PublicCallRequest),
85
85
  );
86
86
  }
87
87
 
@@ -95,11 +95,11 @@ export class PrivateToRollupAccumulatedData {
95
95
  static fromBuffer(buffer: Buffer | BufferReader): PrivateToRollupAccumulatedData {
96
96
  const reader = BufferReader.asReader(buffer);
97
97
  return new PrivateToRollupAccumulatedData(
98
- reader.readTuple(MAX_NOTE_HASHES_PER_TX, Fr),
99
- reader.readTuple(MAX_NULLIFIERS_PER_TX, Fr),
100
- reader.readTuple(MAX_L2_TO_L1_MSGS_PER_TX, ScopedL2ToL1Message),
101
- reader.readTuple(MAX_PRIVATE_LOGS_PER_TX, PrivateLog),
102
- reader.readTuple(MAX_CONTRACT_CLASS_LOGS_PER_TX, ScopedLogHash),
98
+ reader.readArray(MAX_NOTE_HASHES_PER_TX, Fr),
99
+ reader.readArray(MAX_NULLIFIERS_PER_TX, Fr),
100
+ reader.readArray(MAX_L2_TO_L1_MSGS_PER_TX, ScopedL2ToL1Message),
101
+ reader.readArray(MAX_PRIVATE_LOGS_PER_TX, PrivateLog),
102
+ reader.readArray(MAX_CONTRACT_CLASS_LOGS_PER_TX, ScopedLogHash),
103
103
  );
104
104
  }
105
105
 
@@ -0,0 +1,36 @@
1
+ import { l1ContractAddressesMapping } from '@aztec/ethereum/l1-contract-addresses';
2
+ import { type ConfigMappingsType, getConfigFromMappings, numberConfigHelper } from '@aztec/foundation/config';
3
+ import type { EthAddress } from '@aztec/foundation/eth-address';
4
+
5
+ export type DataStoreConfig = {
6
+ dataDirectory?: string;
7
+ dataStoreMapSizeKb: number;
8
+ l1Contracts?: { rollupAddress: EthAddress };
9
+ };
10
+
11
+ export const dataConfigMappings: ConfigMappingsType<DataStoreConfig> = {
12
+ dataDirectory: {
13
+ env: 'DATA_DIRECTORY',
14
+ description: 'Optional dir to store data. If omitted will store in memory.',
15
+ },
16
+ dataStoreMapSizeKb: {
17
+ env: 'DATA_STORE_MAP_SIZE_KB',
18
+ description: 'The maximum possible size of a data store DB in KB. Can be overridden by component-specific options.',
19
+ ...numberConfigHelper(128 * 1_024 * 1_024), // Defaulted to 128 GB
20
+ },
21
+ l1Contracts: {
22
+ description: 'The deployed L1 contract addresses',
23
+ nested: {
24
+ rollupAddress: l1ContractAddressesMapping.rollupAddress,
25
+ },
26
+ },
27
+ };
28
+
29
+ /**
30
+ * Returns the archiver configuration from the environment variables.
31
+ * Note: If an environment variable is not set, the default value is used.
32
+ * @returns The archiver configuration.
33
+ */
34
+ export function getDataConfigFromEnv(): DataStoreConfig {
35
+ return getConfigFromMappings<DataStoreConfig>(dataConfigMappings);
36
+ }
@@ -0,0 +1 @@
1
+ export * from './config.js';
@@ -1 +1 @@
1
- export * from './slash_factory.js';
1
+ // No exports.
@@ -1,7 +1,6 @@
1
1
  import { INITIAL_L2_BLOCK_NUM } from '@aztec/constants';
2
2
  import { toBufferBE } from '@aztec/foundation/bigint-buffer';
3
3
  import { BlockNumber, BlockNumberSchema } from '@aztec/foundation/branded-types';
4
- import { Fr } from '@aztec/foundation/curves/bn254';
5
4
  import { BufferReader } from '@aztec/foundation/serialize';
6
5
 
7
6
  import { z } from 'zod';
@@ -83,7 +82,7 @@ export class LogId {
83
82
  const reader = BufferReader.asReader(buffer);
84
83
 
85
84
  const blockNumber = BlockNumber(reader.readNumber());
86
- const blockHash = new BlockHash(reader.readObject(Fr));
85
+ const blockHash = BlockHash.fromBuffer(reader);
87
86
  const txHash = reader.readObject(TxHash);
88
87
  const txIndex = reader.readNumber();
89
88
  const logIndex = reader.readNumber();
@@ -73,7 +73,7 @@ export class PrivateLog {
73
73
 
74
74
  static fromBuffer(buffer: Buffer | BufferReader) {
75
75
  const reader = BufferReader.asReader(buffer);
76
- return new PrivateLog(reader.readTuple(PRIVATE_LOG_SIZE_IN_FIELDS, Fr), reader.readNumber());
76
+ return new PrivateLog(reader.readArray(PRIVATE_LOG_SIZE_IN_FIELDS, Fr), reader.readNumber());
77
77
  }
78
78
 
79
79
  static random(tag = Fr.random()) {