@aztec/stdlib 0.0.1-commit.993d240 → 0.0.1-commit.9a89641

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 (587) hide show
  1. package/dest/abi/abi.d.ts +32 -7
  2. package/dest/abi/abi.d.ts.map +1 -1
  3. package/dest/abi/abi.js +11 -2
  4. package/dest/abi/buffer.d.ts +6 -2
  5. package/dest/abi/buffer.d.ts.map +1 -1
  6. package/dest/abi/buffer.js +13 -1
  7. package/dest/abi/contract_artifact.d.ts +1 -1
  8. package/dest/abi/contract_artifact.d.ts.map +1 -1
  9. package/dest/abi/contract_artifact.js +35 -19
  10. package/dest/abi/decoder.d.ts +12 -5
  11. package/dest/abi/decoder.d.ts.map +1 -1
  12. package/dest/abi/decoder.js +18 -21
  13. package/dest/abi/function_call.d.ts +17 -8
  14. package/dest/abi/function_call.d.ts.map +1 -1
  15. package/dest/abi/function_call.js +28 -9
  16. package/dest/avm/avm.d.ts +212 -211
  17. package/dest/avm/avm.d.ts.map +1 -1
  18. package/dest/avm/avm.js +4 -2
  19. package/dest/avm/index.d.ts +1 -6
  20. package/dest/avm/index.d.ts.map +1 -1
  21. package/dest/avm/index.js +0 -5
  22. package/dest/aztec-address/index.d.ts +35 -5
  23. package/dest/aztec-address/index.d.ts.map +1 -1
  24. package/dest/aztec-address/index.js +32 -8
  25. package/dest/block/attestation_info.d.ts +1 -1
  26. package/dest/block/attestation_info.d.ts.map +1 -1
  27. package/dest/block/attestation_info.js +7 -4
  28. package/dest/block/l2_block_source.d.ts +57 -28
  29. package/dest/block/l2_block_source.d.ts.map +1 -1
  30. package/dest/block/l2_block_source.js +20 -2
  31. package/dest/block/l2_block_stream/event_driven_l2_block_stream.d.ts +39 -0
  32. package/dest/block/l2_block_stream/event_driven_l2_block_stream.d.ts.map +1 -0
  33. package/dest/block/l2_block_stream/event_driven_l2_block_stream.js +165 -0
  34. package/dest/block/l2_block_stream/index.d.ts +2 -1
  35. package/dest/block/l2_block_stream/index.d.ts.map +1 -1
  36. package/dest/block/l2_block_stream/index.js +1 -0
  37. package/dest/block/l2_block_stream/interfaces.d.ts +83 -11
  38. package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
  39. package/dest/block/l2_block_stream/interfaces.js +25 -1
  40. package/dest/block/l2_block_stream/l2_block_stream.d.ts +24 -15
  41. package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
  42. package/dest/block/l2_block_stream/l2_block_stream.js +175 -151
  43. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts +6 -12
  44. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts.map +1 -1
  45. package/dest/block/l2_block_stream/l2_tips_memory_store.js +8 -32
  46. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +17 -18
  47. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -1
  48. package/dest/block/l2_block_stream/l2_tips_store_base.js +70 -58
  49. package/dest/block/proposal/attestations_and_signers.d.ts +19 -1
  50. package/dest/block/proposal/attestations_and_signers.d.ts.map +1 -1
  51. package/dest/block/proposal/attestations_and_signers.js +47 -7
  52. package/dest/block/test/l2_tips_store_test_suite.d.ts +1 -1
  53. package/dest/block/test/l2_tips_store_test_suite.d.ts.map +1 -1
  54. package/dest/block/test/l2_tips_store_test_suite.js +301 -37
  55. package/dest/block/validate_block_result.d.ts +16 -1
  56. package/dest/block/validate_block_result.d.ts.map +1 -1
  57. package/dest/block/validate_block_result.js +18 -3
  58. package/dest/checkpoint/checkpoint.js +2 -2
  59. package/dest/checkpoint/index.d.ts +2 -1
  60. package/dest/checkpoint/index.d.ts.map +1 -1
  61. package/dest/checkpoint/index.js +1 -0
  62. package/dest/checkpoint/simulation_overrides.d.ts +61 -0
  63. package/dest/checkpoint/simulation_overrides.d.ts.map +1 -0
  64. package/dest/checkpoint/simulation_overrides.js +98 -0
  65. package/dest/checkpoint/validate.d.ts +11 -3
  66. package/dest/checkpoint/validate.d.ts.map +1 -1
  67. package/dest/checkpoint/validate.js +9 -6
  68. package/dest/config/index.d.ts +2 -2
  69. package/dest/config/index.d.ts.map +1 -1
  70. package/dest/config/index.js +1 -1
  71. package/dest/config/network-consensus-config.d.ts +72 -0
  72. package/dest/config/network-consensus-config.d.ts.map +1 -0
  73. package/dest/config/network-consensus-config.js +223 -0
  74. package/dest/config/node-rpc-config.d.ts +1 -1
  75. package/dest/config/node-rpc-config.d.ts.map +1 -1
  76. package/dest/config/node-rpc-config.js +1 -1
  77. package/dest/config/sequencer-config.d.ts +4 -2
  78. package/dest/config/sequencer-config.d.ts.map +1 -1
  79. package/dest/config/sequencer-config.js +22 -3
  80. package/dest/contract/artifact_hash.d.ts +2 -2
  81. package/dest/contract/artifact_hash.d.ts.map +1 -1
  82. package/dest/contract/artifact_hash.js +10 -2
  83. package/dest/contract/contract_address.d.ts +5 -4
  84. package/dest/contract/contract_address.d.ts.map +1 -1
  85. package/dest/contract/contract_class.d.ts +1 -1
  86. package/dest/contract/contract_class.d.ts.map +1 -1
  87. package/dest/contract/contract_class.js +3 -2
  88. package/dest/contract/contract_instance.d.ts +16 -2
  89. package/dest/contract/contract_instance.d.ts.map +1 -1
  90. package/dest/contract/contract_instance.js +45 -0
  91. package/dest/contract/index.d.ts +1 -2
  92. package/dest/contract/index.d.ts.map +1 -1
  93. package/dest/contract/index.js +0 -1
  94. package/dest/contract/interfaces/contract_data_source.d.ts +3 -5
  95. package/dest/contract/interfaces/contract_data_source.d.ts.map +1 -1
  96. package/dest/contract/interfaces/contract_instance.d.ts +71 -10
  97. package/dest/contract/interfaces/contract_instance.d.ts.map +1 -1
  98. package/dest/contract/interfaces/contract_instance.js +7 -2
  99. package/dest/contract/interfaces/node-info.d.ts +11 -1
  100. package/dest/contract/interfaces/node-info.d.ts.map +1 -1
  101. package/dest/contract/interfaces/node-info.js +7 -1
  102. package/dest/contract/partial_address.d.ts +9 -3
  103. package/dest/contract/partial_address.d.ts.map +1 -1
  104. package/dest/contract/partial_address.js +8 -2
  105. package/dest/database-version/version_manager.d.ts +18 -4
  106. package/dest/database-version/version_manager.d.ts.map +1 -1
  107. package/dest/database-version/version_manager.js +76 -6
  108. package/dest/deserialization/index.d.ts +35 -3
  109. package/dest/deserialization/index.d.ts.map +1 -1
  110. package/dest/deserialization/index.js +32 -1
  111. package/dest/file-store/factory.d.ts +1 -1
  112. package/dest/file-store/factory.d.ts.map +1 -1
  113. package/dest/file-store/factory.js +7 -0
  114. package/dest/file-store/index.d.ts +2 -1
  115. package/dest/file-store/index.d.ts.map +1 -1
  116. package/dest/file-store/index.js +1 -0
  117. package/dest/file-store/memory.d.ts +24 -0
  118. package/dest/file-store/memory.d.ts.map +1 -0
  119. package/dest/file-store/memory.js +80 -0
  120. package/dest/gas/gas_settings.d.ts +7 -13
  121. package/dest/gas/gas_settings.d.ts.map +1 -1
  122. package/dest/gas/gas_settings.js +9 -16
  123. package/dest/gas/index.d.ts +2 -1
  124. package/dest/gas/index.d.ts.map +1 -1
  125. package/dest/gas/index.js +1 -0
  126. package/dest/gas/tx_gas_limits.d.ts +72 -0
  127. package/dest/gas/tx_gas_limits.d.ts.map +1 -0
  128. package/dest/gas/tx_gas_limits.js +85 -0
  129. package/dest/ha-signing/config.d.ts +19 -5
  130. package/dest/ha-signing/config.d.ts.map +1 -1
  131. package/dest/ha-signing/config.js +9 -3
  132. package/dest/ha-signing/local_config.d.ts +10 -2
  133. package/dest/ha-signing/local_config.d.ts.map +1 -1
  134. package/dest/ha-signing/local_config.js +8 -2
  135. package/dest/hash/hash.d.ts +1 -2
  136. package/dest/hash/hash.d.ts.map +1 -1
  137. package/dest/hash/hash.js +0 -7
  138. package/dest/interfaces/api_limit.d.ts +6 -1
  139. package/dest/interfaces/api_limit.d.ts.map +1 -1
  140. package/dest/interfaces/api_limit.js +3 -0
  141. package/dest/interfaces/archiver.d.ts +12 -7
  142. package/dest/interfaces/archiver.d.ts.map +1 -1
  143. package/dest/interfaces/archiver.js +13 -6
  144. package/dest/interfaces/aztec-node-admin.d.ts +25 -17
  145. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  146. package/dest/interfaces/aztec-node-admin.js +1 -1
  147. package/dest/interfaces/aztec-node-debug.d.ts +40 -2
  148. package/dest/interfaces/aztec-node-debug.d.ts.map +1 -1
  149. package/dest/interfaces/aztec-node-debug.js +29 -1
  150. package/dest/interfaces/aztec-node.d.ts +100 -33
  151. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  152. package/dest/interfaces/aztec-node.js +72 -23
  153. package/dest/interfaces/block-builder.d.ts +9 -2
  154. package/dest/interfaces/block-builder.d.ts.map +1 -1
  155. package/dest/interfaces/block_response.d.ts +5 -5
  156. package/dest/interfaces/block_response.d.ts.map +1 -1
  157. package/dest/interfaces/chain_tips.d.ts +8 -47
  158. package/dest/interfaces/chain_tips.d.ts.map +1 -1
  159. package/dest/interfaces/chain_tips.js +1 -6
  160. package/dest/interfaces/checkpoint_parameter.d.ts +3 -3
  161. package/dest/interfaces/checkpoint_parameter.d.ts.map +1 -1
  162. package/dest/interfaces/checkpoint_parameter.js +3 -3
  163. package/dest/interfaces/checkpoint_response.d.ts +5 -5
  164. package/dest/interfaces/checkpoint_response.d.ts.map +1 -1
  165. package/dest/interfaces/client.d.ts +2 -1
  166. package/dest/interfaces/client.d.ts.map +1 -1
  167. package/dest/interfaces/configs.d.ts +33 -6
  168. package/dest/interfaces/configs.d.ts.map +1 -1
  169. package/dest/interfaces/configs.js +6 -1
  170. package/dest/interfaces/get_tx_by_hash_options.d.ts +9 -0
  171. package/dest/interfaces/get_tx_by_hash_options.d.ts.map +1 -0
  172. package/dest/interfaces/get_tx_by_hash_options.js +4 -0
  173. package/dest/interfaces/merkle_tree_operations.d.ts +8 -3
  174. package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
  175. package/dest/interfaces/p2p.d.ts +38 -9
  176. package/dest/interfaces/p2p.d.ts.map +1 -1
  177. package/dest/interfaces/p2p.js +14 -2
  178. package/dest/interfaces/private_kernel_prover.d.ts +71 -12
  179. package/dest/interfaces/private_kernel_prover.d.ts.map +1 -1
  180. package/dest/interfaces/prover-client.d.ts +2 -3
  181. package/dest/interfaces/prover-client.d.ts.map +1 -1
  182. package/dest/interfaces/prover-node.d.ts +12 -8
  183. package/dest/interfaces/prover-node.d.ts.map +1 -1
  184. package/dest/interfaces/prover-node.js +24 -17
  185. package/dest/interfaces/proving-job.d.ts +17 -4
  186. package/dest/interfaces/proving-job.d.ts.map +1 -1
  187. package/dest/interfaces/proving-job.js +13 -4
  188. package/dest/interfaces/server.d.ts +1 -3
  189. package/dest/interfaces/server.d.ts.map +1 -1
  190. package/dest/interfaces/server.js +0 -2
  191. package/dest/interfaces/server_circuit_prover.d.ts +3 -3
  192. package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
  193. package/dest/interfaces/tx_provider.d.ts +5 -1
  194. package/dest/interfaces/tx_provider.d.ts.map +1 -1
  195. package/dest/interfaces/validator.d.ts +15 -4
  196. package/dest/interfaces/validator.d.ts.map +1 -1
  197. package/dest/interfaces/validator.js +3 -1
  198. package/dest/interfaces/world_state.d.ts +14 -1
  199. package/dest/interfaces/world_state.d.ts.map +1 -1
  200. package/dest/kernel/hints/find_private_kernel_reset_dimensions.d.ts +8 -2
  201. package/dest/kernel/hints/find_private_kernel_reset_dimensions.d.ts.map +1 -1
  202. package/dest/kernel/hints/find_private_kernel_reset_dimensions.js +12 -74
  203. package/dest/kernel/hints/index.d.ts +1 -2
  204. package/dest/kernel/hints/index.d.ts.map +1 -1
  205. package/dest/kernel/hints/index.js +0 -1
  206. package/dest/kernel/hints/read_request.js +1 -1
  207. package/dest/kernel/index.d.ts +6 -2
  208. package/dest/kernel/index.d.ts.map +1 -1
  209. package/dest/kernel/index.js +5 -1
  210. package/dest/kernel/log_hash.d.ts +1 -1
  211. package/dest/kernel/log_hash.d.ts.map +1 -1
  212. package/dest/kernel/log_hash.js +2 -2
  213. package/dest/kernel/note_hash.js +1 -1
  214. package/dest/kernel/nullifier.js +1 -1
  215. package/dest/kernel/private_circuit_public_inputs.d.ts +13 -3
  216. package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
  217. package/dest/kernel/private_circuit_public_inputs.js +14 -7
  218. package/dest/kernel/private_context_inputs.d.ts +4 -3
  219. package/dest/kernel/private_context_inputs.d.ts.map +1 -1
  220. package/dest/kernel/private_context_inputs.js +7 -3
  221. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts +7 -9
  222. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts.map +1 -1
  223. package/dest/kernel/private_kernel_circuit_public_inputs.js +10 -7
  224. package/dest/kernel/private_kernel_init_2_circuit_private_inputs.d.ts +2 -3
  225. package/dest/kernel/private_kernel_init_2_circuit_private_inputs.d.ts.map +1 -1
  226. package/dest/kernel/private_kernel_init_2_circuit_private_inputs.js +3 -5
  227. package/dest/kernel/private_kernel_init_3_circuit_private_inputs.d.ts +2 -3
  228. package/dest/kernel/private_kernel_init_3_circuit_private_inputs.d.ts.map +1 -1
  229. package/dest/kernel/private_kernel_init_3_circuit_private_inputs.js +3 -5
  230. package/dest/kernel/private_kernel_init_4_circuit_private_inputs.d.ts +24 -0
  231. package/dest/kernel/private_kernel_init_4_circuit_private_inputs.d.ts.map +1 -0
  232. package/dest/kernel/private_kernel_init_4_circuit_private_inputs.js +37 -0
  233. package/dest/kernel/private_kernel_init_5_circuit_private_inputs.d.ts +25 -0
  234. package/dest/kernel/private_kernel_init_5_circuit_private_inputs.d.ts.map +1 -0
  235. package/dest/kernel/private_kernel_init_5_circuit_private_inputs.js +39 -0
  236. package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts +1 -9
  237. package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts.map +1 -1
  238. package/dest/kernel/private_kernel_init_circuit_private_inputs.js +2 -6
  239. package/dest/kernel/private_kernel_inner_4_circuit_private_inputs.d.ts +18 -0
  240. package/dest/kernel/private_kernel_inner_4_circuit_private_inputs.d.ts.map +1 -0
  241. package/dest/kernel/private_kernel_inner_4_circuit_private_inputs.js +27 -0
  242. package/dest/kernel/private_kernel_inner_5_circuit_private_inputs.d.ts +19 -0
  243. package/dest/kernel/private_kernel_inner_5_circuit_private_inputs.d.ts.map +1 -0
  244. package/dest/kernel/private_kernel_inner_5_circuit_private_inputs.js +29 -0
  245. package/dest/kernel/private_kernel_prover_output.d.ts +4 -1
  246. package/dest/kernel/private_kernel_prover_output.d.ts.map +1 -1
  247. package/dest/kernel/private_kernel_prover_output.js +4 -1
  248. package/dest/kernel/private_kernel_reset_dimensions.d.ts +7 -8
  249. package/dest/kernel/private_kernel_reset_dimensions.d.ts.map +1 -1
  250. package/dest/kernel/private_kernel_reset_tail_circuit_private_inputs.d.ts +29 -0
  251. package/dest/kernel/private_kernel_reset_tail_circuit_private_inputs.d.ts.map +1 -0
  252. package/dest/kernel/private_kernel_reset_tail_circuit_private_inputs.js +36 -0
  253. package/dest/kernel/private_kernel_simulated_output.d.ts +1 -7
  254. package/dest/kernel/private_kernel_simulated_output.d.ts.map +1 -1
  255. package/dest/kernel/private_kernel_simulated_output.js +2 -1
  256. package/dest/kernel/private_log_data.d.ts +1 -1
  257. package/dest/kernel/private_log_data.d.ts.map +1 -1
  258. package/dest/kernel/private_log_data.js +1 -1
  259. package/dest/kernel/utils/index.d.ts +1 -2
  260. package/dest/kernel/utils/index.d.ts.map +1 -1
  261. package/dest/kernel/utils/index.js +0 -1
  262. package/dest/keys/derivation.d.ts +41 -6
  263. package/dest/keys/derivation.d.ts.map +1 -1
  264. package/dest/keys/derivation.js +49 -26
  265. package/dest/logs/app_tagging_secret.d.ts +30 -7
  266. package/dest/logs/app_tagging_secret.d.ts.map +1 -1
  267. package/dest/logs/app_tagging_secret.js +46 -39
  268. package/dest/logs/app_tagging_secret_kind.d.ts +2 -1
  269. package/dest/logs/app_tagging_secret_kind.d.ts.map +1 -1
  270. package/dest/logs/app_tagging_secret_kind.js +13 -0
  271. package/dest/logs/contract_class_log.d.ts +1 -2
  272. package/dest/logs/contract_class_log.d.ts.map +1 -1
  273. package/dest/logs/contract_class_log.js +0 -4
  274. package/dest/logs/log_result.d.ts +3 -3
  275. package/dest/logs/log_result.d.ts.map +1 -1
  276. package/dest/logs/logs_query.d.ts +2 -2
  277. package/dest/logs/message_context.d.ts +4 -13
  278. package/dest/logs/message_context.d.ts.map +1 -1
  279. package/dest/logs/message_context.js +1 -62
  280. package/dest/logs/pending_tagged_log.d.ts +6 -8
  281. package/dest/logs/pending_tagged_log.d.ts.map +1 -1
  282. package/dest/logs/pending_tagged_log.js +1 -31
  283. package/dest/logs/shared_secret_derivation.d.ts +29 -6
  284. package/dest/logs/shared_secret_derivation.d.ts.map +1 -1
  285. package/dest/logs/shared_secret_derivation.js +44 -11
  286. package/dest/messaging/l1_to_l2_message.d.ts +23 -2
  287. package/dest/messaging/l1_to_l2_message.d.ts.map +1 -1
  288. package/dest/messaging/l1_to_l2_message.js +36 -11
  289. package/dest/messaging/l2_to_l1_membership.d.ts +11 -4
  290. package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -1
  291. package/dest/messaging/l2_to_l1_membership.js +22 -7
  292. package/dest/noir/index.d.ts +3 -3
  293. package/dest/noir/index.d.ts.map +1 -1
  294. package/dest/p2p/attestation_utils.d.ts +1 -1
  295. package/dest/p2p/attestation_utils.d.ts.map +1 -1
  296. package/dest/p2p/attestation_utils.js +8 -1
  297. package/dest/p2p/checkpoint_attestation.d.ts +10 -1
  298. package/dest/p2p/checkpoint_attestation.d.ts.map +1 -1
  299. package/dest/p2p/checkpoint_attestation.js +10 -0
  300. package/dest/p2p/checkpoint_proposal.d.ts +2 -1
  301. package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
  302. package/dest/p2p/consensus_payload.d.ts +2 -1
  303. package/dest/p2p/consensus_payload.d.ts.map +1 -1
  304. package/dest/p2p/index.d.ts +1 -2
  305. package/dest/p2p/index.d.ts.map +1 -1
  306. package/dest/p2p/index.js +0 -1
  307. package/dest/p2p/signature_utils.d.ts +10 -1
  308. package/dest/p2p/signature_utils.d.ts.map +1 -1
  309. package/dest/p2p/signature_utils.js +9 -1
  310. package/dest/rollup/avm_proof_data.d.ts +3 -3
  311. package/dest/rollup/avm_proof_data.d.ts.map +1 -1
  312. package/dest/rollup/checkpoint_header.d.ts +8 -3
  313. package/dest/rollup/checkpoint_header.d.ts.map +1 -1
  314. package/dest/rollup/checkpoint_header.js +20 -10
  315. package/dest/stats/stats.d.ts +2 -2
  316. package/dest/stats/stats.d.ts.map +1 -1
  317. package/dest/tests/factories.d.ts +1 -27
  318. package/dest/tests/factories.d.ts.map +1 -1
  319. package/dest/tests/factories.js +10 -45
  320. package/dest/tests/mocks.d.ts +1 -1
  321. package/dest/tests/mocks.d.ts.map +1 -1
  322. package/dest/tests/mocks.js +3 -2
  323. package/dest/timetable/budgets.d.ts +57 -0
  324. package/dest/timetable/budgets.d.ts.map +1 -0
  325. package/dest/timetable/budgets.js +56 -0
  326. package/dest/timetable/build_proposer_timetable.d.ts +21 -0
  327. package/dest/timetable/build_proposer_timetable.d.ts.map +1 -0
  328. package/dest/timetable/build_proposer_timetable.js +17 -0
  329. package/dest/timetable/consensus_timetable.d.ts +70 -0
  330. package/dest/timetable/consensus_timetable.d.ts.map +1 -0
  331. package/dest/timetable/consensus_timetable.js +89 -0
  332. package/dest/timetable/index.d.ts +5 -87
  333. package/dest/timetable/index.d.ts.map +1 -1
  334. package/dest/timetable/index.js +4 -243
  335. package/dest/timetable/proposer_timetable.d.ts +106 -0
  336. package/dest/timetable/proposer_timetable.d.ts.map +1 -0
  337. package/dest/timetable/proposer_timetable.js +132 -0
  338. package/dest/trees/nullifier_membership_witness.d.ts +5 -8
  339. package/dest/trees/nullifier_membership_witness.d.ts.map +1 -1
  340. package/dest/trees/nullifier_membership_witness.js +0 -9
  341. package/dest/trees/public_data_witness.d.ts +7 -17
  342. package/dest/trees/public_data_witness.d.ts.map +1 -1
  343. package/dest/trees/public_data_witness.js +0 -27
  344. package/dest/tx/execution_payload.d.ts +1 -1
  345. package/dest/tx/execution_payload.d.ts.map +1 -1
  346. package/dest/tx/execution_payload.js +1 -1
  347. package/dest/tx/fee_provider.d.ts +2 -2
  348. package/dest/tx/fee_provider.d.ts.map +1 -1
  349. package/dest/tx/global_variable_builder.d.ts +2 -12
  350. package/dest/tx/global_variable_builder.d.ts.map +1 -1
  351. package/dest/tx/global_variables.js +2 -2
  352. package/dest/tx/hashed_values.d.ts +7 -1
  353. package/dest/tx/hashed_values.d.ts.map +1 -1
  354. package/dest/tx/hashed_values.js +9 -1
  355. package/dest/tx/index.d.ts +1 -2
  356. package/dest/tx/index.d.ts.map +1 -1
  357. package/dest/tx/index.js +0 -1
  358. package/dest/tx/indexed_tx_effect.d.ts +5 -2
  359. package/dest/tx/indexed_tx_effect.d.ts.map +1 -1
  360. package/dest/tx/indexed_tx_effect.js +8 -4
  361. package/dest/tx/offchain_effect.js +1 -1
  362. package/dest/tx/private_tx_constant_data.d.ts +18 -2
  363. package/dest/tx/private_tx_constant_data.d.ts.map +1 -1
  364. package/dest/tx/private_tx_constant_data.js +13 -4
  365. package/dest/tx/profiling.d.ts +1 -1
  366. package/dest/tx/profiling.d.ts.map +1 -1
  367. package/dest/tx/profiling.js +2 -0
  368. package/dest/tx/simulated_tx.d.ts +10 -6
  369. package/dest/tx/simulated_tx.d.ts.map +1 -1
  370. package/dest/tx/simulated_tx.js +7 -2
  371. package/dest/tx/tx.d.ts +23 -1
  372. package/dest/tx/tx.d.ts.map +1 -1
  373. package/dest/tx/tx.js +32 -3
  374. package/dest/tx/tx_receipt.d.ts +143 -60
  375. package/dest/tx/tx_receipt.d.ts.map +1 -1
  376. package/dest/tx/tx_receipt.js +141 -45
  377. package/dest/tx/validator/error_texts.d.ts +2 -2
  378. package/dest/tx/validator/error_texts.d.ts.map +1 -1
  379. package/dest/tx/validator/error_texts.js +1 -1
  380. package/dest/validators/errors.d.ts +16 -1
  381. package/dest/validators/errors.d.ts.map +1 -1
  382. package/dest/validators/errors.js +12 -0
  383. package/dest/world-state/genesis_data.d.ts +9 -1
  384. package/dest/world-state/genesis_data.d.ts.map +1 -1
  385. package/dest/world-state/genesis_data.js +1 -0
  386. package/dest/world-state/world_state_revision.d.ts +1 -18
  387. package/dest/world-state/world_state_revision.d.ts.map +1 -1
  388. package/dest/world-state/world_state_revision.js +0 -20
  389. package/package.json +8 -8
  390. package/src/abi/abi.ts +32 -4
  391. package/src/abi/buffer.ts +13 -1
  392. package/src/abi/contract_artifact.ts +40 -16
  393. package/src/abi/decoder.ts +20 -24
  394. package/src/abi/function_call.ts +19 -7
  395. package/src/avm/avm.ts +5 -2
  396. package/src/avm/index.ts +0 -5
  397. package/src/aztec-address/index.ts +36 -6
  398. package/src/block/attestation_info.ts +7 -2
  399. package/src/block/l2_block_source.ts +95 -19
  400. package/src/block/l2_block_stream/event_driven_l2_block_stream.ts +207 -0
  401. package/src/block/l2_block_stream/index.ts +1 -0
  402. package/src/block/l2_block_stream/interfaces.ts +98 -10
  403. package/src/block/l2_block_stream/l2_block_stream.ts +255 -177
  404. package/src/block/l2_block_stream/l2_tips_memory_store.ts +12 -41
  405. package/src/block/l2_block_stream/l2_tips_store_base.ts +84 -93
  406. package/src/block/proposal/attestations_and_signers.ts +53 -7
  407. package/src/block/test/l2_tips_store_test_suite.ts +275 -28
  408. package/src/block/validate_block_result.ts +48 -2
  409. package/src/checkpoint/checkpoint.ts +2 -2
  410. package/src/checkpoint/index.ts +1 -0
  411. package/src/checkpoint/simulation_overrides.ts +171 -0
  412. package/src/checkpoint/validate.ts +16 -6
  413. package/src/config/index.ts +1 -1
  414. package/src/config/network-consensus-config.ts +291 -0
  415. package/src/config/node-rpc-config.ts +2 -1
  416. package/src/config/sequencer-config.ts +36 -5
  417. package/src/contract/artifact_hash.ts +15 -3
  418. package/src/contract/contract_address.ts +4 -3
  419. package/src/contract/contract_class.ts +3 -2
  420. package/src/contract/contract_instance.ts +62 -1
  421. package/src/contract/index.ts +0 -1
  422. package/src/contract/interfaces/contract_data_source.ts +2 -4
  423. package/src/contract/interfaces/contract_instance.ts +26 -8
  424. package/src/contract/interfaces/node-info.ts +11 -0
  425. package/src/contract/partial_address.ts +8 -2
  426. package/src/database-version/version_manager.ts +96 -6
  427. package/src/deserialization/index.ts +35 -2
  428. package/src/file-store/factory.ts +7 -0
  429. package/src/file-store/index.ts +1 -0
  430. package/src/file-store/memory.ts +94 -0
  431. package/src/gas/README.md +199 -35
  432. package/src/gas/gas_settings.ts +11 -21
  433. package/src/gas/index.ts +1 -0
  434. package/src/gas/tx_gas_limits.ts +123 -0
  435. package/src/ha-signing/config.ts +23 -5
  436. package/src/ha-signing/local_config.ts +20 -1
  437. package/src/hash/hash.ts +0 -8
  438. package/src/interfaces/api_limit.ts +5 -0
  439. package/src/interfaces/archiver.ts +22 -9
  440. package/src/interfaces/aztec-node-admin.ts +1 -1
  441. package/src/interfaces/aztec-node-debug.ts +54 -2
  442. package/src/interfaces/aztec-node.ts +175 -49
  443. package/src/interfaces/block-builder.ts +8 -1
  444. package/src/interfaces/block_response.ts +4 -4
  445. package/src/interfaces/chain_tips.ts +8 -16
  446. package/src/interfaces/checkpoint_parameter.ts +3 -3
  447. package/src/interfaces/checkpoint_response.ts +4 -4
  448. package/src/interfaces/client.ts +1 -0
  449. package/src/interfaces/configs.ts +33 -6
  450. package/src/interfaces/get_tx_by_hash_options.ts +14 -0
  451. package/src/interfaces/merkle_tree_operations.ts +8 -2
  452. package/src/interfaces/p2p.ts +29 -9
  453. package/src/interfaces/private_kernel_prover.ts +104 -13
  454. package/src/interfaces/prover-client.ts +1 -3
  455. package/src/interfaces/prover-node.ts +32 -17
  456. package/src/interfaces/proving-job.ts +15 -3
  457. package/src/interfaces/server.ts +0 -2
  458. package/src/interfaces/server_circuit_prover.ts +2 -2
  459. package/src/interfaces/tx_provider.ts +4 -0
  460. package/src/interfaces/validator.ts +11 -0
  461. package/src/interfaces/world_state.ts +14 -0
  462. package/src/kernel/hints/find_private_kernel_reset_dimensions.ts +22 -112
  463. package/src/kernel/hints/index.ts +0 -1
  464. package/src/kernel/hints/read_request.ts +1 -1
  465. package/src/kernel/index.ts +5 -1
  466. package/src/kernel/log_hash.ts +5 -2
  467. package/src/kernel/note_hash.ts +1 -1
  468. package/src/kernel/nullifier.ts +1 -1
  469. package/src/kernel/private_circuit_public_inputs.ts +12 -1
  470. package/src/kernel/private_context_inputs.ts +10 -3
  471. package/src/kernel/private_kernel_circuit_public_inputs.ts +9 -7
  472. package/src/kernel/private_kernel_init_2_circuit_private_inputs.ts +0 -3
  473. package/src/kernel/private_kernel_init_3_circuit_private_inputs.ts +0 -3
  474. package/src/kernel/private_kernel_init_4_circuit_private_inputs.ts +52 -0
  475. package/src/kernel/private_kernel_init_5_circuit_private_inputs.ts +55 -0
  476. package/src/kernel/private_kernel_init_circuit_private_inputs.ts +0 -6
  477. package/src/kernel/private_kernel_inner_4_circuit_private_inputs.ts +39 -0
  478. package/src/kernel/private_kernel_inner_5_circuit_private_inputs.ts +42 -0
  479. package/src/kernel/private_kernel_prover_output.ts +4 -0
  480. package/src/kernel/private_kernel_reset_dimensions.ts +16 -6
  481. package/src/kernel/private_kernel_reset_tail_circuit_private_inputs.ts +69 -0
  482. package/src/kernel/private_kernel_simulated_output.ts +0 -7
  483. package/src/kernel/private_log_data.ts +4 -1
  484. package/src/kernel/utils/index.ts +0 -1
  485. package/src/keys/derivation.ts +69 -24
  486. package/src/logs/app_tagging_secret.ts +62 -39
  487. package/src/logs/app_tagging_secret_kind.ts +15 -0
  488. package/src/logs/contract_class_log.ts +0 -9
  489. package/src/logs/log_result.ts +2 -2
  490. package/src/logs/logs_query.ts +2 -2
  491. package/src/logs/message_context.ts +6 -60
  492. package/src/logs/pending_tagged_log.ts +6 -33
  493. package/src/logs/shared_secret_derivation.ts +47 -14
  494. package/src/messaging/l1_to_l2_message.ts +51 -13
  495. package/src/messaging/l2_to_l1_membership.ts +28 -11
  496. package/src/noir/index.ts +2 -1
  497. package/src/p2p/attestation_utils.ts +8 -1
  498. package/src/p2p/checkpoint_attestation.ts +12 -0
  499. package/src/p2p/index.ts +0 -1
  500. package/src/p2p/signature_utils.ts +9 -0
  501. package/src/rollup/avm_proof_data.ts +2 -2
  502. package/src/rollup/checkpoint_header.ts +16 -2
  503. package/src/stats/stats.ts +6 -2
  504. package/src/tests/factories.ts +13 -51
  505. package/src/tests/mocks.ts +7 -2
  506. package/src/timetable/README.md +609 -0
  507. package/src/timetable/budgets.ts +87 -0
  508. package/src/timetable/build_proposer_timetable.ts +42 -0
  509. package/src/timetable/consensus_timetable.ts +126 -0
  510. package/src/timetable/index.ts +4 -361
  511. package/src/timetable/proposer_timetable.ts +190 -0
  512. package/src/timetable/timetable-example.svg +108 -0
  513. package/src/trees/nullifier_membership_witness.ts +0 -11
  514. package/src/trees/public_data_witness.ts +0 -31
  515. package/src/tx/execution_payload.ts +2 -1
  516. package/src/tx/fee_provider.ts +1 -1
  517. package/src/tx/global_variable_builder.ts +1 -17
  518. package/src/tx/global_variables.ts +2 -2
  519. package/src/tx/hashed_values.ts +11 -6
  520. package/src/tx/index.ts +0 -1
  521. package/src/tx/indexed_tx_effect.ts +17 -4
  522. package/src/tx/offchain_effect.ts +1 -1
  523. package/src/tx/private_tx_constant_data.ts +25 -2
  524. package/src/tx/profiling.ts +2 -0
  525. package/src/tx/simulated_tx.ts +13 -2
  526. package/src/tx/tx.ts +46 -3
  527. package/src/tx/tx_receipt.ts +263 -71
  528. package/src/tx/validator/error_texts.ts +2 -1
  529. package/src/validators/errors.ts +17 -0
  530. package/src/world-state/genesis_data.ts +10 -0
  531. package/src/world-state/world_state_revision.ts +0 -33
  532. package/dest/avm/contract_storage_read.d.ts +0 -58
  533. package/dest/avm/contract_storage_read.d.ts.map +0 -1
  534. package/dest/avm/contract_storage_read.js +0 -65
  535. package/dest/avm/contract_storage_update_request.d.ts +0 -65
  536. package/dest/avm/contract_storage_update_request.d.ts.map +0 -1
  537. package/dest/avm/contract_storage_update_request.js +0 -80
  538. package/dest/avm/public_call_stack_item_compressed.d.ts +0 -43
  539. package/dest/avm/public_call_stack_item_compressed.d.ts.map +0 -1
  540. package/dest/avm/public_call_stack_item_compressed.js +0 -70
  541. package/dest/avm/public_data_update_request.d.ts +0 -62
  542. package/dest/avm/public_data_update_request.d.ts.map +0 -1
  543. package/dest/avm/public_data_update_request.js +0 -67
  544. package/dest/avm/public_inner_call_request.d.ts +0 -50
  545. package/dest/avm/public_inner_call_request.d.ts.map +0 -1
  546. package/dest/avm/public_inner_call_request.js +0 -74
  547. package/dest/config/pipelining-config.d.ts +0 -15
  548. package/dest/config/pipelining-config.d.ts.map +0 -1
  549. package/dest/config/pipelining-config.js +0 -18
  550. package/dest/contract/deployment_info.d.ts +0 -24
  551. package/dest/contract/deployment_info.d.ts.map +0 -1
  552. package/dest/contract/deployment_info.js +0 -3
  553. package/dest/interfaces/epoch-prover.d.ts +0 -57
  554. package/dest/interfaces/epoch-prover.d.ts.map +0 -1
  555. package/dest/interfaces/epoch-prover.js +0 -1
  556. package/dest/interfaces/prover-coordination.d.ts +0 -15
  557. package/dest/interfaces/prover-coordination.d.ts.map +0 -1
  558. package/dest/interfaces/prover-coordination.js +0 -1
  559. package/dest/kernel/hints/tree_leaf_read_request.d.ts +0 -14
  560. package/dest/kernel/hints/tree_leaf_read_request.d.ts.map +0 -1
  561. package/dest/kernel/hints/tree_leaf_read_request.js +0 -33
  562. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts +0 -47
  563. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts.map +0 -1
  564. package/dest/kernel/private_kernel_tail_circuit_private_inputs.js +0 -38
  565. package/dest/kernel/utils/optional_number.d.ts +0 -31
  566. package/dest/kernel/utils/optional_number.d.ts.map +0 -1
  567. package/dest/kernel/utils/optional_number.js +0 -42
  568. package/dest/p2p/interface.d.ts +0 -5
  569. package/dest/p2p/interface.d.ts.map +0 -1
  570. package/dest/p2p/interface.js +0 -1
  571. package/dest/tx/validator/empty_validator.d.ts +0 -5
  572. package/dest/tx/validator/empty_validator.d.ts.map +0 -1
  573. package/dest/tx/validator/empty_validator.js +0 -7
  574. package/src/avm/contract_storage_read.ts +0 -77
  575. package/src/avm/contract_storage_update_request.ts +0 -93
  576. package/src/avm/public_call_stack_item_compressed.ts +0 -113
  577. package/src/avm/public_data_update_request.ts +0 -106
  578. package/src/avm/public_inner_call_request.ts +0 -85
  579. package/src/config/pipelining-config.ts +0 -31
  580. package/src/contract/deployment_info.ts +0 -25
  581. package/src/interfaces/epoch-prover.ts +0 -72
  582. package/src/interfaces/prover-coordination.ts +0 -17
  583. package/src/kernel/hints/tree_leaf_read_request.ts +0 -35
  584. package/src/kernel/private_kernel_tail_circuit_private_inputs.ts +0 -58
  585. package/src/kernel/utils/optional_number.ts +0 -50
  586. package/src/p2p/interface.ts +0 -4
  587. package/src/tx/validator/empty_validator.ts +0 -7
@@ -6,9 +6,11 @@ import {
6
6
  GENESIS_CHECKPOINT_HEADER_HASH,
7
7
  L2Block,
8
8
  type L2BlockId,
9
+ type L2BlockTag,
9
10
  type L2TipId,
10
11
  } from '@aztec/stdlib/block';
11
12
  import { Checkpoint, L1PublishedData, PublishedCheckpoint } from '@aztec/stdlib/checkpoint';
13
+ import { BlockHeader } from '@aztec/stdlib/tx';
12
14
 
13
15
  import { expect } from 'vitest';
14
16
 
@@ -67,18 +69,11 @@ export function testL2TipsStore(makeTipsStore: () => Promise<L2TipsStore>) {
67
69
  checkpoint: makeCheckpointIdForBlock(blockNumber),
68
70
  });
69
71
 
70
- const makeTips = (
71
- proposed: number,
72
- proven: number,
73
- finalized: number,
74
- checkpointed: number = 0,
75
- proposedCheckpoint: number = 0,
76
- ) => ({
72
+ const makeTips = (proposed: number, proven: number, finalized: number, checkpointed: number = 0) => ({
77
73
  proposed: makeTip(proposed),
78
74
  proven: makeTipId(proven),
79
75
  finalized: makeTipId(finalized),
80
76
  checkpointed: makeTipId(checkpointed),
81
- proposedCheckpoint: makeTipId(proposedCheckpoint),
82
77
  });
83
78
 
84
79
  const makeCheckpoint = async (checkpointNumber: number, blocks: L2Block[]): Promise<PublishedCheckpoint> => {
@@ -100,14 +95,18 @@ export function testL2TipsStore(makeTipsStore: () => Promise<L2TipsStore>) {
100
95
  return new PublishedCheckpoint(checkpoint, L1PublishedData.random(), []);
101
96
  };
102
97
 
103
- /** Creates a chain-checkpointed event with the required block field */
104
- const makeCheckpointedEvent = async (checkpoint: PublishedCheckpoint) => {
105
- const lastBlock = checkpoint.checkpoint.blocks.at(-1)!;
98
+ /** Creates a thin chain-checkpointed event carrying the block + checkpoint ids of the checkpoint's last block. */
99
+ const makeCheckpointedEvent = async (published: PublishedCheckpoint) => {
100
+ const lastBlock = published.checkpoint.blocks.at(-1)!;
106
101
  const blockId: L2BlockId = {
107
102
  number: lastBlock.number,
108
103
  hash: (await lastBlock.hash()).toString(),
109
104
  };
110
- return { type: 'chain-checkpointed' as const, checkpoint, block: blockId };
105
+ const checkpointId = {
106
+ number: published.checkpoint.number,
107
+ hash: published.checkpoint.hash().toString(),
108
+ };
109
+ return { type: 'chain-checkpointed' as const, checkpoint: checkpointId, block: blockId };
111
110
  };
112
111
 
113
112
  it('returns zero if no tips are stored', async () => {
@@ -129,6 +128,75 @@ export function testL2TipsStore(makeTipsStore: () => Promise<L2TipsStore>) {
129
128
  expect(await tipsStore.getL2BlockHash(3)).toEqual(blockHashes.get(3));
130
129
  });
131
130
 
131
+ it('records the proposed tip number and hash from a chain-proposed event', async () => {
132
+ // chain-proposed is the sole writer of proposed-tip history in tips-only mode: no preceding blocks-added.
133
+ await tipsStore.handleBlockStreamEvent({
134
+ type: 'chain-proposed',
135
+ block: { number: BlockNumber(5), hash: new Fr(500).toString() },
136
+ header: BlockHeader.empty(),
137
+ });
138
+
139
+ const tips = await tipsStore.getL2Tips();
140
+ expect(tips.proposed).toEqual({ number: BlockNumber(5), hash: new Fr(500).toString() });
141
+ // The hash is recorded in the same index the walk-back reads, so it resolves as a sparse anchor.
142
+ expect(await tipsStore.getL2BlockHash(5)).toEqual(new Fr(500).toString());
143
+ });
144
+
145
+ it('serves sparse proposed anchors from chain-proposed events for the walk-back', async () => {
146
+ // Two tip-moving polls in tips-only mode, with no blocks in between (sparse history).
147
+ await tipsStore.handleBlockStreamEvent({
148
+ type: 'chain-proposed',
149
+ block: { number: BlockNumber(4), hash: new Fr(400).toString() },
150
+ header: BlockHeader.empty(),
151
+ });
152
+ await tipsStore.handleBlockStreamEvent({
153
+ type: 'chain-proposed',
154
+ block: { number: BlockNumber(9), hash: new Fr(900).toString() },
155
+ header: BlockHeader.empty(),
156
+ });
157
+
158
+ // Both recorded heights resolve; the heights between them were never seen and stay undefined.
159
+ expect(await tipsStore.getL2BlockHash(4)).toEqual(new Fr(400).toString());
160
+ expect(await tipsStore.getL2BlockHash(9)).toEqual(new Fr(900).toString());
161
+ expect(await tipsStore.getL2BlockHash(6)).toBeUndefined();
162
+
163
+ const tips = await tipsStore.getL2Tips();
164
+ expect(tips.proposed).toEqual({ number: BlockNumber(9), hash: new Fr(900).toString() });
165
+ });
166
+
167
+ it('records block-hash witnesses without moving any tip cursor', async () => {
168
+ // Establish a proposed tip at 9 in tips-only fashion (sole writer of proposed history).
169
+ await tipsStore.handleBlockStreamEvent({
170
+ type: 'chain-proposed',
171
+ block: { number: BlockNumber(9), hash: new Fr(900).toString() },
172
+ header: BlockHeader.empty(),
173
+ });
174
+
175
+ // Record sparse witnesses at heights below the tip (e.g. a consumer materializing per-height state).
176
+ await tipsStore.recordBlockHashes([
177
+ { number: BlockNumber(4), hash: new Fr(404).toString() },
178
+ { number: BlockNumber(6), hash: new Fr(606).toString() },
179
+ ]);
180
+
181
+ // Each recorded height resolves; an unrecorded gap stays undefined.
182
+ expect(await tipsStore.getL2BlockHash(4)).toEqual(new Fr(404).toString());
183
+ expect(await tipsStore.getL2BlockHash(6)).toEqual(new Fr(606).toString());
184
+ expect(await tipsStore.getL2BlockHash(5)).toBeUndefined();
185
+
186
+ // No tip cursor moved: the proposed tip is still 9, and every other tier is at genesis.
187
+ const tips = await tipsStore.getL2Tips();
188
+ expect(tips.proposed).toEqual({ number: BlockNumber(9), hash: new Fr(900).toString() });
189
+ expect(tips.checkpointed.block).toEqual(makeTip(0));
190
+ expect(tips.proven.block).toEqual(makeTip(0));
191
+ expect(tips.finalized.block).toEqual(makeTip(0));
192
+ });
193
+
194
+ it('skips witnesses with no hash and tolerates an empty list', async () => {
195
+ await tipsStore.recordBlockHashes([]);
196
+ await tipsStore.recordBlockHashes([{ number: BlockNumber(3), hash: '' }]);
197
+ expect(await tipsStore.getL2BlockHash(3)).toBeUndefined();
198
+ });
199
+
132
200
  it('checkpoints all proposed blocks', async () => {
133
201
  // Propose blocks 1-5
134
202
  const blocks = await Promise.all(times(5, i => makeBlock(i + 1)));
@@ -153,7 +221,11 @@ export function testL2TipsStore(makeTipsStore: () => Promise<L2TipsStore>) {
153
221
  await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint1));
154
222
 
155
223
  // Prove up to block 5
156
- await tipsStore.handleBlockStreamEvent({ type: 'chain-proven', block: makeBlockId(5) });
224
+ await tipsStore.handleBlockStreamEvent({
225
+ type: 'chain-proven',
226
+ block: makeBlockId(5),
227
+ checkpoint: makeCheckpointIdForBlock(5),
228
+ });
157
229
 
158
230
  const tips = await tipsStore.getL2Tips();
159
231
  expect(tips.proposed).toEqual(makeTip(5));
@@ -173,8 +245,16 @@ export function testL2TipsStore(makeTipsStore: () => Promise<L2TipsStore>) {
173
245
  await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint1));
174
246
 
175
247
  // Prove and finalize
176
- await tipsStore.handleBlockStreamEvent({ type: 'chain-proven', block: makeBlockId(5) });
177
- await tipsStore.handleBlockStreamEvent({ type: 'chain-finalized', block: makeBlockId(5) });
248
+ await tipsStore.handleBlockStreamEvent({
249
+ type: 'chain-proven',
250
+ block: makeBlockId(5),
251
+ checkpoint: makeCheckpointIdForBlock(5),
252
+ });
253
+ await tipsStore.handleBlockStreamEvent({
254
+ type: 'chain-finalized',
255
+ block: makeBlockId(5),
256
+ checkpoint: makeCheckpointIdForBlock(5),
257
+ });
178
258
 
179
259
  const tips = await tipsStore.getL2Tips();
180
260
  expect(tips.proposed).toEqual(makeTip(5));
@@ -229,8 +309,16 @@ export function testL2TipsStore(makeTipsStore: () => Promise<L2TipsStore>) {
229
309
  await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint2));
230
310
 
231
311
  // Prove and finalize up to block 3 (checkpoint 1)
232
- await tipsStore.handleBlockStreamEvent({ type: 'chain-proven', block: makeBlockId(3) });
233
- await tipsStore.handleBlockStreamEvent({ type: 'chain-finalized', block: makeBlockId(3) });
312
+ await tipsStore.handleBlockStreamEvent({
313
+ type: 'chain-proven',
314
+ block: makeBlockId(3),
315
+ checkpoint: makeCheckpointIdForBlock(3),
316
+ });
317
+ await tipsStore.handleBlockStreamEvent({
318
+ type: 'chain-finalized',
319
+ block: makeBlockId(3),
320
+ checkpoint: makeCheckpointIdForBlock(3),
321
+ });
234
322
 
235
323
  // Blocks before finalized should be cleared
236
324
  expect(await tipsStore.getL2BlockHash(1)).toBeUndefined();
@@ -250,7 +338,8 @@ export function testL2TipsStore(makeTipsStore: () => Promise<L2TipsStore>) {
250
338
  await tipsStore.handleBlockStreamEvent({
251
339
  type: 'chain-pruned',
252
340
  block: makeBlockId(5),
253
- checkpoint: { number: CheckpointNumber.ZERO, hash: GENESIS_CHECKPOINT_HEADER_HASH.toString() },
341
+ checkpointed: makeTipId(0),
342
+ proven: makeTipId(0),
254
343
  });
255
344
 
256
345
  const tips = await tipsStore.getL2Tips();
@@ -274,7 +363,8 @@ export function testL2TipsStore(makeTipsStore: () => Promise<L2TipsStore>) {
274
363
  await tipsStore.handleBlockStreamEvent({
275
364
  type: 'chain-pruned',
276
365
  block: makeTip(0),
277
- checkpoint: { number: CheckpointNumber.ZERO, hash: GENESIS_CHECKPOINT_HEADER_HASH.toString() },
366
+ checkpointed: makeTipId(0),
367
+ proven: makeTipId(0),
278
368
  });
279
369
 
280
370
  tips = await tipsStore.getL2Tips();
@@ -339,7 +429,8 @@ export function testL2TipsStore(makeTipsStore: () => Promise<L2TipsStore>) {
339
429
  await tipsStore.handleBlockStreamEvent({
340
430
  type: 'chain-pruned',
341
431
  block: makeBlockId(5),
342
- checkpoint: { number: CheckpointNumber.ZERO, hash: GENESIS_CHECKPOINT_HEADER_HASH.toString() },
432
+ checkpointed: makeTipId(5),
433
+ proven: makeTipId(0),
343
434
  });
344
435
 
345
436
  tips = await tipsStore.getL2Tips();
@@ -403,7 +494,8 @@ export function testL2TipsStore(makeTipsStore: () => Promise<L2TipsStore>) {
403
494
  await tipsStore.handleBlockStreamEvent({
404
495
  type: 'chain-pruned',
405
496
  block: makeBlockId(3),
406
- checkpoint: { number: CheckpointNumber.ZERO, hash: GENESIS_CHECKPOINT_HEADER_HASH.toString() },
497
+ checkpointed: makeTipId(3),
498
+ proven: makeTipId(0),
407
499
  });
408
500
 
409
501
  tips = await tipsStore.getL2Tips();
@@ -440,7 +532,11 @@ export function testL2TipsStore(makeTipsStore: () => Promise<L2TipsStore>) {
440
532
  await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint1));
441
533
 
442
534
  // Prove up to block 3
443
- await tipsStore.handleBlockStreamEvent({ type: 'chain-proven', block: makeBlockId(3) });
535
+ await tipsStore.handleBlockStreamEvent({
536
+ type: 'chain-proven',
537
+ block: makeBlockId(3),
538
+ checkpoint: makeCheckpointIdForBlock(3),
539
+ });
444
540
 
445
541
  let tips = await tipsStore.getL2Tips();
446
542
  expect(tips.proposed).toEqual(makeTip(3));
@@ -481,7 +577,8 @@ export function testL2TipsStore(makeTipsStore: () => Promise<L2TipsStore>) {
481
577
  await tipsStore.handleBlockStreamEvent({
482
578
  type: 'chain-pruned',
483
579
  block: makeBlockId(3),
484
- checkpoint: { number: CheckpointNumber.ZERO, hash: GENESIS_CHECKPOINT_HEADER_HASH.toString() },
580
+ checkpointed: makeTipId(3),
581
+ proven: makeTipId(3),
485
582
  });
486
583
 
487
584
  tips = await tipsStore.getL2Tips();
@@ -530,15 +627,165 @@ export function testL2TipsStore(makeTipsStore: () => Promise<L2TipsStore>) {
530
627
  expect(await tipsStore.getL2BlockHash(7)).not.toEqual(originalHash7);
531
628
  });
532
629
 
533
- // Regression test for #13142
534
- it('does not blow up when setting proven chain on an unseen block number', async () => {
630
+ // Regression test for #13142: proving an unseen block number (one with no local block->checkpoint
631
+ // mapping) must not blow up. With per-cursor checkpoint ids, the proven tip resolves to the
632
+ // checkpoint id carried by the event rather than falling back to checkpoint zero.
633
+ it('resolves the proven checkpoint from the carried id when setting proven on an unseen block number', async () => {
535
634
  await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: [await makeBlock(5)] });
536
- await tipsStore.handleBlockStreamEvent({ type: 'chain-proven', block: makeBlockId(3) });
635
+ // Block 3 has no local block->checkpoint mapping, but the event carries a real checkpoint id.
636
+ const carriedCheckpoint: CheckpointId = { number: CheckpointNumber(1), hash: new Fr(42).toString() };
637
+ await tipsStore.handleBlockStreamEvent({
638
+ type: 'chain-proven',
639
+ block: makeBlockId(3),
640
+ checkpoint: carriedCheckpoint,
641
+ });
537
642
 
538
643
  const tips = await tipsStore.getL2Tips();
539
644
  expect(tips.proposed).toEqual(makeTip(5));
540
645
  expect(tips.proven.block).toEqual(makeTip(3));
541
- // No checkpoint for block 3 since it wasn't checkpointed
542
- expect(tips.proven.checkpoint.number).toEqual(CheckpointNumber.ZERO);
646
+ // Resolved from the carried id, not the (missing) local mapping.
647
+ expect(tips.proven.checkpoint).toEqual(carriedCheckpoint);
648
+ });
649
+
650
+ // proven/finalized resolve to the carried checkpoint id even when the block has no local
651
+ // block->checkpoint mapping (the cursor legitimately leads the locally-checkpointed frontier).
652
+ it('resolves proven and finalized checkpoints from carried ids without a local mapping', async () => {
653
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: [await makeBlock(7)] });
654
+ const provenCheckpoint: CheckpointId = { number: CheckpointNumber(2), hash: new Fr(101).toString() };
655
+ const finalizedCheckpoint: CheckpointId = { number: CheckpointNumber(1), hash: new Fr(100).toString() };
656
+ await tipsStore.handleBlockStreamEvent({
657
+ type: 'chain-proven',
658
+ block: makeBlockId(5),
659
+ checkpoint: provenCheckpoint,
660
+ });
661
+ await tipsStore.handleBlockStreamEvent({
662
+ type: 'chain-finalized',
663
+ block: makeBlockId(3),
664
+ checkpoint: finalizedCheckpoint,
665
+ });
666
+
667
+ const tips = await tipsStore.getL2Tips();
668
+ expect(tips.proven.checkpoint).toEqual(provenCheckpoint);
669
+ expect(tips.finalized.checkpoint).toEqual(finalizedCheckpoint);
670
+ });
671
+
672
+ // Genuine corruption: a cursor points at a real (non-genesis) block that has a block hash but
673
+ // neither a stored per-cursor checkpoint id nor a block->checkpoint mapping. getL2Tips must throw
674
+ // loudly rather than silently report checkpoint zero. We reach this state by reaching past the
675
+ // event API to place the tip directly, since the normal writers always record an id.
676
+ it('throws when a cursor points at a real block with neither a stored id nor a mapping', async () => {
677
+ // blocks-added records the block hash for block 5 (so getBlockId succeeds) but no checkpoint id.
678
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: [await makeBlock(5)] });
679
+ // Corrupt the proven cursor to point at block 5 without any id or mapping.
680
+ const internal = tipsStore as unknown as { setTip(tag: L2BlockTag, blockNumber: BlockNumber): Promise<void> };
681
+ await internal.setTip('proven', BlockNumber(5));
682
+
683
+ await expect(tipsStore.getL2Tips()).rejects.toThrow(/checkpoint/i);
684
+ });
685
+
686
+ // Backward prune of a leading cursor: a checkpoint-bearing cursor that legitimately leads the source's
687
+ // confirmed checkpointed tip is clamped down to that tip, resolving to the id the prune event carries
688
+ // (never genesis, never a throw). This is the skipped-history shape where the cursor sits on a block
689
+ // ahead of the checkpointed frontier.
690
+ it('clamps a leading checkpoint cursor down to the source checkpointed tip carried by the prune event', async () => {
691
+ // Checkpoint blocks 1-5 (checkpointed = block 5 / ckpt 1), then add uncheckpointed blocks 6-10.
692
+ const blocks1to5 = await Promise.all(times(5, i => makeBlock(i + 1)));
693
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: blocks1to5 });
694
+ const checkpoint1 = await makeCheckpoint(1, blocks1to5);
695
+ await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint1));
696
+ const blocks6to10 = await Promise.all(times(5, i => makeBlock(i + 6)));
697
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: blocks6to10 });
698
+
699
+ // Advance the proven cursor onto an uncheckpointed block (8) via a carried id, so it LEADS the
700
+ // source checkpointed tip (block 5) and will be clamped down to it on prune.
701
+ await tipsStore.handleBlockStreamEvent({
702
+ type: 'chain-proven',
703
+ block: makeBlockId(8),
704
+ checkpoint: { number: CheckpointNumber(2), hash: new Fr(202).toString() },
705
+ });
706
+
707
+ // Prune to block 7, carrying the source's confirmed checkpointed and proven tips (both block 5 / ckpt 1
708
+ // here, the source's proven tip having rolled back together with its checkpointed tip).
709
+ await tipsStore.handleBlockStreamEvent({
710
+ type: 'chain-pruned',
711
+ block: makeBlockId(7),
712
+ checkpointed: makeTipId(5),
713
+ proven: makeTipId(5),
714
+ });
715
+
716
+ // Must not throw; the proven cursor is clamped to the carried proven tip, resolving to ckpt 1.
717
+ const tips = await tipsStore.getL2Tips();
718
+ expect(tips.proposed).toEqual(makeTip(7));
719
+ expect(tips.proven.block).toEqual(makeTip(5));
720
+ expect(tips.proven.checkpoint.number).toEqual(CheckpointNumber(1));
721
+ });
722
+
723
+ it('keeps the checkpointed tip when pruning to an uncheckpointed block ahead of it', async () => {
724
+ const blocks1to5 = await Promise.all(times(5, i => makeBlock(i + 1)));
725
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: blocks1to5 });
726
+ const checkpoint1 = await makeCheckpoint(1, blocks1to5);
727
+ await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(checkpoint1)); // checkpointed = block 5 / ckpt 1
728
+
729
+ const blocks6to7 = await Promise.all(times(2, i => makeBlock(i + 6)));
730
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: blocks6to7 }); // proposed = 7
731
+
732
+ // Prune to block 6: an uncheckpointed block AHEAD of the checkpointed tip (block 5). The source
733
+ // checkpointed tip is still block 5 / ckpt 1, so the checkpointed cursor must not move.
734
+ await tipsStore.handleBlockStreamEvent({
735
+ type: 'chain-pruned',
736
+ block: makeBlockId(6),
737
+ checkpointed: makeTipId(5),
738
+ proven: makeTipId(0),
739
+ });
740
+
741
+ const tips = await tipsStore.getL2Tips();
742
+ expect(tips.proposed).toEqual(makeTip(6));
743
+ expect(tips.checkpointed.block).toEqual(makeTip(5));
744
+ expect(tips.checkpointed.checkpoint.number).toEqual(CheckpointNumber(1)); // must NOT be zero
745
+ });
746
+
747
+ // Per-cursor clamping on prune: when the source rolls back its proven tip below its checkpointed tip
748
+ // (e.g. a proof tx dropped by an L1 reorg), the prune event carries both source tips and each local
749
+ // cursor must clamp to its OWN source tip. Clamping the proven cursor onto the (higher) checkpointed
750
+ // tip would transiently report unproven blocks as proven until the corrective chain-proven event lands.
751
+ it('clamps the proven cursor to the source proven tip, separately from the checkpointed cursor, on prune', async () => {
752
+ // Checkpoint blocks 1-15 across three checkpoints (ckpt 1 = 1-5, ckpt 2 = 6-10, ckpt 3 = 11-15).
753
+ const blocks1to5 = await Promise.all(times(5, i => makeBlock(i + 1)));
754
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: blocks1to5 });
755
+ await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(await makeCheckpoint(1, blocks1to5)));
756
+ const blocks6to10 = await Promise.all(times(5, i => makeBlock(i + 6)));
757
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: blocks6to10 });
758
+ await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(await makeCheckpoint(2, blocks6to10)));
759
+ const blocks11to15 = await Promise.all(times(5, i => makeBlock(i + 11)));
760
+ await tipsStore.handleBlockStreamEvent({ type: 'blocks-added', blocks: blocks11to15 });
761
+ await tipsStore.handleBlockStreamEvent(await makeCheckpointedEvent(await makeCheckpoint(3, blocks11to15)));
762
+
763
+ // Prove the whole chain up to block 15 (ckpt 3), so the local proven cursor leads both source tips below.
764
+ await tipsStore.handleBlockStreamEvent({
765
+ type: 'chain-proven',
766
+ block: makeBlockId(15),
767
+ checkpoint: makeCheckpointIdForBlock(15),
768
+ });
769
+
770
+ let tips = await tipsStore.getL2Tips();
771
+ expect(tips.checkpointed.block).toEqual(makeTip(15));
772
+ expect(tips.proven.block).toEqual(makeTip(15));
773
+
774
+ // Prune arrives with the source's proven tip (block 5 / ckpt 1) BELOW its checkpointed tip (block 10 /
775
+ // ckpt 2) and below the local proven cursor (block 15). Each cursor must clamp to its own source tip.
776
+ await tipsStore.handleBlockStreamEvent({
777
+ type: 'chain-pruned',
778
+ block: makeBlockId(10),
779
+ checkpointed: makeTipId(10),
780
+ proven: makeTipId(5),
781
+ });
782
+
783
+ tips = await tipsStore.getL2Tips();
784
+ // The proven cursor lands exactly on the source proven tip, NOT on the (higher) checkpointed tip.
785
+ expect(tips.proven.block).toEqual(makeTip(5));
786
+ expect(tips.proven.checkpoint.number).toEqual(CheckpointNumber(1));
787
+ // The checkpointed cursor lands on the source checkpointed tip.
788
+ expect(tips.checkpointed.block).toEqual(makeTip(10));
789
+ expect(tips.checkpointed.checkpoint.number).toEqual(CheckpointNumber(2));
543
790
  });
544
791
  }
@@ -1,7 +1,9 @@
1
+ import type { ViemCommitteeAttestations } from '@aztec/ethereum/contracts';
1
2
  import { EpochNumber, EpochNumberSchema } from '@aztec/foundation/branded-types';
2
3
  import { EthAddress } from '@aztec/foundation/eth-address';
3
4
  import { type ZodFor, schemas } from '@aztec/foundation/schemas';
4
5
  import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
6
+ import { bufferToHex, hexToBuffer } from '@aztec/foundation/string';
5
7
 
6
8
  import { z } from 'zod';
7
9
 
@@ -30,6 +32,14 @@ export type ValidateCheckpointNegativeResult =
30
32
  attestors: EthAddress[];
31
33
  /** Committee attestations for this checkpoint as they were posted to L1 */
32
34
  attestations: CommitteeAttestation[];
35
+ /**
36
+ * The exact packed `CommitteeAttestations` tuple as posted to L1 calldata, carried verbatim so the
37
+ * invalidation evidence is byte-faithful to the stored `attestationsHash`. A repack via
38
+ * `packAttestations` is not a round-trip inverse of `fromPacked`, so it would diverge from the hash
39
+ * and revert `invalidateBadAttestation`/`invalidateInsufficientAttestations`. Always populated on the
40
+ * calldata validation path, the only production source of invalidation evidence.
41
+ */
42
+ verbatimAttestations: ViemCommitteeAttestations;
33
43
  /** Reason for the checkpoint being invalid: not enough attestations were posted */
34
44
  reason: 'insufficient-attestations';
35
45
  }
@@ -47,6 +57,12 @@ export type ValidateCheckpointNegativeResult =
47
57
  attestors: EthAddress[];
48
58
  /** Committee attestations for this checkpoint as they were posted to L1 */
49
59
  attestations: CommitteeAttestation[];
60
+ /**
61
+ * The exact packed `CommitteeAttestations` tuple as posted to L1 calldata, carried verbatim so the
62
+ * invalidation evidence is byte-faithful to the stored `attestationsHash`. See the same field on the
63
+ * insufficient-attestations variant for why a repack cannot be used.
64
+ */
65
+ verbatimAttestations: ViemCommitteeAttestations;
50
66
  /** Reason for the checkpoint being invalid: an invalid attestation was posted */
51
67
  reason: 'invalid-attestation';
52
68
  /** Index in the attestations array of the invalid attestation posted */
@@ -56,6 +72,12 @@ export type ValidateCheckpointNegativeResult =
56
72
  /** Result type for validating checkpoint attestations */
57
73
  export type ValidateCheckpointResult = { valid: true } | ValidateCheckpointNegativeResult;
58
74
 
75
+ /** Zod schema for the raw packed `CommitteeAttestations` viem tuple (two 0x-prefixed hex strings). */
76
+ const ViemCommitteeAttestationsSchema: ZodFor<ViemCommitteeAttestations> = z.object({
77
+ signatureIndices: schemas.HexStringWith0x,
78
+ signaturesOrAddresses: schemas.HexStringWith0x,
79
+ });
80
+
59
81
  export const ValidateCheckpointResultSchema: ZodFor<ValidateCheckpointResult> = z.union([
60
82
  z.object({ valid: z.literal(true) }),
61
83
  z.object({
@@ -66,6 +88,7 @@ export const ValidateCheckpointResultSchema: ZodFor<ValidateCheckpointResult> =
66
88
  seed: schemas.BigInt,
67
89
  attestors: z.array(schemas.EthAddress),
68
90
  attestations: z.array(CommitteeAttestation.schema),
91
+ verbatimAttestations: ViemCommitteeAttestationsSchema,
69
92
  reason: z.literal('insufficient-attestations'),
70
93
  }),
71
94
  z.object({
@@ -76,6 +99,7 @@ export const ValidateCheckpointResultSchema: ZodFor<ValidateCheckpointResult> =
76
99
  seed: schemas.BigInt,
77
100
  attestors: z.array(schemas.EthAddress),
78
101
  attestations: z.array(CommitteeAttestation.schema),
102
+ verbatimAttestations: ViemCommitteeAttestationsSchema,
79
103
  reason: z.literal('invalid-attestation'),
80
104
  invalidIndex: z.number(),
81
105
  }),
@@ -87,6 +111,8 @@ export function serializeValidateCheckpointResult(result: ValidateCheckpointResu
87
111
  }
88
112
 
89
113
  const checkpointBuffer = serializeCheckpointInfo(result.checkpoint);
114
+ const signatureIndices = hexToBuffer(result.verbatimAttestations.signatureIndices);
115
+ const signaturesOrAddresses = hexToBuffer(result.verbatimAttestations.signaturesOrAddresses);
90
116
  return serializeToBuffer(
91
117
  result.valid,
92
118
  result.reason,
@@ -101,6 +127,10 @@ export function serializeValidateCheckpointResult(result: ValidateCheckpointResu
101
127
  result.attestations.length,
102
128
  result.attestations,
103
129
  result.reason === 'invalid-attestation' ? result.invalidIndex : 0,
130
+ signatureIndices.length,
131
+ signatureIndices,
132
+ signaturesOrAddresses.length,
133
+ signaturesOrAddresses,
104
134
  );
105
135
  }
106
136
 
@@ -118,10 +148,26 @@ export function deserializeValidateCheckpointResult(bufferOrReader: Buffer | Buf
118
148
  const attestors = reader.readVector(EthAddress, MAX_COMMITTEE_SIZE);
119
149
  const attestations = reader.readVector(CommitteeAttestation, MAX_COMMITTEE_SIZE);
120
150
  const invalidIndex = reader.readNumber();
151
+ const verbatimAttestations: ViemCommitteeAttestations = {
152
+ signatureIndices: bufferToHex(reader.readBuffer()),
153
+ signaturesOrAddresses: bufferToHex(reader.readBuffer()),
154
+ };
155
+
121
156
  if (reason === 'insufficient-attestations') {
122
- return { valid, reason, checkpoint, committee, epoch, seed, attestors, attestations };
157
+ return { valid, reason, checkpoint, committee, epoch, seed, attestors, attestations, verbatimAttestations };
123
158
  } else if (reason === 'invalid-attestation') {
124
- return { valid, reason, checkpoint, committee, epoch, seed, attestors, invalidIndex, attestations };
159
+ return {
160
+ valid,
161
+ reason,
162
+ checkpoint,
163
+ committee,
164
+ epoch,
165
+ seed,
166
+ attestors,
167
+ invalidIndex,
168
+ attestations,
169
+ verbatimAttestations,
170
+ };
125
171
  } else {
126
172
  const _: never = reason;
127
173
  throw new Error(`Unknown reason: ${reason}`);
@@ -14,7 +14,7 @@ import type { FieldsOf } from '@aztec/foundation/types';
14
14
  import { z } from 'zod';
15
15
 
16
16
  import { L2Block } from '../block/l2_block.js';
17
- import { MAX_BLOCKS_PER_CHECKPOINT } from '../deserialization/index.js';
17
+ import { MAX_CAPACITY_BLOCKS_PER_CHECKPOINT } from '../deserialization/index.js';
18
18
  import { computeCheckpointOutHash } from '../messaging/out_hash.js';
19
19
  import { CheckpointHeader } from '../rollup/checkpoint_header.js';
20
20
  import { schemas } from '../schemas/schemas.js';
@@ -68,7 +68,7 @@ export class Checkpoint {
68
68
  const reader = BufferReader.asReader(buf);
69
69
  const archive = reader.readObject(AppendOnlyTreeSnapshot);
70
70
  const header = reader.readObject(CheckpointHeader);
71
- const blocks = reader.readVector(L2Block, MAX_BLOCKS_PER_CHECKPOINT);
71
+ const blocks = reader.readVector(L2Block, MAX_CAPACITY_BLOCKS_PER_CHECKPOINT);
72
72
  const number = CheckpointNumber(reader.readNumber());
73
73
  const feeAssetPriceModifier = reader.readInt256();
74
74
  return new Checkpoint(archive, header, blocks, number, feeAssetPriceModifier);
@@ -5,4 +5,5 @@ export * from './checkpoint_reexecution_tracker.js';
5
5
  export * from './digest.js';
6
6
  export * from './previous_checkpoint_out_hashes.js';
7
7
  export * from './published_checkpoint.js';
8
+ export * from './simulation_overrides.js';
8
9
  export * from './validate.js';