@aztec/stdlib 0.0.1-commit.181e2d196 → 0.0.1-commit.189eedb3

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 (921) 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 +14 -4
  7. package/dest/abi/buffer.d.ts.map +1 -1
  8. package/dest/abi/buffer.js +25 -4
  9. package/dest/abi/contract_artifact.d.ts +1 -1
  10. package/dest/abi/contract_artifact.d.ts.map +1 -1
  11. package/dest/abi/contract_artifact.js +14 -7
  12. package/dest/abi/decoder.d.ts +6 -45
  13. package/dest/abi/decoder.d.ts.map +1 -1
  14. package/dest/abi/decoder.js +17 -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 +60 -7
  18. package/dest/abi/event_metadata_definition.d.ts +3 -1
  19. package/dest/abi/event_metadata_definition.d.ts.map +1 -1
  20. package/dest/abi/event_metadata_definition.js +1 -1
  21. package/dest/abi/event_selector.d.ts +4 -7
  22. package/dest/abi/event_selector.d.ts.map +1 -1
  23. package/dest/abi/function_call.d.ts +7 -25
  24. package/dest/abi/function_call.d.ts.map +1 -1
  25. package/dest/abi/function_selector.d.ts +3 -6
  26. package/dest/abi/function_selector.d.ts.map +1 -1
  27. package/dest/abi/function_selector.js +2 -4
  28. package/dest/abi/function_signature_decoder.d.ts +43 -0
  29. package/dest/abi/function_signature_decoder.d.ts.map +1 -0
  30. package/dest/abi/function_signature_decoder.js +66 -0
  31. package/dest/abi/index.d.ts +2 -1
  32. package/dest/abi/index.d.ts.map +1 -1
  33. package/dest/abi/index.js +1 -0
  34. package/dest/abi/note_selector.d.ts +4 -7
  35. package/dest/abi/note_selector.d.ts.map +1 -1
  36. package/dest/abi/note_selector.js +1 -3
  37. package/dest/abi/selector.d.ts +2 -2
  38. package/dest/abi/selector.d.ts.map +1 -1
  39. package/dest/abi/selector.js +1 -1
  40. package/dest/abi/utils.d.ts +14 -1
  41. package/dest/abi/utils.d.ts.map +1 -1
  42. package/dest/abi/utils.js +16 -1
  43. package/dest/auth_witness/auth_witness.d.ts +2 -2
  44. package/dest/auth_witness/auth_witness.d.ts.map +1 -1
  45. package/dest/avm/avm.d.ts +1756 -10463
  46. package/dest/avm/avm.d.ts.map +1 -1
  47. package/dest/avm/avm.js +6 -3
  48. package/dest/avm/avm_accumulated_data.d.ts +22 -86
  49. package/dest/avm/avm_accumulated_data.d.ts.map +1 -1
  50. package/dest/avm/avm_circuit_public_inputs.d.ts +180 -932
  51. package/dest/avm/avm_circuit_public_inputs.d.ts.map +1 -1
  52. package/dest/avm/avm_proving_request.d.ts +653 -5446
  53. package/dest/avm/avm_proving_request.d.ts.map +1 -1
  54. package/dest/avm/message_pack.js +12 -3
  55. package/dest/avm/public_data_write.d.ts +6 -12
  56. package/dest/avm/public_data_write.d.ts.map +1 -1
  57. package/dest/avm/revert_code.d.ts +5 -21
  58. package/dest/avm/revert_code.d.ts.map +1 -1
  59. package/dest/avm/revert_code.js +12 -30
  60. package/dest/aztec-address/index.d.ts +8 -8
  61. package/dest/aztec-address/index.d.ts.map +1 -1
  62. package/dest/aztec-address/index.js +9 -6
  63. package/dest/block/attestation_info.d.ts +3 -2
  64. package/dest/block/attestation_info.d.ts.map +1 -1
  65. package/dest/block/attestation_info.js +7 -5
  66. package/dest/block/block_data.d.ts +13 -38
  67. package/dest/block/block_data.d.ts.map +1 -1
  68. package/dest/block/block_data.js +2 -2
  69. package/dest/block/block_hash.d.ts +11 -10
  70. package/dest/block/block_hash.d.ts.map +1 -1
  71. package/dest/block/block_hash.js +10 -9
  72. package/dest/block/block_parameter.d.ts +37 -4
  73. package/dest/block/block_parameter.d.ts.map +1 -1
  74. package/dest/block/block_parameter.js +53 -2
  75. package/dest/block/in_block.d.ts +5 -24
  76. package/dest/block/in_block.d.ts.map +1 -1
  77. package/dest/block/index.d.ts +1 -2
  78. package/dest/block/index.d.ts.map +1 -1
  79. package/dest/block/index.js +0 -1
  80. package/dest/block/l2_block.d.ts +21 -41
  81. package/dest/block/l2_block.d.ts.map +1 -1
  82. package/dest/block/l2_block.js +12 -2
  83. package/dest/block/l2_block_info.d.ts +10 -29
  84. package/dest/block/l2_block_info.d.ts.map +1 -1
  85. package/dest/block/l2_block_info.js +6 -5
  86. package/dest/block/l2_block_source.d.ts +215 -356
  87. package/dest/block/l2_block_source.d.ts.map +1 -1
  88. package/dest/block/l2_block_source.js +67 -1
  89. package/dest/block/l2_block_stream/interfaces.d.ts +6 -3
  90. package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
  91. package/dest/block/l2_block_stream/l2_block_stream.d.ts +2 -2
  92. package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
  93. package/dest/block/l2_block_stream/l2_block_stream.js +44 -17
  94. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts +3 -1
  95. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts.map +1 -1
  96. package/dest/block/l2_block_stream/l2_tips_memory_store.js +3 -0
  97. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +4 -1
  98. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -1
  99. package/dest/block/l2_block_stream/l2_tips_store_base.js +43 -11
  100. package/dest/block/proposal/attestations_and_signers.d.ts +19 -30
  101. package/dest/block/proposal/attestations_and_signers.d.ts.map +1 -1
  102. package/dest/block/proposal/attestations_and_signers.js +26 -18
  103. package/dest/block/proposal/committee_attestation.d.ts +6 -12
  104. package/dest/block/proposal/committee_attestation.d.ts.map +1 -1
  105. package/dest/block/test/l2_tips_store_test_suite.d.ts +1 -1
  106. package/dest/block/test/l2_tips_store_test_suite.d.ts.map +1 -1
  107. package/dest/block/test/l2_tips_store_test_suite.js +5 -4
  108. package/dest/checkpoint/checkpoint.d.ts +31 -96
  109. package/dest/checkpoint/checkpoint.d.ts.map +1 -1
  110. package/dest/checkpoint/checkpoint.js +18 -5
  111. package/dest/checkpoint/checkpoint_data.d.ts +68 -91
  112. package/dest/checkpoint/checkpoint_data.d.ts.map +1 -1
  113. package/dest/checkpoint/checkpoint_data.js +12 -0
  114. package/dest/checkpoint/checkpoint_info.d.ts +7 -23
  115. package/dest/checkpoint/checkpoint_info.d.ts.map +1 -1
  116. package/dest/checkpoint/checkpoint_reexecution_tracker.d.ts +60 -0
  117. package/dest/checkpoint/checkpoint_reexecution_tracker.d.ts.map +1 -0
  118. package/dest/checkpoint/checkpoint_reexecution_tracker.js +108 -0
  119. package/dest/checkpoint/digest.d.ts +18 -0
  120. package/dest/checkpoint/digest.d.ts.map +1 -0
  121. package/dest/checkpoint/digest.js +12 -0
  122. package/dest/checkpoint/index.d.ts +5 -1
  123. package/dest/checkpoint/index.d.ts.map +1 -1
  124. package/dest/checkpoint/index.js +4 -0
  125. package/dest/checkpoint/previous_checkpoint_out_hashes.d.ts +33 -0
  126. package/dest/checkpoint/previous_checkpoint_out_hashes.d.ts.map +1 -0
  127. package/dest/checkpoint/previous_checkpoint_out_hashes.js +45 -0
  128. package/dest/checkpoint/published_checkpoint.d.ts +42 -194
  129. package/dest/checkpoint/published_checkpoint.d.ts.map +1 -1
  130. package/dest/checkpoint/validate.d.ts +36 -0
  131. package/dest/checkpoint/validate.d.ts.map +1 -0
  132. package/dest/checkpoint/validate.js +120 -0
  133. package/dest/config/chain-config.d.ts +4 -9
  134. package/dest/config/chain-config.d.ts.map +1 -1
  135. package/dest/config/chain-config.js +13 -12
  136. package/dest/config/sequencer-config.d.ts +4 -2
  137. package/dest/config/sequencer-config.d.ts.map +1 -1
  138. package/dest/config/sequencer-config.js +18 -5
  139. package/dest/contract/complete_address.d.ts +3 -2
  140. package/dest/contract/complete_address.d.ts.map +1 -1
  141. package/dest/contract/complete_address.js +6 -2
  142. package/dest/contract/contract_address.d.ts +6 -6
  143. package/dest/contract/contract_address.d.ts.map +1 -1
  144. package/dest/contract/contract_address.js +6 -5
  145. package/dest/contract/contract_class_id.d.ts +2 -2
  146. package/dest/contract/contract_class_id.js +2 -2
  147. package/dest/contract/contract_deployment_data.d.ts +15 -61
  148. package/dest/contract/contract_deployment_data.d.ts.map +1 -1
  149. package/dest/contract/contract_instance.d.ts +4 -2
  150. package/dest/contract/contract_instance.d.ts.map +1 -1
  151. package/dest/contract/contract_instance.js +10 -3
  152. package/dest/contract/index.d.ts +1 -3
  153. package/dest/contract/index.d.ts.map +1 -1
  154. package/dest/contract/index.js +0 -2
  155. package/dest/contract/interfaces/contract_class.d.ts +17 -241
  156. package/dest/contract/interfaces/contract_class.d.ts.map +1 -1
  157. package/dest/contract/interfaces/contract_class.js +1 -28
  158. package/dest/contract/interfaces/contract_instance.d.ts +41 -95
  159. package/dest/contract/interfaces/contract_instance.d.ts.map +1 -1
  160. package/dest/contract/interfaces/contract_instance.js +4 -2
  161. package/dest/contract/interfaces/contract_instance_update.d.ts +6 -26
  162. package/dest/contract/interfaces/contract_instance_update.d.ts.map +1 -1
  163. package/dest/contract/interfaces/protocol_contract_addresses.d.ts +2 -12
  164. package/dest/contract/interfaces/protocol_contract_addresses.d.ts.map +1 -1
  165. package/dest/contract/private_function.d.ts +1 -1
  166. package/dest/contract/private_function.d.ts.map +1 -1
  167. package/dest/contract/private_function.js +2 -4
  168. package/dest/database-version/database_version.d.ts +5 -11
  169. package/dest/database-version/database_version.d.ts.map +1 -1
  170. package/dest/database-version/version_manager.d.ts +6 -2
  171. package/dest/database-version/version_manager.d.ts.map +1 -1
  172. package/dest/database-version/version_manager.js +12 -1
  173. package/dest/epoch-helpers/index.d.ts +12 -20
  174. package/dest/epoch-helpers/index.d.ts.map +1 -1
  175. package/dest/epoch-helpers/index.js +16 -2
  176. package/dest/file-store/factory.d.ts +4 -3
  177. package/dest/file-store/factory.d.ts.map +1 -1
  178. package/dest/file-store/factory.js +2 -2
  179. package/dest/file-store/http.d.ts +9 -2
  180. package/dest/file-store/http.d.ts.map +1 -1
  181. package/dest/file-store/http.js +20 -9
  182. package/dest/file-store/index.d.ts +2 -1
  183. package/dest/file-store/index.d.ts.map +1 -1
  184. package/dest/gas/fee_math.d.ts +49 -0
  185. package/dest/gas/fee_math.d.ts.map +1 -0
  186. package/dest/gas/fee_math.js +80 -0
  187. package/dest/gas/gas.d.ts +9 -14
  188. package/dest/gas/gas.d.ts.map +1 -1
  189. package/dest/gas/gas.js +6 -3
  190. package/dest/gas/gas_fees.d.ts +13 -14
  191. package/dest/gas/gas_fees.d.ts.map +1 -1
  192. package/dest/gas/gas_fees.js +17 -4
  193. package/dest/gas/gas_settings.d.ts +66 -86
  194. package/dest/gas/gas_settings.d.ts.map +1 -1
  195. package/dest/gas/gas_settings.js +56 -9
  196. package/dest/gas/index.d.ts +2 -1
  197. package/dest/gas/index.d.ts.map +1 -1
  198. package/dest/gas/index.js +1 -0
  199. package/dest/ha-signing/config.d.ts +28 -57
  200. package/dest/ha-signing/config.d.ts.map +1 -1
  201. package/dest/ha-signing/config.js +24 -28
  202. package/dest/ha-signing/index.d.ts +4 -3
  203. package/dest/ha-signing/index.d.ts.map +1 -1
  204. package/dest/ha-signing/index.js +3 -2
  205. package/dest/ha-signing/local_config.d.ts +32 -0
  206. package/dest/ha-signing/local_config.d.ts.map +1 -0
  207. package/dest/ha-signing/local_config.js +24 -0
  208. package/dest/ha-signing/types.d.ts +37 -32
  209. package/dest/ha-signing/types.d.ts.map +1 -1
  210. package/dest/ha-signing/types.js +13 -6
  211. package/dest/hash/hash.d.ts +34 -1
  212. package/dest/hash/hash.d.ts.map +1 -1
  213. package/dest/hash/hash.js +63 -2
  214. package/dest/interfaces/allowed_element.d.ts +16 -16
  215. package/dest/interfaces/allowed_element.d.ts.map +1 -1
  216. package/dest/interfaces/allowed_element.js +8 -2
  217. package/dest/interfaces/api_limit.d.ts +1 -1
  218. package/dest/interfaces/api_limit.js +1 -1
  219. package/dest/interfaces/archiver.d.ts +22 -32
  220. package/dest/interfaces/archiver.d.ts.map +1 -1
  221. package/dest/interfaces/archiver.js +214 -69
  222. package/dest/interfaces/aztec-node-admin.d.ts +80 -258
  223. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  224. package/dest/interfaces/aztec-node-admin.js +59 -16
  225. package/dest/interfaces/aztec-node-debug.d.ts +21 -0
  226. package/dest/interfaces/aztec-node-debug.d.ts.map +1 -0
  227. package/dest/interfaces/aztec-node-debug.js +21 -0
  228. package/dest/interfaces/aztec-node.d.ts +114 -105
  229. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  230. package/dest/interfaces/aztec-node.js +311 -68
  231. package/dest/interfaces/block-builder.d.ts +40 -11
  232. package/dest/interfaces/block-builder.d.ts.map +1 -1
  233. package/dest/interfaces/block-builder.js +12 -5
  234. package/dest/interfaces/block_response.d.ts +90 -0
  235. package/dest/interfaces/block_response.d.ts.map +1 -0
  236. package/dest/interfaces/block_response.js +30 -0
  237. package/dest/interfaces/chain_tips.d.ts +50 -0
  238. package/dest/interfaces/chain_tips.d.ts.map +1 -0
  239. package/dest/interfaces/chain_tips.js +11 -0
  240. package/dest/interfaces/checkpoint_parameter.d.ts +14 -0
  241. package/dest/interfaces/checkpoint_parameter.d.ts.map +1 -0
  242. package/dest/interfaces/checkpoint_parameter.js +18 -0
  243. package/dest/interfaces/checkpoint_response.d.ts +122 -0
  244. package/dest/interfaces/checkpoint_response.d.ts.map +1 -0
  245. package/dest/interfaces/checkpoint_response.js +26 -0
  246. package/dest/interfaces/client.d.ts +8 -2
  247. package/dest/interfaces/client.d.ts.map +1 -1
  248. package/dest/interfaces/client.js +7 -1
  249. package/dest/interfaces/configs.d.ts +56 -105
  250. package/dest/interfaces/configs.d.ts.map +1 -1
  251. package/dest/interfaces/configs.js +12 -2
  252. package/dest/interfaces/l1_publish_info.d.ts +29 -0
  253. package/dest/interfaces/l1_publish_info.d.ts.map +1 -0
  254. package/dest/interfaces/l1_publish_info.js +26 -0
  255. package/dest/interfaces/l2_logs_source.d.ts +14 -34
  256. package/dest/interfaces/l2_logs_source.d.ts.map +1 -1
  257. package/dest/interfaces/l2_logs_source.js +5 -0
  258. package/dest/interfaces/merkle_tree_operations.d.ts +20 -23
  259. package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
  260. package/dest/interfaces/p2p-bootstrap.js +8 -2
  261. package/dest/interfaces/p2p.d.ts +15 -5
  262. package/dest/interfaces/p2p.d.ts.map +1 -1
  263. package/dest/interfaces/p2p.js +28 -5
  264. package/dest/interfaces/private_kernel_prover.d.ts +62 -2
  265. package/dest/interfaces/private_kernel_prover.d.ts.map +1 -1
  266. package/dest/interfaces/prover-agent.d.ts +5 -23
  267. package/dest/interfaces/prover-agent.d.ts.map +1 -1
  268. package/dest/interfaces/prover-agent.js +4 -1
  269. package/dest/interfaces/prover-client.d.ts +9 -25
  270. package/dest/interfaces/prover-client.d.ts.map +1 -1
  271. package/dest/interfaces/prover-client.js +7 -4
  272. package/dest/interfaces/prover-node.js +22 -8
  273. package/dest/interfaces/proving-job-source.js +24 -4
  274. package/dest/interfaces/proving-job.d.ts +742 -5793
  275. package/dest/interfaces/proving-job.d.ts.map +1 -1
  276. package/dest/interfaces/proving-job.js +1 -1
  277. package/dest/interfaces/public_storage_override.d.ts +22 -0
  278. package/dest/interfaces/public_storage_override.d.ts.map +1 -0
  279. package/dest/interfaces/public_storage_override.js +7 -0
  280. package/dest/interfaces/server.d.ts +6 -1
  281. package/dest/interfaces/server.d.ts.map +1 -1
  282. package/dest/interfaces/server.js +5 -0
  283. package/dest/interfaces/slasher.d.ts +25 -65
  284. package/dest/interfaces/slasher.d.ts.map +1 -1
  285. package/dest/interfaces/slasher.js +8 -4
  286. package/dest/interfaces/tx_provider.d.ts +6 -1
  287. package/dest/interfaces/tx_provider.d.ts.map +1 -1
  288. package/dest/interfaces/validator.d.ts +70 -191
  289. package/dest/interfaces/validator.d.ts.map +1 -1
  290. package/dest/interfaces/validator.js +12 -5
  291. package/dest/interfaces/world_state.d.ts +6 -5
  292. package/dest/interfaces/world_state.d.ts.map +1 -1
  293. package/dest/kernel/hints/key_validation_request.d.ts +12 -8
  294. package/dest/kernel/hints/key_validation_request.d.ts.map +1 -1
  295. package/dest/kernel/hints/key_validation_request.js +20 -18
  296. package/dest/kernel/index.d.ts +5 -1
  297. package/dest/kernel/index.d.ts.map +1 -1
  298. package/dest/kernel/index.js +4 -0
  299. package/dest/kernel/log_hash.d.ts +6 -2
  300. package/dest/kernel/log_hash.d.ts.map +1 -1
  301. package/dest/kernel/log_hash.js +21 -9
  302. package/dest/kernel/private_circuit_public_inputs.d.ts +2 -2
  303. package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
  304. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts +2 -2
  305. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts.map +1 -1
  306. package/dest/kernel/private_kernel_init_2_circuit_private_inputs.d.ts +23 -0
  307. package/dest/kernel/private_kernel_init_2_circuit_private_inputs.d.ts.map +1 -0
  308. package/dest/kernel/private_kernel_init_2_circuit_private_inputs.js +35 -0
  309. package/dest/kernel/private_kernel_init_3_circuit_private_inputs.d.ts +24 -0
  310. package/dest/kernel/private_kernel_init_3_circuit_private_inputs.d.ts.map +1 -0
  311. package/dest/kernel/private_kernel_init_3_circuit_private_inputs.js +37 -0
  312. package/dest/kernel/private_kernel_inner_2_circuit_private_inputs.d.ts +16 -0
  313. package/dest/kernel/private_kernel_inner_2_circuit_private_inputs.d.ts.map +1 -0
  314. package/dest/kernel/private_kernel_inner_2_circuit_private_inputs.js +23 -0
  315. package/dest/kernel/private_kernel_inner_3_circuit_private_inputs.d.ts +17 -0
  316. package/dest/kernel/private_kernel_inner_3_circuit_private_inputs.d.ts.map +1 -0
  317. package/dest/kernel/private_kernel_inner_3_circuit_private_inputs.js +25 -0
  318. package/dest/kernel/private_kernel_prover_output.d.ts +3 -29
  319. package/dest/kernel/private_kernel_prover_output.d.ts.map +1 -1
  320. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts +10 -6
  321. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts.map +1 -1
  322. package/dest/kernel/private_kernel_tail_circuit_public_inputs.js +26 -7
  323. package/dest/kernel/private_to_avm_accumulated_data.d.ts +25 -69
  324. package/dest/kernel/private_to_avm_accumulated_data.d.ts.map +1 -1
  325. package/dest/kernel/private_to_avm_accumulated_data.js +11 -5
  326. package/dest/kernel/private_to_public_accumulated_data.d.ts +4 -3
  327. package/dest/kernel/private_to_public_accumulated_data.d.ts.map +1 -1
  328. package/dest/kernel/private_to_public_accumulated_data.js +6 -3
  329. package/dest/kernel/private_to_public_kernel_circuit_public_inputs.d.ts +5 -4
  330. package/dest/kernel/private_to_public_kernel_circuit_public_inputs.d.ts.map +1 -1
  331. package/dest/kernel/private_to_public_kernel_circuit_public_inputs.js +7 -3
  332. package/dest/kernel/private_to_rollup_accumulated_data.d.ts +5 -4
  333. package/dest/kernel/private_to_rollup_accumulated_data.d.ts.map +1 -1
  334. package/dest/kernel/private_to_rollup_accumulated_data.js +6 -3
  335. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts +5 -4
  336. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts.map +1 -1
  337. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.js +7 -3
  338. package/dest/kernel/public_call_request.d.ts +15 -30
  339. package/dest/kernel/public_call_request.d.ts.map +1 -1
  340. package/dest/kernel/public_call_request.js +16 -7
  341. package/dest/keys/derivation.d.ts +6 -2
  342. package/dest/keys/derivation.d.ts.map +1 -1
  343. package/dest/keys/derivation.js +16 -6
  344. package/dest/keys/public_key.d.ts +22 -3
  345. package/dest/keys/public_key.d.ts.map +1 -1
  346. package/dest/keys/public_key.js +20 -1
  347. package/dest/keys/public_keys.d.ts +55 -82
  348. package/dest/keys/public_keys.d.ts.map +1 -1
  349. package/dest/keys/public_keys.js +102 -74
  350. package/dest/kv-store/config.d.ts +14 -0
  351. package/dest/kv-store/config.d.ts.map +1 -0
  352. package/dest/kv-store/config.js +21 -0
  353. package/dest/kv-store/index.d.ts +2 -0
  354. package/dest/kv-store/index.d.ts.map +1 -0
  355. package/dest/kv-store/index.js +1 -0
  356. package/dest/l1-contracts/index.d.ts +2 -2
  357. package/dest/l1-contracts/index.d.ts.map +1 -1
  358. package/dest/l1-contracts/index.js +1 -1
  359. package/dest/logs/app_tagging_secret.d.ts +46 -0
  360. package/dest/logs/app_tagging_secret.d.ts.map +1 -0
  361. package/dest/logs/app_tagging_secret.js +109 -0
  362. package/dest/logs/app_tagging_secret_kind.d.ts +7 -0
  363. package/dest/logs/app_tagging_secret_kind.d.ts.map +1 -0
  364. package/dest/logs/app_tagging_secret_kind.js +17 -0
  365. package/dest/logs/contract_class_log.d.ts +16 -34
  366. package/dest/logs/contract_class_log.d.ts.map +1 -1
  367. package/dest/logs/contract_class_log.js +11 -9
  368. package/dest/logs/index.d.ts +8 -7
  369. package/dest/logs/index.d.ts.map +1 -1
  370. package/dest/logs/index.js +7 -6
  371. package/dest/logs/log_cursor.d.ts +51 -0
  372. package/dest/logs/log_cursor.d.ts.map +1 -0
  373. package/dest/logs/log_cursor.js +82 -0
  374. package/dest/logs/log_result.d.ts +54 -0
  375. package/dest/logs/log_result.d.ts.map +1 -0
  376. package/dest/logs/log_result.js +56 -0
  377. package/dest/logs/logs_query.d.ts +82 -0
  378. package/dest/logs/logs_query.d.ts.map +1 -0
  379. package/dest/logs/logs_query.js +50 -0
  380. package/dest/logs/message_context.d.ts +6 -8
  381. package/dest/logs/message_context.d.ts.map +1 -1
  382. package/dest/logs/message_context.js +27 -9
  383. package/dest/logs/pending_tagged_log.d.ts +2 -3
  384. package/dest/logs/pending_tagged_log.d.ts.map +1 -1
  385. package/dest/logs/pending_tagged_log.js +2 -2
  386. package/dest/logs/pre_tag.d.ts +11 -24
  387. package/dest/logs/pre_tag.d.ts.map +1 -1
  388. package/dest/logs/pre_tag.js +2 -2
  389. package/dest/logs/private_log.d.ts +7 -12
  390. package/dest/logs/private_log.d.ts.map +1 -1
  391. package/dest/logs/private_log.js +6 -3
  392. package/dest/logs/public_log.d.ts +4 -3
  393. package/dest/logs/public_log.d.ts.map +1 -1
  394. package/dest/logs/public_log.js +2 -1
  395. package/dest/logs/query_all_logs_by_tags.d.ts +24 -0
  396. package/dest/logs/query_all_logs_by_tags.d.ts.map +1 -0
  397. package/dest/logs/query_all_logs_by_tags.js +64 -0
  398. package/dest/logs/shared_secret_derivation.d.ts +11 -10
  399. package/dest/logs/shared_secret_derivation.d.ts.map +1 -1
  400. package/dest/logs/shared_secret_derivation.js +15 -9
  401. package/dest/logs/siloed_tag.d.ts +8 -7
  402. package/dest/logs/siloed_tag.d.ts.map +1 -1
  403. package/dest/logs/siloed_tag.js +13 -3
  404. package/dest/logs/tag.d.ts +5 -6
  405. package/dest/logs/tag.d.ts.map +1 -1
  406. package/dest/logs/tag.js +4 -0
  407. package/dest/logs/tagging_index_range.d.ts +22 -0
  408. package/dest/logs/tagging_index_range.d.ts.map +1 -0
  409. package/dest/logs/tagging_index_range.js +8 -0
  410. package/dest/messaging/append_l1_to_l2_messages.d.ts +9 -0
  411. package/dest/messaging/append_l1_to_l2_messages.d.ts.map +1 -0
  412. package/dest/messaging/append_l1_to_l2_messages.js +12 -0
  413. package/dest/messaging/index.d.ts +2 -1
  414. package/dest/messaging/index.d.ts.map +1 -1
  415. package/dest/messaging/index.js +1 -0
  416. package/dest/messaging/l1_to_l2_message.d.ts +3 -2
  417. package/dest/messaging/l1_to_l2_message.d.ts.map +1 -1
  418. package/dest/messaging/l1_to_l2_message.js +11 -13
  419. package/dest/messaging/l1_to_l2_message_source.d.ts +4 -2
  420. package/dest/messaging/l1_to_l2_message_source.d.ts.map +1 -1
  421. package/dest/messaging/l2_to_l1_membership.d.ts +70 -7
  422. package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -1
  423. package/dest/messaging/l2_to_l1_membership.js +130 -27
  424. package/dest/messaging/l2_to_l1_message.d.ts +38 -112
  425. package/dest/messaging/l2_to_l1_message.d.ts.map +1 -1
  426. package/dest/messaging/l2_to_l1_message.js +21 -12
  427. package/dest/noir/index.d.ts +5 -3
  428. package/dest/noir/index.d.ts.map +1 -1
  429. package/dest/note/note.d.ts +2 -2
  430. package/dest/note/note.d.ts.map +1 -1
  431. package/dest/note/note_dao.d.ts +1 -1
  432. package/dest/note/note_dao.d.ts.map +1 -1
  433. package/dest/note/note_dao.js +1 -4
  434. package/dest/p2p/block_proposal.d.ts +31 -14
  435. package/dest/p2p/block_proposal.d.ts.map +1 -1
  436. package/dest/p2p/block_proposal.js +57 -39
  437. package/dest/p2p/checkpoint_attestation.d.ts +15 -9
  438. package/dest/p2p/checkpoint_attestation.d.ts.map +1 -1
  439. package/dest/p2p/checkpoint_attestation.js +23 -24
  440. package/dest/p2p/checkpoint_proposal.d.ts +35 -21
  441. package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
  442. package/dest/p2p/checkpoint_proposal.js +59 -61
  443. package/dest/p2p/consensus_payload.d.ts +26 -20
  444. package/dest/p2p/consensus_payload.d.ts.map +1 -1
  445. package/dest/p2p/consensus_payload.js +38 -19
  446. package/dest/p2p/gossipable.d.ts +4 -4
  447. package/dest/p2p/gossipable.d.ts.map +1 -1
  448. package/dest/p2p/peer_error.d.ts +3 -1
  449. package/dest/p2p/peer_error.d.ts.map +1 -1
  450. package/dest/p2p/peer_error.js +5 -0
  451. package/dest/p2p/signature_utils.d.ts +28 -19
  452. package/dest/p2p/signature_utils.d.ts.map +1 -1
  453. package/dest/p2p/signature_utils.js +118 -21
  454. package/dest/p2p/signed_txs.d.ts +15 -13
  455. package/dest/p2p/signed_txs.d.ts.map +1 -1
  456. package/dest/p2p/signed_txs.js +26 -24
  457. package/dest/parity/parity_base_private_inputs.d.ts +8 -4
  458. package/dest/parity/parity_base_private_inputs.d.ts.map +1 -1
  459. package/dest/parity/parity_base_private_inputs.js +7 -5
  460. package/dest/parity/parity_public_inputs.d.ts +8 -4
  461. package/dest/parity/parity_public_inputs.d.ts.map +1 -1
  462. package/dest/parity/parity_public_inputs.js +6 -3
  463. package/dest/parity/parity_root_private_inputs.d.ts +2 -2
  464. package/dest/parity/parity_root_private_inputs.d.ts.map +1 -1
  465. package/dest/proofs/chonk_proof.d.ts +57 -7
  466. package/dest/proofs/chonk_proof.d.ts.map +1 -1
  467. package/dest/proofs/chonk_proof.js +112 -15
  468. package/dest/proofs/recursive_proof.d.ts +2 -2
  469. package/dest/proofs/recursive_proof.d.ts.map +1 -1
  470. package/dest/rollup/block_headers_hash.d.ts +1 -1
  471. package/dest/rollup/block_headers_hash.d.ts.map +1 -1
  472. package/dest/rollup/block_headers_hash.js +8 -2
  473. package/dest/rollup/block_merge_rollup_private_inputs.d.ts +2 -2
  474. package/dest/rollup/block_merge_rollup_private_inputs.d.ts.map +1 -1
  475. package/dest/rollup/block_rollup_public_inputs.d.ts +12 -2
  476. package/dest/rollup/block_rollup_public_inputs.d.ts.map +1 -1
  477. package/dest/rollup/block_rollup_public_inputs.js +12 -0
  478. package/dest/rollup/block_root_rollup_private_inputs.d.ts +6 -6
  479. package/dest/rollup/block_root_rollup_private_inputs.d.ts.map +1 -1
  480. package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts +2 -2
  481. package/dest/rollup/checkpoint_merge_rollup_private_inputs.d.ts.map +1 -1
  482. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +9 -2
  483. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts.map +1 -1
  484. package/dest/rollup/checkpoint_rollup_public_inputs.js +9 -0
  485. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts +5 -5
  486. package/dest/rollup/checkpoint_root_rollup_private_inputs.d.ts.map +1 -1
  487. package/dest/rollup/private_tx_base_rollup_private_inputs.d.ts +2 -2
  488. package/dest/rollup/private_tx_base_rollup_private_inputs.d.ts.map +1 -1
  489. package/dest/rollup/public_chonk_verifier_private_inputs.d.ts +2 -2
  490. package/dest/rollup/public_chonk_verifier_private_inputs.d.ts.map +1 -1
  491. package/dest/rollup/public_chonk_verifier_public_inputs.d.ts +2 -2
  492. package/dest/rollup/public_chonk_verifier_public_inputs.d.ts.map +1 -1
  493. package/dest/rollup/public_tx_base_rollup_private_inputs.d.ts +2 -2
  494. package/dest/rollup/public_tx_base_rollup_private_inputs.d.ts.map +1 -1
  495. package/dest/rollup/root_rollup_private_inputs.d.ts +2 -2
  496. package/dest/rollup/root_rollup_private_inputs.d.ts.map +1 -1
  497. package/dest/rollup/root_rollup_public_inputs.d.ts +2 -2
  498. package/dest/rollup/root_rollup_public_inputs.d.ts.map +1 -1
  499. package/dest/rollup/tx_merge_rollup_private_inputs.d.ts +2 -2
  500. package/dest/rollup/tx_merge_rollup_private_inputs.d.ts.map +1 -1
  501. package/dest/rollup/tx_rollup_public_inputs.d.ts +2 -2
  502. package/dest/rollup/tx_rollup_public_inputs.d.ts.map +1 -1
  503. package/dest/schemas/schemas.d.ts +32 -78
  504. package/dest/schemas/schemas.d.ts.map +1 -1
  505. package/dest/schemas/schemas.js +2 -2
  506. package/dest/slashing/helpers.d.ts +2 -2
  507. package/dest/slashing/helpers.d.ts.map +1 -1
  508. package/dest/slashing/helpers.js +10 -7
  509. package/dest/slashing/index.d.ts +2 -3
  510. package/dest/slashing/index.d.ts.map +1 -1
  511. package/dest/slashing/index.js +1 -2
  512. package/dest/slashing/serialization.d.ts +2 -6
  513. package/dest/slashing/serialization.d.ts.map +1 -1
  514. package/dest/slashing/serialization.js +0 -60
  515. package/dest/slashing/types.d.ts +18 -112
  516. package/dest/slashing/types.d.ts.map +1 -1
  517. package/dest/slashing/types.js +16 -24
  518. package/dest/slashing/{tally.d.ts → votes.d.ts} +5 -6
  519. package/dest/slashing/votes.d.ts.map +1 -0
  520. package/dest/slashing/{tally.js → votes.js} +19 -10
  521. package/dest/snapshots/types.d.ts +15 -78
  522. package/dest/snapshots/types.d.ts.map +1 -1
  523. package/dest/stats/stats.d.ts +2 -2
  524. package/dest/stats/stats.d.ts.map +1 -1
  525. package/dest/tests/factories.d.ts +25 -32
  526. package/dest/tests/factories.d.ts.map +1 -1
  527. package/dest/tests/factories.js +82 -82
  528. package/dest/tests/mocks.d.ts +11 -6
  529. package/dest/tests/mocks.d.ts.map +1 -1
  530. package/dest/tests/mocks.js +55 -62
  531. package/dest/timetable/index.d.ts +48 -1
  532. package/dest/timetable/index.d.ts.map +1 -1
  533. package/dest/timetable/index.js +184 -14
  534. package/dest/trees/append_only_tree_snapshot.d.ts +9 -14
  535. package/dest/trees/append_only_tree_snapshot.d.ts.map +1 -1
  536. package/dest/trees/append_only_tree_snapshot.js +6 -3
  537. package/dest/trees/nullifier_leaf.d.ts +19 -42
  538. package/dest/trees/nullifier_leaf.d.ts.map +1 -1
  539. package/dest/trees/nullifier_leaf.js +3 -0
  540. package/dest/trees/nullifier_membership_witness.d.ts +16 -59
  541. package/dest/trees/nullifier_membership_witness.d.ts.map +1 -1
  542. package/dest/trees/nullifier_membership_witness.js +2 -14
  543. package/dest/trees/public_data_leaf.d.ts +21 -53
  544. package/dest/trees/public_data_leaf.d.ts.map +1 -1
  545. package/dest/trees/public_data_witness.d.ts +16 -58
  546. package/dest/trees/public_data_witness.d.ts.map +1 -1
  547. package/dest/tx/block_header.d.ts +7 -4
  548. package/dest/tx/block_header.d.ts.map +1 -1
  549. package/dest/tx/block_header.js +11 -4
  550. package/dest/tx/call_context.d.ts +4 -14
  551. package/dest/tx/call_context.d.ts.map +1 -1
  552. package/dest/tx/capsule.d.ts +7 -3
  553. package/dest/tx/capsule.d.ts.map +1 -1
  554. package/dest/tx/capsule.js +9 -3
  555. package/dest/tx/fee_provider.d.ts +10 -0
  556. package/dest/tx/fee_provider.d.ts.map +1 -0
  557. package/dest/tx/fee_provider.js +1 -0
  558. package/dest/tx/function_data.d.ts +4 -10
  559. package/dest/tx/function_data.d.ts.map +1 -1
  560. package/dest/tx/global_variable_builder.d.ts +3 -4
  561. package/dest/tx/global_variable_builder.d.ts.map +1 -1
  562. package/dest/tx/global_variables.d.ts +16 -49
  563. package/dest/tx/global_variables.d.ts.map +1 -1
  564. package/dest/tx/global_variables.js +8 -12
  565. package/dest/tx/hashed_values.d.ts +4 -3
  566. package/dest/tx/hashed_values.d.ts.map +1 -1
  567. package/dest/tx/hashed_values.js +6 -3
  568. package/dest/tx/in_tx.d.ts +5 -17
  569. package/dest/tx/in_tx.d.ts.map +1 -1
  570. package/dest/tx/index.d.ts +2 -1
  571. package/dest/tx/index.d.ts.map +1 -1
  572. package/dest/tx/index.js +1 -0
  573. package/dest/tx/indexed_tx_effect.d.ts +8 -19
  574. package/dest/tx/indexed_tx_effect.d.ts.map +1 -1
  575. package/dest/tx/indexed_tx_effect.js +9 -6
  576. package/dest/tx/partial_state_reference.d.ts +22 -65
  577. package/dest/tx/partial_state_reference.d.ts.map +1 -1
  578. package/dest/tx/partial_state_reference.js +6 -3
  579. package/dest/tx/private_execution_result.d.ts +11 -21
  580. package/dest/tx/private_execution_result.d.ts.map +1 -1
  581. package/dest/tx/private_execution_result.js +6 -6
  582. package/dest/tx/profiling.d.ts +67 -353
  583. package/dest/tx/profiling.d.ts.map +1 -1
  584. package/dest/tx/profiling.js +17 -7
  585. package/dest/tx/protocol_contracts.d.ts +5 -9
  586. package/dest/tx/protocol_contracts.d.ts.map +1 -1
  587. package/dest/tx/proven_tx.d.ts +30 -74
  588. package/dest/tx/proven_tx.d.ts.map +1 -1
  589. package/dest/tx/proven_tx.js +6 -0
  590. package/dest/tx/public_call_request_with_calldata.d.ts +4 -3
  591. package/dest/tx/public_call_request_with_calldata.d.ts.map +1 -1
  592. package/dest/tx/public_call_request_with_calldata.js +6 -3
  593. package/dest/tx/simulated_tx.d.ts +68 -1144
  594. package/dest/tx/simulated_tx.d.ts.map +1 -1
  595. package/dest/tx/simulated_tx.js +17 -12
  596. package/dest/tx/state_reference.d.ts +30 -117
  597. package/dest/tx/state_reference.d.ts.map +1 -1
  598. package/dest/tx/state_reference.js +6 -4
  599. package/dest/tx/tree_snapshots.d.ts +27 -84
  600. package/dest/tx/tree_snapshots.d.ts.map +1 -1
  601. package/dest/tx/tree_snapshots.js +6 -4
  602. package/dest/tx/tx.d.ts +19 -17
  603. package/dest/tx/tx.d.ts.map +1 -1
  604. package/dest/tx/tx.js +48 -29
  605. package/dest/tx/tx_constant_data.d.ts +4 -3
  606. package/dest/tx/tx_constant_data.d.ts.map +1 -1
  607. package/dest/tx/tx_constant_data.js +6 -3
  608. package/dest/tx/tx_context.d.ts +32 -131
  609. package/dest/tx/tx_context.d.ts.map +1 -1
  610. package/dest/tx/tx_context.js +6 -6
  611. package/dest/tx/tx_hash.d.ts +6 -4
  612. package/dest/tx/tx_hash.d.ts.map +1 -1
  613. package/dest/tx/tx_hash.js +13 -5
  614. package/dest/tx/tx_receipt.d.ts +145 -59
  615. package/dest/tx/tx_receipt.d.ts.map +1 -1
  616. package/dest/tx/tx_receipt.js +144 -58
  617. package/dest/tx/validator/error_texts.d.ts +8 -1
  618. package/dest/tx/validator/error_texts.d.ts.map +1 -1
  619. package/dest/tx/validator/error_texts.js +9 -0
  620. package/dest/tx/validator/tx_validator.d.ts +5 -27
  621. package/dest/tx/validator/tx_validator.d.ts.map +1 -1
  622. package/dest/tx/validator/tx_validator.js +0 -4
  623. package/dest/types/shared.d.ts +4 -12
  624. package/dest/types/shared.d.ts.map +1 -1
  625. package/dest/types/shared.js +6 -12
  626. package/dest/update-checker/dev_version.d.ts +3 -0
  627. package/dest/update-checker/dev_version.d.ts.map +1 -0
  628. package/dest/update-checker/dev_version.js +1 -0
  629. package/dest/update-checker/index.d.ts +4 -2
  630. package/dest/update-checker/index.d.ts.map +1 -1
  631. package/dest/update-checker/index.js +3 -1
  632. package/dest/update-checker/package_version.d.ts +6 -0
  633. package/dest/update-checker/package_version.d.ts.map +1 -0
  634. package/dest/update-checker/package_version.js +13 -0
  635. package/dest/update-checker/version_checker.d.ts +25 -0
  636. package/dest/update-checker/version_checker.d.ts.map +1 -0
  637. package/dest/update-checker/version_checker.js +50 -0
  638. package/dest/validators/errors.d.ts +6 -1
  639. package/dest/validators/errors.d.ts.map +1 -1
  640. package/dest/validators/errors.js +7 -0
  641. package/dest/validators/schemas.d.ts +147 -614
  642. package/dest/validators/schemas.d.ts.map +1 -1
  643. package/dest/validators/schemas.js +6 -4
  644. package/dest/validators/types.d.ts +20 -3
  645. package/dest/validators/types.d.ts.map +1 -1
  646. package/dest/versioning/versioning.d.ts +4 -2
  647. package/dest/versioning/versioning.d.ts.map +1 -1
  648. package/dest/versioning/versioning.js +5 -2
  649. package/dest/vks/verification_key.d.ts +4 -139
  650. package/dest/vks/verification_key.d.ts.map +1 -1
  651. package/dest/vks/verification_key.js +5 -126
  652. package/dest/world-state/genesis_data.d.ts +13 -0
  653. package/dest/world-state/genesis_data.d.ts.map +1 -0
  654. package/dest/world-state/genesis_data.js +7 -0
  655. package/dest/world-state/index.d.ts +2 -1
  656. package/dest/world-state/index.d.ts.map +1 -1
  657. package/dest/world-state/index.js +1 -0
  658. package/dest/world-state/world_state_revision.d.ts +11 -39
  659. package/dest/world-state/world_state_revision.d.ts.map +1 -1
  660. package/dest/world-state/world_state_revision.js +7 -21
  661. package/package.json +14 -12
  662. package/src/abi/abi.ts +78 -21
  663. package/src/abi/authorization_selector.ts +2 -8
  664. package/src/abi/buffer.ts +25 -4
  665. package/src/abi/contract_artifact.ts +11 -6
  666. package/src/abi/decoder.ts +36 -79
  667. package/src/abi/encoder.ts +83 -7
  668. package/src/abi/event_metadata_definition.ts +2 -0
  669. package/src/abi/event_selector.ts +2 -8
  670. package/src/abi/function_selector.ts +4 -13
  671. package/src/abi/function_signature_decoder.ts +77 -0
  672. package/src/abi/index.ts +1 -0
  673. package/src/abi/note_selector.ts +3 -12
  674. package/src/abi/selector.ts +1 -1
  675. package/src/abi/utils.ts +31 -4
  676. package/src/avm/avm.ts +5 -0
  677. package/src/avm/message_pack.ts +12 -3
  678. package/src/avm/revert_code.ts +19 -39
  679. package/src/aztec-address/index.ts +15 -12
  680. package/src/block/attestation_info.ts +11 -11
  681. package/src/block/block_data.ts +3 -4
  682. package/src/block/block_hash.ts +21 -14
  683. package/src/block/block_parameter.ts +72 -4
  684. package/src/block/index.ts +0 -1
  685. package/src/block/l2_block.ts +13 -1
  686. package/src/block/l2_block_info.ts +8 -6
  687. package/src/block/l2_block_source.ts +213 -144
  688. package/src/block/l2_block_stream/interfaces.ts +6 -2
  689. package/src/block/l2_block_stream/l2_block_stream.ts +39 -28
  690. package/src/block/l2_block_stream/l2_tips_memory_store.ts +5 -0
  691. package/src/block/l2_block_stream/l2_tips_store_base.ts +53 -19
  692. package/src/block/proposal/attestations_and_signers.ts +32 -17
  693. package/src/block/test/l2_tips_store_test_suite.ts +10 -3
  694. package/src/checkpoint/checkpoint.ts +23 -4
  695. package/src/checkpoint/checkpoint_data.ts +44 -4
  696. package/src/checkpoint/checkpoint_reexecution_tracker.ts +167 -0
  697. package/src/checkpoint/digest.ts +28 -0
  698. package/src/checkpoint/index.ts +4 -0
  699. package/src/checkpoint/previous_checkpoint_out_hashes.ts +61 -0
  700. package/src/checkpoint/validate.ts +230 -0
  701. package/src/config/chain-config.ts +13 -16
  702. package/src/config/sequencer-config.ts +34 -6
  703. package/src/contract/complete_address.ts +7 -3
  704. package/src/contract/contract_address.ts +7 -7
  705. package/src/contract/contract_class_id.ts +2 -2
  706. package/src/contract/contract_instance.ts +11 -2
  707. package/src/contract/index.ts +0 -2
  708. package/src/contract/interfaces/contract_class.ts +2 -82
  709. package/src/contract/interfaces/contract_instance.ts +6 -2
  710. package/src/contract/private_function.ts +3 -1
  711. package/src/database-version/version_manager.ts +17 -0
  712. package/src/epoch-helpers/index.ts +27 -0
  713. package/src/file-store/factory.ts +13 -4
  714. package/src/file-store/http.ts +29 -10
  715. package/src/file-store/index.ts +1 -0
  716. package/src/gas/README.md +154 -0
  717. package/src/gas/fee_math.ts +120 -0
  718. package/src/gas/gas.ts +8 -3
  719. package/src/gas/gas_fees.ts +26 -13
  720. package/src/gas/gas_settings.ts +73 -15
  721. package/src/gas/index.ts +1 -0
  722. package/src/ha-signing/config.ts +56 -53
  723. package/src/ha-signing/index.ts +12 -1
  724. package/src/ha-signing/local_config.ts +46 -0
  725. package/src/ha-signing/types.ts +48 -34
  726. package/src/hash/hash.ts +63 -2
  727. package/src/interfaces/allowed_element.ts +28 -4
  728. package/src/interfaces/api_limit.ts +1 -1
  729. package/src/interfaces/archiver.ts +89 -92
  730. package/src/interfaces/aztec-node-admin.ts +35 -20
  731. package/src/interfaces/aztec-node-debug.ts +40 -0
  732. package/src/interfaces/aztec-node.ts +313 -245
  733. package/src/interfaces/block-builder.ts +58 -13
  734. package/src/interfaces/block_response.ts +92 -0
  735. package/src/interfaces/chain_tips.ts +24 -0
  736. package/src/interfaces/checkpoint_parameter.ts +20 -0
  737. package/src/interfaces/checkpoint_response.ts +84 -0
  738. package/src/interfaces/client.ts +7 -1
  739. package/src/interfaces/configs.ts +54 -4
  740. package/src/interfaces/l1_publish_info.ts +40 -0
  741. package/src/interfaces/l2_logs_source.ts +13 -39
  742. package/src/interfaces/merkle_tree_operations.ts +20 -22
  743. package/src/interfaces/p2p-bootstrap.ts +2 -2
  744. package/src/interfaces/p2p.ts +35 -15
  745. package/src/interfaces/private_kernel_prover.ts +88 -0
  746. package/src/interfaces/prover-agent.ts +1 -1
  747. package/src/interfaces/prover-client.ts +10 -5
  748. package/src/interfaces/prover-node.ts +7 -7
  749. package/src/interfaces/proving-job-source.ts +4 -4
  750. package/src/interfaces/proving-job.ts +3 -3
  751. package/src/interfaces/public_storage_override.ts +26 -0
  752. package/src/interfaces/server.ts +5 -0
  753. package/src/interfaces/slasher.ts +17 -10
  754. package/src/interfaces/tx_provider.ts +6 -0
  755. package/src/interfaces/validator.ts +78 -38
  756. package/src/interfaces/world_state.ts +5 -4
  757. package/src/kernel/hints/key_validation_request.ts +18 -16
  758. package/src/kernel/index.ts +4 -0
  759. package/src/kernel/log_hash.ts +29 -9
  760. package/src/kernel/private_kernel_init_2_circuit_private_inputs.ts +49 -0
  761. package/src/kernel/private_kernel_init_3_circuit_private_inputs.ts +52 -0
  762. package/src/kernel/private_kernel_inner_2_circuit_private_inputs.ts +29 -0
  763. package/src/kernel/private_kernel_inner_3_circuit_private_inputs.ts +31 -0
  764. package/src/kernel/private_kernel_tail_circuit_public_inputs.ts +38 -14
  765. package/src/kernel/private_to_avm_accumulated_data.ts +16 -5
  766. package/src/kernel/private_to_public_accumulated_data.ts +9 -3
  767. package/src/kernel/private_to_public_kernel_circuit_public_inputs.ts +10 -4
  768. package/src/kernel/private_to_rollup_accumulated_data.ts +8 -3
  769. package/src/kernel/private_to_rollup_kernel_circuit_public_inputs.ts +9 -9
  770. package/src/kernel/public_call_request.ts +22 -7
  771. package/src/keys/derivation.ts +21 -9
  772. package/src/keys/public_key.ts +26 -2
  773. package/src/keys/public_keys.ts +124 -110
  774. package/src/kv-store/config.ts +29 -0
  775. package/src/kv-store/index.ts +1 -0
  776. package/src/l1-contracts/index.ts +1 -1
  777. package/src/logs/app_tagging_secret.ts +137 -0
  778. package/src/logs/app_tagging_secret_kind.ts +21 -0
  779. package/src/logs/contract_class_log.ts +15 -5
  780. package/src/logs/index.ts +7 -6
  781. package/src/logs/log_cursor.ts +110 -0
  782. package/src/logs/log_result.ts +104 -0
  783. package/src/logs/logs_query.ts +138 -0
  784. package/src/logs/message_context.ts +22 -8
  785. package/src/logs/pending_tagged_log.ts +1 -3
  786. package/src/logs/pre_tag.ts +3 -6
  787. package/src/logs/private_log.ts +9 -3
  788. package/src/logs/public_log.ts +4 -2
  789. package/src/logs/query_all_logs_by_tags.ts +98 -0
  790. package/src/logs/shared_secret_derivation.ts +21 -10
  791. package/src/logs/siloed_tag.ts +20 -11
  792. package/src/logs/tag.ts +8 -8
  793. package/src/logs/tagging_index_range.ts +18 -0
  794. package/src/messaging/append_l1_to_l2_messages.ts +21 -0
  795. package/src/messaging/index.ts +1 -0
  796. package/src/messaging/l1_to_l2_message.ts +12 -9
  797. package/src/messaging/l1_to_l2_message_source.ts +3 -1
  798. package/src/messaging/l2_to_l1_membership.ts +189 -35
  799. package/src/messaging/l2_to_l1_message.ts +29 -9
  800. package/src/noir/index.ts +4 -2
  801. package/src/note/note_dao.ts +1 -4
  802. package/src/p2p/block_proposal.ts +111 -36
  803. package/src/p2p/checkpoint_attestation.ts +27 -31
  804. package/src/p2p/checkpoint_proposal.ts +126 -85
  805. package/src/p2p/consensus_payload.ts +59 -28
  806. package/src/p2p/gossipable.ts +4 -4
  807. package/src/p2p/peer_error.ts +7 -0
  808. package/src/p2p/signature_utils.ts +110 -25
  809. package/src/p2p/signed_txs.ts +46 -28
  810. package/src/parity/parity_base_private_inputs.ts +10 -4
  811. package/src/parity/parity_public_inputs.ts +9 -2
  812. package/src/proofs/chonk_proof.ts +132 -12
  813. package/src/rollup/block_headers_hash.ts +11 -2
  814. package/src/rollup/block_rollup_public_inputs.ts +13 -0
  815. package/src/rollup/checkpoint_rollup_public_inputs.ts +10 -0
  816. package/src/schemas/schemas.ts +6 -1
  817. package/src/slashing/helpers.ts +13 -9
  818. package/src/slashing/index.ts +1 -2
  819. package/src/slashing/serialization.ts +1 -81
  820. package/src/slashing/types.ts +24 -49
  821. package/src/slashing/{tally.ts → votes.ts} +22 -4
  822. package/src/stats/stats.ts +4 -0
  823. package/src/tests/factories.ts +103 -111
  824. package/src/tests/mocks.ts +83 -76
  825. package/src/timetable/index.ts +251 -13
  826. package/src/trees/append_only_tree_snapshot.ts +8 -3
  827. package/src/trees/nullifier_leaf.ts +4 -0
  828. package/src/trees/nullifier_membership_witness.ts +2 -12
  829. package/src/tx/block_header.ts +16 -5
  830. package/src/tx/capsule.ts +10 -2
  831. package/src/tx/fee_provider.ts +10 -0
  832. package/src/tx/global_variable_builder.ts +2 -3
  833. package/src/tx/global_variables.ts +10 -18
  834. package/src/tx/hashed_values.ts +8 -3
  835. package/src/tx/index.ts +1 -0
  836. package/src/tx/indexed_tx_effect.ts +18 -6
  837. package/src/tx/partial_state_reference.ts +8 -3
  838. package/src/tx/private_execution_result.ts +5 -5
  839. package/src/tx/profiling.ts +15 -6
  840. package/src/tx/proven_tx.ts +6 -0
  841. package/src/tx/public_call_request_with_calldata.ts +8 -3
  842. package/src/tx/simulated_tx.ts +30 -22
  843. package/src/tx/state_reference.ts +9 -4
  844. package/src/tx/tree_snapshots.ts +9 -4
  845. package/src/tx/tx.ts +63 -35
  846. package/src/tx/tx_constant_data.ts +8 -3
  847. package/src/tx/tx_context.ts +8 -3
  848. package/src/tx/tx_hash.ts +20 -5
  849. package/src/tx/tx_receipt.ts +267 -82
  850. package/src/tx/validator/error_texts.ts +11 -0
  851. package/src/tx/validator/tx_validator.ts +1 -5
  852. package/src/types/shared.ts +8 -13
  853. package/src/update-checker/dev_version.ts +2 -0
  854. package/src/update-checker/index.ts +3 -1
  855. package/src/update-checker/package_version.ts +17 -0
  856. package/src/update-checker/version_checker.ts +65 -0
  857. package/src/validators/errors.ts +9 -0
  858. package/src/validators/schemas.ts +6 -4
  859. package/src/validators/types.ts +21 -2
  860. package/src/versioning/versioning.ts +5 -2
  861. package/src/vks/verification_key.ts +5 -184
  862. package/src/world-state/genesis_data.ts +27 -0
  863. package/src/world-state/index.ts +1 -0
  864. package/src/world-state/world_state_revision.ts +9 -34
  865. package/dest/abi/mocked_keys.d.ts +0 -2
  866. package/dest/abi/mocked_keys.d.ts.map +0 -1
  867. package/dest/abi/mocked_keys.js +0 -1
  868. package/dest/block/checkpointed_l2_block.d.ts +0 -150
  869. package/dest/block/checkpointed_l2_block.d.ts.map +0 -1
  870. package/dest/block/checkpointed_l2_block.js +0 -46
  871. package/dest/contract/private_function_membership_proof.d.ts +0 -32
  872. package/dest/contract/private_function_membership_proof.d.ts.map +0 -1
  873. package/dest/contract/private_function_membership_proof.js +0 -124
  874. package/dest/contract/utility_function_membership_proof.d.ts +0 -27
  875. package/dest/contract/utility_function_membership_proof.d.ts.map +0 -1
  876. package/dest/contract/utility_function_membership_proof.js +0 -87
  877. package/dest/interfaces/get_logs_response.d.ts +0 -97
  878. package/dest/interfaces/get_logs_response.d.ts.map +0 -1
  879. package/dest/interfaces/get_logs_response.js +0 -12
  880. package/dest/l1-contracts/slash_factory.d.ts +0 -45
  881. package/dest/l1-contracts/slash_factory.d.ts.map +0 -1
  882. package/dest/l1-contracts/slash_factory.js +0 -158
  883. package/dest/logs/extended_contract_class_log.d.ts +0 -51
  884. package/dest/logs/extended_contract_class_log.d.ts.map +0 -1
  885. package/dest/logs/extended_contract_class_log.js +0 -67
  886. package/dest/logs/extended_directional_app_tagging_secret.d.ts +0 -47
  887. package/dest/logs/extended_directional_app_tagging_secret.d.ts.map +0 -1
  888. package/dest/logs/extended_directional_app_tagging_secret.js +0 -72
  889. package/dest/logs/extended_public_log.d.ts +0 -106
  890. package/dest/logs/extended_public_log.d.ts.map +0 -1
  891. package/dest/logs/extended_public_log.js +0 -73
  892. package/dest/logs/log_filter.d.ts +0 -22
  893. package/dest/logs/log_filter.d.ts.map +0 -1
  894. package/dest/logs/log_filter.js +0 -11
  895. package/dest/logs/log_id.d.ts +0 -85
  896. package/dest/logs/log_id.d.ts.map +0 -1
  897. package/dest/logs/log_id.js +0 -94
  898. package/dest/logs/tx_scoped_l2_log.d.ts +0 -49
  899. package/dest/logs/tx_scoped_l2_log.d.ts.map +0 -1
  900. package/dest/logs/tx_scoped_l2_log.js +0 -70
  901. package/dest/slashing/empire.d.ts +0 -31
  902. package/dest/slashing/empire.d.ts.map +0 -1
  903. package/dest/slashing/empire.js +0 -87
  904. package/dest/slashing/tally.d.ts.map +0 -1
  905. package/dest/update-checker/update-checker.d.ts +0 -49
  906. package/dest/update-checker/update-checker.d.ts.map +0 -1
  907. package/dest/update-checker/update-checker.js +0 -130
  908. package/src/abi/mocked_keys.ts +0 -2
  909. package/src/block/checkpointed_l2_block.ts +0 -70
  910. package/src/contract/private_function_membership_proof.ts +0 -167
  911. package/src/contract/utility_function_membership_proof.ts +0 -118
  912. package/src/interfaces/get_logs_response.ts +0 -35
  913. package/src/l1-contracts/slash_factory.ts +0 -180
  914. package/src/logs/extended_contract_class_log.ts +0 -87
  915. package/src/logs/extended_directional_app_tagging_secret.ts +0 -87
  916. package/src/logs/extended_public_log.ts +0 -94
  917. package/src/logs/log_filter.ts +0 -31
  918. package/src/logs/log_id.ts +0 -125
  919. package/src/logs/tx_scoped_l2_log.ts +0 -98
  920. package/src/slashing/empire.ts +0 -104
  921. package/src/update-checker/update-checker.ts +0 -166
@@ -14,8 +14,11 @@ import { padArrayEnd, times } from '@aztec/foundation/collection';
14
14
  import { randomBytes } from '@aztec/foundation/crypto/random';
15
15
  import { Secp256k1Signer } from '@aztec/foundation/crypto/secp256k1-signer';
16
16
  import { Fr } from '@aztec/foundation/curves/bn254';
17
+ import { EthAddress } from '@aztec/foundation/eth-address';
17
18
  import { Signature } from '@aztec/foundation/eth-signature';
18
19
 
20
+ import { type TypedDataDefinition, hashTypedData } from 'viem';
21
+
19
22
  import type { ContractArtifact } from '../abi/abi.js';
20
23
  import { PublicTxEffect } from '../avm/avm.js';
21
24
  import type { AvmAccumulatedData } from '../avm/avm_accumulated_data.js';
@@ -23,10 +26,9 @@ import { AvmCircuitPublicInputs } from '../avm/avm_circuit_public_inputs.js';
23
26
  import { PublicDataWrite } from '../avm/public_data_write.js';
24
27
  import { RevertCode } from '../avm/revert_code.js';
25
28
  import { AztecAddress } from '../aztec-address/index.js';
26
- import { CheckpointedL2Block, CommitteeAttestation, L2Block } from '../block/index.js';
29
+ import { L2Block } from '../block/index.js';
27
30
  import type { CommitteeAttestationsAndSigners } from '../block/proposal/attestations_and_signers.js';
28
31
  import { Checkpoint } from '../checkpoint/checkpoint.js';
29
- import { L1PublishedData } from '../checkpoint/published_checkpoint.js';
30
32
  import { computeContractAddressFromInstance } from '../contract/contract_address.js';
31
33
  import { getContractClassFromArtifact } from '../contract/contract_class.js';
32
34
  import { SerializableContractInstance } from '../contract/contract_instance.js';
@@ -51,7 +53,7 @@ import { BlockProposal } from '../p2p/block_proposal.js';
51
53
  import { CheckpointAttestation } from '../p2p/checkpoint_attestation.js';
52
54
  import { CheckpointProposal } from '../p2p/checkpoint_proposal.js';
53
55
  import { ConsensusPayload } from '../p2p/consensus_payload.js';
54
- import { SignatureDomainSeparator, getHashedSignaturePayloadEthSignedMessage } from '../p2p/signature_utils.js';
56
+ import { type CoordinationSignatureContext, getHashedSignaturePayloadTypedData } from '../p2p/signature_utils.js';
55
57
  import { ChonkProof } from '../proofs/chonk_proof.js';
56
58
  import { ProvingRequestType } from '../proofs/proving_request_type.js';
57
59
  import { CheckpointHeader } from '../rollup/checkpoint_header.js';
@@ -72,6 +74,7 @@ import { NestedProcessReturnValues, PublicSimulationOutput } from '../tx/public_
72
74
  import { TxSimulationResult } from '../tx/simulated_tx.js';
73
75
  import { TxEffect } from '../tx/tx_effect.js';
74
76
  import { TxHash } from '../tx/tx_hash.js';
77
+ import { DEV_VERSION } from '../update-checker/dev_version.js';
75
78
  import {
76
79
  makeAvmCircuitInputs,
77
80
  makeAztecAddress,
@@ -86,6 +89,15 @@ import {
86
89
  makePublicDataWrite,
87
90
  } from './factories.js';
88
91
 
92
+ export const TEST_COORDINATION_SIGNATURE_CONTEXT: CoordinationSignatureContext = {
93
+ chainId: 31337,
94
+ rollupAddress: EthAddress.fromNumber(1),
95
+ };
96
+
97
+ function signTypedData(signer: Secp256k1Signer, typedData: TypedDataDefinition): Signature {
98
+ return signer.sign(Buffer32.fromString(hashTypedData(typedData)));
99
+ }
100
+
89
101
  export const randomTxHash = (): TxHash => TxHash.random();
90
102
 
91
103
  export const mockTx = async (
@@ -98,6 +110,7 @@ export const mockTx = async (
98
110
  publicCalldataSize = 2,
99
111
  feePayer,
100
112
  chonkProof = ChonkProof.random(),
113
+ gasLimits,
101
114
  maxFeesPerGas = new GasFees(10, 10),
102
115
  maxPriorityFeesPerGas,
103
116
  gasUsed = Gas.empty(),
@@ -114,6 +127,7 @@ export const mockTx = async (
114
127
  publicCalldataSize?: number;
115
128
  feePayer?: AztecAddress;
116
129
  chonkProof?: ChonkProof;
130
+ gasLimits?: Gas;
117
131
  maxFeesPerGas?: GasFees;
118
132
  maxPriorityFeesPerGas?: GasFees;
119
133
  gasUsed?: Gas;
@@ -132,7 +146,7 @@ export const mockTx = async (
132
146
  const data = PrivateKernelTailCircuitPublicInputs.empty();
133
147
  const firstNullifier = new Nullifier(new Fr(seed + 1), Fr.ZERO, 0);
134
148
  data.constants.anchorBlockHeader = anchorBlockHeader;
135
- data.constants.txContext.gasSettings = GasSettings.default({ maxFeesPerGas, maxPriorityFeesPerGas });
149
+ data.constants.txContext.gasSettings = GasSettings.fallback({ gasLimits, maxFeesPerGas, maxPriorityFeesPerGas });
136
150
  data.feePayer = feePayer ?? (await AztecAddress.random());
137
151
  data.gasUsed = gasUsed;
138
152
  data.constants.txContext.chainId = chainId;
@@ -198,7 +212,7 @@ export async function mockProcessedTx({
198
212
  db,
199
213
  chainId = Fr.ZERO,
200
214
  version = Fr.ZERO,
201
- gasSettings = GasSettings.default({ maxFeesPerGas: new GasFees(10, 10) }),
215
+ gasSettings = GasSettings.fallback({ maxFeesPerGas: new GasFees(10, 10) }),
202
216
  vkTreeRoot = Fr.ZERO,
203
217
  protocolContracts = makeProtocolContracts(seed + 0x100),
204
218
  globalVariables = GlobalVariables.empty(),
@@ -425,10 +439,13 @@ export async function mockCheckpointAndMessages(
425
439
  Partial<Parameters<typeof L2Block.random>[1]> = {},
426
440
  ) {
427
441
  const slotNumber = options.slotNumber ?? SlotNumber(Number(checkpointNumber) * 10);
442
+ const globals = GlobalVariables.random({ slotNumber, ...options });
428
443
  const blocksAndMessages = [];
444
+
429
445
  // Track the previous block's archive to ensure consecutive blocks have consistent archive roots.
430
446
  // The current block's header.lastArchive must equal the previous block's archive.
431
447
  let lastArchive: AppendOnlyTreeSnapshot | undefined = previousArchive;
448
+
432
449
  // Pass maxEffects via txOptions so it reaches TxEffect.random
433
450
  const txOptions = maxEffects !== undefined ? { maxEffects } : {};
434
451
  for (let i = 0; i < (blocks?.length ?? numBlocks); i++) {
@@ -437,11 +454,11 @@ export async function mockCheckpointAndMessages(
437
454
  block:
438
455
  blocks?.[i] ??
439
456
  (await L2Block.random(blockNumber, {
457
+ ...globals,
440
458
  checkpointNumber,
441
459
  indexWithinCheckpoint: IndexWithinCheckpoint(i),
442
460
  txsPerBlock: numTxsPerBlock,
443
461
  txOptions,
444
- slotNumber,
445
462
  ...options,
446
463
  ...makeBlockOptions(blockNumber),
447
464
  ...(lastArchive ? { lastArchive } : {}),
@@ -455,12 +472,18 @@ export async function mockCheckpointAndMessages(
455
472
 
456
473
  const messages = blocksAndMessages[0].messages;
457
474
  const inHash = computeInHashFromL1ToL2Messages(messages);
458
- const checkpoint = await Checkpoint.random(checkpointNumber, { numBlocks: 0, slotNumber, inHash, ...options });
475
+ const firstBlockLastArchive = blocksAndMessages[0].block.header.lastArchive;
476
+ const checkpoint = await Checkpoint.random(checkpointNumber, {
477
+ numBlocks: 0,
478
+ inHash,
479
+ ...options,
480
+ ...globals,
481
+ lastArchive: firstBlockLastArchive,
482
+ lastArchiveRoot: firstBlockLastArchive.root,
483
+ archive: lastArchive,
484
+ });
485
+
459
486
  checkpoint.blocks = blocksAndMessages.map(({ block }) => block);
460
- // Set the checkpoint's archive to match the last block's archive for proper chaining.
461
- // When the archiver reconstructs checkpoints from L1, it uses the checkpoint's archive root
462
- // from the L1 event to set the last block's archive. Without this, the archive chain breaks.
463
- checkpoint.archive = lastArchive!;
464
487
 
465
488
  // Return lastArchive so callers can chain it across multiple checkpoints
466
489
  return { checkpoint, messages, lastArchive };
@@ -468,6 +491,7 @@ export async function mockCheckpointAndMessages(
468
491
 
469
492
  export const randomContractArtifact = (): ContractArtifact => ({
470
493
  name: randomBytes(4).toString('hex'),
494
+ aztecVersion: DEV_VERSION,
471
495
  functions: [],
472
496
  nonDispatchPublicFunctions: [],
473
497
  outputs: {
@@ -508,6 +532,7 @@ export interface MakeConsensusPayloadOptions {
508
532
  txHashes?: TxHash[];
509
533
  txs?: Tx[];
510
534
  feeAssetPriceModifier?: bigint;
535
+ signatureContext?: CoordinationSignatureContext;
511
536
  }
512
537
 
513
538
  export interface MakeBlockProposalOptions {
@@ -518,6 +543,7 @@ export interface MakeBlockProposalOptions {
518
543
  archiveRoot?: Fr;
519
544
  txHashes?: TxHash[];
520
545
  txs?: Tx[];
546
+ signatureContext?: CoordinationSignatureContext;
521
547
  }
522
548
 
523
549
  export interface MakeCheckpointProposalOptions {
@@ -525,6 +551,7 @@ export interface MakeCheckpointProposalOptions {
525
551
  checkpointHeader?: CheckpointHeader;
526
552
  archiveRoot?: Fr;
527
553
  feeAssetPriceModifier?: bigint;
554
+ signatureContext?: CoordinationSignatureContext;
528
555
  /** Options for the lastBlock - if undefined, no lastBlock is included */
529
556
  lastBlock?: {
530
557
  blockHeader?: BlockHeader;
@@ -535,10 +562,7 @@ export interface MakeCheckpointProposalOptions {
535
562
  }
536
563
 
537
564
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
538
- const makeAndSignConsensusPayload = (
539
- domainSeparator: SignatureDomainSeparator,
540
- options?: MakeConsensusPayloadOptions,
541
- ) => {
565
+ const makeAndSignConsensusPayload = (options?: MakeConsensusPayloadOptions) => {
542
566
  const header = options?.header ?? makeCheckpointHeader(1);
543
567
  const { signer = Secp256k1Signer.random(), archive = Fr.random(), feeAssetPriceModifier = 0n } = options ?? {};
544
568
 
@@ -546,9 +570,10 @@ const makeAndSignConsensusPayload = (
546
570
  header,
547
571
  archive,
548
572
  feeAssetPriceModifier,
573
+ signatureContext: TEST_COORDINATION_SIGNATURE_CONTEXT,
549
574
  });
550
575
 
551
- const hash = getHashedSignaturePayloadEthSignedMessage(payload, domainSeparator);
576
+ const hash = getHashedSignaturePayloadTypedData(payload);
552
577
  const signature = signer.sign(hash);
553
578
 
554
579
  return { blockNumber: header.slotNumber, payload, signature };
@@ -558,10 +583,7 @@ export const makeAndSignCommitteeAttestationsAndSigners = (
558
583
  attestationsAndSigners: CommitteeAttestationsAndSigners,
559
584
  signer: Secp256k1Signer = Secp256k1Signer.random(),
560
585
  ) => {
561
- const hash = getHashedSignaturePayloadEthSignedMessage(
562
- attestationsAndSigners,
563
- SignatureDomainSeparator.attestationsAndSigners,
564
- );
586
+ const hash = getHashedSignaturePayloadTypedData(attestationsAndSigners);
565
587
  return signer.sign(hash);
566
588
  };
567
589
 
@@ -573,41 +595,51 @@ export const makeBlockProposal = (options?: MakeBlockProposalOptions): Promise<B
573
595
  const txHashes = options?.txHashes ?? [0, 1, 2, 3, 4, 5].map(() => TxHash.random());
574
596
  const txs = options?.txs;
575
597
  const signer = options?.signer ?? Secp256k1Signer.random();
598
+ const signatureContext = options?.signatureContext ?? TEST_COORDINATION_SIGNATURE_CONTEXT;
576
599
 
577
600
  return BlockProposal.createProposalFromSigner(
578
601
  blockHeader,
602
+ CheckpointNumber(1),
579
603
  indexWithinCheckpoint,
580
604
  inHash,
581
605
  archiveRoot,
582
606
  txHashes,
583
607
  txs,
584
- (_payload, _context) => Promise.resolve(signer.signMessage(_payload)),
608
+ signatureContext,
609
+ (typedData, _context) => Promise.resolve(signTypedData(signer, typedData)),
610
+ (typedData, _context) => Promise.resolve(signTypedData(signer, typedData)),
585
611
  );
586
612
  };
587
613
 
588
- export const makeCheckpointProposal = (options?: MakeCheckpointProposalOptions): Promise<CheckpointProposal> => {
589
- const blockHeader = options?.lastBlock?.blockHeader ?? makeBlockHeader(1);
614
+ export const makeCheckpointProposal = async (options?: MakeCheckpointProposalOptions): Promise<CheckpointProposal> => {
590
615
  const checkpointHeader = options?.checkpointHeader ?? makeCheckpointHeader(1);
591
616
  const archiveRoot = options?.archiveRoot ?? Fr.random();
592
617
  const feeAssetPriceModifier = options?.feeAssetPriceModifier ?? 0n;
593
618
  const signer = options?.signer ?? Secp256k1Signer.random();
594
-
595
- // Build lastBlock info if provided
596
- const lastBlockInfo = options?.lastBlock
597
- ? {
598
- blockHeader,
599
- indexWithinCheckpoint: options.lastBlock.indexWithinCheckpoint ?? IndexWithinCheckpoint(4), // Last block in a 5-block checkpoint
600
- txHashes: options.lastBlock.txHashes ?? [0, 1, 2, 3, 4, 5].map(() => TxHash.random()),
619
+ const signatureContext = options?.signatureContext ?? TEST_COORDINATION_SIGNATURE_CONTEXT;
620
+
621
+ // Build a signed block proposal if lastBlock options are provided
622
+ const lastBlockProposal = options?.lastBlock
623
+ ? await makeBlockProposal({
624
+ blockHeader: options.lastBlock.blockHeader,
625
+ indexWithinCheckpoint: options.lastBlock.indexWithinCheckpoint ?? IndexWithinCheckpoint(4),
626
+ inHash: checkpointHeader.inHash,
627
+ archiveRoot,
628
+ txHashes: options.lastBlock.txHashes,
601
629
  txs: options.lastBlock.txs,
602
- }
630
+ signer,
631
+ signatureContext,
632
+ })
603
633
  : undefined;
604
634
 
605
635
  return CheckpointProposal.createProposalFromSigner(
606
636
  checkpointHeader,
607
637
  archiveRoot,
638
+ CheckpointNumber(1),
608
639
  feeAssetPriceModifier,
609
- lastBlockInfo,
610
- payload => Promise.resolve(signer.signMessage(payload)),
640
+ lastBlockProposal,
641
+ signatureContext,
642
+ typedData => Promise.resolve(signTypedData(signer, typedData)),
611
643
  );
612
644
  };
613
645
 
@@ -621,6 +653,7 @@ export type MakeCheckpointAttestationOptions = {
621
653
  attesterSigner?: Secp256k1Signer;
622
654
  proposerSigner?: Secp256k1Signer;
623
655
  signer?: Secp256k1Signer;
656
+ signatureContext?: CoordinationSignatureContext;
624
657
  };
625
658
 
626
659
  /**
@@ -630,26 +663,27 @@ export const makeCheckpointAttestation = (options: MakeCheckpointAttestationOpti
630
663
  const header = options.header ?? makeCheckpointHeader(1);
631
664
  const archive = options.archive ?? Fr.random();
632
665
  const feeAssetPriceModifier = options.feeAssetPriceModifier ?? 0n;
666
+ const signatureContext = options.signatureContext ?? TEST_COORDINATION_SIGNATURE_CONTEXT;
633
667
  const { signer, attesterSigner = signer, proposerSigner = signer } = options;
634
668
 
635
- const payload = new ConsensusPayload(header, archive, feeAssetPriceModifier);
669
+ const payload = new ConsensusPayload(header, archive, feeAssetPriceModifier, signatureContext);
636
670
 
637
671
  // Sign as attester
638
- const attestationHash = getHashedSignaturePayloadEthSignedMessage(
639
- payload,
640
- SignatureDomainSeparator.checkpointAttestation,
641
- );
672
+ const attestationHash = getHashedSignaturePayloadTypedData(payload);
642
673
  const attestationSigner = attesterSigner ?? Secp256k1Signer.random();
643
674
  const attestationSignature = attestationSigner.sign(attestationHash);
644
675
 
645
676
  // Sign as proposer - use CheckpointProposal's payload format (serializeToBuffer)
646
677
  // This is different from ConsensusPayload's format (ABI encoding)
647
678
  const proposalSignerToUse = proposerSigner ?? Secp256k1Signer.random();
648
- const tempProposal = new CheckpointProposal(header, archive, feeAssetPriceModifier, Signature.empty());
649
- const proposalHash = getHashedSignaturePayloadEthSignedMessage(
650
- tempProposal,
651
- SignatureDomainSeparator.checkpointProposal,
679
+ const tempProposal = new CheckpointProposal(
680
+ header,
681
+ archive,
682
+ feeAssetPriceModifier,
683
+ Signature.empty(),
684
+ signatureContext,
652
685
  );
686
+ const proposalHash = getHashedSignaturePayloadTypedData(tempProposal);
653
687
  const proposerSignature = proposalSignerToUse.sign(proposalHash);
654
688
 
655
689
  return new CheckpointAttestation(payload, attestationSignature, proposerSignature);
@@ -662,13 +696,15 @@ export const makeCheckpointAttestationFromProposal = (
662
696
  proposal: CheckpointProposal,
663
697
  attesterSigner?: Secp256k1Signer,
664
698
  ): CheckpointAttestation => {
665
- const payload = new ConsensusPayload(proposal.checkpointHeader, proposal.archive, proposal.feeAssetPriceModifier);
699
+ const payload = new ConsensusPayload(
700
+ proposal.checkpointHeader,
701
+ proposal.archive,
702
+ proposal.feeAssetPriceModifier,
703
+ proposal.signatureContext,
704
+ );
666
705
 
667
706
  // Sign as attester
668
- const attestationHash = getHashedSignaturePayloadEthSignedMessage(
669
- payload,
670
- SignatureDomainSeparator.checkpointAttestation,
671
- );
707
+ const attestationHash = getHashedSignaturePayloadTypedData(payload);
672
708
  const attestationSigner = attesterSigner ?? Secp256k1Signer.random();
673
709
  const attestationSignature = attestationSigner.sign(attestationHash);
674
710
 
@@ -711,32 +747,3 @@ export const makeCheckpointAttestationFromBlock = (
711
747
 
712
748
  return makeCheckpointAttestation({ header, archive, attesterSigner, proposerSigner });
713
749
  };
714
-
715
- export async function randomPublishedL2Block(
716
- l2BlockNumber: number,
717
- opts: { signers?: Secp256k1Signer[] } = {},
718
- ): Promise<CheckpointedL2Block> {
719
- const block = await L2Block.random(BlockNumber(l2BlockNumber));
720
- const l1 = L1PublishedData.fromFields({
721
- blockNumber: BigInt(block.number),
722
- timestamp: block.header.globalVariables.timestamp,
723
- blockHash: Buffer32.random().toString(),
724
- });
725
-
726
- const signers = opts.signers ?? times(3, () => Secp256k1Signer.random());
727
- const checkpoint = await Checkpoint.random(CheckpointNumber.fromBlockNumber(BlockNumber(l2BlockNumber)), {
728
- numBlocks: 0,
729
- });
730
- checkpoint.blocks = [block];
731
- const atts = signers.map(signer =>
732
- makeCheckpointAttestation({
733
- signer,
734
- archive: block.archive.root,
735
- header: checkpoint.header,
736
- }),
737
- );
738
- const attestations = atts.map(
739
- (attestation, i) => new CommitteeAttestation(signers[i].address, attestation.signature),
740
- );
741
- return new CheckpointedL2Block(CheckpointNumber.fromBlockNumber(BlockNumber(l2BlockNumber)), block, l1, attestations);
742
- }
@@ -25,6 +25,179 @@ export const DEFAULT_L1_PUBLISHING_TIME = 12;
25
25
  /** Minimum execution time for building a block in seconds */
26
26
  export const MIN_EXECUTION_TIME = 2;
27
27
 
28
+ export type CheckpointTimingConfig = {
29
+ aztecSlotDuration: number;
30
+ ethereumSlotDuration?: number;
31
+ blockDuration?: number;
32
+ checkpointAssembleTime?: number;
33
+ checkpointInitializationTime?: number;
34
+ l1PublishingTime?: number;
35
+ minExecutionTime?: number;
36
+ p2pPropagationTime?: number;
37
+ };
38
+
39
+ export interface CheckpointTiming {
40
+ readonly aztecSlotDuration: number;
41
+ readonly blockDuration: number | undefined;
42
+ readonly checkpointAssembleTime: number;
43
+ readonly checkpointInitializationTime: number;
44
+ readonly l1PublishingTime: number;
45
+ readonly minExecutionTime: number;
46
+ readonly p2pPropagationTime: number;
47
+ readonly checkpointFinalizationTime: number;
48
+ readonly pipeliningAttestationGracePeriod: number;
49
+ readonly timeReservedAtEnd: number;
50
+ readonly minimumBuildSlotWork: number;
51
+ readonly initializeDeadline: number;
52
+ readonly checkpointAssemblyDeadline: number;
53
+ readonly checkpointAttestationStartDeadline: number;
54
+ readonly checkpointAttestationDeadline: number;
55
+ readonly checkpointPublishingDeadline: number;
56
+
57
+ calculateMaxBlocksPerSlot(): number;
58
+ }
59
+
60
+ export interface PipelinedCheckpointTiming extends CheckpointTiming {
61
+ readonly proposalWindowIntoTargetSlot: number;
62
+ readonly attestationWindowIntoTargetSlot: number;
63
+ }
64
+
65
+ /**
66
+ * Checkpoint timing model for proposer pipelining.
67
+ *
68
+ * The build work starts at the wall-clock slot boundary and the checkpoint
69
+ * proposal is broadcast early enough that attestations complete by the end of
70
+ * the build slot. L1 submission can then be sent at the boundary of the target
71
+ * slot. The target-slot window getters are intended for consumers such as P2P
72
+ * validators that need to validate pipelined messages against wallclock time.
73
+ */
74
+ class CheckpointTimingModel implements PipelinedCheckpointTiming {
75
+ public readonly aztecSlotDuration: number;
76
+ public readonly blockDuration: number | undefined;
77
+ public readonly checkpointAssembleTime: number;
78
+ public readonly checkpointInitializationTime: number;
79
+ public readonly l1PublishingTime: number;
80
+ public readonly minExecutionTime: number;
81
+ public readonly p2pPropagationTime: number;
82
+ private readonly ethereumSlotDuration: number;
83
+
84
+ constructor(opts: CheckpointTimingConfig) {
85
+ this.aztecSlotDuration = opts.aztecSlotDuration;
86
+ this.blockDuration = opts.blockDuration;
87
+
88
+ this.checkpointAssembleTime = opts.checkpointAssembleTime ?? CHECKPOINT_ASSEMBLE_TIME;
89
+ this.checkpointInitializationTime = opts.checkpointInitializationTime ?? CHECKPOINT_INITIALIZATION_TIME;
90
+ this.l1PublishingTime = opts.l1PublishingTime ?? DEFAULT_L1_PUBLISHING_TIME;
91
+ this.minExecutionTime = opts.minExecutionTime ?? MIN_EXECUTION_TIME;
92
+ this.p2pPropagationTime = opts.p2pPropagationTime ?? DEFAULT_P2P_PROPAGATION_TIME;
93
+ this.ethereumSlotDuration = opts.ethereumSlotDuration ?? this.l1PublishingTime;
94
+ }
95
+
96
+ public get checkpointFinalizationTime(): number {
97
+ // Allow enough time to
98
+ // - build the checkpoint
99
+ // - Round-trip over p2p
100
+ // - Publish to L1
101
+ return this.checkpointAssembleTime + this.p2pPropagationTime * 2 + this.l1PublishingTime;
102
+ }
103
+
104
+ public get proposalWindowIntoTargetSlot(): number {
105
+ // Proposals no longer spill into the target slot: they are broadcast early
106
+ // enough in the build slot that attestations complete before the boundary.
107
+ // Any residual tolerance into the target slot is covered by clock disparity.
108
+ return 0;
109
+ }
110
+
111
+ public get attestationWindowIntoTargetSlot(): number {
112
+ // Span from the target-slot start to the L1 publish deadline (12s before the last L1 block of
113
+ // the target slot). The p2p layer accepts slot-N attestations until right before the publish
114
+ // deadline so the proposer can keep collecting useful attestations up to the latest moment the
115
+ // checkpoint can still land on L1 in the target slot.
116
+ return Math.max(0, this.aztecSlotDuration - 2 * this.ethereumSlotDuration);
117
+ }
118
+
119
+ public get pipeliningAttestationGracePeriod(): number {
120
+ // Under the early-pipelining regime attestations complete inside the build slot itself. Local
121
+ // networks can publish much faster than the Ethereum slot geometry, so they may use the target
122
+ // slot attestation window without moving the L1 publish cutoff.
123
+ return this.l1PublishingTime < this.ethereumSlotDuration ? this.attestationWindowIntoTargetSlot : 0;
124
+ }
125
+
126
+ public get timeReservedAtEnd(): number {
127
+ // Reserve enough time at the end of the build slot for:
128
+ // - assembling and broadcasting the checkpoint proposal
129
+ // - round-trip p2p propagation (proposal out, attestations back)
130
+ // - validators re-executing the last block
131
+ return this.checkpointAssembleTime + 2 * this.p2pPropagationTime + (this.blockDuration ?? 0);
132
+ }
133
+
134
+ public get minimumBuildSlotWork(): number {
135
+ return this.checkpointInitializationTime + this.minExecutionTime * 2;
136
+ }
137
+
138
+ public get initializeDeadline(): number {
139
+ return this.aztecSlotDuration - this.minimumBuildSlotWork;
140
+ }
141
+
142
+ public get checkpointAssemblyDeadline(): number {
143
+ // Allow enough time to build all blocks and receive attestations. With
144
+ // `pipeliningAttestationGracePeriod = 0` this equals `aztecSlotDuration`.
145
+ return this.aztecSlotDuration + this.pipeliningAttestationGracePeriod;
146
+ }
147
+
148
+ public get checkpointAttestationStartDeadline(): number {
149
+ return this.checkpointAssemblyDeadline;
150
+ }
151
+
152
+ public get checkpointAttestationDeadline(): number {
153
+ // L1 publish deadline — 12s (one Ethereum slot) before the last L1 block of the target L2 slot;
154
+ // the latest the checkpoint can be submitted and still land on L1 in the target slot. This is an
155
+ // L1-geometry bound (ethereumSlotDuration), matching the publisher's send lead in sendRequestsAt
156
+ // (which also targets one Ethereum slot before the target slot start).
157
+ return this.aztecSlotDuration * 2 - this.ethereumSlotDuration;
158
+ }
159
+
160
+ public get checkpointPublishingDeadline(): number {
161
+ // L1 publish deadline — 12s (one Ethereum slot) before the last L1 block of the target L2 slot;
162
+ // the latest the checkpoint can be submitted and still land on L1 in the target slot.
163
+ return this.aztecSlotDuration * 2 - this.ethereumSlotDuration;
164
+ }
165
+
166
+ public calculateMaxBlocksPerSlot(): number {
167
+ if (!this.blockDuration) {
168
+ return 1;
169
+ }
170
+
171
+ const timeAvailableForBlocks = this.aztecSlotDuration - this.checkpointInitializationTime - this.timeReservedAtEnd;
172
+ return Math.floor(timeAvailableForBlocks / this.blockDuration);
173
+ }
174
+ }
175
+
176
+ /**
177
+ * Creates a checkpoint timing model.
178
+ *
179
+ * Most callers should use this factory and depend only on the shared
180
+ * `CheckpointTiming` interface.
181
+ */
182
+ export function createCheckpointTimingModel(opts: CheckpointTimingConfig): CheckpointTiming {
183
+ return createPipelinedCheckpointTimingModel(opts);
184
+ }
185
+
186
+ /**
187
+ * Creates a checkpoint timing model exposing the target-slot window accessors.
188
+ *
189
+ * Use this when the caller specifically needs the pipelined timing surface, such
190
+ * as proposal or attestation acceptance windows into the target slot.
191
+ */
192
+ export function createPipelinedCheckpointTimingModel(opts: CheckpointTimingConfig): PipelinedCheckpointTiming {
193
+ validateCheckpointTimingConfig(opts);
194
+ const normalizedOpts = normalizeCheckpointTimingConfig(opts);
195
+
196
+ const timing = new CheckpointTimingModel(normalizedOpts);
197
+ validateCheckpointTimingModel(timing);
198
+ return timing;
199
+ }
200
+
28
201
  /**
29
202
  * Calculates the maximum number of blocks that can be built in a slot.
30
203
  * Used by both the sequencer timetable and p2p gossipsub scoring.
@@ -44,23 +217,88 @@ export function calculateMaxBlocksPerSlot(
44
217
  l1PublishingTime?: number;
45
218
  } = {},
46
219
  ): number {
47
- if (!blockDurationSec) {
48
- return 1; // Single block per slot
220
+ return createCheckpointTimingModel({
221
+ aztecSlotDuration: aztecSlotDurationSec,
222
+ blockDuration: blockDurationSec,
223
+ checkpointAssembleTime: opts.checkpointAssembleTime,
224
+ checkpointInitializationTime: opts.checkpointInitializationTime,
225
+ l1PublishingTime: opts.l1PublishingTime,
226
+ p2pPropagationTime: opts.p2pPropagationTime,
227
+ }).calculateMaxBlocksPerSlot();
228
+ }
229
+
230
+ function assertNonNegative(name: string, value: number): void {
231
+ if (value < 0) {
232
+ throw new Error(`${name} must be non-negative (got ${value})`);
233
+ }
234
+ }
235
+
236
+ function validateCheckpointTimingConfig(opts: CheckpointTimingConfig): void {
237
+ if (opts.aztecSlotDuration <= 0) {
238
+ throw new Error(`aztecSlotDuration must be positive (got ${opts.aztecSlotDuration})`);
49
239
  }
50
240
 
51
- const initOffset = opts.checkpointInitializationTime ?? CHECKPOINT_INITIALIZATION_TIME;
52
- const assembleTime = opts.checkpointAssembleTime ?? CHECKPOINT_ASSEMBLE_TIME;
53
- const p2pTime = opts.p2pPropagationTime ?? DEFAULT_P2P_PROPAGATION_TIME;
54
- const l1Time = opts.l1PublishingTime ?? DEFAULT_L1_PUBLISHING_TIME;
241
+ if (opts.ethereumSlotDuration !== undefined && opts.ethereumSlotDuration <= 0) {
242
+ throw new Error(`ethereumSlotDuration must be positive when provided (got ${opts.ethereumSlotDuration})`);
243
+ }
244
+
245
+ if (opts.blockDuration !== undefined && opts.blockDuration <= 0) {
246
+ throw new Error(`blockDuration must be positive when provided (got ${opts.blockDuration})`);
247
+ }
248
+
249
+ if (opts.minExecutionTime !== undefined && opts.minExecutionTime <= 0) {
250
+ throw new Error(`minExecutionTime must be positive when provided (got ${opts.minExecutionTime})`);
251
+ }
252
+
253
+ if (opts.checkpointAssembleTime !== undefined) {
254
+ assertNonNegative('checkpointAssembleTime', opts.checkpointAssembleTime);
255
+ }
256
+ if (opts.checkpointInitializationTime !== undefined) {
257
+ assertNonNegative('checkpointInitializationTime', opts.checkpointInitializationTime);
258
+ }
259
+ if (opts.l1PublishingTime !== undefined) {
260
+ assertNonNegative('l1PublishingTime', opts.l1PublishingTime);
261
+ }
262
+ if (opts.p2pPropagationTime !== undefined) {
263
+ assertNonNegative('p2pPropagationTime', opts.p2pPropagationTime);
264
+ }
265
+ }
55
266
 
56
- // Calculate checkpoint finalization time (assembly + round-trip propagation + L1 publishing)
57
- const checkpointFinalizationTime = assembleTime + p2pTime * 2 + l1Time;
267
+ function normalizeCheckpointTimingConfig(opts: CheckpointTimingConfig): CheckpointTimingConfig {
268
+ let checkpointAssembleTime = opts.checkpointAssembleTime ?? CHECKPOINT_ASSEMBLE_TIME;
269
+ let checkpointInitializationTime = opts.checkpointInitializationTime ?? CHECKPOINT_INITIALIZATION_TIME;
270
+ let minExecutionTime = opts.minExecutionTime ?? MIN_EXECUTION_TIME;
271
+ let p2pPropagationTime = opts.p2pPropagationTime ?? DEFAULT_P2P_PROPAGATION_TIME;
58
272
 
59
- // Time reserved at end for last sub-slot (validator re-execution) + finalization
60
- const timeReservedAtEnd = blockDurationSec + checkpointFinalizationTime;
273
+ if (opts.ethereumSlotDuration !== undefined && opts.ethereumSlotDuration < 8) {
274
+ p2pPropagationTime = 0;
275
+ checkpointAssembleTime = 0.5;
276
+ checkpointInitializationTime = 0.5;
277
+ minExecutionTime = 1;
278
+ }
61
279
 
62
- // Time available for building blocks
63
- const timeAvailableForBlocks = aztecSlotDurationSec - initOffset - timeReservedAtEnd;
280
+ if (opts.blockDuration !== undefined && minExecutionTime > opts.blockDuration) {
281
+ minExecutionTime = opts.blockDuration;
282
+ }
64
283
 
65
- return Math.max(1, Math.floor(timeAvailableForBlocks / blockDurationSec));
284
+ return {
285
+ ...opts,
286
+ checkpointAssembleTime,
287
+ checkpointInitializationTime,
288
+ minExecutionTime,
289
+ p2pPropagationTime,
290
+ };
291
+ }
292
+
293
+ function validateCheckpointTimingModel(model: CheckpointTiming): void {
294
+ if (model.blockDuration === undefined) {
295
+ return;
296
+ }
297
+
298
+ const timeAvailableForBlocks = model.aztecSlotDuration - model.checkpointInitializationTime - model.timeReservedAtEnd;
299
+ if (timeAvailableForBlocks < model.blockDuration) {
300
+ throw new Error(
301
+ `Invalid timing configuration: only ${timeAvailableForBlocks}s available for block building, which is less than one blockDuration (${model.blockDuration}s).`,
302
+ );
303
+ }
66
304
  }
@@ -1,6 +1,6 @@
1
1
  import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import { schemas } from '@aztec/foundation/schemas';
3
- import { BufferReader, FieldReader, serializeToBuffer } from '@aztec/foundation/serialize';
3
+ import { BufferReader, BufferSink, FieldReader, serializeToSink } from '@aztec/foundation/serialize';
4
4
  import { bufferToHex, hexToBuffer } from '@aztec/foundation/string';
5
5
 
6
6
  import { inspect } from 'util';
@@ -44,8 +44,13 @@ export class AppendOnlyTreeSnapshot {
44
44
  return this.root.size + 4;
45
45
  }
46
46
 
47
- toBuffer() {
48
- return serializeToBuffer(this.root, this.nextAvailableLeafIndex);
47
+ toBuffer(): Buffer;
48
+ toBuffer(sink: BufferSink): void;
49
+ toBuffer(sink?: BufferSink): Buffer | void {
50
+ if (!sink) {
51
+ return BufferSink.serialize(this);
52
+ }
53
+ serializeToSink(sink, this.root, this.nextAvailableLeafIndex);
49
54
  }
50
55
 
51
56
  toFields(): Fr[] {
@@ -86,6 +86,10 @@ export class NullifierLeafPreimage implements IndexedTreeLeafPreimage {
86
86
  ];
87
87
  }
88
88
 
89
+ isEmpty(): boolean {
90
+ return this.leaf.isEmpty() && this.nextKey.isZero() && this.nextIndex === 0n;
91
+ }
92
+
89
93
  toFields(): Fr[] {
90
94
  return this.toHashInputs().map(buf => Fr.fromBuffer(buf));
91
95
  }