@aztec/stdlib 5.0.0-private.20260319 → 5.0.0-rc.2

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 (961) hide show
  1. package/dest/abi/abi.d.ts +142 -1081
  2. package/dest/abi/abi.d.ts.map +1 -1
  3. package/dest/abi/abi.js +41 -18
  4. package/dest/abi/authorization_selector.d.ts +4 -7
  5. package/dest/abi/authorization_selector.d.ts.map +1 -1
  6. package/dest/abi/buffer.d.ts +19 -5
  7. package/dest/abi/buffer.d.ts.map +1 -1
  8. package/dest/abi/buffer.js +38 -5
  9. package/dest/abi/contract_artifact.d.ts +14 -1
  10. package/dest/abi/contract_artifact.d.ts.map +1 -1
  11. package/dest/abi/contract_artifact.js +31 -7
  12. package/dest/abi/decoder.d.ts +5 -44
  13. package/dest/abi/decoder.d.ts.map +1 -1
  14. package/dest/abi/decoder.js +12 -67
  15. package/dest/abi/encoder.d.ts +1 -1
  16. package/dest/abi/encoder.d.ts.map +1 -1
  17. package/dest/abi/encoder.js +32 -6
  18. package/dest/abi/event_selector.d.ts +4 -7
  19. package/dest/abi/event_selector.d.ts.map +1 -1
  20. package/dest/abi/function_call.d.ts +7 -25
  21. package/dest/abi/function_call.d.ts.map +1 -1
  22. package/dest/abi/function_selector.d.ts +3 -6
  23. package/dest/abi/function_selector.d.ts.map +1 -1
  24. package/dest/abi/function_selector.js +2 -4
  25. package/dest/abi/function_signature_decoder.d.ts +43 -0
  26. package/dest/abi/function_signature_decoder.d.ts.map +1 -0
  27. package/dest/abi/function_signature_decoder.js +66 -0
  28. package/dest/abi/index.d.ts +2 -1
  29. package/dest/abi/index.d.ts.map +1 -1
  30. package/dest/abi/index.js +1 -0
  31. package/dest/abi/note_selector.d.ts +4 -7
  32. package/dest/abi/note_selector.d.ts.map +1 -1
  33. package/dest/abi/note_selector.js +1 -3
  34. package/dest/abi/selector.d.ts +2 -2
  35. package/dest/abi/selector.d.ts.map +1 -1
  36. package/dest/abi/selector.js +1 -1
  37. package/dest/abi/utils.d.ts +1 -1
  38. package/dest/abi/utils.d.ts.map +1 -1
  39. package/dest/abi/utils.js +1 -1
  40. package/dest/auth_witness/auth_witness.d.ts +2 -2
  41. package/dest/auth_witness/auth_witness.d.ts.map +1 -1
  42. package/dest/avm/avm.d.ts +1756 -10463
  43. package/dest/avm/avm.d.ts.map +1 -1
  44. package/dest/avm/avm.js +7 -4
  45. package/dest/avm/avm_accumulated_data.d.ts +22 -86
  46. package/dest/avm/avm_accumulated_data.d.ts.map +1 -1
  47. package/dest/avm/avm_circuit_public_inputs.d.ts +180 -932
  48. package/dest/avm/avm_circuit_public_inputs.d.ts.map +1 -1
  49. package/dest/avm/avm_proving_request.d.ts +653 -5446
  50. package/dest/avm/avm_proving_request.d.ts.map +1 -1
  51. package/dest/avm/message_pack.js +12 -3
  52. package/dest/avm/public_data_write.d.ts +6 -12
  53. package/dest/avm/public_data_write.d.ts.map +1 -1
  54. package/dest/avm/revert_code.d.ts +5 -21
  55. package/dest/avm/revert_code.d.ts.map +1 -1
  56. package/dest/avm/revert_code.js +12 -30
  57. package/dest/aztec-address/index.d.ts +42 -12
  58. package/dest/aztec-address/index.d.ts.map +1 -1
  59. package/dest/aztec-address/index.js +40 -13
  60. package/dest/block/attestation_info.d.ts +3 -2
  61. package/dest/block/attestation_info.d.ts.map +1 -1
  62. package/dest/block/attestation_info.js +7 -5
  63. package/dest/block/block_data.d.ts +13 -38
  64. package/dest/block/block_data.d.ts.map +1 -1
  65. package/dest/block/block_data.js +2 -2
  66. package/dest/block/block_hash.d.ts +11 -10
  67. package/dest/block/block_hash.d.ts.map +1 -1
  68. package/dest/block/block_hash.js +10 -9
  69. package/dest/block/block_parameter.d.ts +37 -4
  70. package/dest/block/block_parameter.d.ts.map +1 -1
  71. package/dest/block/block_parameter.js +53 -2
  72. package/dest/block/in_block.d.ts +5 -24
  73. package/dest/block/in_block.d.ts.map +1 -1
  74. package/dest/block/index.d.ts +1 -2
  75. package/dest/block/index.d.ts.map +1 -1
  76. package/dest/block/index.js +0 -1
  77. package/dest/block/l2_block.d.ts +13 -41
  78. package/dest/block/l2_block.d.ts.map +1 -1
  79. package/dest/block/l2_block_info.d.ts +10 -29
  80. package/dest/block/l2_block_info.d.ts.map +1 -1
  81. package/dest/block/l2_block_info.js +6 -5
  82. package/dest/block/l2_block_source.d.ts +201 -356
  83. package/dest/block/l2_block_source.d.ts.map +1 -1
  84. package/dest/block/l2_block_source.js +66 -1
  85. package/dest/block/l2_block_stream/interfaces.d.ts +69 -10
  86. package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
  87. package/dest/block/l2_block_stream/l2_block_stream.d.ts +29 -7
  88. package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
  89. package/dest/block/l2_block_stream/l2_block_stream.js +184 -135
  90. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts +8 -12
  91. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts.map +1 -1
  92. package/dest/block/l2_block_stream/l2_tips_memory_store.js +11 -32
  93. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +20 -18
  94. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -1
  95. package/dest/block/l2_block_stream/l2_tips_store_base.js +84 -40
  96. package/dest/block/proposal/attestations_and_signers.d.ts +19 -30
  97. package/dest/block/proposal/attestations_and_signers.d.ts.map +1 -1
  98. package/dest/block/proposal/attestations_and_signers.js +26 -18
  99. package/dest/block/proposal/committee_attestation.d.ts +6 -12
  100. package/dest/block/proposal/committee_attestation.d.ts.map +1 -1
  101. package/dest/block/test/l2_tips_store_test_suite.d.ts +1 -1
  102. package/dest/block/test/l2_tips_store_test_suite.d.ts.map +1 -1
  103. package/dest/block/test/l2_tips_store_test_suite.js +296 -36
  104. package/dest/checkpoint/checkpoint.d.ts +30 -96
  105. package/dest/checkpoint/checkpoint.d.ts.map +1 -1
  106. package/dest/checkpoint/checkpoint.js +11 -3
  107. package/dest/checkpoint/checkpoint_data.d.ts +68 -91
  108. package/dest/checkpoint/checkpoint_data.d.ts.map +1 -1
  109. package/dest/checkpoint/checkpoint_data.js +12 -0
  110. package/dest/checkpoint/checkpoint_info.d.ts +7 -23
  111. package/dest/checkpoint/checkpoint_info.d.ts.map +1 -1
  112. package/dest/checkpoint/checkpoint_reexecution_tracker.d.ts +60 -0
  113. package/dest/checkpoint/checkpoint_reexecution_tracker.d.ts.map +1 -0
  114. package/dest/checkpoint/checkpoint_reexecution_tracker.js +108 -0
  115. package/dest/checkpoint/digest.d.ts +18 -0
  116. package/dest/checkpoint/digest.d.ts.map +1 -0
  117. package/dest/checkpoint/digest.js +12 -0
  118. package/dest/checkpoint/index.d.ts +5 -1
  119. package/dest/checkpoint/index.d.ts.map +1 -1
  120. package/dest/checkpoint/index.js +4 -0
  121. package/dest/checkpoint/previous_checkpoint_out_hashes.d.ts +33 -0
  122. package/dest/checkpoint/previous_checkpoint_out_hashes.d.ts.map +1 -0
  123. package/dest/checkpoint/previous_checkpoint_out_hashes.js +45 -0
  124. package/dest/checkpoint/published_checkpoint.d.ts +42 -194
  125. package/dest/checkpoint/published_checkpoint.d.ts.map +1 -1
  126. package/dest/checkpoint/simulation_overrides.d.ts +61 -0
  127. package/dest/checkpoint/simulation_overrides.d.ts.map +1 -0
  128. package/dest/checkpoint/simulation_overrides.js +98 -0
  129. package/dest/checkpoint/validate.d.ts +11 -3
  130. package/dest/checkpoint/validate.d.ts.map +1 -1
  131. package/dest/checkpoint/validate.js +9 -6
  132. package/dest/config/chain-config.d.ts +4 -9
  133. package/dest/config/chain-config.d.ts.map +1 -1
  134. package/dest/config/chain-config.js +13 -12
  135. package/dest/config/index.d.ts +2 -2
  136. package/dest/config/index.d.ts.map +1 -1
  137. package/dest/config/index.js +1 -1
  138. package/dest/config/network-consensus-config.d.ts +72 -0
  139. package/dest/config/network-consensus-config.d.ts.map +1 -0
  140. package/dest/config/network-consensus-config.js +231 -0
  141. package/dest/config/sequencer-config.d.ts +7 -3
  142. package/dest/config/sequencer-config.d.ts.map +1 -1
  143. package/dest/config/sequencer-config.js +38 -5
  144. package/dest/contract/complete_address.d.ts +3 -2
  145. package/dest/contract/complete_address.d.ts.map +1 -1
  146. package/dest/contract/complete_address.js +6 -2
  147. package/dest/contract/contract_address.d.ts +5 -5
  148. package/dest/contract/contract_address.d.ts.map +1 -1
  149. package/dest/contract/contract_address.js +5 -4
  150. package/dest/contract/contract_deployment_data.d.ts +15 -61
  151. package/dest/contract/contract_deployment_data.d.ts.map +1 -1
  152. package/dest/contract/contract_instance.d.ts +4 -2
  153. package/dest/contract/contract_instance.d.ts.map +1 -1
  154. package/dest/contract/contract_instance.js +10 -3
  155. package/dest/contract/index.d.ts +1 -3
  156. package/dest/contract/index.d.ts.map +1 -1
  157. package/dest/contract/index.js +0 -2
  158. package/dest/contract/interfaces/contract_class.d.ts +17 -241
  159. package/dest/contract/interfaces/contract_class.d.ts.map +1 -1
  160. package/dest/contract/interfaces/contract_class.js +1 -28
  161. package/dest/contract/interfaces/contract_data_source.d.ts +3 -5
  162. package/dest/contract/interfaces/contract_data_source.d.ts.map +1 -1
  163. package/dest/contract/interfaces/contract_instance.d.ts +41 -95
  164. package/dest/contract/interfaces/contract_instance.d.ts.map +1 -1
  165. package/dest/contract/interfaces/contract_instance.js +4 -2
  166. package/dest/contract/interfaces/contract_instance_update.d.ts +6 -26
  167. package/dest/contract/interfaces/contract_instance_update.d.ts.map +1 -1
  168. package/dest/contract/interfaces/node-info.d.ts +11 -1
  169. package/dest/contract/interfaces/node-info.d.ts.map +1 -1
  170. package/dest/contract/interfaces/node-info.js +7 -1
  171. package/dest/contract/interfaces/protocol_contract_addresses.d.ts +2 -12
  172. package/dest/contract/interfaces/protocol_contract_addresses.d.ts.map +1 -1
  173. package/dest/contract/private_function.d.ts +1 -1
  174. package/dest/contract/private_function.d.ts.map +1 -1
  175. package/dest/contract/private_function.js +2 -4
  176. package/dest/database-version/database_version.d.ts +5 -11
  177. package/dest/database-version/database_version.d.ts.map +1 -1
  178. package/dest/database-version/version_manager.d.ts +6 -2
  179. package/dest/database-version/version_manager.d.ts.map +1 -1
  180. package/dest/database-version/version_manager.js +12 -1
  181. package/dest/deserialization/index.d.ts +35 -3
  182. package/dest/deserialization/index.d.ts.map +1 -1
  183. package/dest/deserialization/index.js +32 -1
  184. package/dest/epoch-helpers/index.d.ts +10 -22
  185. package/dest/epoch-helpers/index.d.ts.map +1 -1
  186. package/dest/epoch-helpers/index.js +12 -0
  187. package/dest/file-store/factory.d.ts +4 -3
  188. package/dest/file-store/factory.d.ts.map +1 -1
  189. package/dest/file-store/factory.js +9 -2
  190. package/dest/file-store/http.d.ts +9 -2
  191. package/dest/file-store/http.d.ts.map +1 -1
  192. package/dest/file-store/http.js +20 -9
  193. package/dest/file-store/index.d.ts +3 -1
  194. package/dest/file-store/index.d.ts.map +1 -1
  195. package/dest/file-store/index.js +1 -0
  196. package/dest/file-store/memory.d.ts +24 -0
  197. package/dest/file-store/memory.d.ts.map +1 -0
  198. package/dest/file-store/memory.js +80 -0
  199. package/dest/gas/fee_math.d.ts +49 -0
  200. package/dest/gas/fee_math.d.ts.map +1 -0
  201. package/dest/gas/fee_math.js +80 -0
  202. package/dest/gas/gas.d.ts +9 -14
  203. package/dest/gas/gas.d.ts.map +1 -1
  204. package/dest/gas/gas.js +6 -3
  205. package/dest/gas/gas_fees.d.ts +13 -14
  206. package/dest/gas/gas_fees.d.ts.map +1 -1
  207. package/dest/gas/gas_fees.js +17 -4
  208. package/dest/gas/gas_settings.d.ts +60 -86
  209. package/dest/gas/gas_settings.d.ts.map +1 -1
  210. package/dest/gas/gas_settings.js +49 -9
  211. package/dest/gas/index.d.ts +3 -1
  212. package/dest/gas/index.d.ts.map +1 -1
  213. package/dest/gas/index.js +2 -0
  214. package/dest/gas/tx_gas_limits.d.ts +72 -0
  215. package/dest/gas/tx_gas_limits.d.ts.map +1 -0
  216. package/dest/gas/tx_gas_limits.js +85 -0
  217. package/dest/ha-signing/config.d.ts +11 -75
  218. package/dest/ha-signing/config.d.ts.map +1 -1
  219. package/dest/ha-signing/config.js +9 -18
  220. package/dest/ha-signing/index.d.ts +2 -2
  221. package/dest/ha-signing/index.d.ts.map +1 -1
  222. package/dest/ha-signing/index.js +1 -1
  223. package/dest/ha-signing/local_config.d.ts +3 -34
  224. package/dest/ha-signing/local_config.d.ts.map +1 -1
  225. package/dest/ha-signing/local_config.js +2 -2
  226. package/dest/ha-signing/types.d.ts +37 -32
  227. package/dest/ha-signing/types.d.ts.map +1 -1
  228. package/dest/ha-signing/types.js +13 -6
  229. package/dest/hash/hash.d.ts +19 -1
  230. package/dest/hash/hash.d.ts.map +1 -1
  231. package/dest/hash/hash.js +39 -2
  232. package/dest/interfaces/allowed_element.d.ts +4 -28
  233. package/dest/interfaces/allowed_element.d.ts.map +1 -1
  234. package/dest/interfaces/api_limit.d.ts +1 -1
  235. package/dest/interfaces/api_limit.js +1 -1
  236. package/dest/interfaces/archiver.d.ts +20 -32
  237. package/dest/interfaces/archiver.d.ts.map +1 -1
  238. package/dest/interfaces/archiver.js +215 -70
  239. package/dest/interfaces/aztec-node-admin.d.ts +71 -305
  240. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  241. package/dest/interfaces/aztec-node-admin.js +60 -17
  242. package/dest/interfaces/aztec-node-debug.d.ts +59 -0
  243. package/dest/interfaces/aztec-node-debug.d.ts.map +1 -0
  244. package/dest/interfaces/aztec-node-debug.js +49 -0
  245. package/dest/interfaces/aztec-node.d.ts +160 -116
  246. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  247. package/dest/interfaces/aztec-node.js +350 -74
  248. package/dest/interfaces/block-builder.d.ts +5 -1
  249. package/dest/interfaces/block-builder.d.ts.map +1 -1
  250. package/dest/interfaces/block_response.d.ts +90 -0
  251. package/dest/interfaces/block_response.d.ts.map +1 -0
  252. package/dest/interfaces/block_response.js +30 -0
  253. package/dest/interfaces/chain_tips.d.ts +11 -0
  254. package/dest/interfaces/chain_tips.d.ts.map +1 -0
  255. package/dest/interfaces/chain_tips.js +6 -0
  256. package/dest/interfaces/checkpoint_parameter.d.ts +14 -0
  257. package/dest/interfaces/checkpoint_parameter.d.ts.map +1 -0
  258. package/dest/interfaces/checkpoint_parameter.js +18 -0
  259. package/dest/interfaces/checkpoint_response.d.ts +122 -0
  260. package/dest/interfaces/checkpoint_response.d.ts.map +1 -0
  261. package/dest/interfaces/checkpoint_response.js +26 -0
  262. package/dest/interfaces/client.d.ts +9 -2
  263. package/dest/interfaces/client.d.ts.map +1 -1
  264. package/dest/interfaces/client.js +7 -1
  265. package/dest/interfaces/configs.d.ts +63 -134
  266. package/dest/interfaces/configs.d.ts.map +1 -1
  267. package/dest/interfaces/configs.js +13 -2
  268. package/dest/interfaces/get_tx_by_hash_options.d.ts +9 -0
  269. package/dest/interfaces/get_tx_by_hash_options.d.ts.map +1 -0
  270. package/dest/interfaces/get_tx_by_hash_options.js +4 -0
  271. package/dest/interfaces/l1_publish_info.d.ts +29 -0
  272. package/dest/interfaces/l1_publish_info.d.ts.map +1 -0
  273. package/dest/interfaces/l1_publish_info.js +26 -0
  274. package/dest/interfaces/l2_logs_source.d.ts +14 -36
  275. package/dest/interfaces/l2_logs_source.d.ts.map +1 -1
  276. package/dest/interfaces/l2_logs_source.js +5 -0
  277. package/dest/interfaces/merkle_tree_operations.d.ts +4 -3
  278. package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
  279. package/dest/interfaces/p2p-bootstrap.js +8 -2
  280. package/dest/interfaces/p2p.d.ts +46 -7
  281. package/dest/interfaces/p2p.d.ts.map +1 -1
  282. package/dest/interfaces/p2p.js +41 -6
  283. package/dest/interfaces/private_kernel_prover.d.ts +62 -2
  284. package/dest/interfaces/private_kernel_prover.d.ts.map +1 -1
  285. package/dest/interfaces/prover-agent.d.ts +5 -23
  286. package/dest/interfaces/prover-agent.d.ts.map +1 -1
  287. package/dest/interfaces/prover-agent.js +4 -1
  288. package/dest/interfaces/prover-client.d.ts +7 -29
  289. package/dest/interfaces/prover-client.d.ts.map +1 -1
  290. package/dest/interfaces/prover-client.js +0 -3
  291. package/dest/interfaces/prover-node.d.ts +12 -8
  292. package/dest/interfaces/prover-node.d.ts.map +1 -1
  293. package/dest/interfaces/prover-node.js +37 -16
  294. package/dest/interfaces/proving-job-source.js +24 -4
  295. package/dest/interfaces/proving-job.d.ts +763 -5814
  296. package/dest/interfaces/proving-job.d.ts.map +1 -1
  297. package/dest/interfaces/proving-job.js +1 -1
  298. package/dest/interfaces/public_storage_override.d.ts +22 -0
  299. package/dest/interfaces/public_storage_override.d.ts.map +1 -0
  300. package/dest/interfaces/public_storage_override.js +7 -0
  301. package/dest/interfaces/server.d.ts +6 -2
  302. package/dest/interfaces/server.d.ts.map +1 -1
  303. package/dest/interfaces/server.js +5 -1
  304. package/dest/interfaces/slasher.d.ts +25 -65
  305. package/dest/interfaces/slasher.d.ts.map +1 -1
  306. package/dest/interfaces/slasher.js +8 -4
  307. package/dest/interfaces/tx_provider.d.ts +6 -1
  308. package/dest/interfaces/tx_provider.d.ts.map +1 -1
  309. package/dest/interfaces/validator.d.ts +55 -248
  310. package/dest/interfaces/validator.d.ts.map +1 -1
  311. package/dest/interfaces/validator.js +8 -2
  312. package/dest/interfaces/world_state.d.ts +2 -2
  313. package/dest/interfaces/world_state.d.ts.map +1 -1
  314. package/dest/kernel/hints/key_validation_request.d.ts +12 -8
  315. package/dest/kernel/hints/key_validation_request.d.ts.map +1 -1
  316. package/dest/kernel/hints/key_validation_request.js +20 -18
  317. package/dest/kernel/hints/read_request.js +1 -1
  318. package/dest/kernel/index.d.ts +5 -1
  319. package/dest/kernel/index.d.ts.map +1 -1
  320. package/dest/kernel/index.js +4 -0
  321. package/dest/kernel/log_hash.d.ts +6 -2
  322. package/dest/kernel/log_hash.d.ts.map +1 -1
  323. package/dest/kernel/log_hash.js +23 -11
  324. package/dest/kernel/note_hash.js +1 -1
  325. package/dest/kernel/nullifier.js +1 -1
  326. package/dest/kernel/private_circuit_public_inputs.d.ts +2 -2
  327. package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
  328. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts +2 -2
  329. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts.map +1 -1
  330. package/dest/kernel/private_kernel_init_2_circuit_private_inputs.d.ts +23 -0
  331. package/dest/kernel/private_kernel_init_2_circuit_private_inputs.d.ts.map +1 -0
  332. package/dest/kernel/private_kernel_init_2_circuit_private_inputs.js +35 -0
  333. package/dest/kernel/private_kernel_init_3_circuit_private_inputs.d.ts +24 -0
  334. package/dest/kernel/private_kernel_init_3_circuit_private_inputs.d.ts.map +1 -0
  335. package/dest/kernel/private_kernel_init_3_circuit_private_inputs.js +37 -0
  336. package/dest/kernel/private_kernel_inner_2_circuit_private_inputs.d.ts +16 -0
  337. package/dest/kernel/private_kernel_inner_2_circuit_private_inputs.d.ts.map +1 -0
  338. package/dest/kernel/private_kernel_inner_2_circuit_private_inputs.js +23 -0
  339. package/dest/kernel/private_kernel_inner_3_circuit_private_inputs.d.ts +17 -0
  340. package/dest/kernel/private_kernel_inner_3_circuit_private_inputs.d.ts.map +1 -0
  341. package/dest/kernel/private_kernel_inner_3_circuit_private_inputs.js +25 -0
  342. package/dest/kernel/private_kernel_prover_output.d.ts +3 -29
  343. package/dest/kernel/private_kernel_prover_output.d.ts.map +1 -1
  344. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts +9 -6
  345. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts.map +1 -1
  346. package/dest/kernel/private_kernel_tail_circuit_public_inputs.js +22 -7
  347. package/dest/kernel/private_log_data.d.ts +1 -1
  348. package/dest/kernel/private_log_data.d.ts.map +1 -1
  349. package/dest/kernel/private_log_data.js +1 -1
  350. package/dest/kernel/private_to_avm_accumulated_data.d.ts +25 -69
  351. package/dest/kernel/private_to_avm_accumulated_data.d.ts.map +1 -1
  352. package/dest/kernel/private_to_avm_accumulated_data.js +11 -5
  353. package/dest/kernel/private_to_public_accumulated_data.d.ts +4 -3
  354. package/dest/kernel/private_to_public_accumulated_data.d.ts.map +1 -1
  355. package/dest/kernel/private_to_public_accumulated_data.js +6 -3
  356. package/dest/kernel/private_to_public_kernel_circuit_public_inputs.d.ts +5 -4
  357. package/dest/kernel/private_to_public_kernel_circuit_public_inputs.d.ts.map +1 -1
  358. package/dest/kernel/private_to_public_kernel_circuit_public_inputs.js +7 -3
  359. package/dest/kernel/private_to_rollup_accumulated_data.d.ts +5 -4
  360. package/dest/kernel/private_to_rollup_accumulated_data.d.ts.map +1 -1
  361. package/dest/kernel/private_to_rollup_accumulated_data.js +6 -3
  362. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts +5 -4
  363. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts.map +1 -1
  364. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.js +7 -3
  365. package/dest/kernel/public_call_request.d.ts +15 -30
  366. package/dest/kernel/public_call_request.d.ts.map +1 -1
  367. package/dest/kernel/public_call_request.js +16 -7
  368. package/dest/keys/derivation.d.ts +6 -2
  369. package/dest/keys/derivation.d.ts.map +1 -1
  370. package/dest/keys/derivation.js +16 -6
  371. package/dest/keys/public_key.d.ts +22 -3
  372. package/dest/keys/public_key.d.ts.map +1 -1
  373. package/dest/keys/public_key.js +20 -1
  374. package/dest/keys/public_keys.d.ts +55 -82
  375. package/dest/keys/public_keys.d.ts.map +1 -1
  376. package/dest/keys/public_keys.js +102 -74
  377. package/dest/kv-store/config.d.ts +3 -6
  378. package/dest/kv-store/config.d.ts.map +1 -1
  379. package/dest/kv-store/config.js +2 -7
  380. package/dest/l1-contracts/index.d.ts +2 -2
  381. package/dest/l1-contracts/index.d.ts.map +1 -1
  382. package/dest/l1-contracts/index.js +1 -1
  383. package/dest/logs/app_tagging_secret.d.ts +61 -0
  384. package/dest/logs/app_tagging_secret.d.ts.map +1 -0
  385. package/dest/logs/app_tagging_secret.js +119 -0
  386. package/dest/logs/app_tagging_secret_kind.d.ts +7 -0
  387. package/dest/logs/app_tagging_secret_kind.d.ts.map +1 -0
  388. package/dest/logs/app_tagging_secret_kind.js +17 -0
  389. package/dest/logs/contract_class_log.d.ts +16 -35
  390. package/dest/logs/contract_class_log.d.ts.map +1 -1
  391. package/dest/logs/contract_class_log.js +11 -13
  392. package/dest/logs/index.d.ts +7 -7
  393. package/dest/logs/index.d.ts.map +1 -1
  394. package/dest/logs/index.js +6 -6
  395. package/dest/logs/log_cursor.d.ts +51 -0
  396. package/dest/logs/log_cursor.d.ts.map +1 -0
  397. package/dest/logs/log_cursor.js +82 -0
  398. package/dest/logs/log_result.d.ts +54 -0
  399. package/dest/logs/log_result.d.ts.map +1 -0
  400. package/dest/logs/log_result.js +56 -0
  401. package/dest/logs/logs_query.d.ts +82 -0
  402. package/dest/logs/logs_query.d.ts.map +1 -0
  403. package/dest/logs/logs_query.js +50 -0
  404. package/dest/logs/message_context.d.ts +4 -16
  405. package/dest/logs/message_context.d.ts.map +1 -1
  406. package/dest/logs/message_context.js +1 -48
  407. package/dest/logs/pending_tagged_log.d.ts +6 -9
  408. package/dest/logs/pending_tagged_log.d.ts.map +1 -1
  409. package/dest/logs/pending_tagged_log.js +1 -31
  410. package/dest/logs/pre_tag.d.ts +11 -24
  411. package/dest/logs/pre_tag.d.ts.map +1 -1
  412. package/dest/logs/pre_tag.js +2 -2
  413. package/dest/logs/private_log.d.ts +7 -12
  414. package/dest/logs/private_log.d.ts.map +1 -1
  415. package/dest/logs/private_log.js +6 -3
  416. package/dest/logs/query_all_logs_by_tags.d.ts +24 -0
  417. package/dest/logs/query_all_logs_by_tags.d.ts.map +1 -0
  418. package/dest/logs/query_all_logs_by_tags.js +64 -0
  419. package/dest/logs/shared_secret_derivation.d.ts +11 -10
  420. package/dest/logs/shared_secret_derivation.d.ts.map +1 -1
  421. package/dest/logs/shared_secret_derivation.js +15 -9
  422. package/dest/logs/siloed_tag.d.ts +8 -7
  423. package/dest/logs/siloed_tag.d.ts.map +1 -1
  424. package/dest/logs/siloed_tag.js +13 -3
  425. package/dest/logs/tag.d.ts +5 -6
  426. package/dest/logs/tag.d.ts.map +1 -1
  427. package/dest/logs/tag.js +4 -0
  428. package/dest/logs/tagging_index_range.d.ts +13 -31
  429. package/dest/logs/tagging_index_range.d.ts.map +1 -1
  430. package/dest/logs/tagging_index_range.js +2 -2
  431. package/dest/messaging/append_l1_to_l2_messages.d.ts +9 -0
  432. package/dest/messaging/append_l1_to_l2_messages.d.ts.map +1 -0
  433. package/dest/messaging/append_l1_to_l2_messages.js +12 -0
  434. package/dest/messaging/index.d.ts +2 -1
  435. package/dest/messaging/index.d.ts.map +1 -1
  436. package/dest/messaging/index.js +1 -0
  437. package/dest/messaging/l1_to_l2_message.d.ts +3 -2
  438. package/dest/messaging/l1_to_l2_message.d.ts.map +1 -1
  439. package/dest/messaging/l1_to_l2_message.js +11 -13
  440. package/dest/messaging/l2_to_l1_membership.d.ts +43 -6
  441. package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -1
  442. package/dest/messaging/l2_to_l1_membership.js +72 -12
  443. package/dest/messaging/l2_to_l1_message.d.ts +38 -112
  444. package/dest/messaging/l2_to_l1_message.d.ts.map +1 -1
  445. package/dest/messaging/l2_to_l1_message.js +21 -12
  446. package/dest/noir/index.d.ts +3 -1
  447. package/dest/noir/index.d.ts.map +1 -1
  448. package/dest/note/note.d.ts +2 -2
  449. package/dest/note/note.d.ts.map +1 -1
  450. package/dest/note/note_dao.d.ts +1 -1
  451. package/dest/note/note_dao.d.ts.map +1 -1
  452. package/dest/note/note_dao.js +1 -4
  453. package/dest/p2p/block_proposal.d.ts +31 -14
  454. package/dest/p2p/block_proposal.d.ts.map +1 -1
  455. package/dest/p2p/block_proposal.js +57 -39
  456. package/dest/p2p/checkpoint_attestation.d.ts +16 -9
  457. package/dest/p2p/checkpoint_attestation.d.ts.map +1 -1
  458. package/dest/p2p/checkpoint_attestation.js +23 -24
  459. package/dest/p2p/checkpoint_proposal.d.ts +36 -16
  460. package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
  461. package/dest/p2p/checkpoint_proposal.js +59 -51
  462. package/dest/p2p/consensus_payload.d.ts +27 -20
  463. package/dest/p2p/consensus_payload.d.ts.map +1 -1
  464. package/dest/p2p/consensus_payload.js +38 -19
  465. package/dest/p2p/gossipable.d.ts +4 -4
  466. package/dest/p2p/gossipable.d.ts.map +1 -1
  467. package/dest/p2p/signature_utils.d.ts +28 -19
  468. package/dest/p2p/signature_utils.d.ts.map +1 -1
  469. package/dest/p2p/signature_utils.js +118 -21
  470. package/dest/p2p/signed_txs.d.ts +15 -13
  471. package/dest/p2p/signed_txs.d.ts.map +1 -1
  472. package/dest/p2p/signed_txs.js +26 -24
  473. package/dest/parity/parity_base_private_inputs.d.ts +8 -4
  474. package/dest/parity/parity_base_private_inputs.d.ts.map +1 -1
  475. package/dest/parity/parity_base_private_inputs.js +7 -5
  476. package/dest/parity/parity_public_inputs.d.ts +8 -4
  477. package/dest/parity/parity_public_inputs.d.ts.map +1 -1
  478. package/dest/parity/parity_public_inputs.js +6 -3
  479. package/dest/parity/parity_root_private_inputs.d.ts +2 -2
  480. package/dest/parity/parity_root_private_inputs.d.ts.map +1 -1
  481. package/dest/proofs/chonk_proof.d.ts +57 -7
  482. package/dest/proofs/chonk_proof.d.ts.map +1 -1
  483. package/dest/proofs/chonk_proof.js +112 -15
  484. package/dest/proofs/recursive_proof.d.ts +2 -2
  485. package/dest/proofs/recursive_proof.d.ts.map +1 -1
  486. package/dest/rollup/block_headers_hash.d.ts +1 -1
  487. package/dest/rollup/block_headers_hash.d.ts.map +1 -1
  488. package/dest/rollup/block_headers_hash.js +8 -2
  489. package/dest/rollup/block_merge_rollup_private_inputs.d.ts +2 -2
  490. package/dest/rollup/block_merge_rollup_private_inputs.d.ts.map +1 -1
  491. package/dest/rollup/block_rollup_public_inputs.d.ts +12 -2
  492. package/dest/rollup/block_rollup_public_inputs.d.ts.map +1 -1
  493. package/dest/rollup/block_rollup_public_inputs.js +12 -0
  494. package/dest/rollup/block_root_rollup_private_inputs.d.ts +6 -6
  495. package/dest/rollup/block_root_rollup_private_inputs.d.ts.map +1 -1
  496. package/dest/rollup/checkpoint_header.d.ts +8 -3
  497. package/dest/rollup/checkpoint_header.d.ts.map +1 -1
  498. package/dest/rollup/checkpoint_header.js +20 -10
  499. package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts +2 -2
  500. package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts.map +1 -1
  501. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +9 -2
  502. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -1
  503. package/dest/rollup/checkpoint_rollup_public_inputs.js +9 -0
  504. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts +5 -5
  505. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts.map +1 -1
  506. package/dest/rollup/private_tx_base_rollup_private_inputs.d.ts +2 -2
  507. package/dest/rollup/private_tx_base_rollup_private_inputs.d.ts.map +1 -1
  508. package/dest/rollup/public_chonk_verifier_private_inputs.d.ts +2 -2
  509. package/dest/rollup/public_chonk_verifier_private_inputs.d.ts.map +1 -1
  510. package/dest/rollup/public_chonk_verifier_public_inputs.d.ts +2 -2
  511. package/dest/rollup/public_chonk_verifier_public_inputs.d.ts.map +1 -1
  512. package/dest/rollup/public_tx_base_rollup_private_inputs.d.ts +2 -2
  513. package/dest/rollup/public_tx_base_rollup_private_inputs.d.ts.map +1 -1
  514. package/dest/rollup/root_rollup_private_inputs.d.ts +2 -2
  515. package/dest/rollup/root_rollup_private_inputs.d.ts.map +1 -1
  516. package/dest/rollup/root_rollup_public_inputs.d.ts +2 -2
  517. package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -1
  518. package/dest/rollup/tx_merge_rollup_private_inputs.d.ts +2 -2
  519. package/dest/rollup/tx_merge_rollup_private_inputs.d.ts.map +1 -1
  520. package/dest/rollup/tx_rollup_public_inputs.d.ts +2 -2
  521. package/dest/rollup/tx_rollup_public_inputs.d.ts.map +1 -1
  522. package/dest/schemas/schemas.d.ts +32 -78
  523. package/dest/schemas/schemas.d.ts.map +1 -1
  524. package/dest/schemas/schemas.js +2 -2
  525. package/dest/slashing/helpers.d.ts +2 -2
  526. package/dest/slashing/helpers.d.ts.map +1 -1
  527. package/dest/slashing/helpers.js +10 -7
  528. package/dest/slashing/index.d.ts +2 -3
  529. package/dest/slashing/index.d.ts.map +1 -1
  530. package/dest/slashing/index.js +1 -2
  531. package/dest/slashing/serialization.d.ts +2 -6
  532. package/dest/slashing/serialization.d.ts.map +1 -1
  533. package/dest/slashing/serialization.js +0 -60
  534. package/dest/slashing/types.d.ts +18 -112
  535. package/dest/slashing/types.d.ts.map +1 -1
  536. package/dest/slashing/types.js +16 -24
  537. package/dest/slashing/{tally.d.ts → votes.d.ts} +1 -1
  538. package/dest/slashing/{tally.d.ts.map → votes.d.ts.map} +1 -1
  539. package/dest/slashing/{tally.js → votes.js} +1 -1
  540. package/dest/snapshots/types.d.ts +15 -78
  541. package/dest/snapshots/types.d.ts.map +1 -1
  542. package/dest/stats/stats.d.ts +2 -2
  543. package/dest/stats/stats.d.ts.map +1 -1
  544. package/dest/tests/factories.d.ts +25 -32
  545. package/dest/tests/factories.d.ts.map +1 -1
  546. package/dest/tests/factories.js +78 -84
  547. package/dest/tests/mocks.d.ts +8 -5
  548. package/dest/tests/mocks.d.ts.map +1 -1
  549. package/dest/tests/mocks.js +45 -56
  550. package/dest/timetable/budgets.d.ts +57 -0
  551. package/dest/timetable/budgets.d.ts.map +1 -0
  552. package/dest/timetable/budgets.js +56 -0
  553. package/dest/timetable/build_proposer_timetable.d.ts +21 -0
  554. package/dest/timetable/build_proposer_timetable.d.ts.map +1 -0
  555. package/dest/timetable/build_proposer_timetable.js +17 -0
  556. package/dest/timetable/consensus_timetable.d.ts +70 -0
  557. package/dest/timetable/consensus_timetable.d.ts.map +1 -0
  558. package/dest/timetable/consensus_timetable.js +89 -0
  559. package/dest/timetable/index.d.ts +5 -37
  560. package/dest/timetable/index.d.ts.map +1 -1
  561. package/dest/timetable/index.js +4 -39
  562. package/dest/timetable/proposer_timetable.d.ts +106 -0
  563. package/dest/timetable/proposer_timetable.d.ts.map +1 -0
  564. package/dest/timetable/proposer_timetable.js +132 -0
  565. package/dest/trees/append_only_tree_snapshot.d.ts +9 -14
  566. package/dest/trees/append_only_tree_snapshot.d.ts.map +1 -1
  567. package/dest/trees/append_only_tree_snapshot.js +6 -3
  568. package/dest/trees/nullifier_leaf.d.ts +19 -42
  569. package/dest/trees/nullifier_leaf.d.ts.map +1 -1
  570. package/dest/trees/nullifier_leaf.js +3 -0
  571. package/dest/trees/nullifier_membership_witness.d.ts +17 -63
  572. package/dest/trees/nullifier_membership_witness.d.ts.map +1 -1
  573. package/dest/trees/nullifier_membership_witness.js +0 -21
  574. package/dest/trees/public_data_leaf.d.ts +21 -53
  575. package/dest/trees/public_data_leaf.d.ts.map +1 -1
  576. package/dest/trees/public_data_witness.d.ts +19 -71
  577. package/dest/trees/public_data_witness.d.ts.map +1 -1
  578. package/dest/trees/public_data_witness.js +0 -27
  579. package/dest/tx/block_header.d.ts +5 -4
  580. package/dest/tx/block_header.d.ts.map +1 -1
  581. package/dest/tx/block_header.js +7 -4
  582. package/dest/tx/call_context.d.ts +4 -14
  583. package/dest/tx/call_context.d.ts.map +1 -1
  584. package/dest/tx/capsule.d.ts +7 -3
  585. package/dest/tx/capsule.d.ts.map +1 -1
  586. package/dest/tx/capsule.js +9 -3
  587. package/dest/tx/execution_payload.d.ts +1 -1
  588. package/dest/tx/execution_payload.d.ts.map +1 -1
  589. package/dest/tx/execution_payload.js +1 -1
  590. package/dest/tx/fee_provider.d.ts +10 -0
  591. package/dest/tx/fee_provider.d.ts.map +1 -0
  592. package/dest/tx/fee_provider.js +1 -0
  593. package/dest/tx/function_data.d.ts +4 -10
  594. package/dest/tx/function_data.d.ts.map +1 -1
  595. package/dest/tx/global_variable_builder.d.ts +4 -15
  596. package/dest/tx/global_variable_builder.d.ts.map +1 -1
  597. package/dest/tx/global_variables.d.ts +16 -49
  598. package/dest/tx/global_variables.d.ts.map +1 -1
  599. package/dest/tx/global_variables.js +10 -14
  600. package/dest/tx/hashed_values.d.ts +4 -3
  601. package/dest/tx/hashed_values.d.ts.map +1 -1
  602. package/dest/tx/hashed_values.js +6 -3
  603. package/dest/tx/in_tx.d.ts +5 -17
  604. package/dest/tx/in_tx.d.ts.map +1 -1
  605. package/dest/tx/index.d.ts +2 -1
  606. package/dest/tx/index.d.ts.map +1 -1
  607. package/dest/tx/index.js +1 -0
  608. package/dest/tx/indexed_tx_effect.d.ts +8 -19
  609. package/dest/tx/indexed_tx_effect.d.ts.map +1 -1
  610. package/dest/tx/indexed_tx_effect.js +9 -6
  611. package/dest/tx/partial_state_reference.d.ts +22 -65
  612. package/dest/tx/partial_state_reference.d.ts.map +1 -1
  613. package/dest/tx/partial_state_reference.js +6 -3
  614. package/dest/tx/private_execution_result.d.ts +6 -16
  615. package/dest/tx/private_execution_result.d.ts.map +1 -1
  616. package/dest/tx/profiling.d.ts +54 -352
  617. package/dest/tx/profiling.d.ts.map +1 -1
  618. package/dest/tx/profiling.js +4 -4
  619. package/dest/tx/protocol_contracts.d.ts +5 -9
  620. package/dest/tx/protocol_contracts.d.ts.map +1 -1
  621. package/dest/tx/proven_tx.d.ts +30 -74
  622. package/dest/tx/proven_tx.d.ts.map +1 -1
  623. package/dest/tx/proven_tx.js +6 -0
  624. package/dest/tx/public_call_request_with_calldata.d.ts +4 -3
  625. package/dest/tx/public_call_request_with_calldata.d.ts.map +1 -1
  626. package/dest/tx/public_call_request_with_calldata.js +6 -3
  627. package/dest/tx/simulated_tx.d.ts +64 -1143
  628. package/dest/tx/simulated_tx.d.ts.map +1 -1
  629. package/dest/tx/simulated_tx.js +13 -11
  630. package/dest/tx/state_reference.d.ts +30 -117
  631. package/dest/tx/state_reference.d.ts.map +1 -1
  632. package/dest/tx/state_reference.js +6 -4
  633. package/dest/tx/tree_snapshots.d.ts +27 -84
  634. package/dest/tx/tree_snapshots.d.ts.map +1 -1
  635. package/dest/tx/tree_snapshots.js +6 -4
  636. package/dest/tx/tx.d.ts +22 -13
  637. package/dest/tx/tx.d.ts.map +1 -1
  638. package/dest/tx/tx.js +44 -22
  639. package/dest/tx/tx_constant_data.d.ts +4 -3
  640. package/dest/tx/tx_constant_data.d.ts.map +1 -1
  641. package/dest/tx/tx_constant_data.js +6 -3
  642. package/dest/tx/tx_context.d.ts +32 -131
  643. package/dest/tx/tx_context.d.ts.map +1 -1
  644. package/dest/tx/tx_context.js +6 -6
  645. package/dest/tx/tx_hash.d.ts +6 -4
  646. package/dest/tx/tx_hash.d.ts.map +1 -1
  647. package/dest/tx/tx_hash.js +13 -5
  648. package/dest/tx/tx_receipt.d.ts +144 -63
  649. package/dest/tx/tx_receipt.d.ts.map +1 -1
  650. package/dest/tx/tx_receipt.js +143 -60
  651. package/dest/tx/validator/error_texts.d.ts +6 -2
  652. package/dest/tx/validator/error_texts.d.ts.map +1 -1
  653. package/dest/tx/validator/error_texts.js +7 -1
  654. package/dest/tx/validator/tx_validator.d.ts +5 -27
  655. package/dest/tx/validator/tx_validator.d.ts.map +1 -1
  656. package/dest/tx/validator/tx_validator.js +0 -4
  657. package/dest/types/shared.d.ts +4 -12
  658. package/dest/types/shared.d.ts.map +1 -1
  659. package/dest/types/shared.js +6 -12
  660. package/dest/update-checker/dev_version.d.ts +3 -0
  661. package/dest/update-checker/dev_version.d.ts.map +1 -0
  662. package/dest/update-checker/dev_version.js +1 -0
  663. package/dest/update-checker/index.d.ts +2 -1
  664. package/dest/update-checker/index.d.ts.map +1 -1
  665. package/dest/update-checker/index.js +1 -0
  666. package/dest/update-checker/package_version.d.ts +6 -3
  667. package/dest/update-checker/package_version.d.ts.map +1 -1
  668. package/dest/update-checker/package_version.js +8 -19
  669. package/dest/validators/schemas.d.ts +147 -614
  670. package/dest/validators/schemas.d.ts.map +1 -1
  671. package/dest/validators/schemas.js +6 -4
  672. package/dest/validators/types.d.ts +20 -3
  673. package/dest/validators/types.d.ts.map +1 -1
  674. package/dest/versioning/versioning.js +1 -1
  675. package/dest/vks/verification_key.d.ts +4 -139
  676. package/dest/vks/verification_key.d.ts.map +1 -1
  677. package/dest/vks/verification_key.js +5 -126
  678. package/dest/world-state/genesis_data.d.ts +13 -0
  679. package/dest/world-state/genesis_data.d.ts.map +1 -0
  680. package/dest/world-state/genesis_data.js +7 -0
  681. package/dest/world-state/index.d.ts +2 -1
  682. package/dest/world-state/index.d.ts.map +1 -1
  683. package/dest/world-state/index.js +1 -0
  684. package/dest/world-state/world_state_revision.d.ts +15 -26
  685. package/dest/world-state/world_state_revision.d.ts.map +1 -1
  686. package/dest/world-state/world_state_revision.js +7 -1
  687. package/package.json +12 -11
  688. package/src/abi/abi.ts +78 -21
  689. package/src/abi/authorization_selector.ts +2 -8
  690. package/src/abi/buffer.ts +38 -5
  691. package/src/abi/contract_artifact.ts +30 -6
  692. package/src/abi/decoder.ts +23 -78
  693. package/src/abi/encoder.ts +42 -6
  694. package/src/abi/event_selector.ts +2 -8
  695. package/src/abi/function_selector.ts +4 -13
  696. package/src/abi/function_signature_decoder.ts +77 -0
  697. package/src/abi/index.ts +1 -0
  698. package/src/abi/note_selector.ts +3 -12
  699. package/src/abi/selector.ts +1 -1
  700. package/src/abi/utils.ts +6 -4
  701. package/src/avm/avm.ts +6 -1
  702. package/src/avm/message_pack.ts +12 -3
  703. package/src/avm/revert_code.ts +19 -39
  704. package/src/aztec-address/index.ts +50 -17
  705. package/src/block/attestation_info.ts +11 -11
  706. package/src/block/block_data.ts +3 -4
  707. package/src/block/block_hash.ts +21 -14
  708. package/src/block/block_parameter.ts +72 -4
  709. package/src/block/index.ts +0 -1
  710. package/src/block/l2_block_info.ts +8 -6
  711. package/src/block/l2_block_source.ts +210 -146
  712. package/src/block/l2_block_stream/interfaces.ts +65 -9
  713. package/src/block/l2_block_stream/l2_block_stream.ts +250 -171
  714. package/src/block/l2_block_stream/l2_tips_memory_store.ts +17 -41
  715. package/src/block/l2_block_stream/l2_tips_store_base.ts +85 -60
  716. package/src/block/proposal/attestations_and_signers.ts +32 -17
  717. package/src/block/test/l2_tips_store_test_suite.ts +271 -22
  718. package/src/checkpoint/checkpoint.ts +13 -3
  719. package/src/checkpoint/checkpoint_data.ts +44 -4
  720. package/src/checkpoint/checkpoint_reexecution_tracker.ts +167 -0
  721. package/src/checkpoint/digest.ts +28 -0
  722. package/src/checkpoint/index.ts +4 -0
  723. package/src/checkpoint/previous_checkpoint_out_hashes.ts +61 -0
  724. package/src/checkpoint/simulation_overrides.ts +171 -0
  725. package/src/checkpoint/validate.ts +16 -6
  726. package/src/config/chain-config.ts +13 -16
  727. package/src/config/index.ts +1 -1
  728. package/src/config/network-consensus-config.ts +302 -0
  729. package/src/config/sequencer-config.ts +68 -9
  730. package/src/contract/complete_address.ts +7 -3
  731. package/src/contract/contract_address.ts +6 -6
  732. package/src/contract/contract_instance.ts +11 -2
  733. package/src/contract/index.ts +0 -2
  734. package/src/contract/interfaces/contract_class.ts +2 -82
  735. package/src/contract/interfaces/contract_data_source.ts +2 -4
  736. package/src/contract/interfaces/contract_instance.ts +6 -2
  737. package/src/contract/interfaces/node-info.ts +11 -0
  738. package/src/contract/private_function.ts +3 -1
  739. package/src/database-version/version_manager.ts +17 -0
  740. package/src/deserialization/index.ts +35 -2
  741. package/src/epoch-helpers/index.ts +24 -0
  742. package/src/file-store/factory.ts +20 -4
  743. package/src/file-store/http.ts +29 -10
  744. package/src/file-store/index.ts +2 -0
  745. package/src/file-store/memory.ts +94 -0
  746. package/src/gas/README.md +123 -0
  747. package/src/gas/fee_math.ts +120 -0
  748. package/src/gas/gas.ts +8 -3
  749. package/src/gas/gas_fees.ts +26 -13
  750. package/src/gas/gas_settings.ts +63 -15
  751. package/src/gas/index.ts +2 -0
  752. package/src/gas/tx_gas_limits.ts +123 -0
  753. package/src/ha-signing/config.ts +14 -18
  754. package/src/ha-signing/index.ts +3 -1
  755. package/src/ha-signing/local_config.ts +2 -2
  756. package/src/ha-signing/types.ts +48 -34
  757. package/src/hash/hash.ts +34 -2
  758. package/src/interfaces/api_limit.ts +1 -1
  759. package/src/interfaces/archiver.ts +88 -93
  760. package/src/interfaces/aztec-node-admin.ts +36 -21
  761. package/src/interfaces/aztec-node-debug.ts +92 -0
  762. package/src/interfaces/aztec-node.ts +398 -271
  763. package/src/interfaces/block-builder.ts +4 -0
  764. package/src/interfaces/block_response.ts +92 -0
  765. package/src/interfaces/chain_tips.ts +16 -0
  766. package/src/interfaces/checkpoint_parameter.ts +20 -0
  767. package/src/interfaces/checkpoint_response.ts +84 -0
  768. package/src/interfaces/client.ts +8 -1
  769. package/src/interfaces/configs.ts +64 -7
  770. package/src/interfaces/get_tx_by_hash_options.ts +14 -0
  771. package/src/interfaces/l1_publish_info.ts +40 -0
  772. package/src/interfaces/l2_logs_source.ts +13 -42
  773. package/src/interfaces/merkle_tree_operations.ts +3 -2
  774. package/src/interfaces/p2p-bootstrap.ts +2 -2
  775. package/src/interfaces/p2p.ts +59 -19
  776. package/src/interfaces/private_kernel_prover.ts +88 -0
  777. package/src/interfaces/prover-agent.ts +1 -1
  778. package/src/interfaces/prover-client.ts +3 -8
  779. package/src/interfaces/prover-node.ts +36 -21
  780. package/src/interfaces/proving-job-source.ts +4 -4
  781. package/src/interfaces/proving-job.ts +3 -3
  782. package/src/interfaces/public_storage_override.ts +26 -0
  783. package/src/interfaces/server.ts +5 -1
  784. package/src/interfaces/slasher.ts +17 -10
  785. package/src/interfaces/tx_provider.ts +6 -0
  786. package/src/interfaces/validator.ts +45 -15
  787. package/src/interfaces/world_state.ts +1 -1
  788. package/src/kernel/hints/key_validation_request.ts +18 -16
  789. package/src/kernel/hints/read_request.ts +1 -1
  790. package/src/kernel/index.ts +4 -0
  791. package/src/kernel/log_hash.ts +36 -13
  792. package/src/kernel/note_hash.ts +1 -1
  793. package/src/kernel/nullifier.ts +1 -1
  794. package/src/kernel/private_kernel_init_2_circuit_private_inputs.ts +49 -0
  795. package/src/kernel/private_kernel_init_3_circuit_private_inputs.ts +52 -0
  796. package/src/kernel/private_kernel_inner_2_circuit_private_inputs.ts +29 -0
  797. package/src/kernel/private_kernel_inner_3_circuit_private_inputs.ts +31 -0
  798. package/src/kernel/private_kernel_tail_circuit_public_inputs.ts +29 -14
  799. package/src/kernel/private_log_data.ts +4 -1
  800. package/src/kernel/private_to_avm_accumulated_data.ts +16 -5
  801. package/src/kernel/private_to_public_accumulated_data.ts +9 -3
  802. package/src/kernel/private_to_public_kernel_circuit_public_inputs.ts +10 -4
  803. package/src/kernel/private_to_rollup_accumulated_data.ts +8 -3
  804. package/src/kernel/private_to_rollup_kernel_circuit_public_inputs.ts +9 -9
  805. package/src/kernel/public_call_request.ts +22 -7
  806. package/src/keys/derivation.ts +21 -9
  807. package/src/keys/public_key.ts +26 -2
  808. package/src/keys/public_keys.ts +124 -110
  809. package/src/kv-store/config.ts +3 -10
  810. package/src/l1-contracts/index.ts +1 -1
  811. package/src/logs/app_tagging_secret.ts +153 -0
  812. package/src/logs/app_tagging_secret_kind.ts +21 -0
  813. package/src/logs/contract_class_log.ts +15 -14
  814. package/src/logs/index.ts +6 -6
  815. package/src/logs/log_cursor.ts +110 -0
  816. package/src/logs/log_result.ts +104 -0
  817. package/src/logs/logs_query.ts +138 -0
  818. package/src/logs/message_context.ts +6 -50
  819. package/src/logs/pending_tagged_log.ts +6 -35
  820. package/src/logs/pre_tag.ts +3 -6
  821. package/src/logs/private_log.ts +9 -3
  822. package/src/logs/query_all_logs_by_tags.ts +98 -0
  823. package/src/logs/shared_secret_derivation.ts +21 -10
  824. package/src/logs/siloed_tag.ts +20 -11
  825. package/src/logs/tag.ts +8 -8
  826. package/src/logs/tagging_index_range.ts +4 -10
  827. package/src/messaging/append_l1_to_l2_messages.ts +21 -0
  828. package/src/messaging/index.ts +1 -0
  829. package/src/messaging/l1_to_l2_message.ts +12 -9
  830. package/src/messaging/l2_to_l1_membership.ts +108 -19
  831. package/src/messaging/l2_to_l1_message.ts +29 -9
  832. package/src/noir/index.ts +2 -0
  833. package/src/note/note_dao.ts +1 -4
  834. package/src/p2p/block_proposal.ts +111 -36
  835. package/src/p2p/checkpoint_attestation.ts +27 -31
  836. package/src/p2p/checkpoint_proposal.ts +128 -73
  837. package/src/p2p/consensus_payload.ts +59 -28
  838. package/src/p2p/gossipable.ts +4 -4
  839. package/src/p2p/signature_utils.ts +110 -25
  840. package/src/p2p/signed_txs.ts +46 -28
  841. package/src/parity/parity_base_private_inputs.ts +10 -4
  842. package/src/parity/parity_public_inputs.ts +9 -2
  843. package/src/proofs/chonk_proof.ts +132 -12
  844. package/src/rollup/block_headers_hash.ts +11 -2
  845. package/src/rollup/block_rollup_public_inputs.ts +13 -0
  846. package/src/rollup/checkpoint_header.ts +16 -2
  847. package/src/rollup/checkpoint_rollup_public_inputs.ts +10 -0
  848. package/src/schemas/schemas.ts +6 -1
  849. package/src/slashing/helpers.ts +13 -9
  850. package/src/slashing/index.ts +1 -2
  851. package/src/slashing/serialization.ts +1 -81
  852. package/src/slashing/types.ts +24 -49
  853. package/src/slashing/{tally.ts → votes.ts} +1 -1
  854. package/src/stats/stats.ts +4 -0
  855. package/src/tests/factories.ts +108 -113
  856. package/src/tests/mocks.ts +72 -71
  857. package/src/timetable/README.md +609 -0
  858. package/src/timetable/budgets.ts +87 -0
  859. package/src/timetable/build_proposer_timetable.ts +42 -0
  860. package/src/timetable/consensus_timetable.ts +126 -0
  861. package/src/timetable/index.ts +4 -66
  862. package/src/timetable/proposer_timetable.ts +190 -0
  863. package/src/timetable/timetable-example.svg +108 -0
  864. package/src/trees/append_only_tree_snapshot.ts +8 -3
  865. package/src/trees/nullifier_leaf.ts +4 -0
  866. package/src/trees/nullifier_membership_witness.ts +0 -21
  867. package/src/trees/public_data_witness.ts +0 -31
  868. package/src/tx/block_header.ts +10 -5
  869. package/src/tx/capsule.ts +10 -2
  870. package/src/tx/execution_payload.ts +2 -1
  871. package/src/tx/fee_provider.ts +10 -0
  872. package/src/tx/global_variable_builder.ts +3 -20
  873. package/src/tx/global_variables.ts +12 -20
  874. package/src/tx/hashed_values.ts +8 -3
  875. package/src/tx/index.ts +1 -0
  876. package/src/tx/indexed_tx_effect.ts +18 -6
  877. package/src/tx/partial_state_reference.ts +8 -3
  878. package/src/tx/profiling.ts +4 -4
  879. package/src/tx/proven_tx.ts +6 -0
  880. package/src/tx/public_call_request_with_calldata.ts +8 -3
  881. package/src/tx/simulated_tx.ts +22 -21
  882. package/src/tx/state_reference.ts +9 -4
  883. package/src/tx/tree_snapshots.ts +9 -4
  884. package/src/tx/tx.ts +60 -24
  885. package/src/tx/tx_constant_data.ts +8 -3
  886. package/src/tx/tx_context.ts +8 -3
  887. package/src/tx/tx_hash.ts +20 -5
  888. package/src/tx/tx_receipt.ts +265 -85
  889. package/src/tx/validator/error_texts.ts +10 -1
  890. package/src/tx/validator/tx_validator.ts +1 -5
  891. package/src/types/shared.ts +8 -13
  892. package/src/update-checker/dev_version.ts +2 -0
  893. package/src/update-checker/index.ts +1 -0
  894. package/src/update-checker/package_version.ts +10 -23
  895. package/src/validators/schemas.ts +6 -4
  896. package/src/validators/types.ts +21 -2
  897. package/src/versioning/versioning.ts +1 -1
  898. package/src/vks/verification_key.ts +5 -184
  899. package/src/world-state/genesis_data.ts +27 -0
  900. package/src/world-state/index.ts +1 -0
  901. package/src/world-state/world_state_revision.ts +9 -1
  902. package/dest/abi/mocked_keys.d.ts +0 -2
  903. package/dest/abi/mocked_keys.d.ts.map +0 -1
  904. package/dest/abi/mocked_keys.js +0 -1
  905. package/dest/block/checkpointed_l2_block.d.ts +0 -150
  906. package/dest/block/checkpointed_l2_block.d.ts.map +0 -1
  907. package/dest/block/checkpointed_l2_block.js +0 -46
  908. package/dest/config/pipelining-config.d.ts +0 -19
  909. package/dest/config/pipelining-config.d.ts.map +0 -1
  910. package/dest/config/pipelining-config.js +0 -18
  911. package/dest/contract/private_function_membership_proof.d.ts +0 -32
  912. package/dest/contract/private_function_membership_proof.d.ts.map +0 -1
  913. package/dest/contract/private_function_membership_proof.js +0 -124
  914. package/dest/contract/utility_function_membership_proof.d.ts +0 -27
  915. package/dest/contract/utility_function_membership_proof.d.ts.map +0 -1
  916. package/dest/contract/utility_function_membership_proof.js +0 -87
  917. package/dest/interfaces/epoch-prover.d.ts +0 -57
  918. package/dest/interfaces/epoch-prover.d.ts.map +0 -1
  919. package/dest/interfaces/epoch-prover.js +0 -1
  920. package/dest/interfaces/get_logs_response.d.ts +0 -97
  921. package/dest/interfaces/get_logs_response.d.ts.map +0 -1
  922. package/dest/interfaces/get_logs_response.js +0 -12
  923. package/dest/l1-contracts/slash_factory.d.ts +0 -45
  924. package/dest/l1-contracts/slash_factory.d.ts.map +0 -1
  925. package/dest/l1-contracts/slash_factory.js +0 -158
  926. package/dest/logs/extended_contract_class_log.d.ts +0 -51
  927. package/dest/logs/extended_contract_class_log.d.ts.map +0 -1
  928. package/dest/logs/extended_contract_class_log.js +0 -67
  929. package/dest/logs/extended_directional_app_tagging_secret.d.ts +0 -47
  930. package/dest/logs/extended_directional_app_tagging_secret.d.ts.map +0 -1
  931. package/dest/logs/extended_directional_app_tagging_secret.js +0 -72
  932. package/dest/logs/extended_public_log.d.ts +0 -106
  933. package/dest/logs/extended_public_log.d.ts.map +0 -1
  934. package/dest/logs/extended_public_log.js +0 -73
  935. package/dest/logs/log_filter.d.ts +0 -25
  936. package/dest/logs/log_filter.d.ts.map +0 -1
  937. package/dest/logs/log_filter.js +0 -12
  938. package/dest/logs/log_id.d.ts +0 -85
  939. package/dest/logs/log_id.d.ts.map +0 -1
  940. package/dest/logs/log_id.js +0 -94
  941. package/dest/logs/tx_scoped_l2_log.d.ts +0 -51
  942. package/dest/logs/tx_scoped_l2_log.d.ts.map +0 -1
  943. package/dest/logs/tx_scoped_l2_log.js +0 -77
  944. package/dest/slashing/empire.d.ts +0 -31
  945. package/dest/slashing/empire.d.ts.map +0 -1
  946. package/dest/slashing/empire.js +0 -87
  947. package/src/abi/mocked_keys.ts +0 -2
  948. package/src/block/checkpointed_l2_block.ts +0 -70
  949. package/src/config/pipelining-config.ts +0 -31
  950. package/src/contract/private_function_membership_proof.ts +0 -167
  951. package/src/contract/utility_function_membership_proof.ts +0 -118
  952. package/src/interfaces/epoch-prover.ts +0 -72
  953. package/src/interfaces/get_logs_response.ts +0 -35
  954. package/src/l1-contracts/slash_factory.ts +0 -180
  955. package/src/logs/extended_contract_class_log.ts +0 -87
  956. package/src/logs/extended_directional_app_tagging_secret.ts +0 -87
  957. package/src/logs/extended_public_log.ts +0 -94
  958. package/src/logs/log_filter.ts +0 -36
  959. package/src/logs/log_id.ts +0 -125
  960. package/src/logs/tx_scoped_l2_log.ts +0 -114
  961. package/src/slashing/empire.ts +0 -104
@@ -1,11 +1,38 @@
1
- import type { PublishedCheckpoint } from '../../checkpoint/published_checkpoint.js';
1
+ import type { BlockNumber } from '@aztec/foundation/branded-types';
2
+
2
3
  import type { L2Block } from '../l2_block.js';
3
- import type { CheckpointId, L2BlockId, L2Tips } from '../l2_block_source.js';
4
+ import type { CheckpointId, L2BlockId, L2TipId, LocalL2Tips } from '../l2_block_source.js';
5
+
6
+ /** Provides the current chain tips. Implemented by world-state, l2-tips-store, and AztecNode. */
7
+ export interface L2TipsProvider {
8
+ getL2Tips(): Promise<LocalL2Tips>;
9
+ }
10
+
11
+ /**
12
+ * A block id reported by a local data provider, whose hash may be unknown when the provider cannot resolve it (e.g.
13
+ * world-state cannot resolve the hash of a proven tip ahead of its synced range).
14
+ */
15
+ export type LocalL2BlockId = { number: BlockNumber; hash?: string };
4
16
 
5
- /** Interface to the local view of the chain. Implemented by world-state and l2-tips-store. */
17
+ /**
18
+ * Minimal local view of the chain the block stream needs to drive sync. `checkpointed` is only required when the
19
+ * stream emits checkpoint events (i.e. `ignoreCheckpoints` is off).
20
+ */
21
+ export type LocalChainTips = {
22
+ proposed: LocalL2BlockId;
23
+ checkpointed?: { block: LocalL2BlockId; checkpoint: CheckpointId };
24
+ proven: { block: LocalL2BlockId };
25
+ finalized: { block: LocalL2BlockId };
26
+ };
27
+
28
+ /**
29
+ * Interface to the local view of the chain. Implemented by world-state and l2-tips-store. Anything implementing
30
+ * {@link L2TipsProvider} also satisfies this contract structurally, since {@link LocalL2Tips} is assignable to
31
+ * {@link LocalChainTips}.
32
+ */
6
33
  export interface L2BlockStreamLocalDataProvider {
34
+ getL2Tips(): Promise<LocalChainTips>;
7
35
  getL2BlockHash(number: number): Promise<string | undefined>;
8
- getL2Tips(): Promise<L2Tips>;
9
36
  }
10
37
 
11
38
  /** Interface to a handler of events emitted. */
@@ -18,27 +45,56 @@ export type L2BlockStreamEvent =
18
45
  type: 'blocks-added';
19
46
  blocks: L2Block[];
20
47
  }
21
- | /** Emits checkpoints published to L1. */ {
48
+ | /**
49
+ * Reports the new proposed tip of the chain. Emitted once per sync pass when the source's proposed tip differs
50
+ * from the pre-pass local one (downloads, a prune, or a thin tip movement). Carries only the block id; in block
51
+ * mode the corresponding payloads arrive via preceding `blocks-added` events, while in tips-only mode this is the
52
+ * sole signal that the proposed tip moved. Consumers that only track the proposed tip can ignore `blocks-added`
53
+ * entirely and anchor on this event instead.
54
+ */ {
55
+ type: 'chain-proposed';
56
+ block: L2BlockId;
57
+ }
58
+ | /**
59
+ * Reports a new checkpointed tip. Emitted at most once per sync pass when the source's checkpointed tip
60
+ * leads the local one. Carries only the block + checkpoint ids; consumers that need the full checkpoint
61
+ * payload fetch it on demand from the block source.
62
+ */ {
22
63
  type: 'chain-checkpointed';
23
- checkpoint: PublishedCheckpoint;
24
64
  block: L2BlockId;
65
+ checkpoint: CheckpointId;
25
66
  }
26
67
  | /**
27
68
  * Reports last correct block (new tip of the proposed chain). Note that this is not necessarily the anchor block
28
69
  * that will be used in the transaction - if the chain has already moved past the reorg, we'll also see blocks-added
29
- * events that will push the anchor block forward.
70
+ * events that will push the anchor block forward. `block` is the prune target (the new proposed tip); `checkpointed`
71
+ * and `proven` are the source's confirmed checkpointed and proven tips (each a block and checkpoint id). Each is used
72
+ * to clamp the corresponding local cursor when it leads the source tip, so a cursor never overshoots its own source
73
+ * frontier during a prune (the source guarantees proven <= checkpointed).
30
74
  */ {
31
75
  type: 'chain-pruned';
32
76
  block: L2BlockId;
33
- checkpoint: CheckpointId;
77
+ checkpointed: L2TipId;
78
+ proven: L2TipId;
34
79
  }
35
80
  | /** Reports new proven block. */ {
36
81
  type: 'chain-proven';
37
82
  block: L2BlockId;
83
+ checkpoint: CheckpointId;
38
84
  }
39
85
  | /** Reports new finalized block (proven and finalized on L1). */ {
40
86
  type: 'chain-finalized';
41
87
  block: L2BlockId;
88
+ checkpoint: CheckpointId;
42
89
  };
43
90
 
44
- export type L2TipsStore = L2BlockStreamEventHandler & L2BlockStreamLocalDataProvider;
91
+ export type L2TipsStore = L2BlockStreamEventHandler &
92
+ L2TipsProvider &
93
+ Pick<L2BlockStreamLocalDataProvider, 'getL2BlockHash'> & {
94
+ /**
95
+ * Records `(number → hash)` witnesses into the walk-back hash index without moving any tip cursor. Consumers that
96
+ * materialize per-height state should record a witness for each height they materialize, so a reorg below the
97
+ * nearest sparse anchor does not produce an over-deep prune event. See {@link L2TipsStoreBase.recordBlockHashes}.
98
+ */
99
+ recordBlockHashes(blocks: L2BlockId[]): Promise<void>;
100
+ };
@@ -1,14 +1,25 @@
1
- import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
1
+ import { BlockNumber } from '@aztec/foundation/branded-types';
2
2
  import { AbortError } from '@aztec/foundation/error';
3
3
  import { createLogger } from '@aztec/foundation/log';
4
4
  import { RunningPromise } from '@aztec/foundation/running-promise';
5
5
 
6
- import type { PublishedCheckpoint } from '../../checkpoint/published_checkpoint.js';
7
- import { type L2BlockId, type L2BlockSource, makeL2BlockId } from '../l2_block_source.js';
8
- import type { L2BlockStreamEvent, L2BlockStreamEventHandler, L2BlockStreamLocalDataProvider } from './interfaces.js';
9
-
10
- /** Maximum number of checkpoints to prefetch at once during sync. Matches MAX_RPC_CHECKPOINTS_LEN. */
11
- export const CHECKPOINT_PREFETCH_LIMIT = 50;
6
+ import type { L2Block } from '../l2_block.js';
7
+ import {
8
+ type L2BlockId,
9
+ type L2BlockSource,
10
+ type L2TipId,
11
+ type LocalL2Tips,
12
+ makeL2BlockId,
13
+ } from '../l2_block_source.js';
14
+ import type {
15
+ L2BlockStreamEvent,
16
+ L2BlockStreamEventHandler,
17
+ L2BlockStreamLocalDataProvider,
18
+ LocalL2BlockId,
19
+ } from './interfaces.js';
20
+
21
+ /** Subset of the block source the stream depends on. Checkpoint payloads are no longer fetched here. */
22
+ type L2BlockStreamSource = Pick<L2BlockSource, 'getBlocks' | 'getBlockData' | 'getL2Tips'>;
12
23
 
13
24
  /** Creates a stream of events for new blocks, chain tips updates, and reorgs, out of polling an archiver or a node. */
14
25
  export class L2BlockStream {
@@ -17,10 +28,7 @@ export class L2BlockStream {
17
28
  private hasStarted = false;
18
29
 
19
30
  constructor(
20
- private l2BlockSource: Pick<
21
- L2BlockSource,
22
- 'getBlocks' | 'getBlockHeader' | 'getL2Tips' | 'getCheckpoints' | 'getCheckpointedBlocks'
23
- >,
31
+ private l2BlockSource: L2BlockStreamSource,
24
32
  private localData: L2BlockStreamLocalDataProvider,
25
33
  private handler: L2BlockStreamEventHandler,
26
34
  private readonly log = createLogger('types:block_stream'),
@@ -30,12 +38,23 @@ export class L2BlockStream {
30
38
  startingBlock?: number;
31
39
  /** Instead of downloading all blocks, only fetch the smallest subset that results in reliable reorg detection. */
32
40
  skipFinalized?: boolean;
33
- /** When true, checkpoint events will not be emitted. Blocks are still fetched via checkpoints but only blocks-added events are emitted. */
41
+ /** When true, checkpoint events will not be emitted. Blocks are still fetched but only blocks-added events are emitted. */
34
42
  ignoreCheckpoints?: boolean;
35
- /** Maximum number of checkpoints to prefetch at once during sync. Defaults to CHECKPOINT_PREFETCH_LIMIT (50). */
36
- checkpointPrefetchLimit?: number;
43
+ /**
44
+ * When true, the block download loop is skipped entirely: `getBlocks` is never called and `blocks-added` is
45
+ * never emitted. Only the tip events (`chain-proposed`/`chain-checkpointed`/`chain-proven`/`chain-finalized`)
46
+ * and `chain-pruned` are emitted, driven by the `getL2Tips` snapshot. For consumers that track tips but never
47
+ * consume block payloads.
48
+ */
49
+ tipsOnly?: boolean;
37
50
  } = {},
38
51
  ) {
52
+ if (opts.tipsOnly && (opts.startingBlock !== undefined || opts.batchSize !== undefined || opts.skipFinalized)) {
53
+ throw new Error(
54
+ 'tipsOnly is incompatible with startingBlock, batchSize, and skipFinalized: all three are ' +
55
+ 'block-download options and there is no download loop in tips-only mode.',
56
+ );
57
+ }
39
58
  // Note that RunningPromise is in stopped state by default. This promise won't run until someone invokes `start`,
40
59
  // which makes it run periodically, or `sync`, which triggers it once.
41
60
  // Users of L2BlockStream decide what mode to run it in (_periodically_ vs _manually triggered_).
@@ -69,18 +88,72 @@ export class L2BlockStream {
69
88
 
70
89
  protected async work() {
71
90
  try {
72
- const sourceTips = await this.l2BlockSource.getL2Tips();
91
+ // The source tips snapshot is the plan for this pass; it is re-read after the walk-back if a divergence is found.
92
+ let sourceTips = await this.l2BlockSource.getL2Tips();
73
93
  const localTips = await this.localData.getL2Tips();
74
94
  this.log.trace(`Running L2 block stream`, { sourceTips, localTips });
75
95
 
76
- // Check if there was a reorg and emit a chain-pruned event if so.
96
+ if (!this.opts.ignoreCheckpoints && localTips.checkpointed === undefined) {
97
+ throw new Error(
98
+ 'Local data provider does not expose a checkpointed tip; checkpoint events require one ' +
99
+ '(set ignoreCheckpoints or provide checkpointed tips).',
100
+ );
101
+ }
102
+
103
+ // Baseline for the chain-proposed event; captured before the local store mutates during the pass.
104
+ const prePassProposed = localTips.proposed;
105
+
106
+ // Walk back to find a reorg, floored at the local finalized tip (a legitimate reorg can never reach it, since
107
+ // finalized means the proving tx is itself L1-finalized). Seed the cache with ONLY the proposed tip: a stale
108
+ // tier seed at a reorged height equals the local old-fork hash, faking agreement and stopping the walk above the
109
+ // true divergence (an under-deep prune no later pass re-detects), whereas a stale proposed seed only masks the
110
+ // tip for one pass.
77
111
  let latestBlockNumber = localTips.proposed.number;
78
112
  const sourceCache = new BlockHashCache([sourceTips.proposed]);
79
- while (!(await this.areBlockHashesEqualAt(latestBlockNumber, { sourceCache }))) {
113
+ const walkFloor = localTips.finalized.block.number;
114
+ while (
115
+ !(await this.areBlockHashesEqualAt(latestBlockNumber, {
116
+ sourceCache,
117
+ sourceProposed: sourceTips.proposed.number,
118
+ }))
119
+ ) {
120
+ if (latestBlockNumber === 0) {
121
+ // Walked back to genesis and the hashes still differ: the two sides disagree on block 0 itself (usually
122
+ // different genesisTimestamp/prefilled state). Fail loudly rather than underflow into negative heights.
123
+ this.log.error(`Genesis block hash mismatch between local store and source`, {
124
+ localBlockHash: await this.localData.getL2BlockHash(BlockNumber.ZERO),
125
+ sourceBlockHash: sourceCache.get(0) ?? (await this.getBlockHashFromSource(BlockNumber.ZERO)),
126
+ });
127
+ throw new Error(
128
+ 'Genesis block hash mismatch between local store and source: refusing to walk past block 0. ' +
129
+ 'This usually indicates the two sides were configured with different genesis values ' +
130
+ '(e.g. genesisTimestamp or prefilled public data).',
131
+ );
132
+ }
133
+ if (latestBlockNumber <= walkFloor) {
134
+ // A mismatch at or below the finalized tip cannot be a reorg (it contradicts L1-finalized state), so stop
135
+ // here and prune at most to the finalized tip rather than pruning finalized state on non-reorg evidence.
136
+ this.log.warn(`Block hash mismatch at or below the local finalized tip; stopping the walk-back here`, {
137
+ blockNumber: latestBlockNumber,
138
+ finalizedBlockNumber: walkFloor,
139
+ localBlockHash: await this.localData.getL2BlockHash(latestBlockNumber),
140
+ sourceBlockHash:
141
+ sourceCache.get(latestBlockNumber) ?? (await this.getBlockHashFromSource(latestBlockNumber)),
142
+ });
143
+ break;
144
+ }
80
145
  latestBlockNumber--;
81
146
  }
82
147
 
148
+ let pruned = false;
83
149
  if (latestBlockNumber < localTips.proposed.number) {
150
+ // Re-read the source tips after the (possibly slow) walk-back so the prune event carries fresh checkpointed
151
+ // and proven tips, and the prune-target clamp, download plan, and tier reconciliation track the post-prune
152
+ // source chain. Append only the re-read proposed tip: it is a fresh entry that cannot poison the (already
153
+ // finished) walk and serves the prune-event hash lookup below.
154
+ sourceTips = await this.l2BlockSource.getL2Tips();
155
+ sourceCache.add(sourceTips.proposed);
156
+
84
157
  latestBlockNumber = BlockNumber(Math.min(latestBlockNumber, sourceTips.proposed.number)); // see #13471
85
158
  const hash = sourceCache.get(latestBlockNumber) ?? (await this.getBlockHashFromSource(latestBlockNumber));
86
159
  if (latestBlockNumber !== 0 && !hash) {
@@ -92,165 +165,50 @@ export class L2BlockStream {
92
165
  await this.emitEvent({
93
166
  type: 'chain-pruned',
94
167
  block: makeL2BlockId(latestBlockNumber, hash),
95
- checkpoint: sourceTips.checkpointed.checkpoint,
168
+ checkpointed: sourceTips.checkpointed,
169
+ proven: sourceTips.proven,
96
170
  });
171
+ pruned = true;
97
172
  }
98
173
 
99
- // If we are just starting, use the starting block number from the options.
100
- if (latestBlockNumber === 0 && this.opts.startingBlock !== undefined) {
101
- latestBlockNumber = BlockNumber(Math.max(this.opts.startingBlock - 1, 0));
102
- }
103
-
104
- // Only log this entry once (for sanity)
105
- if (!this.hasStarted) {
106
- this.log.verbose(`Starting sync from block number ${latestBlockNumber}`);
107
- this.hasStarted = true;
108
- }
109
-
110
- let nextBlockNumber = latestBlockNumber + 1;
111
- let nextCheckpointToEmit = CheckpointNumber(localTips.checkpointed.checkpoint.number + 1);
112
-
113
- // When startingBlock is set, also skip ahead for checkpoints.
114
- if (
115
- this.opts.startingBlock !== undefined &&
116
- this.opts.startingBlock >= 1 &&
117
- nextCheckpointToEmit <= sourceTips.checkpointed.checkpoint.number
118
- ) {
119
- const startingBlockCheckpoints = await this.l2BlockSource.getCheckpointedBlocks(
120
- BlockNumber(this.opts.startingBlock),
121
- 1,
122
- );
123
- if (startingBlockCheckpoints.length > 0) {
124
- nextCheckpointToEmit = CheckpointNumber(
125
- Math.max(nextCheckpointToEmit, startingBlockCheckpoints[0].checkpointNumber),
126
- );
127
- } else {
128
- // startingBlock is past all checkpointed blocks; skip Loop 1 entirely.
129
- nextCheckpointToEmit = CheckpointNumber(sourceTips.checkpointed.checkpoint.number + 1);
130
- }
131
- }
132
-
133
- if (this.opts.skipFinalized) {
134
- // When skipping finalized blocks we need to provide reliable reorg detection while fetching as few blocks as
135
- // possible. Finalized blocks cannot be reorged by definition, so we can skip most of them. We do need the very
136
- // last finalized block however in order to guarantee that we will eventually find a block in which our local
137
- // store matches the source.
138
- // If the last finalized block is behind our local tip, there is nothing to skip.
139
- nextBlockNumber = Math.max(sourceTips.finalized.block.number, nextBlockNumber);
140
- // If the next checkpoint to emit is behind the finalized tip then skip forward
141
- nextCheckpointToEmit = CheckpointNumber(Math.max(nextCheckpointToEmit, sourceTips.finalized.checkpoint.number));
142
- }
143
-
144
- // Loop 1: Emit checkpoint events for checkpoints whose blocks are already in local storage.
145
- // This handles the case where blocks were synced as uncheckpointed and later became checkpointed.
146
- // The guard `lastBlockInCheckpoint.number > localTips.proposed.number` ensures we don't emit
147
- // checkpoints for blocks we don't have (e.g., when startingBlock skips earlier blocks).
148
- // Since only one checkpoint can ever be uncheckpointed, this loop should iterate at most once.
149
- if (!this.opts.ignoreCheckpoints) {
150
- let loop1Iterations = 0;
151
- while (nextCheckpointToEmit <= sourceTips.checkpointed.checkpoint.number) {
152
- const checkpoints = await this.l2BlockSource.getCheckpoints(nextCheckpointToEmit, 1);
153
- if (checkpoints.length === 0) {
154
- break;
155
- }
156
- const lastBlockInCheckpoint = checkpoints[0].checkpoint.blocks.at(-1)!;
157
- // If this checkpoint has blocks we haven't seen yet, stop - they need to be fetched first
158
- if (lastBlockInCheckpoint.number > localTips.proposed.number) {
159
- break;
160
- }
161
- loop1Iterations++;
162
- if (loop1Iterations > 1) {
163
- this.log.warn(
164
- `Emitting multiple checkpoints (${loop1Iterations}) for already-local blocks. ` +
165
- `Next checkpoint: ${nextCheckpointToEmit}, source checkpointed: ${sourceTips.checkpointed.checkpoint.number}`,
166
- );
167
- }
168
- const lastBlockHash = await lastBlockInCheckpoint.hash();
169
- await this.emitEvent({
170
- type: 'chain-checkpointed',
171
- checkpoint: checkpoints[0],
172
- block: makeL2BlockId(lastBlockInCheckpoint.number, lastBlockHash.toString()),
173
- });
174
- nextCheckpointToEmit = CheckpointNumber(nextCheckpointToEmit + 1);
175
- }
176
- }
177
-
178
- // Loop 2: Fetch new checkpointed blocks. For each checkpoint, emit all blocks
179
- // from that checkpoint that we need, then emit the checkpoint event.
180
- // We prefetch multiple checkpoints, then process them one by one.
181
- let prefetchedCheckpoints: PublishedCheckpoint[] = [];
182
- let prefetchIdx = 0;
183
- let nextCheckpointNumber: CheckpointNumber | undefined;
184
-
185
- // Find the starting checkpoint number
186
- if (nextBlockNumber <= sourceTips.checkpointed.block.number) {
187
- const blocks = await this.l2BlockSource.getCheckpointedBlocks(BlockNumber(nextBlockNumber), 1);
188
- if (blocks.length > 0) {
189
- nextCheckpointNumber = blocks[0].checkpointNumber;
190
- }
174
+ // Pass atomicity: a prune mid-download leaves the source unable to serve the planned blocks, so the snapshot's
175
+ // tier tips may reference blocks the consumer never saw — skip tier reconciliation in that case. Tips-only mode
176
+ // has no download plan (the snapshot is one atomic getL2Tips read), so it always reconciles.
177
+ if (!this.opts.tipsOnly && !(await this.downloadBlocks(latestBlockNumber, sourceTips))) {
178
+ return;
191
179
  }
192
180
 
193
- while (nextBlockNumber <= sourceTips.checkpointed.block.number && nextCheckpointNumber !== undefined) {
194
- // Refill the prefetch buffer when exhausted
195
- if (prefetchIdx >= prefetchedCheckpoints.length) {
196
- const prefetchLimit = this.opts.checkpointPrefetchLimit ?? CHECKPOINT_PREFETCH_LIMIT;
197
- prefetchedCheckpoints = await this.l2BlockSource.getCheckpoints(nextCheckpointNumber, prefetchLimit);
198
- prefetchIdx = 0;
199
- if (prefetchedCheckpoints.length === 0) {
200
- break;
201
- }
202
- }
203
-
204
- const checkpoint = prefetchedCheckpoints[prefetchIdx]!;
205
-
206
- // Get all blocks from this checkpoint that we need, respecting batchSize
207
- const limit = Math.min(this.opts.batchSize ?? 50, sourceTips.checkpointed.block.number - nextBlockNumber + 1);
208
- const blocksForCheckpoint = checkpoint.checkpoint.blocks
209
- .filter(b => b.number >= nextBlockNumber)
210
- .slice(0, limit);
211
- if (blocksForCheckpoint.length === 0) {
212
- break;
213
- }
214
- await this.emitEvent({ type: 'blocks-added', blocks: blocksForCheckpoint });
215
- nextBlockNumber = blocksForCheckpoint.at(-1)!.number + 1;
216
-
217
- // If we've reached the end of this checkpoint, emit the checkpoint event and move to next
218
- const lastBlockInCheckpoint = checkpoint.checkpoint.blocks.at(-1)!;
219
- if (nextBlockNumber > lastBlockInCheckpoint.number) {
220
- if (!this.opts.ignoreCheckpoints) {
221
- const lastBlockHash = await lastBlockInCheckpoint.hash();
222
- await this.emitEvent({
223
- type: 'chain-checkpointed',
224
- checkpoint,
225
- block: makeL2BlockId(lastBlockInCheckpoint.number, lastBlockHash.toString()),
226
- });
227
- }
228
- prefetchIdx++;
229
- nextCheckpointNumber = CheckpointNumber(nextCheckpointNumber + 1);
230
- }
181
+ // End-of-pass reconciliation: chain-proposed fires against the pre-pass baseline (a post-prune re-read would
182
+ // equal the source tip and suppress it), then the tiers highest-to-lowest so the finalized <= proven <=
183
+ // checkpointed <= proposed invariant holds mid-pass.
184
+ if (this.blockTipDiffers(prePassProposed, sourceTips.proposed)) {
185
+ await this.emitEvent({ type: 'chain-proposed', block: sourceTips.proposed });
231
186
  }
232
187
 
233
- // Loop 3: Fetch any remaining uncheckpointed (proposed) blocks.
234
- while (nextBlockNumber <= sourceTips.proposed.number) {
235
- const limit = Math.min(this.opts.batchSize ?? 50, sourceTips.proposed.number - nextBlockNumber + 1);
236
- this.log.trace(`Requesting blocks from ${nextBlockNumber} limit ${limit}`);
237
- const blocks = await this.l2BlockSource.getBlocks(BlockNumber(nextBlockNumber), BlockNumber(limit));
238
- if (blocks.length === 0) {
239
- break;
240
- }
241
- await this.emitEvent({ type: 'blocks-added', blocks });
242
- nextBlockNumber = blocks.at(-1)!.number + 1;
188
+ const reconcileTips = pruned ? await this.localData.getL2Tips() : localTips;
189
+ if (!this.opts.ignoreCheckpoints && this.tipDiffers(reconcileTips.checkpointed?.block, sourceTips.checkpointed)) {
190
+ await this.emitEvent({
191
+ type: 'chain-checkpointed',
192
+ block: sourceTips.checkpointed.block,
193
+ checkpoint: sourceTips.checkpointed.checkpoint,
194
+ });
243
195
  }
244
-
245
- // Update the proven and finalized tips.
246
- if (localTips.proven !== undefined && sourceTips.proven.block.number !== localTips.proven.block.number) {
196
+ if (reconcileTips.proven !== undefined && this.tipDiffers(reconcileTips.proven.block, sourceTips.proven)) {
247
197
  await this.emitEvent({
248
198
  type: 'chain-proven',
249
199
  block: sourceTips.proven.block,
200
+ checkpoint: sourceTips.proven.checkpoint,
250
201
  });
251
202
  }
252
- if (localTips.finalized !== undefined && sourceTips.finalized.block.number !== localTips.finalized.block.number) {
253
- await this.emitEvent({ type: 'chain-finalized', block: sourceTips.finalized.block });
203
+ if (
204
+ reconcileTips.finalized !== undefined &&
205
+ this.tipDiffers(reconcileTips.finalized.block, sourceTips.finalized)
206
+ ) {
207
+ await this.emitEvent({
208
+ type: 'chain-finalized',
209
+ block: sourceTips.finalized.block,
210
+ checkpoint: sourceTips.finalized.checkpoint,
211
+ });
254
212
  }
255
213
  } catch (err: any) {
256
214
  if (err.name === 'AbortError') {
@@ -261,14 +219,113 @@ export class L2BlockStream {
261
219
  }
262
220
 
263
221
  /**
264
- * Returns whether the source and local agree on the block hash at a given height.
265
- * @param blockNumber - The block number to test.
266
- * @param args - A cache of data already requested from source, to avoid re-requesting it.
222
+ * Downloads every block from the post-prune cursor through the source's proposed tip, emitting `blocks-added`
223
+ * events. The return value gates tier-cursor advancement (pass atomicity): tier tips may only be reconciled when
224
+ * the plan that backs them ran to the proposed tip.
225
+ * @returns `true` if the plan completed (caught up, or delivered the proposed tip with a matching hash); `false` if
226
+ * the source no longer has a promised block, or served a fork at the proposed height mid-pass.
227
+ */
228
+ private async downloadBlocks(latestBlockNumber: BlockNumber, sourceTips: LocalL2Tips): Promise<boolean> {
229
+ // The post-prune cursor: the highest block number both sides agree on. Block downloads resume from here.
230
+ let nextBlockNumber = latestBlockNumber + 1;
231
+
232
+ // From a fresh local store, fast-forward past history the consumer doesn't care about.
233
+ const startingBlock = this.opts.startingBlock !== undefined ? BlockNumber(this.opts.startingBlock) : undefined;
234
+ if (latestBlockNumber === 0 && startingBlock !== undefined) {
235
+ nextBlockNumber = Math.max(startingBlock, 1);
236
+ }
237
+
238
+ if (this.opts.skipFinalized) {
239
+ // Finalized blocks cannot be reorged, so skip them — but keep the last finalized block as the guaranteed point
240
+ // where local and source agree, the floor the walk-back terminates against.
241
+ nextBlockNumber = Math.max(sourceTips.finalized.block.number, nextBlockNumber);
242
+ }
243
+
244
+ if (!this.hasStarted) {
245
+ this.log.verbose(`Starting sync from block number ${nextBlockNumber - 1}`);
246
+ this.hasStarted = true;
247
+ }
248
+
249
+ let lastDeliveredBlock: L2Block | undefined;
250
+
251
+ while (nextBlockNumber <= sourceTips.proposed.number) {
252
+ const limit = Math.min(this.opts.batchSize ?? 50, sourceTips.proposed.number - nextBlockNumber + 1);
253
+ this.log.trace(`Requesting blocks from ${nextBlockNumber} limit ${limit}`);
254
+ const blocks = await this.l2BlockSource.getBlocks({ from: BlockNumber(nextBlockNumber), limit });
255
+ if (blocks.length === 0) {
256
+ // The source no longer has a block the snapshot promised: the snapshot is provably stale, so report the plan
257
+ // incomplete and skip reconciliation this pass.
258
+ this.log.warn(`Block source returned no blocks for a promised range; skipping reconciliation this pass`, {
259
+ from: nextBlockNumber,
260
+ limit,
261
+ sourceProposed: sourceTips.proposed.number,
262
+ });
263
+ return false;
264
+ }
265
+ await this.emitEvent({ type: 'blocks-added', blocks });
266
+ lastDeliveredBlock = blocks.at(-1)!;
267
+ nextBlockNumber = lastDeliveredBlock.number + 1;
268
+ }
269
+
270
+ if (lastDeliveredBlock === undefined) {
271
+ // Loop never ran: caught up before the plan started, or startingBlock past the tip (A-1061). Trivially complete.
272
+ return true;
273
+ }
274
+
275
+ // Complete iff the block delivered at the proposed height carries the snapshot's proposed hash; a different hash
276
+ // means a same-height fork swap happened mid-pass, so the snapshot is stale.
277
+ const deliveredHash = (await lastDeliveredBlock.hash()).toString();
278
+ if (deliveredHash !== sourceTips.proposed.hash) {
279
+ this.log.warn(`Delivered proposed-block hash differs from snapshot; skipping reconciliation this pass`, {
280
+ blockNumber: lastDeliveredBlock.number,
281
+ deliveredHash,
282
+ snapshotHash: sourceTips.proposed.hash,
283
+ });
284
+ return false;
285
+ }
286
+ return true;
287
+ }
288
+
289
+ /**
290
+ * Returns whether the source tip differs from the local one and therefore warrants a tier event. Compares block
291
+ * number and, when both hashes are known, block hash. The hash comparison is skipped when the local hash is
292
+ * undefined or missing: world-state legitimately reports `undefined` hashes for tips ahead of its synced range,
293
+ * and comparing against an undefined hash would re-emit the event on every poll.
267
294
  */
268
- private async areBlockHashesEqualAt(blockNumber: BlockNumber, args: { sourceCache: BlockHashCache }) {
269
- if (blockNumber === 0) {
295
+ private tipDiffers(localBlock: LocalL2BlockId | undefined, sourceTip: L2TipId): boolean {
296
+ return this.blockTipDiffers(localBlock, sourceTip.block);
297
+ }
298
+
299
+ /**
300
+ * Block-only variant of {@link tipDiffers} for the proposed tip (an {@link L2BlockId}, with no checkpoint). Compares
301
+ * block number and, when the local hash is known, block hash. The hash comparison is skipped when the local hash is
302
+ * undefined: world-state reports `undefined` for its proposed hash, and a strict comparison would re-emit
303
+ * `chain-proposed` on every poll for it. ({@link L2TipsStoreBase} consumers always carry a hash, so the leniency is
304
+ * inert for them.)
305
+ */
306
+ private blockTipDiffers(localBlock: LocalL2BlockId | undefined, sourceBlock: L2BlockId): boolean {
307
+ if (localBlock === undefined) {
308
+ return true;
309
+ }
310
+ if (sourceBlock.number !== localBlock.number) {
270
311
  return true;
271
312
  }
313
+ if (localBlock.hash === undefined) {
314
+ return false;
315
+ }
316
+ return sourceBlock.hash !== localBlock.hash;
317
+ }
318
+
319
+ /**
320
+ * Returns whether the source and local agree on the block hash at a given height.
321
+ * @param blockNumber - The block number to test.
322
+ * @param args - A cache of data already requested from source (to avoid re-requesting it) and the source's
323
+ * advertised proposed tip from the pass snapshot (to detect an incoherent source).
324
+ */
325
+ private async areBlockHashesEqualAt(
326
+ blockNumber: BlockNumber,
327
+ args: { sourceCache: BlockHashCache; sourceProposed: BlockNumber },
328
+ ) {
272
329
  const localBlockHash = await this.localData.getL2BlockHash(blockNumber);
273
330
  if (!localBlockHash && this.opts.skipFinalized) {
274
331
  // Failing to find a block hash when skipping finalized blocks can be highly problematic as we'd potentially need
@@ -278,12 +335,28 @@ export class L2BlockStream {
278
335
  this.log.error(`No local block hash for block number ${blockNumber}`);
279
336
  throw new AbortError();
280
337
  }
338
+ if (!localBlockHash) {
339
+ // A missing local hash compares UNEQUAL: treating both-undefined as equal would stop the walk above the true
340
+ // divergence (an under-deep prune no later pass re-detects). Over-deep is the safe direction, and block 0 always
341
+ // resolves via the store's initialBlockHash so the walk always terminates.
342
+ this.log.trace(`No local block hash for block number ${blockNumber}; treating as unequal`);
343
+ return false;
344
+ }
281
345
 
282
346
  const sourceBlockHashFromCache = args.sourceCache.get(blockNumber);
283
347
  const sourceBlockHash = args.sourceCache.get(blockNumber) ?? (await this.getBlockHashFromSource(blockNumber));
284
348
  if (!sourceBlockHashFromCache && sourceBlockHash) {
285
349
  args.sourceCache.add({ number: blockNumber, hash: sourceBlockHash });
286
350
  }
351
+ if (!sourceBlockHash && blockNumber !== 0 && blockNumber <= args.sourceProposed) {
352
+ // No source data at or below the source's own proposed tip: the source contradicts itself (mid-reorg unwind or
353
+ // a transient read failure), so skip this pass.
354
+ this.log.warn(`Source has no data for a block at or below its proposed tip; skipping this sync pass`, {
355
+ blockNumber,
356
+ sourceProposed: args.sourceProposed,
357
+ });
358
+ throw new AbortError();
359
+ }
287
360
 
288
361
  this.log.trace(`Comparing block hashes for block ${blockNumber}`, { localBlockHash, sourceBlockHash });
289
362
  return localBlockHash === sourceBlockHash;
@@ -291,14 +364,20 @@ export class L2BlockStream {
291
364
 
292
365
  private getBlockHashFromSource(blockNumber: BlockNumber) {
293
366
  return this.l2BlockSource
294
- .getBlockHeader(blockNumber)
295
- .then(h => h?.hash())
367
+ .getBlockData({ number: blockNumber })
368
+ .then(d => d?.header.hash())
296
369
  .then(hash => hash?.toString());
297
370
  }
298
371
 
299
372
  private async emitEvent(event: L2BlockStreamEvent) {
300
373
  this.log.debug(
301
- `Emitting ${event.type} (${event.type === 'blocks-added' ? event.blocks.length : event.type === 'chain-checkpointed' ? event.checkpoint.checkpoint.number : event.block.number})`,
374
+ `Emitting ${event.type} (${
375
+ event.type === 'blocks-added'
376
+ ? event.blocks.length
377
+ : event.type === 'chain-checkpointed'
378
+ ? event.checkpoint.number
379
+ : event.block.number
380
+ })`,
302
381
  );
303
382
  await this.handler.handleBlockStreamEvent(event);
304
383
  if (!this.isRunning() && !this.isSyncing) {