@aztec/stdlib 0.0.1-commit.684755437 → 0.0.1-commit.69c59a8b3

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 (409) hide show
  1. package/dest/abi/abi.d.ts +138 -1
  2. package/dest/abi/abi.d.ts.map +1 -1
  3. package/dest/abi/abi.js +10 -2
  4. package/dest/abi/authorization_selector.d.ts +3 -6
  5. package/dest/abi/authorization_selector.d.ts.map +1 -1
  6. package/dest/abi/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/decoder.d.ts +5 -44
  10. package/dest/abi/decoder.d.ts.map +1 -1
  11. package/dest/abi/decoder.js +12 -67
  12. package/dest/abi/encoder.d.ts +1 -1
  13. package/dest/abi/encoder.d.ts.map +1 -1
  14. package/dest/abi/encoder.js +32 -6
  15. package/dest/abi/event_selector.d.ts +3 -6
  16. package/dest/abi/event_selector.d.ts.map +1 -1
  17. package/dest/abi/function_selector.d.ts +3 -6
  18. package/dest/abi/function_selector.d.ts.map +1 -1
  19. package/dest/abi/function_selector.js +2 -4
  20. package/dest/abi/function_signature_decoder.d.ts +43 -0
  21. package/dest/abi/function_signature_decoder.d.ts.map +1 -0
  22. package/dest/abi/function_signature_decoder.js +66 -0
  23. package/dest/abi/index.d.ts +2 -1
  24. package/dest/abi/index.d.ts.map +1 -1
  25. package/dest/abi/index.js +1 -0
  26. package/dest/abi/note_selector.d.ts +3 -6
  27. package/dest/abi/note_selector.d.ts.map +1 -1
  28. package/dest/abi/note_selector.js +1 -3
  29. package/dest/abi/selector.d.ts +2 -2
  30. package/dest/abi/selector.d.ts.map +1 -1
  31. package/dest/abi/selector.js +1 -1
  32. package/dest/avm/revert_code.d.ts +8 -18
  33. package/dest/avm/revert_code.d.ts.map +1 -1
  34. package/dest/avm/revert_code.js +15 -30
  35. package/dest/aztec-address/index.d.ts +3 -6
  36. package/dest/aztec-address/index.d.ts.map +1 -1
  37. package/dest/aztec-address/index.js +2 -4
  38. package/dest/block/block_data.d.ts +8 -8
  39. package/dest/block/block_data.d.ts.map +1 -1
  40. package/dest/block/block_data.js +2 -2
  41. package/dest/block/block_hash.d.ts +11 -10
  42. package/dest/block/block_hash.d.ts.map +1 -1
  43. package/dest/block/block_hash.js +10 -9
  44. package/dest/block/l2_block_info.d.ts +6 -5
  45. package/dest/block/l2_block_info.d.ts.map +1 -1
  46. package/dest/block/l2_block_info.js +6 -5
  47. package/dest/block/l2_block_source.d.ts +90 -10
  48. package/dest/block/l2_block_source.d.ts.map +1 -1
  49. package/dest/block/l2_block_source.js +1 -0
  50. package/dest/block/l2_block_stream/interfaces.d.ts +6 -3
  51. package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
  52. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +1 -1
  53. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -1
  54. package/dest/block/l2_block_stream/l2_tips_store_base.js +18 -5
  55. package/dest/block/test/l2_tips_store_test_suite.d.ts +1 -1
  56. package/dest/block/test/l2_tips_store_test_suite.d.ts.map +1 -1
  57. package/dest/block/test/l2_tips_store_test_suite.js +4 -3
  58. package/dest/checkpoint/checkpoint.d.ts +7 -1
  59. package/dest/checkpoint/checkpoint.d.ts.map +1 -1
  60. package/dest/checkpoint/checkpoint.js +9 -1
  61. package/dest/checkpoint/checkpoint_data.d.ts +71 -5
  62. package/dest/checkpoint/checkpoint_data.d.ts.map +1 -1
  63. package/dest/checkpoint/checkpoint_data.js +10 -0
  64. package/dest/checkpoint/validate.js +2 -2
  65. package/dest/config/chain-config.d.ts +1 -1
  66. package/dest/config/chain-config.d.ts.map +1 -1
  67. package/dest/config/chain-config.js +7 -1
  68. package/dest/config/index.d.ts +2 -1
  69. package/dest/config/index.d.ts.map +1 -1
  70. package/dest/config/index.js +1 -0
  71. package/dest/config/pipelining-config.d.ts +19 -0
  72. package/dest/config/pipelining-config.d.ts.map +1 -0
  73. package/dest/config/pipelining-config.js +18 -0
  74. package/dest/config/sequencer-config.d.ts +2 -2
  75. package/dest/config/sequencer-config.d.ts.map +1 -1
  76. package/dest/config/sequencer-config.js +10 -3
  77. package/dest/contract/contract_address.d.ts +3 -3
  78. package/dest/contract/contract_address.js +3 -3
  79. package/dest/contract/contract_class_id.d.ts +2 -2
  80. package/dest/contract/contract_class_id.js +2 -2
  81. package/dest/contract/index.d.ts +1 -3
  82. package/dest/contract/index.d.ts.map +1 -1
  83. package/dest/contract/index.js +0 -2
  84. package/dest/contract/interfaces/contract_class.d.ts +3 -156
  85. package/dest/contract/interfaces/contract_class.d.ts.map +1 -1
  86. package/dest/contract/interfaces/contract_class.js +1 -28
  87. package/dest/epoch-helpers/index.d.ts +11 -1
  88. package/dest/epoch-helpers/index.d.ts.map +1 -1
  89. package/dest/epoch-helpers/index.js +16 -2
  90. package/dest/file-store/factory.d.ts +4 -3
  91. package/dest/file-store/factory.d.ts.map +1 -1
  92. package/dest/file-store/factory.js +2 -2
  93. package/dest/file-store/http.d.ts +9 -2
  94. package/dest/file-store/http.d.ts.map +1 -1
  95. package/dest/file-store/http.js +20 -9
  96. package/dest/file-store/index.d.ts +2 -1
  97. package/dest/file-store/index.d.ts.map +1 -1
  98. package/dest/gas/fee_math.d.ts +49 -0
  99. package/dest/gas/fee_math.d.ts.map +1 -0
  100. package/dest/gas/fee_math.js +80 -0
  101. package/dest/gas/gas_fees.d.ts +1 -1
  102. package/dest/gas/gas_fees.d.ts.map +1 -1
  103. package/dest/gas/gas_fees.js +10 -1
  104. package/dest/gas/gas_settings.d.ts +40 -3
  105. package/dest/gas/gas_settings.d.ts.map +1 -1
  106. package/dest/gas/gas_settings.js +50 -6
  107. package/dest/gas/index.d.ts +2 -1
  108. package/dest/gas/index.d.ts.map +1 -1
  109. package/dest/gas/index.js +1 -0
  110. package/dest/ha-signing/index.d.ts +2 -2
  111. package/dest/ha-signing/index.d.ts.map +1 -1
  112. package/dest/ha-signing/index.js +1 -1
  113. package/dest/ha-signing/local_config.js +1 -1
  114. package/dest/ha-signing/types.d.ts +37 -32
  115. package/dest/ha-signing/types.d.ts.map +1 -1
  116. package/dest/ha-signing/types.js +13 -6
  117. package/dest/hash/hash.d.ts +19 -1
  118. package/dest/hash/hash.d.ts.map +1 -1
  119. package/dest/hash/hash.js +29 -0
  120. package/dest/interfaces/archiver.d.ts +1 -1
  121. package/dest/interfaces/archiver.d.ts.map +1 -1
  122. package/dest/interfaces/archiver.js +5 -3
  123. package/dest/interfaces/aztec-node-admin.d.ts +10 -14
  124. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  125. package/dest/interfaces/aztec-node-admin.js +3 -3
  126. package/dest/interfaces/aztec-node-debug.d.ts +21 -0
  127. package/dest/interfaces/aztec-node-debug.d.ts.map +1 -0
  128. package/dest/interfaces/aztec-node-debug.js +18 -0
  129. package/dest/interfaces/aztec-node.d.ts +12 -2
  130. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  131. package/dest/interfaces/aztec-node.js +4 -0
  132. package/dest/interfaces/block-builder.d.ts +32 -11
  133. package/dest/interfaces/block-builder.d.ts.map +1 -1
  134. package/dest/interfaces/block-builder.js +6 -4
  135. package/dest/interfaces/client.d.ts +2 -1
  136. package/dest/interfaces/client.d.ts.map +1 -1
  137. package/dest/interfaces/client.js +1 -0
  138. package/dest/interfaces/configs.d.ts +7 -2
  139. package/dest/interfaces/configs.d.ts.map +1 -1
  140. package/dest/interfaces/configs.js +1 -0
  141. package/dest/interfaces/l2_logs_source.d.ts +5 -3
  142. package/dest/interfaces/l2_logs_source.d.ts.map +1 -1
  143. package/dest/interfaces/merkle_tree_operations.d.ts +12 -21
  144. package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
  145. package/dest/interfaces/prover-client.d.ts +6 -1
  146. package/dest/interfaces/prover-client.d.ts.map +1 -1
  147. package/dest/interfaces/prover-client.js +7 -4
  148. package/dest/interfaces/proving-job.d.ts +200 -200
  149. package/dest/interfaces/slasher.d.ts +1 -10
  150. package/dest/interfaces/slasher.d.ts.map +1 -1
  151. package/dest/interfaces/slasher.js +0 -2
  152. package/dest/interfaces/validator.d.ts +9 -20
  153. package/dest/interfaces/validator.d.ts.map +1 -1
  154. package/dest/interfaces/validator.js +0 -1
  155. package/dest/interfaces/world_state.d.ts +5 -4
  156. package/dest/interfaces/world_state.d.ts.map +1 -1
  157. package/dest/l1-contracts/index.d.ts +2 -2
  158. package/dest/l1-contracts/index.d.ts.map +1 -1
  159. package/dest/l1-contracts/index.js +1 -1
  160. package/dest/logs/extended_directional_app_tagging_secret.d.ts +4 -4
  161. package/dest/logs/extended_directional_app_tagging_secret.d.ts.map +1 -1
  162. package/dest/logs/extended_directional_app_tagging_secret.js +12 -5
  163. package/dest/logs/index.d.ts +2 -1
  164. package/dest/logs/index.d.ts.map +1 -1
  165. package/dest/logs/index.js +1 -0
  166. package/dest/logs/log_filter.d.ts +4 -1
  167. package/dest/logs/log_filter.d.ts.map +1 -1
  168. package/dest/logs/log_filter.js +2 -1
  169. package/dest/logs/log_id.d.ts +1 -1
  170. package/dest/logs/log_id.d.ts.map +1 -1
  171. package/dest/logs/log_id.js +1 -2
  172. package/dest/logs/message_context.d.ts +4 -7
  173. package/dest/logs/message_context.d.ts.map +1 -1
  174. package/dest/logs/message_context.js +23 -9
  175. package/dest/logs/pending_tagged_log.d.ts +2 -3
  176. package/dest/logs/pending_tagged_log.d.ts.map +1 -1
  177. package/dest/logs/pending_tagged_log.js +2 -2
  178. package/dest/logs/shared_secret_derivation.d.ts +11 -10
  179. package/dest/logs/shared_secret_derivation.d.ts.map +1 -1
  180. package/dest/logs/shared_secret_derivation.js +15 -9
  181. package/dest/logs/siloed_tag.d.ts +8 -7
  182. package/dest/logs/siloed_tag.d.ts.map +1 -1
  183. package/dest/logs/siloed_tag.js +11 -3
  184. package/dest/logs/tag.d.ts +5 -6
  185. package/dest/logs/tag.d.ts.map +1 -1
  186. package/dest/logs/tag.js +4 -0
  187. package/dest/logs/tagging_index_range.d.ts +40 -0
  188. package/dest/logs/tagging_index_range.d.ts.map +1 -0
  189. package/dest/logs/tagging_index_range.js +8 -0
  190. package/dest/logs/tx_scoped_l2_log.d.ts +3 -1
  191. package/dest/logs/tx_scoped_l2_log.d.ts.map +1 -1
  192. package/dest/logs/tx_scoped_l2_log.js +7 -0
  193. package/dest/messaging/l1_to_l2_message.d.ts +3 -2
  194. package/dest/messaging/l1_to_l2_message.d.ts.map +1 -1
  195. package/dest/messaging/l1_to_l2_message.js +11 -13
  196. package/dest/messaging/l1_to_l2_message_source.d.ts +4 -2
  197. package/dest/messaging/l1_to_l2_message_source.d.ts.map +1 -1
  198. package/dest/messaging/l2_to_l1_membership.d.ts +32 -6
  199. package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -1
  200. package/dest/messaging/l2_to_l1_membership.js +69 -26
  201. package/dest/noir/index.d.ts +3 -3
  202. package/dest/noir/index.d.ts.map +1 -1
  203. package/dest/note/note_dao.d.ts +1 -1
  204. package/dest/note/note_dao.d.ts.map +1 -1
  205. package/dest/note/note_dao.js +1 -4
  206. package/dest/p2p/block_proposal.d.ts +6 -8
  207. package/dest/p2p/block_proposal.d.ts.map +1 -1
  208. package/dest/p2p/block_proposal.js +4 -9
  209. package/dest/p2p/checkpoint_attestation.d.ts +4 -6
  210. package/dest/p2p/checkpoint_attestation.d.ts.map +1 -1
  211. package/dest/p2p/checkpoint_attestation.js +2 -7
  212. package/dest/p2p/checkpoint_proposal.d.ts +8 -10
  213. package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
  214. package/dest/p2p/checkpoint_proposal.js +5 -22
  215. package/dest/p2p/gossipable.d.ts +4 -4
  216. package/dest/p2p/gossipable.d.ts.map +1 -1
  217. package/dest/proofs/chonk_proof.d.ts +46 -2
  218. package/dest/proofs/chonk_proof.d.ts.map +1 -1
  219. package/dest/proofs/chonk_proof.js +85 -10
  220. package/dest/slashing/index.d.ts +2 -3
  221. package/dest/slashing/index.d.ts.map +1 -1
  222. package/dest/slashing/index.js +1 -2
  223. package/dest/slashing/serialization.d.ts +2 -6
  224. package/dest/slashing/serialization.d.ts.map +1 -1
  225. package/dest/slashing/serialization.js +0 -60
  226. package/dest/slashing/types.d.ts +4 -90
  227. package/dest/slashing/types.d.ts.map +1 -1
  228. package/dest/slashing/types.js +0 -14
  229. package/dest/slashing/{tally.d.ts → votes.d.ts} +1 -1
  230. package/dest/slashing/{tally.d.ts.map → votes.d.ts.map} +1 -1
  231. package/dest/slashing/{tally.js → votes.js} +1 -1
  232. package/dest/tests/factories.d.ts +2 -4
  233. package/dest/tests/factories.d.ts.map +1 -1
  234. package/dest/tests/factories.js +11 -28
  235. package/dest/tests/mocks.d.ts +1 -1
  236. package/dest/tests/mocks.d.ts.map +1 -1
  237. package/dest/tests/mocks.js +14 -19
  238. package/dest/timetable/index.d.ts +51 -1
  239. package/dest/timetable/index.d.ts.map +1 -1
  240. package/dest/timetable/index.js +204 -14
  241. package/dest/tx/block_header.d.ts +2 -2
  242. package/dest/tx/block_header.d.ts.map +1 -1
  243. package/dest/tx/block_header.js +1 -1
  244. package/dest/tx/capsule.d.ts +6 -2
  245. package/dest/tx/capsule.d.ts.map +1 -1
  246. package/dest/tx/capsule.js +9 -3
  247. package/dest/tx/fee_provider.d.ts +10 -0
  248. package/dest/tx/fee_provider.d.ts.map +1 -0
  249. package/dest/tx/fee_provider.js +1 -0
  250. package/dest/tx/global_variable_builder.d.ts +3 -4
  251. package/dest/tx/global_variable_builder.d.ts.map +1 -1
  252. package/dest/tx/index.d.ts +2 -1
  253. package/dest/tx/index.d.ts.map +1 -1
  254. package/dest/tx/index.js +1 -0
  255. package/dest/tx/indexed_tx_effect.d.ts +1 -1
  256. package/dest/tx/indexed_tx_effect.d.ts.map +1 -1
  257. package/dest/tx/indexed_tx_effect.js +1 -2
  258. package/dest/tx/private_execution_result.d.ts +6 -6
  259. package/dest/tx/private_execution_result.d.ts.map +1 -1
  260. package/dest/tx/private_execution_result.js +6 -6
  261. package/dest/tx/profiling.d.ts +14 -2
  262. package/dest/tx/profiling.d.ts.map +1 -1
  263. package/dest/tx/profiling.js +13 -3
  264. package/dest/tx/simulated_tx.d.ts +112 -4
  265. package/dest/tx/simulated_tx.d.ts.map +1 -1
  266. package/dest/tx/simulated_tx.js +3 -3
  267. package/dest/tx/tx.d.ts +3 -3
  268. package/dest/tx/tx.d.ts.map +1 -1
  269. package/dest/tx/tx_receipt.d.ts +14 -5
  270. package/dest/tx/tx_receipt.d.ts.map +1 -1
  271. package/dest/tx/tx_receipt.js +14 -18
  272. package/dest/tx/validator/error_texts.d.ts +5 -1
  273. package/dest/tx/validator/error_texts.d.ts.map +1 -1
  274. package/dest/tx/validator/error_texts.js +6 -0
  275. package/dest/update-checker/package_version.d.ts +2 -2
  276. package/dest/update-checker/package_version.d.ts.map +1 -1
  277. package/dest/update-checker/package_version.js +16 -3
  278. package/dest/validators/errors.d.ts +6 -1
  279. package/dest/validators/errors.d.ts.map +1 -1
  280. package/dest/validators/errors.js +7 -0
  281. package/dest/versioning/versioning.d.ts +4 -2
  282. package/dest/versioning/versioning.d.ts.map +1 -1
  283. package/dest/versioning/versioning.js +4 -1
  284. package/dest/world-state/genesis_data.d.ts +11 -0
  285. package/dest/world-state/genesis_data.d.ts.map +1 -0
  286. package/dest/world-state/genesis_data.js +4 -0
  287. package/dest/world-state/index.d.ts +2 -1
  288. package/dest/world-state/index.d.ts.map +1 -1
  289. package/dest/world-state/index.js +1 -0
  290. package/package.json +8 -8
  291. package/src/abi/abi.ts +25 -2
  292. package/src/abi/authorization_selector.ts +2 -8
  293. package/src/abi/buffer.ts +25 -4
  294. package/src/abi/decoder.ts +23 -78
  295. package/src/abi/encoder.ts +42 -6
  296. package/src/abi/event_selector.ts +2 -8
  297. package/src/abi/function_selector.ts +4 -13
  298. package/src/abi/function_signature_decoder.ts +77 -0
  299. package/src/abi/index.ts +1 -0
  300. package/src/abi/note_selector.ts +3 -12
  301. package/src/abi/selector.ts +1 -1
  302. package/src/avm/revert_code.ts +25 -39
  303. package/src/aztec-address/index.ts +4 -10
  304. package/src/block/block_data.ts +3 -4
  305. package/src/block/block_hash.ts +21 -14
  306. package/src/block/l2_block_info.ts +8 -6
  307. package/src/block/l2_block_source.ts +20 -9
  308. package/src/block/l2_block_stream/interfaces.ts +6 -2
  309. package/src/block/l2_block_stream/l2_tips_store_base.ts +25 -13
  310. package/src/block/test/l2_tips_store_test_suite.ts +9 -2
  311. package/src/checkpoint/checkpoint.ts +11 -1
  312. package/src/checkpoint/checkpoint_data.ts +40 -4
  313. package/src/checkpoint/validate.ts +2 -2
  314. package/src/config/chain-config.ts +7 -1
  315. package/src/config/index.ts +1 -0
  316. package/src/config/pipelining-config.ts +31 -0
  317. package/src/config/sequencer-config.ts +14 -4
  318. package/src/contract/contract_address.ts +3 -3
  319. package/src/contract/contract_class_id.ts +2 -2
  320. package/src/contract/index.ts +0 -2
  321. package/src/contract/interfaces/contract_class.ts +2 -82
  322. package/src/epoch-helpers/index.ts +27 -0
  323. package/src/file-store/factory.ts +13 -4
  324. package/src/file-store/http.ts +29 -10
  325. package/src/file-store/index.ts +1 -0
  326. package/src/gas/README.md +154 -0
  327. package/src/gas/fee_math.ts +120 -0
  328. package/src/gas/gas_fees.ts +12 -4
  329. package/src/gas/gas_settings.ts +65 -12
  330. package/src/gas/index.ts +1 -0
  331. package/src/ha-signing/index.ts +3 -1
  332. package/src/ha-signing/local_config.ts +1 -1
  333. package/src/ha-signing/types.ts +48 -34
  334. package/src/hash/hash.ts +34 -0
  335. package/src/interfaces/archiver.ts +5 -3
  336. package/src/interfaces/aztec-node-admin.ts +5 -7
  337. package/src/interfaces/aztec-node-debug.ts +40 -0
  338. package/src/interfaces/aztec-node.ts +25 -1
  339. package/src/interfaces/block-builder.ts +39 -13
  340. package/src/interfaces/client.ts +1 -0
  341. package/src/interfaces/configs.ts +4 -1
  342. package/src/interfaces/l2_logs_source.ts +4 -1
  343. package/src/interfaces/merkle_tree_operations.ts +11 -20
  344. package/src/interfaces/prover-client.ts +10 -5
  345. package/src/interfaces/slasher.ts +0 -6
  346. package/src/interfaces/validator.ts +16 -13
  347. package/src/interfaces/world_state.ts +4 -3
  348. package/src/l1-contracts/index.ts +1 -1
  349. package/src/logs/extended_directional_app_tagging_secret.ts +19 -8
  350. package/src/logs/index.ts +1 -0
  351. package/src/logs/log_filter.ts +5 -0
  352. package/src/logs/log_id.ts +1 -2
  353. package/src/logs/message_context.ts +17 -7
  354. package/src/logs/pending_tagged_log.ts +1 -3
  355. package/src/logs/shared_secret_derivation.ts +21 -10
  356. package/src/logs/siloed_tag.ts +15 -11
  357. package/src/logs/tag.ts +8 -8
  358. package/src/logs/tagging_index_range.ts +24 -0
  359. package/src/logs/tx_scoped_l2_log.ts +16 -0
  360. package/src/messaging/l1_to_l2_message.ts +12 -9
  361. package/src/messaging/l1_to_l2_message_source.ts +3 -1
  362. package/src/messaging/l2_to_l1_membership.ts +98 -33
  363. package/src/noir/index.ts +2 -2
  364. package/src/note/note_dao.ts +1 -4
  365. package/src/p2p/block_proposal.ts +13 -9
  366. package/src/p2p/checkpoint_attestation.ts +5 -9
  367. package/src/p2p/checkpoint_proposal.ts +19 -31
  368. package/src/p2p/gossipable.ts +4 -4
  369. package/src/proofs/chonk_proof.ts +91 -5
  370. package/src/slashing/index.ts +1 -2
  371. package/src/slashing/serialization.ts +1 -81
  372. package/src/slashing/types.ts +3 -35
  373. package/src/slashing/{tally.ts → votes.ts} +1 -1
  374. package/src/tests/factories.ts +5 -34
  375. package/src/tests/mocks.ts +16 -12
  376. package/src/timetable/index.ts +293 -13
  377. package/src/tx/block_header.ts +2 -2
  378. package/src/tx/capsule.ts +10 -2
  379. package/src/tx/fee_provider.ts +10 -0
  380. package/src/tx/global_variable_builder.ts +2 -3
  381. package/src/tx/index.ts +1 -0
  382. package/src/tx/indexed_tx_effect.ts +1 -2
  383. package/src/tx/private_execution_result.ts +5 -5
  384. package/src/tx/profiling.ts +11 -2
  385. package/src/tx/simulated_tx.ts +6 -2
  386. package/src/tx/tx.ts +2 -2
  387. package/src/tx/tx_receipt.ts +18 -16
  388. package/src/tx/validator/error_texts.ts +8 -0
  389. package/src/update-checker/package_version.ts +19 -6
  390. package/src/validators/errors.ts +9 -0
  391. package/src/versioning/versioning.ts +4 -1
  392. package/src/world-state/genesis_data.ts +15 -0
  393. package/src/world-state/index.ts +1 -0
  394. package/dest/contract/private_function_membership_proof.d.ts +0 -32
  395. package/dest/contract/private_function_membership_proof.d.ts.map +0 -1
  396. package/dest/contract/private_function_membership_proof.js +0 -124
  397. package/dest/contract/utility_function_membership_proof.d.ts +0 -27
  398. package/dest/contract/utility_function_membership_proof.d.ts.map +0 -1
  399. package/dest/contract/utility_function_membership_proof.js +0 -87
  400. package/dest/l1-contracts/slash_factory.d.ts +0 -45
  401. package/dest/l1-contracts/slash_factory.d.ts.map +0 -1
  402. package/dest/l1-contracts/slash_factory.js +0 -158
  403. package/dest/slashing/empire.d.ts +0 -31
  404. package/dest/slashing/empire.d.ts.map +0 -1
  405. package/dest/slashing/empire.js +0 -87
  406. package/src/contract/private_function_membership_proof.ts +0 -167
  407. package/src/contract/utility_function_membership_proof.ts +0 -118
  408. package/src/l1-contracts/slash_factory.ts +0 -180
  409. package/src/slashing/empire.ts +0 -104
@@ -126,45 +126,13 @@ export type ValidatorSlash = {
126
126
  offenses: ValidatorSlashOffense[];
127
127
  };
128
128
 
129
- /** Slash payload as published by the empire slash proposer */
130
- export type SlashPayload = {
131
- address: EthAddress;
132
- slashes: ValidatorSlash[];
133
- timestamp: bigint;
134
- };
135
-
136
- /** Slash payload with round information from empire slash proposer */
137
- export type SlashPayloadRound = SlashPayload & { votes: bigint; round: bigint };
138
-
139
- export const SlashPayloadRoundSchema = zodFor<SlashPayloadRound>()(
140
- z.object({
141
- address: schemas.EthAddress,
142
- timestamp: schemas.BigInt,
143
- votes: schemas.BigInt,
144
- round: schemas.BigInt,
145
- slashes: z.array(
146
- z.object({
147
- validator: schemas.EthAddress,
148
- amount: schemas.BigInt,
149
- offenses: z.array(z.object({ offenseType: OffenseTypeSchema, epochOrSlot: schemas.BigInt })),
150
- }),
151
- ),
152
- }),
153
- );
154
-
155
- /** Votes for a validator slash in the consensus slash proposer */
129
+ /** Votes for a validator slash in the slashing proposer */
156
130
  export type ValidatorSlashVote = number;
157
131
 
158
132
  export type ProposerSlashAction =
159
- /** Create a new slash payload on an empire-based slash proposer */
160
- | { type: 'create-empire-payload'; data: ValidatorSlash[] }
161
- /** Vote for a slashing payload on an empire-based slash proposer */
162
- | { type: 'vote-empire-payload'; payload: EthAddress }
163
- /** Execute a slashing payload on an empire-based slash proposer */
164
- | { type: 'execute-empire-payload'; round: bigint }
165
- /** Vote for offenses on a consensus slashing proposer */
133
+ /** Vote for offenses on the slashing proposer */
166
134
  | { type: 'vote-offenses'; votes: ValidatorSlashVote[]; committees: EthAddress[][]; round: bigint }
167
- /** Execute a slashing round on a consensus slashing proposer */
135
+ /** Execute a slashing round on the slashing proposer */
168
136
  | { type: 'execute-slash'; committees: EthAddress[][]; round: bigint };
169
137
 
170
138
  export type ProposerSlashActionType = ProposerSlashAction['type'];
@@ -28,7 +28,7 @@ export function getSlashConsensusVotesFromOffenses(
28
28
  targetCommitteeSize: number;
29
29
  maxSlashedValidators?: number;
30
30
  },
31
- logger: Logger = createLogger('slasher:tally'),
31
+ logger: Logger = createLogger('slasher:votes'),
32
32
  ): ValidatorSlashVote[] {
33
33
  const { slashingAmounts, targetCommitteeSize, maxSlashedValidators } = settings;
34
34
 
@@ -92,10 +92,8 @@ import {
92
92
  type ContractClassPublic,
93
93
  ContractDeploymentData,
94
94
  type ContractInstanceWithAddress,
95
- type ExecutablePrivateFunctionWithMembershipProof,
96
95
  type PrivateFunction,
97
96
  SerializableContractInstance,
98
- type UtilityFunctionWithMembershipProof,
99
97
  computeContractClassId,
100
98
  computePublicBytecodeCommitment,
101
99
  } from '../contract/index.js';
@@ -234,7 +232,7 @@ export function makeTxContext(seed: number = 1): TxContext {
234
232
  * Creates a default instance of gas settings. No seed value is used to ensure we allocate a sensible amount of gas for testing.
235
233
  */
236
234
  export function makeGasSettings() {
237
- return GasSettings.default({ maxFeesPerGas: new GasFees(10, 10) });
235
+ return GasSettings.fallback({ maxFeesPerGas: new GasFees(10, 10) });
238
236
  }
239
237
 
240
238
  /**
@@ -1183,35 +1181,6 @@ export function makePublicTxBaseRollupPrivateInputs(seed = 0) {
1183
1181
  });
1184
1182
  }
1185
1183
 
1186
- export function makeExecutablePrivateFunctionWithMembershipProof(
1187
- seed = 0,
1188
- ): ExecutablePrivateFunctionWithMembershipProof {
1189
- return {
1190
- selector: makeSelector(seed),
1191
- bytecode: makeBytes(100, seed + 1),
1192
- artifactTreeSiblingPath: makeTuple(3, fr, seed + 2),
1193
- artifactTreeLeafIndex: seed + 2,
1194
- privateFunctionTreeSiblingPath: makeTuple(3, fr, seed + 3),
1195
- privateFunctionTreeLeafIndex: seed + 3,
1196
- artifactMetadataHash: fr(seed + 4),
1197
- functionMetadataHash: fr(seed + 5),
1198
- utilityFunctionsTreeRoot: fr(seed + 6),
1199
- vkHash: fr(seed + 7),
1200
- };
1201
- }
1202
-
1203
- export function makeUtilityFunctionWithMembershipProof(seed = 0): UtilityFunctionWithMembershipProof {
1204
- return {
1205
- selector: makeSelector(seed),
1206
- bytecode: makeBytes(100, seed + 1),
1207
- artifactTreeSiblingPath: makeTuple(3, fr, seed + 2),
1208
- artifactTreeLeafIndex: seed + 2,
1209
- artifactMetadataHash: fr(seed + 4),
1210
- functionMetadataHash: fr(seed + 5),
1211
- privateFunctionsArtifactTreeRoot: fr(seed + 6),
1212
- };
1213
- }
1214
-
1215
1184
  export async function makeContractClassPublic(seed = 0, publicBytecode?: Buffer): Promise<ContractClassPublic> {
1216
1185
  const artifactHash = fr(seed + 1);
1217
1186
  const privateFunctionsRoot = fr(seed + 3);
@@ -1223,8 +1192,6 @@ export async function makeContractClassPublic(seed = 0, publicBytecode?: Buffer)
1223
1192
  artifactHash,
1224
1193
  packedBytecode,
1225
1194
  privateFunctionsRoot,
1226
- privateFunctions: [],
1227
- utilityFunctions: [],
1228
1195
  version: 1,
1229
1196
  };
1230
1197
  }
@@ -1748,6 +1715,10 @@ export function makeL2Tips(
1748
1715
  block: { number: bn, hash },
1749
1716
  checkpoint: { number: cpn, hash: cph },
1750
1717
  },
1718
+ proposedCheckpoint: {
1719
+ block: { number: bn, hash },
1720
+ checkpoint: { number: cpn, hash: cph },
1721
+ },
1751
1722
  proven: {
1752
1723
  block: { number: bn, hash },
1753
1724
  checkpoint: { number: cpn, hash: cph },
@@ -134,7 +134,7 @@ export const mockTx = async (
134
134
  const data = PrivateKernelTailCircuitPublicInputs.empty();
135
135
  const firstNullifier = new Nullifier(new Fr(seed + 1), Fr.ZERO, 0);
136
136
  data.constants.anchorBlockHeader = anchorBlockHeader;
137
- data.constants.txContext.gasSettings = GasSettings.default({ gasLimits, maxFeesPerGas, maxPriorityFeesPerGas });
137
+ data.constants.txContext.gasSettings = GasSettings.fallback({ gasLimits, maxFeesPerGas, maxPriorityFeesPerGas });
138
138
  data.feePayer = feePayer ?? (await AztecAddress.random());
139
139
  data.gasUsed = gasUsed;
140
140
  data.constants.txContext.chainId = chainId;
@@ -200,7 +200,7 @@ export async function mockProcessedTx({
200
200
  db,
201
201
  chainId = Fr.ZERO,
202
202
  version = Fr.ZERO,
203
- gasSettings = GasSettings.default({ maxFeesPerGas: new GasFees(10, 10) }),
203
+ gasSettings = GasSettings.fallback({ maxFeesPerGas: new GasFees(10, 10) }),
204
204
  vkTreeRoot = Fr.ZERO,
205
205
  protocolContracts = makeProtocolContracts(seed + 0x100),
206
206
  globalVariables = GlobalVariables.empty(),
@@ -587,6 +587,7 @@ export const makeBlockProposal = (options?: MakeBlockProposalOptions): Promise<B
587
587
 
588
588
  return BlockProposal.createProposalFromSigner(
589
589
  blockHeader,
590
+ CheckpointNumber(1),
590
591
  indexWithinCheckpoint,
591
592
  inHash,
592
593
  archiveRoot,
@@ -596,28 +597,31 @@ export const makeBlockProposal = (options?: MakeBlockProposalOptions): Promise<B
596
597
  );
597
598
  };
598
599
 
599
- export const makeCheckpointProposal = (options?: MakeCheckpointProposalOptions): Promise<CheckpointProposal> => {
600
- const blockHeader = options?.lastBlock?.blockHeader ?? makeBlockHeader(1);
600
+ export const makeCheckpointProposal = async (options?: MakeCheckpointProposalOptions): Promise<CheckpointProposal> => {
601
601
  const checkpointHeader = options?.checkpointHeader ?? makeCheckpointHeader(1);
602
602
  const archiveRoot = options?.archiveRoot ?? Fr.random();
603
603
  const feeAssetPriceModifier = options?.feeAssetPriceModifier ?? 0n;
604
604
  const signer = options?.signer ?? Secp256k1Signer.random();
605
605
 
606
- // Build lastBlock info if provided
607
- const lastBlockInfo = options?.lastBlock
608
- ? {
609
- blockHeader,
610
- indexWithinCheckpoint: options.lastBlock.indexWithinCheckpoint ?? IndexWithinCheckpoint(4), // Last block in a 5-block checkpoint
611
- txHashes: options.lastBlock.txHashes ?? [0, 1, 2, 3, 4, 5].map(() => TxHash.random()),
606
+ // Build a signed block proposal if lastBlock options are provided
607
+ const lastBlockProposal = options?.lastBlock
608
+ ? await makeBlockProposal({
609
+ blockHeader: options.lastBlock.blockHeader,
610
+ indexWithinCheckpoint: options.lastBlock.indexWithinCheckpoint ?? IndexWithinCheckpoint(4),
611
+ inHash: checkpointHeader.inHash,
612
+ archiveRoot,
613
+ txHashes: options.lastBlock.txHashes,
612
614
  txs: options.lastBlock.txs,
613
- }
615
+ signer,
616
+ })
614
617
  : undefined;
615
618
 
616
619
  return CheckpointProposal.createProposalFromSigner(
617
620
  checkpointHeader,
618
621
  archiveRoot,
622
+ CheckpointNumber(1),
619
623
  feeAssetPriceModifier,
620
- lastBlockInfo,
624
+ lastBlockProposal,
621
625
  payload => Promise.resolve(signer.signMessage(payload)),
622
626
  );
623
627
  };
@@ -25,6 +25,219 @@ 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
+ pipelining?: boolean;
38
+ };
39
+
40
+ export interface CheckpointTiming {
41
+ readonly aztecSlotDuration: number;
42
+ readonly blockDuration: number | undefined;
43
+ readonly checkpointAssembleTime: number;
44
+ readonly checkpointInitializationTime: number;
45
+ readonly l1PublishingTime: number;
46
+ readonly minExecutionTime: number;
47
+ readonly p2pPropagationTime: number;
48
+ readonly checkpointFinalizationTime: number;
49
+ readonly pipeliningAttestationGracePeriod: number;
50
+ readonly timeReservedAtEnd: number;
51
+ readonly minimumBuildSlotWork: number;
52
+ readonly initializeDeadline: number;
53
+ readonly checkpointAssemblyDeadline: number;
54
+ readonly checkpointAttestationStartDeadline: number;
55
+ readonly checkpointAttestationDeadline: number;
56
+ readonly checkpointPublishingDeadline: number;
57
+
58
+ calculateMaxBlocksPerSlot(): number;
59
+ }
60
+
61
+ export interface PipelinedCheckpointTiming extends CheckpointTiming {
62
+ readonly proposalWindowIntoTargetSlot: number;
63
+ readonly attestationWindowIntoTargetSlot: number;
64
+ }
65
+
66
+ /**
67
+ * Shared base for checkpoint timing implementations.
68
+ *
69
+ * This class owns the common inputs and formulas used by both pipelined and
70
+ * non-pipelined scheduling. Variant-specific deadline math is delegated to the
71
+ * concrete subclasses below.
72
+ */
73
+ abstract class BaseCheckpointTiming implements CheckpointTiming {
74
+ public readonly aztecSlotDuration: number;
75
+ public readonly blockDuration: number | undefined;
76
+ public readonly checkpointAssembleTime: number;
77
+ public readonly checkpointInitializationTime: number;
78
+ public readonly l1PublishingTime: number;
79
+ public readonly minExecutionTime: number;
80
+ public readonly p2pPropagationTime: number;
81
+
82
+ constructor(opts: CheckpointTimingConfig) {
83
+ this.aztecSlotDuration = opts.aztecSlotDuration;
84
+ this.blockDuration = opts.blockDuration;
85
+
86
+ this.checkpointAssembleTime = opts.checkpointAssembleTime ?? CHECKPOINT_ASSEMBLE_TIME;
87
+ this.checkpointInitializationTime = opts.checkpointInitializationTime ?? CHECKPOINT_INITIALIZATION_TIME;
88
+ this.l1PublishingTime = opts.l1PublishingTime ?? DEFAULT_L1_PUBLISHING_TIME;
89
+ this.minExecutionTime = opts.minExecutionTime ?? MIN_EXECUTION_TIME;
90
+ this.p2pPropagationTime = opts.p2pPropagationTime ?? DEFAULT_P2P_PROPAGATION_TIME;
91
+ }
92
+
93
+ public get checkpointFinalizationTime(): number {
94
+ // Allow enough time to
95
+ // - build the checkpoint
96
+ // - Round-trip over p2p
97
+ // - Publish to L1
98
+ return this.checkpointAssembleTime + this.p2pPropagationTime * 2 + this.l1PublishingTime;
99
+ }
100
+
101
+ public get pipeliningAttestationGracePeriod(): number {
102
+ // Allow enough time to
103
+ // - build the block
104
+ // - pass it back over p2p
105
+ return (this.blockDuration ?? 0) + this.p2pPropagationTime;
106
+ }
107
+
108
+ public abstract get timeReservedAtEnd(): number;
109
+ public abstract get minimumBuildSlotWork(): number;
110
+
111
+ public get initializeDeadline(): number {
112
+ return this.aztecSlotDuration - this.minimumBuildSlotWork;
113
+ }
114
+
115
+ public abstract get checkpointAssemblyDeadline(): number;
116
+
117
+ public get checkpointAttestationStartDeadline(): number {
118
+ return this.checkpointAssemblyDeadline;
119
+ }
120
+
121
+ public abstract get checkpointAttestationDeadline(): number;
122
+ public abstract get checkpointPublishingDeadline(): number;
123
+
124
+ public calculateMaxBlocksPerSlot(): number {
125
+ if (!this.blockDuration) {
126
+ return 1;
127
+ }
128
+
129
+ const timeAvailableForBlocks = this.aztecSlotDuration - this.checkpointInitializationTime - this.timeReservedAtEnd;
130
+ return Math.floor(timeAvailableForBlocks / this.blockDuration);
131
+ }
132
+ }
133
+
134
+ /**
135
+ * Checkpoint timing model for the non-pipelined sequencer flow.
136
+ *
137
+ * In this mode, checkpoint assembly, attestation collection, and L1 publishing
138
+ * must all complete within the current Aztec slot.
139
+ */
140
+ class StandardCheckpointTimingModel extends BaseCheckpointTiming {
141
+ public get timeReservedAtEnd(): number {
142
+ return (this.blockDuration ?? 0) + this.checkpointFinalizationTime;
143
+ }
144
+
145
+ public get minimumBuildSlotWork(): number {
146
+ return this.checkpointInitializationTime + this.minExecutionTime * 2 + this.checkpointFinalizationTime;
147
+ }
148
+
149
+ public get checkpointAssemblyDeadline(): number {
150
+ return this.aztecSlotDuration - this.l1PublishingTime - 2 * this.p2pPropagationTime;
151
+ }
152
+
153
+ public get checkpointAttestationDeadline(): number {
154
+ return this.aztecSlotDuration - this.l1PublishingTime;
155
+ }
156
+
157
+ public get checkpointPublishingDeadline(): number {
158
+ return this.aztecSlotDuration - this.l1PublishingTime;
159
+ }
160
+ }
161
+
162
+ /**
163
+ * Checkpoint timing model for proposer pipelining.
164
+ *
165
+ * In this mode, the build work still starts in the current slot, but checkpoint
166
+ * assembly and attestation collection can extend into the target slot. The extra
167
+ * target-slot window getters are intended for consumers such as P2P validators
168
+ * that need to validate pipelined messages against wallclock time.
169
+ */
170
+ class PipelinedCheckpointTimingModel extends BaseCheckpointTiming implements PipelinedCheckpointTiming {
171
+ public get proposalWindowIntoTargetSlot(): number {
172
+ // Allow the p2p propagation time to receive a checkpoint proposal from leader
173
+ return this.p2pPropagationTime;
174
+ }
175
+
176
+ public get attestationWindowIntoTargetSlot(): number {
177
+ return this.aztecSlotDuration - this.l1PublishingTime;
178
+ }
179
+
180
+ public get timeReservedAtEnd(): number {
181
+ return this.checkpointAssembleTime + this.p2pPropagationTime;
182
+ }
183
+
184
+ public get minimumBuildSlotWork(): number {
185
+ return this.checkpointInitializationTime + this.minExecutionTime * 2;
186
+ }
187
+
188
+ public get checkpointAssemblyDeadline(): number {
189
+ // Allow enough time to
190
+ // - build all blocks
191
+ // - receive attestations
192
+ return this.aztecSlotDuration + this.pipeliningAttestationGracePeriod;
193
+ }
194
+
195
+ public get checkpointAttestationDeadline(): number {
196
+ // Allowed to be into the next wallclock slot minus the allocated l1 publishing time
197
+ return this.aztecSlotDuration * 2 - this.l1PublishingTime;
198
+ }
199
+
200
+ public get checkpointPublishingDeadline(): number {
201
+ // Allowed to be into the next wallclock slot minus the allocated l1 Publishing time
202
+ return this.aztecSlotDuration * 2 - this.l1PublishingTime;
203
+ }
204
+ }
205
+
206
+ /**
207
+ * Creates a checkpoint timing model for the requested scheduling mode.
208
+ *
209
+ * Most callers should use this factory and depend only on the shared
210
+ * `CheckpointTiming` interface. The returned implementation is selected from
211
+ * `opts.pipelining`.
212
+ */
213
+ export function createCheckpointTimingModel(opts: CheckpointTimingConfig): CheckpointTiming {
214
+ validateCheckpointTimingConfig(opts);
215
+ const normalizedOpts = normalizeCheckpointTimingConfig(opts);
216
+
217
+ const timing = normalizedOpts.pipelining
218
+ ? new PipelinedCheckpointTimingModel(normalizedOpts)
219
+ : new StandardCheckpointTimingModel(normalizedOpts);
220
+ validateCheckpointTimingModel(timing);
221
+ return timing;
222
+ }
223
+
224
+ /**
225
+ * Creates a pipelined checkpoint timing model with target-slot window accessors.
226
+ *
227
+ * Use this when the caller specifically needs the pipelined-only timing surface,
228
+ * such as proposal or attestation acceptance windows into the target slot.
229
+ */
230
+ export function createPipelinedCheckpointTimingModel(
231
+ opts: Omit<CheckpointTimingConfig, 'pipelining'>,
232
+ ): PipelinedCheckpointTiming {
233
+ validateCheckpointTimingConfig(opts);
234
+ const normalizedOpts = normalizeCheckpointTimingConfig(opts);
235
+
236
+ const timing = new PipelinedCheckpointTimingModel(normalizedOpts);
237
+ validateCheckpointTimingModel(timing);
238
+ return timing;
239
+ }
240
+
28
241
  /**
29
242
  * Calculates the maximum number of blocks that can be built in a slot.
30
243
  * Used by both the sequencer timetable and p2p gossipsub scoring.
@@ -42,25 +255,92 @@ export function calculateMaxBlocksPerSlot(
42
255
  checkpointAssembleTime?: number;
43
256
  p2pPropagationTime?: number;
44
257
  l1PublishingTime?: number;
258
+ pipelining?: boolean;
45
259
  } = {},
46
260
  ): number {
47
- if (!blockDurationSec) {
48
- return 1; // Single block per slot
261
+ return createCheckpointTimingModel({
262
+ aztecSlotDuration: aztecSlotDurationSec,
263
+ blockDuration: blockDurationSec,
264
+ checkpointAssembleTime: opts.checkpointAssembleTime,
265
+ checkpointInitializationTime: opts.checkpointInitializationTime,
266
+ l1PublishingTime: opts.l1PublishingTime,
267
+ p2pPropagationTime: opts.p2pPropagationTime,
268
+ pipelining: opts.pipelining,
269
+ }).calculateMaxBlocksPerSlot();
270
+ }
271
+
272
+ function assertNonNegative(name: string, value: number): void {
273
+ if (value < 0) {
274
+ throw new Error(`${name} must be non-negative (got ${value})`);
49
275
  }
276
+ }
50
277
 
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;
278
+ function validateCheckpointTimingConfig(opts: CheckpointTimingConfig): void {
279
+ if (opts.aztecSlotDuration <= 0) {
280
+ throw new Error(`aztecSlotDuration must be positive (got ${opts.aztecSlotDuration})`);
281
+ }
55
282
 
56
- // Calculate checkpoint finalization time (assembly + round-trip propagation + L1 publishing)
57
- const checkpointFinalizationTime = assembleTime + p2pTime * 2 + l1Time;
283
+ if (opts.ethereumSlotDuration !== undefined && opts.ethereumSlotDuration <= 0) {
284
+ throw new Error(`ethereumSlotDuration must be positive when provided (got ${opts.ethereumSlotDuration})`);
285
+ }
58
286
 
59
- // Time reserved at end for last sub-slot (validator re-execution) + finalization
60
- const timeReservedAtEnd = blockDurationSec + checkpointFinalizationTime;
287
+ if (opts.blockDuration !== undefined && opts.blockDuration <= 0) {
288
+ throw new Error(`blockDuration must be positive when provided (got ${opts.blockDuration})`);
289
+ }
61
290
 
62
- // Time available for building blocks
63
- const timeAvailableForBlocks = aztecSlotDurationSec - initOffset - timeReservedAtEnd;
291
+ if (opts.minExecutionTime !== undefined && opts.minExecutionTime <= 0) {
292
+ throw new Error(`minExecutionTime must be positive when provided (got ${opts.minExecutionTime})`);
293
+ }
64
294
 
65
- return Math.max(1, Math.floor(timeAvailableForBlocks / blockDurationSec));
295
+ if (opts.checkpointAssembleTime !== undefined) {
296
+ assertNonNegative('checkpointAssembleTime', opts.checkpointAssembleTime);
297
+ }
298
+ if (opts.checkpointInitializationTime !== undefined) {
299
+ assertNonNegative('checkpointInitializationTime', opts.checkpointInitializationTime);
300
+ }
301
+ if (opts.l1PublishingTime !== undefined) {
302
+ assertNonNegative('l1PublishingTime', opts.l1PublishingTime);
303
+ }
304
+ if (opts.p2pPropagationTime !== undefined) {
305
+ assertNonNegative('p2pPropagationTime', opts.p2pPropagationTime);
306
+ }
307
+ }
308
+
309
+ function normalizeCheckpointTimingConfig(opts: CheckpointTimingConfig): CheckpointTimingConfig {
310
+ let checkpointAssembleTime = opts.checkpointAssembleTime ?? CHECKPOINT_ASSEMBLE_TIME;
311
+ let checkpointInitializationTime = opts.checkpointInitializationTime ?? CHECKPOINT_INITIALIZATION_TIME;
312
+ let minExecutionTime = opts.minExecutionTime ?? MIN_EXECUTION_TIME;
313
+ let p2pPropagationTime = opts.p2pPropagationTime ?? DEFAULT_P2P_PROPAGATION_TIME;
314
+
315
+ if (opts.ethereumSlotDuration !== undefined && opts.ethereumSlotDuration < 8) {
316
+ p2pPropagationTime = 0;
317
+ checkpointAssembleTime = 0.5;
318
+ checkpointInitializationTime = 0.5;
319
+ minExecutionTime = 1;
320
+ }
321
+
322
+ if (opts.blockDuration !== undefined && minExecutionTime > opts.blockDuration) {
323
+ minExecutionTime = opts.blockDuration;
324
+ }
325
+
326
+ return {
327
+ ...opts,
328
+ checkpointAssembleTime,
329
+ checkpointInitializationTime,
330
+ minExecutionTime,
331
+ p2pPropagationTime,
332
+ };
333
+ }
334
+
335
+ function validateCheckpointTimingModel(model: CheckpointTiming): void {
336
+ if (model.blockDuration === undefined) {
337
+ return;
338
+ }
339
+
340
+ const timeAvailableForBlocks = model.aztecSlotDuration - model.checkpointInitializationTime - model.timeReservedAtEnd;
341
+ if (timeAvailableForBlocks < model.blockDuration) {
342
+ throw new Error(
343
+ `Invalid timing configuration: only ${timeAvailableForBlocks}s available for block building, which is less than one blockDuration (${model.blockDuration}s).`,
344
+ );
345
+ }
66
346
  }
@@ -172,8 +172,8 @@ export class BlockHeader {
172
172
  }
173
173
 
174
174
  /** Manually set the hash for this block header if already computed */
175
- setHash(hashed: Fr) {
176
- this._cachedHash = Promise.resolve(new BlockHash(hashed));
175
+ setHash(hashed: BlockHash) {
176
+ this._cachedHash = Promise.resolve(hashed);
177
177
  }
178
178
 
179
179
  /** Recomputes the cached hash. Used for testing when header fields are mutated via unfreeze. */
package/src/tx/capsule.ts CHANGED
@@ -19,6 +19,8 @@ export class Capsule {
19
19
  public readonly storageSlot: Fr,
20
20
  /** Data passed to the contract */
21
21
  public readonly data: Fr[],
22
+ /** Optional namespace for the capsule contents */
23
+ public readonly scope?: AztecAddress,
22
24
  ) {}
23
25
 
24
26
  static get schema() {
@@ -30,12 +32,18 @@ export class Capsule {
30
32
  }
31
33
 
32
34
  toBuffer() {
33
- return serializeToBuffer(this.contractAddress, this.storageSlot, new Vector(this.data));
35
+ return this.scope
36
+ ? serializeToBuffer(this.contractAddress, this.storageSlot, new Vector(this.data), true, this.scope)
37
+ : serializeToBuffer(this.contractAddress, this.storageSlot, new Vector(this.data), false);
34
38
  }
35
39
 
36
40
  static fromBuffer(buffer: Buffer | BufferReader): Capsule {
37
41
  const reader = BufferReader.asReader(buffer);
38
- return new Capsule(AztecAddress.fromBuffer(reader), Fr.fromBuffer(reader), reader.readVector(Fr));
42
+ const contractAddress = AztecAddress.fromBuffer(reader);
43
+ const storageSlot = Fr.fromBuffer(reader);
44
+ const data = reader.readVector(Fr);
45
+ const hasScope = reader.readBoolean();
46
+ return new Capsule(contractAddress, storageSlot, data, hasScope ? AztecAddress.fromBuffer(reader) : undefined);
39
47
  }
40
48
 
41
49
  toString() {
@@ -0,0 +1,10 @@
1
+ import type { ManaUsageEstimate } from '../gas/fee_math.js';
2
+ import type { GasFees } from '../gas/gas_fees.js';
3
+
4
+ /** Provides current and predicted fee information for transaction pricing. */
5
+ export interface FeeProvider {
6
+ /** Returns the current minimum fees for inclusion in the next block. */
7
+ getCurrentMinFees(): Promise<GasFees>;
8
+ /** Returns predicted min fees for each slot in the prediction window. */
9
+ getPredictedMinFees(manaUsage?: ManaUsageEstimate): Promise<GasFees[]>;
10
+ }
@@ -1,8 +1,8 @@
1
+ import type { SimulationOverridesPlan } from '@aztec/ethereum/contracts';
1
2
  import type { EthAddress } from '@aztec/foundation/eth-address';
2
3
  import type { SlotNumber } from '@aztec/foundation/schemas';
3
4
 
4
5
  import type { AztecAddress } from '../aztec-address/index.js';
5
- import type { GasFees } from '../gas/gas_fees.js';
6
6
  import type { UInt32 } from '../types/index.js';
7
7
  import type { CheckpointGlobalVariables, GlobalVariables } from './global_variables.js';
8
8
 
@@ -10,8 +10,6 @@ import type { CheckpointGlobalVariables, GlobalVariables } from './global_variab
10
10
  * Interface for building global variables for Aztec blocks.
11
11
  */
12
12
  export interface GlobalVariableBuilder {
13
- getCurrentMinFees(): Promise<GasFees>;
14
-
15
13
  /**
16
14
  * Builds global variables for a given block.
17
15
  * @param blockNumber - The block number to build global variables for.
@@ -32,5 +30,6 @@ export interface GlobalVariableBuilder {
32
30
  coinbase: EthAddress,
33
31
  feeRecipient: AztecAddress,
34
32
  slotNumber: SlotNumber,
33
+ simulationOverridesPlan?: SimulationOverridesPlan,
35
34
  ): Promise<CheckpointGlobalVariables>;
36
35
  }
package/src/tx/index.ts CHANGED
@@ -24,6 +24,7 @@ export * from './validator/tx_validator.js';
24
24
  export * from './validator/empty_validator.js';
25
25
  export * from './validator/error_texts.js';
26
26
  export * from './capsule.js';
27
+ export * from './fee_provider.js';
27
28
  export * from './global_variable_builder.js';
28
29
  export * from './hashed_values.js';
29
30
  export * from './indexed_tx_effect.js';
@@ -1,5 +1,4 @@
1
1
  import { BlockNumber } from '@aztec/foundation/branded-types';
2
- import { Fr } from '@aztec/foundation/curves/bn254';
3
2
  import { schemas } from '@aztec/foundation/schemas';
4
3
  import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
5
4
 
@@ -27,7 +26,7 @@ export function serializeIndexedTxEffect(effect: IndexedTxEffect): Buffer {
27
26
  export function deserializeIndexedTxEffect(buffer: Buffer): IndexedTxEffect {
28
27
  const reader = BufferReader.asReader(buffer);
29
28
 
30
- const l2BlockHash = new BlockHash(reader.readObject(Fr));
29
+ const l2BlockHash = BlockHash.fromBuffer(reader);
31
30
  const l2BlockNumber = BlockNumber(reader.readNumber());
32
31
  const txIndexInBlock = reader.readNumber();
33
32
  const data = reader.readObject(TxEffect);
@@ -11,7 +11,7 @@ import { PrivateCircuitPublicInputs } from '../kernel/private_circuit_public_inp
11
11
  import type { IsEmpty } from '../kernel/utils/interfaces.js';
12
12
  import { sortByCounter } from '../kernel/utils/order_and_comparison.js';
13
13
  import { ContractClassLog, ContractClassLogFields } from '../logs/contract_class_log.js';
14
- import { type PreTag, PreTagSchema } from '../logs/pre_tag.js';
14
+ import { type TaggingIndexRange, TaggingIndexRangeSchema } from '../logs/tagging_index_range.js';
15
15
  import { Note } from '../note/note.js';
16
16
  import { type ZodFor, mapSchema, schemas } from '../schemas/index.js';
17
17
  import { HashedValues } from './hashed_values.js';
@@ -137,8 +137,8 @@ export class PrivateCallExecutionResult {
137
137
  public returnValues: Fr[],
138
138
  /** The offchain effects emitted during execution of this function call via the `emit_offchain_effect` oracle. */
139
139
  public offchainEffects: { data: Fr[] }[],
140
- /** The pre-tags used in this tx to compute tags for private logs */
141
- public preTags: PreTag[],
140
+ /** The tagging index ranges used in this tx to compute tags for private logs */
141
+ public taggingIndexRanges: TaggingIndexRange[],
142
142
  /** The nested executions. */
143
143
  public nestedExecutionResults: PrivateCallExecutionResult[],
144
144
  /**
@@ -161,7 +161,7 @@ export class PrivateCallExecutionResult {
161
161
  noteHashNullifierCounterMap: mapSchema(z.coerce.number(), z.number()),
162
162
  returnValues: z.array(schemas.Fr),
163
163
  offchainEffects: z.array(z.object({ data: z.array(schemas.Fr) })),
164
- preTags: z.array(PreTagSchema),
164
+ taggingIndexRanges: z.array(TaggingIndexRangeSchema),
165
165
  nestedExecutionResults: z.array(z.lazy(() => PrivateCallExecutionResult.schema)),
166
166
  contractClassLogs: z.array(CountedContractClassLog.schema),
167
167
  })
@@ -178,7 +178,7 @@ export class PrivateCallExecutionResult {
178
178
  fields.noteHashNullifierCounterMap,
179
179
  fields.returnValues,
180
180
  fields.offchainEffects,
181
- fields.preTags,
181
+ fields.taggingIndexRanges,
182
182
  fields.nestedExecutionResults,
183
183
  fields.contractClassLogs,
184
184
  );