@aztec/stdlib 0.0.1-commit.2f68f620 → 0.0.1-commit.321f6a9

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 (445) hide show
  1. package/dest/abi/abi.d.ts +8 -1
  2. package/dest/abi/abi.d.ts.map +1 -1
  3. package/dest/abi/buffer.d.ts +6 -2
  4. package/dest/abi/buffer.d.ts.map +1 -1
  5. package/dest/abi/buffer.js +13 -1
  6. package/dest/abi/contract_artifact.d.ts +1 -1
  7. package/dest/abi/contract_artifact.d.ts.map +1 -1
  8. package/dest/abi/contract_artifact.js +26 -8
  9. package/dest/avm/avm.js +1 -1
  10. package/dest/aztec-address/index.d.ts +35 -5
  11. package/dest/aztec-address/index.d.ts.map +1 -1
  12. package/dest/aztec-address/index.js +32 -8
  13. package/dest/block/attestation_info.d.ts +1 -1
  14. package/dest/block/attestation_info.d.ts.map +1 -1
  15. package/dest/block/attestation_info.js +7 -4
  16. package/dest/block/l2_block_source.d.ts +46 -23
  17. package/dest/block/l2_block_source.d.ts.map +1 -1
  18. package/dest/block/l2_block_source.js +15 -1
  19. package/dest/block/l2_block_stream/event_driven_l2_block_stream.d.ts +39 -0
  20. package/dest/block/l2_block_stream/event_driven_l2_block_stream.d.ts.map +1 -0
  21. package/dest/block/l2_block_stream/event_driven_l2_block_stream.js +165 -0
  22. package/dest/block/l2_block_stream/index.d.ts +2 -1
  23. package/dest/block/l2_block_stream/index.d.ts.map +1 -1
  24. package/dest/block/l2_block_stream/index.js +1 -0
  25. package/dest/block/l2_block_stream/interfaces.d.ts +81 -11
  26. package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
  27. package/dest/block/l2_block_stream/interfaces.js +25 -1
  28. package/dest/block/l2_block_stream/l2_block_stream.d.ts +23 -15
  29. package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
  30. package/dest/block/l2_block_stream/l2_block_stream.js +149 -152
  31. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts +6 -12
  32. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts.map +1 -1
  33. package/dest/block/l2_block_stream/l2_tips_memory_store.js +8 -32
  34. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +17 -18
  35. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -1
  36. package/dest/block/l2_block_stream/l2_tips_store_base.js +70 -58
  37. package/dest/block/proposal/attestations_and_signers.d.ts +19 -1
  38. package/dest/block/proposal/attestations_and_signers.d.ts.map +1 -1
  39. package/dest/block/proposal/attestations_and_signers.js +47 -7
  40. package/dest/block/test/l2_tips_store_test_suite.d.ts +1 -1
  41. package/dest/block/test/l2_tips_store_test_suite.d.ts.map +1 -1
  42. package/dest/block/test/l2_tips_store_test_suite.js +296 -37
  43. package/dest/block/validate_block_result.d.ts +16 -1
  44. package/dest/block/validate_block_result.d.ts.map +1 -1
  45. package/dest/block/validate_block_result.js +18 -3
  46. package/dest/checkpoint/checkpoint.js +2 -2
  47. package/dest/checkpoint/index.d.ts +2 -1
  48. package/dest/checkpoint/index.d.ts.map +1 -1
  49. package/dest/checkpoint/index.js +1 -0
  50. package/dest/checkpoint/simulation_overrides.d.ts +61 -0
  51. package/dest/checkpoint/simulation_overrides.d.ts.map +1 -0
  52. package/dest/checkpoint/simulation_overrides.js +98 -0
  53. package/dest/checkpoint/validate.d.ts +11 -3
  54. package/dest/checkpoint/validate.d.ts.map +1 -1
  55. package/dest/checkpoint/validate.js +9 -6
  56. package/dest/config/index.d.ts +2 -1
  57. package/dest/config/index.d.ts.map +1 -1
  58. package/dest/config/index.js +1 -0
  59. package/dest/config/network-consensus-config.d.ts +72 -0
  60. package/dest/config/network-consensus-config.d.ts.map +1 -0
  61. package/dest/config/network-consensus-config.js +223 -0
  62. package/dest/config/sequencer-config.d.ts +4 -2
  63. package/dest/config/sequencer-config.d.ts.map +1 -1
  64. package/dest/config/sequencer-config.js +22 -3
  65. package/dest/contract/contract_address.d.ts +5 -4
  66. package/dest/contract/contract_address.d.ts.map +1 -1
  67. package/dest/contract/contract_class.d.ts +1 -1
  68. package/dest/contract/contract_class.d.ts.map +1 -1
  69. package/dest/contract/contract_class.js +3 -2
  70. package/dest/contract/contract_instance.d.ts +16 -2
  71. package/dest/contract/contract_instance.d.ts.map +1 -1
  72. package/dest/contract/contract_instance.js +45 -0
  73. package/dest/contract/interfaces/contract_data_source.d.ts +3 -5
  74. package/dest/contract/interfaces/contract_data_source.d.ts.map +1 -1
  75. package/dest/contract/interfaces/contract_instance.d.ts +71 -10
  76. package/dest/contract/interfaces/contract_instance.d.ts.map +1 -1
  77. package/dest/contract/interfaces/contract_instance.js +7 -2
  78. package/dest/contract/interfaces/node-info.d.ts +11 -1
  79. package/dest/contract/interfaces/node-info.d.ts.map +1 -1
  80. package/dest/contract/interfaces/node-info.js +7 -1
  81. package/dest/contract/partial_address.d.ts +9 -3
  82. package/dest/contract/partial_address.d.ts.map +1 -1
  83. package/dest/contract/partial_address.js +8 -2
  84. package/dest/database-version/version_manager.d.ts +18 -4
  85. package/dest/database-version/version_manager.d.ts.map +1 -1
  86. package/dest/database-version/version_manager.js +76 -6
  87. package/dest/deserialization/index.d.ts +35 -3
  88. package/dest/deserialization/index.d.ts.map +1 -1
  89. package/dest/deserialization/index.js +32 -1
  90. package/dest/file-store/factory.d.ts +1 -1
  91. package/dest/file-store/factory.d.ts.map +1 -1
  92. package/dest/file-store/factory.js +7 -0
  93. package/dest/file-store/index.d.ts +2 -1
  94. package/dest/file-store/index.d.ts.map +1 -1
  95. package/dest/file-store/index.js +1 -0
  96. package/dest/file-store/memory.d.ts +24 -0
  97. package/dest/file-store/memory.d.ts.map +1 -0
  98. package/dest/file-store/memory.js +80 -0
  99. package/dest/gas/gas_settings.d.ts +7 -13
  100. package/dest/gas/gas_settings.d.ts.map +1 -1
  101. package/dest/gas/gas_settings.js +9 -16
  102. package/dest/gas/index.d.ts +2 -1
  103. package/dest/gas/index.d.ts.map +1 -1
  104. package/dest/gas/index.js +1 -0
  105. package/dest/gas/tx_gas_limits.d.ts +72 -0
  106. package/dest/gas/tx_gas_limits.d.ts.map +1 -0
  107. package/dest/gas/tx_gas_limits.js +85 -0
  108. package/dest/ha-signing/config.d.ts +19 -5
  109. package/dest/ha-signing/config.d.ts.map +1 -1
  110. package/dest/ha-signing/config.js +9 -3
  111. package/dest/ha-signing/local_config.d.ts +10 -2
  112. package/dest/ha-signing/local_config.d.ts.map +1 -1
  113. package/dest/ha-signing/local_config.js +8 -2
  114. package/dest/hash/hash.d.ts +1 -2
  115. package/dest/hash/hash.d.ts.map +1 -1
  116. package/dest/hash/hash.js +0 -7
  117. package/dest/interfaces/archiver.d.ts +12 -7
  118. package/dest/interfaces/archiver.d.ts.map +1 -1
  119. package/dest/interfaces/archiver.js +4 -2
  120. package/dest/interfaces/aztec-node-admin.d.ts +24 -17
  121. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  122. package/dest/interfaces/aztec-node-admin.js +1 -1
  123. package/dest/interfaces/aztec-node-debug.d.ts +40 -2
  124. package/dest/interfaces/aztec-node-debug.d.ts.map +1 -1
  125. package/dest/interfaces/aztec-node-debug.js +29 -1
  126. package/dest/interfaces/aztec-node.d.ts +69 -28
  127. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  128. package/dest/interfaces/aztec-node.js +56 -20
  129. package/dest/interfaces/block-builder.d.ts +9 -2
  130. package/dest/interfaces/block-builder.d.ts.map +1 -1
  131. package/dest/interfaces/chain_tips.d.ts +8 -47
  132. package/dest/interfaces/chain_tips.d.ts.map +1 -1
  133. package/dest/interfaces/chain_tips.js +1 -6
  134. package/dest/interfaces/checkpoint_parameter.d.ts +3 -3
  135. package/dest/interfaces/checkpoint_parameter.d.ts.map +1 -1
  136. package/dest/interfaces/checkpoint_parameter.js +3 -3
  137. package/dest/interfaces/client.d.ts +2 -1
  138. package/dest/interfaces/client.d.ts.map +1 -1
  139. package/dest/interfaces/configs.d.ts +27 -6
  140. package/dest/interfaces/configs.d.ts.map +1 -1
  141. package/dest/interfaces/configs.js +5 -1
  142. package/dest/interfaces/get_tx_by_hash_options.d.ts +9 -0
  143. package/dest/interfaces/get_tx_by_hash_options.d.ts.map +1 -0
  144. package/dest/interfaces/get_tx_by_hash_options.js +4 -0
  145. package/dest/interfaces/merkle_tree_operations.d.ts +3 -4
  146. package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
  147. package/dest/interfaces/p2p.d.ts +38 -9
  148. package/dest/interfaces/p2p.d.ts.map +1 -1
  149. package/dest/interfaces/p2p.js +14 -2
  150. package/dest/interfaces/private_kernel_prover.d.ts +71 -12
  151. package/dest/interfaces/private_kernel_prover.d.ts.map +1 -1
  152. package/dest/interfaces/prover-client.d.ts +2 -3
  153. package/dest/interfaces/prover-client.d.ts.map +1 -1
  154. package/dest/interfaces/prover-node.d.ts +12 -8
  155. package/dest/interfaces/prover-node.d.ts.map +1 -1
  156. package/dest/interfaces/prover-node.js +24 -17
  157. package/dest/interfaces/proving-job.d.ts +87 -74
  158. package/dest/interfaces/proving-job.d.ts.map +1 -1
  159. package/dest/interfaces/proving-job.js +13 -4
  160. package/dest/interfaces/server.d.ts +1 -2
  161. package/dest/interfaces/server.d.ts.map +1 -1
  162. package/dest/interfaces/server.js +0 -1
  163. package/dest/interfaces/server_circuit_prover.d.ts +3 -3
  164. package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
  165. package/dest/interfaces/validator.d.ts +15 -4
  166. package/dest/interfaces/validator.d.ts.map +1 -1
  167. package/dest/interfaces/validator.js +3 -1
  168. package/dest/interfaces/world_state.d.ts +14 -1
  169. package/dest/interfaces/world_state.d.ts.map +1 -1
  170. package/dest/kernel/hints/find_private_kernel_reset_dimensions.d.ts +8 -2
  171. package/dest/kernel/hints/find_private_kernel_reset_dimensions.d.ts.map +1 -1
  172. package/dest/kernel/hints/find_private_kernel_reset_dimensions.js +12 -74
  173. package/dest/kernel/hints/read_request.js +1 -1
  174. package/dest/kernel/index.d.ts +6 -2
  175. package/dest/kernel/index.d.ts.map +1 -1
  176. package/dest/kernel/index.js +5 -1
  177. package/dest/kernel/log_hash.d.ts +1 -1
  178. package/dest/kernel/log_hash.d.ts.map +1 -1
  179. package/dest/kernel/log_hash.js +2 -2
  180. package/dest/kernel/note_hash.js +1 -1
  181. package/dest/kernel/nullifier.js +1 -1
  182. package/dest/kernel/private_circuit_public_inputs.d.ts +13 -3
  183. package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
  184. package/dest/kernel/private_circuit_public_inputs.js +14 -7
  185. package/dest/kernel/private_context_inputs.d.ts +4 -3
  186. package/dest/kernel/private_context_inputs.d.ts.map +1 -1
  187. package/dest/kernel/private_context_inputs.js +7 -3
  188. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts +7 -9
  189. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts.map +1 -1
  190. package/dest/kernel/private_kernel_circuit_public_inputs.js +10 -7
  191. package/dest/kernel/private_kernel_init_2_circuit_private_inputs.d.ts +2 -3
  192. package/dest/kernel/private_kernel_init_2_circuit_private_inputs.d.ts.map +1 -1
  193. package/dest/kernel/private_kernel_init_2_circuit_private_inputs.js +3 -5
  194. package/dest/kernel/private_kernel_init_3_circuit_private_inputs.d.ts +2 -3
  195. package/dest/kernel/private_kernel_init_3_circuit_private_inputs.d.ts.map +1 -1
  196. package/dest/kernel/private_kernel_init_3_circuit_private_inputs.js +3 -5
  197. package/dest/kernel/private_kernel_init_4_circuit_private_inputs.d.ts +24 -0
  198. package/dest/kernel/private_kernel_init_4_circuit_private_inputs.d.ts.map +1 -0
  199. package/dest/kernel/private_kernel_init_4_circuit_private_inputs.js +37 -0
  200. package/dest/kernel/private_kernel_init_5_circuit_private_inputs.d.ts +25 -0
  201. package/dest/kernel/private_kernel_init_5_circuit_private_inputs.d.ts.map +1 -0
  202. package/dest/kernel/private_kernel_init_5_circuit_private_inputs.js +39 -0
  203. package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts +1 -9
  204. package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts.map +1 -1
  205. package/dest/kernel/private_kernel_init_circuit_private_inputs.js +2 -6
  206. package/dest/kernel/private_kernel_inner_4_circuit_private_inputs.d.ts +18 -0
  207. package/dest/kernel/private_kernel_inner_4_circuit_private_inputs.d.ts.map +1 -0
  208. package/dest/kernel/private_kernel_inner_4_circuit_private_inputs.js +27 -0
  209. package/dest/kernel/private_kernel_inner_5_circuit_private_inputs.d.ts +19 -0
  210. package/dest/kernel/private_kernel_inner_5_circuit_private_inputs.d.ts.map +1 -0
  211. package/dest/kernel/private_kernel_inner_5_circuit_private_inputs.js +29 -0
  212. package/dest/kernel/private_kernel_prover_output.d.ts +4 -1
  213. package/dest/kernel/private_kernel_prover_output.d.ts.map +1 -1
  214. package/dest/kernel/private_kernel_prover_output.js +4 -1
  215. package/dest/kernel/private_kernel_reset_dimensions.d.ts +7 -8
  216. package/dest/kernel/private_kernel_reset_dimensions.d.ts.map +1 -1
  217. package/dest/kernel/private_kernel_reset_tail_circuit_private_inputs.d.ts +29 -0
  218. package/dest/kernel/private_kernel_reset_tail_circuit_private_inputs.d.ts.map +1 -0
  219. package/dest/kernel/private_kernel_reset_tail_circuit_private_inputs.js +36 -0
  220. package/dest/kernel/private_log_data.d.ts +1 -1
  221. package/dest/kernel/private_log_data.d.ts.map +1 -1
  222. package/dest/kernel/private_log_data.js +1 -1
  223. package/dest/keys/derivation.d.ts +41 -6
  224. package/dest/keys/derivation.d.ts.map +1 -1
  225. package/dest/keys/derivation.js +49 -26
  226. package/dest/logs/app_tagging_secret.d.ts +30 -7
  227. package/dest/logs/app_tagging_secret.d.ts.map +1 -1
  228. package/dest/logs/app_tagging_secret.js +46 -39
  229. package/dest/logs/app_tagging_secret_kind.js +1 -1
  230. package/dest/logs/contract_class_log.d.ts +1 -2
  231. package/dest/logs/contract_class_log.d.ts.map +1 -1
  232. package/dest/logs/contract_class_log.js +0 -4
  233. package/dest/logs/message_context.d.ts +5 -15
  234. package/dest/logs/message_context.d.ts.map +1 -1
  235. package/dest/logs/message_context.js +1 -66
  236. package/dest/logs/pending_tagged_log.d.ts +6 -8
  237. package/dest/logs/pending_tagged_log.d.ts.map +1 -1
  238. package/dest/logs/pending_tagged_log.js +1 -31
  239. package/dest/logs/shared_secret_derivation.d.ts +29 -6
  240. package/dest/logs/shared_secret_derivation.d.ts.map +1 -1
  241. package/dest/logs/shared_secret_derivation.js +44 -11
  242. package/dest/messaging/l1_to_l2_message.d.ts +23 -2
  243. package/dest/messaging/l1_to_l2_message.d.ts.map +1 -1
  244. package/dest/messaging/l1_to_l2_message.js +36 -11
  245. package/dest/noir/index.d.ts +3 -3
  246. package/dest/noir/index.d.ts.map +1 -1
  247. package/dest/p2p/attestation_utils.d.ts +1 -1
  248. package/dest/p2p/attestation_utils.d.ts.map +1 -1
  249. package/dest/p2p/attestation_utils.js +8 -1
  250. package/dest/p2p/checkpoint_attestation.d.ts +10 -1
  251. package/dest/p2p/checkpoint_attestation.d.ts.map +1 -1
  252. package/dest/p2p/checkpoint_attestation.js +10 -0
  253. package/dest/p2p/checkpoint_proposal.d.ts +2 -1
  254. package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
  255. package/dest/p2p/consensus_payload.d.ts +2 -1
  256. package/dest/p2p/consensus_payload.d.ts.map +1 -1
  257. package/dest/p2p/signature_utils.d.ts +10 -1
  258. package/dest/p2p/signature_utils.d.ts.map +1 -1
  259. package/dest/p2p/signature_utils.js +9 -1
  260. package/dest/rollup/avm_proof_data.d.ts +3 -3
  261. package/dest/rollup/avm_proof_data.d.ts.map +1 -1
  262. package/dest/rollup/checkpoint_header.d.ts +8 -3
  263. package/dest/rollup/checkpoint_header.d.ts.map +1 -1
  264. package/dest/rollup/checkpoint_header.js +20 -10
  265. package/dest/rollup/checkpoint_rollup_public_inputs.d.ts +1 -1
  266. package/dest/stats/stats.d.ts +2 -2
  267. package/dest/stats/stats.d.ts.map +1 -1
  268. package/dest/tests/factories.d.ts +1 -1
  269. package/dest/tests/factories.d.ts.map +1 -1
  270. package/dest/tests/factories.js +10 -15
  271. package/dest/tests/mocks.d.ts +1 -1
  272. package/dest/tests/mocks.d.ts.map +1 -1
  273. package/dest/tests/mocks.js +3 -2
  274. package/dest/timetable/budgets.d.ts +57 -0
  275. package/dest/timetable/budgets.d.ts.map +1 -0
  276. package/dest/timetable/budgets.js +56 -0
  277. package/dest/timetable/build_proposer_timetable.d.ts +21 -0
  278. package/dest/timetable/build_proposer_timetable.d.ts.map +1 -0
  279. package/dest/timetable/build_proposer_timetable.js +17 -0
  280. package/dest/timetable/consensus_timetable.d.ts +70 -0
  281. package/dest/timetable/consensus_timetable.d.ts.map +1 -0
  282. package/dest/timetable/consensus_timetable.js +89 -0
  283. package/dest/timetable/index.d.ts +5 -84
  284. package/dest/timetable/index.d.ts.map +1 -1
  285. package/dest/timetable/index.js +4 -209
  286. package/dest/timetable/proposer_timetable.d.ts +106 -0
  287. package/dest/timetable/proposer_timetable.d.ts.map +1 -0
  288. package/dest/timetable/proposer_timetable.js +132 -0
  289. package/dest/trees/nullifier_membership_witness.d.ts +5 -8
  290. package/dest/trees/nullifier_membership_witness.d.ts.map +1 -1
  291. package/dest/trees/nullifier_membership_witness.js +0 -9
  292. package/dest/trees/public_data_witness.d.ts +7 -17
  293. package/dest/trees/public_data_witness.d.ts.map +1 -1
  294. package/dest/trees/public_data_witness.js +0 -27
  295. package/dest/tx/execution_payload.d.ts +1 -1
  296. package/dest/tx/execution_payload.d.ts.map +1 -1
  297. package/dest/tx/execution_payload.js +1 -1
  298. package/dest/tx/fee_provider.d.ts +2 -2
  299. package/dest/tx/fee_provider.d.ts.map +1 -1
  300. package/dest/tx/global_variable_builder.d.ts +2 -12
  301. package/dest/tx/global_variable_builder.d.ts.map +1 -1
  302. package/dest/tx/global_variables.js +2 -2
  303. package/dest/tx/private_tx_constant_data.d.ts +18 -2
  304. package/dest/tx/private_tx_constant_data.d.ts.map +1 -1
  305. package/dest/tx/private_tx_constant_data.js +13 -4
  306. package/dest/tx/profiling.d.ts +1 -1
  307. package/dest/tx/profiling.d.ts.map +1 -1
  308. package/dest/tx/profiling.js +2 -0
  309. package/dest/tx/simulated_tx.d.ts +10 -6
  310. package/dest/tx/simulated_tx.d.ts.map +1 -1
  311. package/dest/tx/tx.d.ts +9 -1
  312. package/dest/tx/tx.d.ts.map +1 -1
  313. package/dest/tx/tx.js +15 -0
  314. package/dest/tx/validator/error_texts.d.ts +2 -2
  315. package/dest/tx/validator/error_texts.d.ts.map +1 -1
  316. package/dest/tx/validator/error_texts.js +1 -1
  317. package/dest/world-state/genesis_data.d.ts +9 -1
  318. package/dest/world-state/genesis_data.d.ts.map +1 -1
  319. package/dest/world-state/genesis_data.js +1 -0
  320. package/package.json +8 -8
  321. package/src/abi/abi.ts +8 -0
  322. package/src/abi/buffer.ts +13 -1
  323. package/src/abi/contract_artifact.ts +33 -9
  324. package/src/avm/avm.ts +1 -1
  325. package/src/aztec-address/index.ts +36 -6
  326. package/src/block/attestation_info.ts +7 -2
  327. package/src/block/l2_block_source.ts +67 -13
  328. package/src/block/l2_block_stream/event_driven_l2_block_stream.ts +207 -0
  329. package/src/block/l2_block_stream/index.ts +1 -0
  330. package/src/block/l2_block_stream/interfaces.ts +96 -10
  331. package/src/block/l2_block_stream/l2_block_stream.ts +216 -175
  332. package/src/block/l2_block_stream/l2_tips_memory_store.ts +12 -41
  333. package/src/block/l2_block_stream/l2_tips_store_base.ts +84 -93
  334. package/src/block/proposal/attestations_and_signers.ts +53 -7
  335. package/src/block/test/l2_tips_store_test_suite.ts +270 -28
  336. package/src/block/validate_block_result.ts +48 -2
  337. package/src/checkpoint/checkpoint.ts +2 -2
  338. package/src/checkpoint/index.ts +1 -0
  339. package/src/checkpoint/simulation_overrides.ts +171 -0
  340. package/src/checkpoint/validate.ts +16 -6
  341. package/src/config/index.ts +1 -0
  342. package/src/config/network-consensus-config.ts +291 -0
  343. package/src/config/sequencer-config.ts +36 -5
  344. package/src/contract/contract_address.ts +4 -3
  345. package/src/contract/contract_class.ts +3 -2
  346. package/src/contract/contract_instance.ts +62 -1
  347. package/src/contract/interfaces/contract_data_source.ts +2 -4
  348. package/src/contract/interfaces/contract_instance.ts +26 -8
  349. package/src/contract/interfaces/node-info.ts +11 -0
  350. package/src/contract/partial_address.ts +8 -2
  351. package/src/database-version/version_manager.ts +96 -6
  352. package/src/deserialization/index.ts +35 -2
  353. package/src/file-store/factory.ts +7 -0
  354. package/src/file-store/index.ts +1 -0
  355. package/src/file-store/memory.ts +94 -0
  356. package/src/gas/README.md +199 -35
  357. package/src/gas/gas_settings.ts +11 -21
  358. package/src/gas/index.ts +1 -0
  359. package/src/gas/tx_gas_limits.ts +123 -0
  360. package/src/ha-signing/config.ts +23 -5
  361. package/src/ha-signing/local_config.ts +20 -1
  362. package/src/hash/hash.ts +0 -8
  363. package/src/interfaces/archiver.ts +14 -7
  364. package/src/interfaces/aztec-node-admin.ts +1 -1
  365. package/src/interfaces/aztec-node-debug.ts +54 -2
  366. package/src/interfaces/aztec-node.ts +121 -43
  367. package/src/interfaces/block-builder.ts +8 -1
  368. package/src/interfaces/chain_tips.ts +8 -16
  369. package/src/interfaces/checkpoint_parameter.ts +3 -3
  370. package/src/interfaces/client.ts +1 -0
  371. package/src/interfaces/configs.ts +27 -6
  372. package/src/interfaces/get_tx_by_hash_options.ts +14 -0
  373. package/src/interfaces/merkle_tree_operations.ts +2 -3
  374. package/src/interfaces/p2p.ts +29 -9
  375. package/src/interfaces/private_kernel_prover.ts +104 -13
  376. package/src/interfaces/prover-client.ts +1 -3
  377. package/src/interfaces/prover-node.ts +32 -17
  378. package/src/interfaces/proving-job.ts +15 -3
  379. package/src/interfaces/server.ts +0 -1
  380. package/src/interfaces/server_circuit_prover.ts +2 -2
  381. package/src/interfaces/validator.ts +11 -0
  382. package/src/interfaces/world_state.ts +14 -0
  383. package/src/kernel/hints/find_private_kernel_reset_dimensions.ts +22 -112
  384. package/src/kernel/hints/read_request.ts +1 -1
  385. package/src/kernel/index.ts +5 -1
  386. package/src/kernel/log_hash.ts +5 -2
  387. package/src/kernel/note_hash.ts +1 -1
  388. package/src/kernel/nullifier.ts +1 -1
  389. package/src/kernel/private_circuit_public_inputs.ts +12 -1
  390. package/src/kernel/private_context_inputs.ts +10 -3
  391. package/src/kernel/private_kernel_circuit_public_inputs.ts +9 -7
  392. package/src/kernel/private_kernel_init_2_circuit_private_inputs.ts +0 -3
  393. package/src/kernel/private_kernel_init_3_circuit_private_inputs.ts +0 -3
  394. package/src/kernel/private_kernel_init_4_circuit_private_inputs.ts +52 -0
  395. package/src/kernel/private_kernel_init_5_circuit_private_inputs.ts +55 -0
  396. package/src/kernel/private_kernel_init_circuit_private_inputs.ts +0 -6
  397. package/src/kernel/private_kernel_inner_4_circuit_private_inputs.ts +39 -0
  398. package/src/kernel/private_kernel_inner_5_circuit_private_inputs.ts +42 -0
  399. package/src/kernel/private_kernel_prover_output.ts +4 -0
  400. package/src/kernel/private_kernel_reset_dimensions.ts +15 -5
  401. package/src/kernel/private_kernel_reset_tail_circuit_private_inputs.ts +69 -0
  402. package/src/kernel/private_log_data.ts +4 -1
  403. package/src/keys/derivation.ts +69 -24
  404. package/src/logs/app_tagging_secret.ts +62 -39
  405. package/src/logs/app_tagging_secret_kind.ts +1 -1
  406. package/src/logs/contract_class_log.ts +0 -9
  407. package/src/logs/message_context.ts +7 -65
  408. package/src/logs/pending_tagged_log.ts +6 -33
  409. package/src/logs/shared_secret_derivation.ts +47 -14
  410. package/src/messaging/l1_to_l2_message.ts +51 -13
  411. package/src/noir/index.ts +2 -1
  412. package/src/p2p/attestation_utils.ts +8 -1
  413. package/src/p2p/checkpoint_attestation.ts +12 -0
  414. package/src/p2p/signature_utils.ts +9 -0
  415. package/src/rollup/avm_proof_data.ts +2 -2
  416. package/src/rollup/checkpoint_header.ts +16 -2
  417. package/src/stats/stats.ts +6 -2
  418. package/src/tests/factories.ts +13 -13
  419. package/src/tests/mocks.ts +7 -2
  420. package/src/timetable/README.md +609 -0
  421. package/src/timetable/budgets.ts +87 -0
  422. package/src/timetable/build_proposer_timetable.ts +42 -0
  423. package/src/timetable/consensus_timetable.ts +126 -0
  424. package/src/timetable/index.ts +4 -304
  425. package/src/timetable/proposer_timetable.ts +190 -0
  426. package/src/timetable/timetable-example.svg +108 -0
  427. package/src/trees/nullifier_membership_witness.ts +0 -11
  428. package/src/trees/public_data_witness.ts +0 -31
  429. package/src/tx/execution_payload.ts +2 -1
  430. package/src/tx/fee_provider.ts +1 -1
  431. package/src/tx/global_variable_builder.ts +1 -17
  432. package/src/tx/global_variables.ts +2 -2
  433. package/src/tx/private_tx_constant_data.ts +25 -2
  434. package/src/tx/profiling.ts +2 -0
  435. package/src/tx/tx.ts +17 -0
  436. package/src/tx/validator/error_texts.ts +2 -1
  437. package/src/world-state/genesis_data.ts +10 -0
  438. package/dest/interfaces/epoch-prover.d.ts +0 -57
  439. package/dest/interfaces/epoch-prover.d.ts.map +0 -1
  440. package/dest/interfaces/epoch-prover.js +0 -1
  441. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts +0 -47
  442. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts.map +0 -1
  443. package/dest/kernel/private_kernel_tail_circuit_private_inputs.js +0 -38
  444. package/src/interfaces/epoch-prover.ts +0 -72
  445. package/src/kernel/private_kernel_tail_circuit_private_inputs.ts +0 -58
@@ -1,8 +1,7 @@
1
- import { isDefined } from '@aztec/foundation/types';
2
-
3
1
  import {
4
2
  PrivateKernelResetDimensions,
5
3
  type PrivateKernelResetDimensionsConfig,
4
+ type ResetCatalogEntry,
6
5
  privateKernelResetDimensionNames,
7
6
  } from '../private_kernel_reset_dimensions.js';
8
7
 
@@ -12,13 +11,6 @@ interface DimensionOption {
12
11
  remainder?: PrivateKernelResetDimensions;
13
12
  }
14
13
 
15
- function computeCost(dimensions: PrivateKernelResetDimensions, config: PrivateKernelResetDimensionsConfig) {
16
- return privateKernelResetDimensionNames.reduce(
17
- (accum, name) => accum + dimensions[name] * config.dimensions[name].cost,
18
- 0,
19
- );
20
- }
21
-
22
14
  function getSize(dimensions: PrivateKernelResetDimensions) {
23
15
  return privateKernelResetDimensionNames.reduce((accum, name) => accum + dimensions[name], 0);
24
16
  }
@@ -38,124 +30,42 @@ function getRemainder(
38
30
  return remainingDimensions ? remainder : undefined;
39
31
  }
40
32
 
41
- function pickFromValues(targetValue: number, values: number[]) {
42
- // Find the min value in `values` that's greater than or equal to `targetValue`.
43
- const minGte = values.reduce(
44
- (prev: number | undefined, curr) => (curr >= targetValue && (prev === undefined || curr < prev) ? curr : prev),
45
- undefined,
46
- );
47
-
48
- // If no such value is found, returns the max value.
49
- return minGte ?? Math.max(...values);
50
- }
51
-
52
- function pickCheapest(options: DimensionOption[]) {
53
- return options.reduce((prev, curr) => (curr.cost < prev.cost ? curr : prev), options[0]);
54
- }
55
-
56
- function pickSmallestRemainder(options: DimensionOption[]) {
57
- const optionsWithSize = options
58
- .filter(o => o.remainder)
59
- .map(option => ({ option, size: getSize(option.remainder!) }));
60
- return optionsWithSize.reduce((prev, curr) => (curr.size < prev.size ? curr : prev), optionsWithSize[0])?.option;
61
- }
62
-
63
- function pickBestOption(options: DimensionOption[]) {
64
- const optionsResetAll = options.filter(opt => !opt.remainder);
65
- const optionsResetPartial = options.filter(opt => opt.remainder);
66
- // The best option is the cheapest one that can reset all dimensions.
67
- // If no such option exists, find one that can reset the most data.
68
- return pickCheapest(optionsResetAll) || pickSmallestRemainder(optionsResetPartial);
69
- }
70
-
71
- function findVariant(
72
- requestedDimensions: PrivateKernelResetDimensions,
73
- config: PrivateKernelResetDimensionsConfig,
74
- isQualified: (dimensions: PrivateKernelResetDimensions) => boolean,
75
- ): DimensionOption | undefined {
76
- const variant = PrivateKernelResetDimensions.empty();
77
- privateKernelResetDimensionNames.forEach(name => {
78
- variant[name] = pickFromValues(requestedDimensions[name], config.dimensions[name].variants);
79
- });
80
- if (!isQualified(variant)) {
81
- return;
33
+ // Returns the cheapest option that fully covers the request, or the option with the smallest
34
+ // remainder if none do. Caller must pass a non-empty list.
35
+ function pickBestOption(options: DimensionOption[]): DimensionOption {
36
+ const fullCoverage = options.filter(opt => !opt.remainder);
37
+ if (fullCoverage.length) {
38
+ return fullCoverage.reduce((prev, curr) => (curr.cost < prev.cost ? curr : prev));
82
39
  }
83
-
84
- return {
85
- dimensions: variant,
86
- cost: computeCost(variant, config),
87
- remainder: getRemainder(requestedDimensions, variant),
88
- };
40
+ return options.reduce((prev, curr) => (getSize(curr.remainder!) < getSize(prev.remainder!) ? curr : prev));
89
41
  }
90
42
 
91
- function findStandalone(
92
- requestedDimensions: PrivateKernelResetDimensions,
93
- config: PrivateKernelResetDimensionsConfig,
94
- isQualified: (dimensions: PrivateKernelResetDimensions) => boolean,
95
- ): DimensionOption | undefined {
96
- const needsReset = privateKernelResetDimensionNames.filter(name => requestedDimensions[name] > 0);
97
- if (needsReset.length !== 1) {
98
- // At the moment, we only use standalone to reset one dimension when it's about to overflow.
99
- return;
100
- }
101
-
102
- const name = needsReset[0];
103
- const value = pickFromValues(requestedDimensions[name], config.dimensions[name].standalone);
104
- if (!value) {
105
- return;
106
- }
107
-
108
- const dimensions = PrivateKernelResetDimensions.from({ [name]: value });
109
- if (!isQualified(dimensions)) {
110
- return;
111
- }
112
-
43
+ function buildOption(entry: ResetCatalogEntry, requestedDimensions: PrivateKernelResetDimensions): DimensionOption {
44
+ const dimensions = PrivateKernelResetDimensions.fromValues(entry.dimensions);
113
45
  return {
114
46
  dimensions,
115
- cost: computeCost(dimensions, config),
47
+ cost: entry.cost,
116
48
  remainder: getRemainder(requestedDimensions, dimensions),
117
49
  };
118
50
  }
119
51
 
120
- function findSpecialCase(
121
- requestedDimensions: PrivateKernelResetDimensions,
122
- config: PrivateKernelResetDimensionsConfig,
123
- isQualified: (dimensions: PrivateKernelResetDimensions) => boolean,
124
- ): DimensionOption | undefined {
125
- const specialCases = config.specialCases.map(PrivateKernelResetDimensions.fromValues);
126
- const options = specialCases.filter(isQualified).map(dimensions => ({
127
- dimensions,
128
- cost: computeCost(dimensions, config),
129
- remainder: getRemainder(requestedDimensions, dimensions),
130
- }));
131
- return pickBestOption(options);
132
- }
52
+ /**
53
+ * Picks which catalog group the selector should search. Mid-tx resets go to `inner` (no
54
+ * siloing); terminal kernels go to `finalTail` or `finalTailToPublic`, depending on whether
55
+ * the tx has public function calls.
56
+ */
57
+ export type ResetDimensionsMode = 'inner' | 'finalTail' | 'finalTailToPublic';
133
58
 
134
59
  export function findPrivateKernelResetDimensions(
135
60
  requestedDimensions: PrivateKernelResetDimensions,
136
61
  config: PrivateKernelResetDimensionsConfig,
137
- isInner = false,
62
+ mode: ResetDimensionsMode,
138
63
  allowRemainder = false,
139
64
  ) {
140
- const requestedValues = requestedDimensions.toValues();
141
- const isEnough = allowRemainder
142
- ? () => true
143
- : (dimensions: PrivateKernelResetDimensions) => dimensions.toValues().every((v, i) => v >= requestedValues[i]);
144
-
145
- const isQualified = !isInner
146
- ? isEnough
147
- : // If isInner is true, it's a reset to prevent overflow. The following must be zero because siloing can't be done at the moment.
148
- (dimensions: PrivateKernelResetDimensions) =>
149
- dimensions.NOTE_HASH_SILOING === 0 &&
150
- dimensions.NULLIFIER_SILOING === 0 &&
151
- dimensions.PRIVATE_LOG_SILOING === 0 &&
152
- isEnough(dimensions);
153
-
154
- const options = [
155
- findVariant(requestedDimensions, config, isQualified),
156
- findStandalone(requestedDimensions, config, isQualified),
157
- findSpecialCase(requestedDimensions, config, isQualified),
158
- ].filter(isDefined);
65
+ const catalog = config[mode];
66
+ const options = catalog
67
+ .map(entry => buildOption(entry, requestedDimensions))
68
+ .filter(option => allowRemainder || !option.remainder);
159
69
 
160
70
  if (!options.length) {
161
71
  throw new Error(`Cannot find an option for dimension: ${requestedDimensions.toValues()}`);
@@ -112,7 +112,7 @@ export class ScopedReadRequest {
112
112
 
113
113
  static fromFields(fields: Fr[] | FieldReader) {
114
114
  const reader = FieldReader.asReader(fields);
115
- return new ScopedReadRequest(reader.readObject(ReadRequest), AztecAddress.fromField(reader.readField()));
115
+ return new ScopedReadRequest(reader.readObject(ReadRequest), AztecAddress.fromFieldUnsafe(reader.readField()));
116
116
  }
117
117
 
118
118
  /**
@@ -9,12 +9,16 @@ export * from './private_kernel_data.js';
9
9
  export * from './private_kernel_init_circuit_private_inputs.js';
10
10
  export * from './private_kernel_init_2_circuit_private_inputs.js';
11
11
  export * from './private_kernel_init_3_circuit_private_inputs.js';
12
+ export * from './private_kernel_init_4_circuit_private_inputs.js';
13
+ export * from './private_kernel_init_5_circuit_private_inputs.js';
12
14
  export * from './private_kernel_inner_circuit_private_inputs.js';
13
15
  export * from './private_kernel_inner_2_circuit_private_inputs.js';
14
16
  export * from './private_kernel_inner_3_circuit_private_inputs.js';
17
+ export * from './private_kernel_inner_4_circuit_private_inputs.js';
18
+ export * from './private_kernel_inner_5_circuit_private_inputs.js';
15
19
  export * from './private_kernel_reset_circuit_private_inputs.js';
16
20
  export * from './private_kernel_reset_dimensions.js';
17
- export * from './private_kernel_tail_circuit_private_inputs.js';
21
+ export * from './private_kernel_reset_tail_circuit_private_inputs.js';
18
22
  export * from './private_kernel_tail_circuit_public_inputs.js';
19
23
  export * from './private_to_avm_accumulated_data.js';
20
24
  export * from './private_to_public_accumulated_data.js';
@@ -114,7 +114,7 @@ export class ScopedLogHash {
114
114
 
115
115
  static fromFields(fields: Fr[] | FieldReader) {
116
116
  const reader = FieldReader.asReader(fields);
117
- return new ScopedLogHash(reader.readObject(LogHash), AztecAddress.fromField(reader.readField()));
117
+ return new ScopedLogHash(reader.readObject(LogHash), AztecAddress.fromFieldUnsafe(reader.readField()));
118
118
  }
119
119
 
120
120
  isEmpty() {
@@ -156,7 +156,10 @@ export class ScopedCountedLogHash {
156
156
 
157
157
  static fromFields(fields: Fr[] | FieldReader) {
158
158
  const reader = FieldReader.asReader(fields);
159
- return new ScopedCountedLogHash(reader.readObject(CountedLogHash), AztecAddress.fromField(reader.readField()));
159
+ return new ScopedCountedLogHash(
160
+ reader.readObject(CountedLogHash),
161
+ AztecAddress.fromFieldUnsafe(reader.readField()),
162
+ );
160
163
  }
161
164
 
162
165
  toBuffer(): Buffer;
@@ -65,7 +65,7 @@ export class ScopedNoteHash implements Ordered {
65
65
 
66
66
  static fromFields(fields: Fr[] | FieldReader) {
67
67
  const reader = FieldReader.asReader(fields);
68
- return new ScopedNoteHash(reader.readObject(NoteHash), AztecAddress.fromField(reader.readField()));
68
+ return new ScopedNoteHash(reader.readObject(NoteHash), AztecAddress.fromFieldUnsafe(reader.readField()));
69
69
  }
70
70
 
71
71
  isEmpty() {
@@ -70,7 +70,7 @@ export class ScopedNullifier implements Ordered {
70
70
 
71
71
  static fromFields(fields: Fr[] | FieldReader) {
72
72
  const reader = FieldReader.asReader(fields);
73
- return new ScopedNullifier(reader.readObject(Nullifier), AztecAddress.fromField(reader.readField()));
73
+ return new ScopedNullifier(reader.readObject(Nullifier), AztecAddress.fromFieldUnsafe(reader.readField()));
74
74
  }
75
75
 
76
76
  isEmpty() {
@@ -144,6 +144,11 @@ export class PrivateCircuitPublicInputs {
144
144
  * Hash of the contract class logs emitted in this function call.
145
145
  */
146
146
  public contractClassLogsHashes: ClaimedLengthArray<CountedLogHash, typeof MAX_CONTRACT_CLASS_LOGS_PER_CALL>,
147
+ /**
148
+ * The tx request's salt. Keeps `tx_request.hash()` (the protocol nullifier) unpredictable, and lets the init
149
+ * kernel bind this proof to a specific tx request (it asserts this equals `tx_request.salt`).
150
+ */
151
+ public txRequestSalt: Fr,
147
152
  ) {}
148
153
 
149
154
  /**
@@ -188,6 +193,7 @@ export class PrivateCircuitPublicInputs {
188
193
  reader.readObject(ClaimedLengthArrayFromBuffer(CountedL2ToL1Message, MAX_L2_TO_L1_MSGS_PER_CALL)),
189
194
  reader.readObject(ClaimedLengthArrayFromBuffer(PrivateLogData, MAX_PRIVATE_LOGS_PER_CALL)),
190
195
  reader.readObject(ClaimedLengthArrayFromBuffer(CountedLogHash, MAX_CONTRACT_CLASS_LOGS_PER_CALL)),
196
+ reader.readObject(Fr),
191
197
  );
192
198
  }
193
199
 
@@ -219,6 +225,7 @@ export class PrivateCircuitPublicInputs {
219
225
  reader.readObject(ClaimedLengthArrayFromFields(CountedL2ToL1Message, MAX_L2_TO_L1_MSGS_PER_CALL)),
220
226
  reader.readObject(ClaimedLengthArrayFromFields(PrivateLogData, MAX_PRIVATE_LOGS_PER_CALL)),
221
227
  reader.readObject(ClaimedLengthArrayFromFields(CountedLogHash, MAX_CONTRACT_CLASS_LOGS_PER_CALL)),
228
+ reader.readField(),
222
229
  );
223
230
  }
224
231
 
@@ -251,6 +258,7 @@ export class PrivateCircuitPublicInputs {
251
258
  ClaimedLengthArray.empty(CountedL2ToL1Message, MAX_L2_TO_L1_MSGS_PER_CALL),
252
259
  ClaimedLengthArray.empty(PrivateLogData, MAX_PRIVATE_LOGS_PER_CALL),
253
260
  ClaimedLengthArray.empty(CountedLogHash, MAX_CONTRACT_CLASS_LOGS_PER_CALL),
261
+ Fr.ZERO,
254
262
  );
255
263
  }
256
264
 
@@ -278,7 +286,8 @@ export class PrivateCircuitPublicInputs {
278
286
  this.nullifiers.isEmpty() &&
279
287
  this.l2ToL1Msgs.isEmpty() &&
280
288
  this.privateLogs.isEmpty() &&
281
- this.contractClassLogsHashes.isEmpty()
289
+ this.contractClassLogsHashes.isEmpty() &&
290
+ this.txRequestSalt.isZero()
282
291
  );
283
292
  }
284
293
 
@@ -312,6 +321,7 @@ export class PrivateCircuitPublicInputs {
312
321
  fields.l2ToL1Msgs,
313
322
  fields.privateLogs,
314
323
  fields.contractClassLogsHashes,
324
+ fields.txRequestSalt,
315
325
  ] as const;
316
326
  }
317
327
 
@@ -346,6 +356,7 @@ export class PrivateCircuitPublicInputs {
346
356
  this.l2ToL1Msgs,
347
357
  this.privateLogs,
348
358
  this.contractClassLogsHashes,
359
+ this.txRequestSalt,
349
360
  ]);
350
361
  }
351
362
 
@@ -1,4 +1,4 @@
1
- import type { Fr } from '@aztec/foundation/curves/bn254';
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import { serializeToFields } from '@aztec/foundation/serialize';
3
3
 
4
4
  import { BlockHeader } from '../tx/block_header.js';
@@ -11,13 +11,20 @@ export class PrivateContextInputs {
11
11
  public anchorBlockHeader: BlockHeader,
12
12
  public txContext: TxContext,
13
13
  public startSideEffectCounter: number,
14
+ public txRequestSalt: Fr,
14
15
  ) {}
15
16
 
16
17
  public static empty(): PrivateContextInputs {
17
- return new PrivateContextInputs(CallContext.empty(), BlockHeader.empty(), TxContext.empty(), 0);
18
+ return new PrivateContextInputs(CallContext.empty(), BlockHeader.empty(), TxContext.empty(), 0, Fr.ZERO);
18
19
  }
19
20
 
20
21
  public toFields(): Fr[] {
21
- return serializeToFields([this.callContext, this.anchorBlockHeader, this.txContext, this.startSideEffectCounter]);
22
+ return serializeToFields([
23
+ this.callContext,
24
+ this.anchorBlockHeader,
25
+ this.txContext,
26
+ this.startSideEffectCounter,
27
+ this.txRequestSalt,
28
+ ]);
22
29
  }
23
30
  }
@@ -46,10 +46,6 @@ export class PrivateKernelCircuitPublicInputs {
46
46
  * Wether this is a private only tx or not
47
47
  */
48
48
  public isPrivateOnly: boolean,
49
- /**
50
- * The nullifier that will be used for nonce generation
51
- */
52
- public claimedFirstNullifier: Fr,
53
49
  /**
54
50
  * A claim to the final min revertible side effect counter of a tx.
55
51
  */
@@ -74,7 +70,6 @@ export class PrivateKernelCircuitPublicInputs {
74
70
  this.feePayer,
75
71
  bigintToUInt64BE(this.expirationTimestamp),
76
72
  this.isPrivateOnly,
77
- this.claimedFirstNullifier,
78
73
  this.claimedRevertibleCounter,
79
74
  );
80
75
  }
@@ -95,7 +90,6 @@ export class PrivateKernelCircuitPublicInputs {
95
90
  reader.readObject(AztecAddress),
96
91
  reader.readUInt64(),
97
92
  reader.readBoolean(),
98
- reader.readObject(Fr),
99
93
  reader.readNumber(),
100
94
  );
101
95
  }
@@ -110,8 +104,16 @@ export class PrivateKernelCircuitPublicInputs {
110
104
  AztecAddress.ZERO,
111
105
  0n,
112
106
  false,
113
- Fr.zero(),
114
107
  0,
115
108
  );
116
109
  }
117
110
  }
111
+
112
+ /**
113
+ * Returns true iff the tx requires the public-bound terminal path: it has either un-processed
114
+ * public-call requests in the side-effect stream or a pending public-teardown call request. Every
115
+ * site picking between the rollup-bound and public-bound terminal artifact must route through this.
116
+ */
117
+ export function kernelStateIsForPublic(publicInputs: PrivateKernelCircuitPublicInputs): boolean {
118
+ return publicInputs.end.publicCallRequests.claimedLength > 0 || !publicInputs.publicTeardownCallRequest.isEmpty();
119
+ }
@@ -17,7 +17,6 @@ export class PrivateKernelInit2CircuitPrivateInputs {
17
17
  public privateCall0: PrivateCallData,
18
18
  public privateCall1: PrivateCallData,
19
19
  public isPrivateOnly: boolean,
20
- public firstNullifierHint: Fr,
21
20
  public revertibleCounterHint: number,
22
21
  ) {}
23
22
 
@@ -28,7 +27,6 @@ export class PrivateKernelInit2CircuitPrivateInputs {
28
27
  this.protocolContracts,
29
28
  this.privateCall0,
30
29
  this.privateCall1,
31
- this.firstNullifierHint,
32
30
  this.revertibleCounterHint,
33
31
  );
34
32
  }
@@ -42,7 +40,6 @@ export class PrivateKernelInit2CircuitPrivateInputs {
42
40
  reader.readObject(PrivateCallData),
43
41
  reader.readObject(PrivateCallData),
44
42
  reader.readBoolean(),
45
- Fr.fromBuffer(reader),
46
43
  reader.readNumber(),
47
44
  );
48
45
  }
@@ -18,7 +18,6 @@ export class PrivateKernelInit3CircuitPrivateInputs {
18
18
  public privateCall1: PrivateCallData,
19
19
  public privateCall2: PrivateCallData,
20
20
  public isPrivateOnly: boolean,
21
- public firstNullifierHint: Fr,
22
21
  public revertibleCounterHint: number,
23
22
  ) {}
24
23
 
@@ -30,7 +29,6 @@ export class PrivateKernelInit3CircuitPrivateInputs {
30
29
  this.privateCall0,
31
30
  this.privateCall1,
32
31
  this.privateCall2,
33
- this.firstNullifierHint,
34
32
  this.revertibleCounterHint,
35
33
  );
36
34
  }
@@ -45,7 +43,6 @@ export class PrivateKernelInit3CircuitPrivateInputs {
45
43
  reader.readObject(PrivateCallData),
46
44
  reader.readObject(PrivateCallData),
47
45
  reader.readBoolean(),
48
- Fr.fromBuffer(reader),
49
46
  reader.readNumber(),
50
47
  );
51
48
  }
@@ -0,0 +1,52 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
3
+
4
+ import { ProtocolContracts } from '../tx/protocol_contracts.js';
5
+ import { TxRequest } from '../tx/tx_request.js';
6
+ import { PrivateCallData } from './private_call_data.js';
7
+
8
+ /**
9
+ * Input to the batched private kernel init circuit, which processes the first four app calls of a
10
+ * transaction in a single iteration.
11
+ */
12
+ export class PrivateKernelInit4CircuitPrivateInputs {
13
+ constructor(
14
+ public txRequest: TxRequest,
15
+ public vkTreeRoot: Fr,
16
+ public protocolContracts: ProtocolContracts,
17
+ public privateCall0: PrivateCallData,
18
+ public privateCall1: PrivateCallData,
19
+ public privateCall2: PrivateCallData,
20
+ public privateCall3: PrivateCallData,
21
+ public isPrivateOnly: boolean,
22
+ public revertibleCounterHint: number,
23
+ ) {}
24
+
25
+ toBuffer() {
26
+ return serializeToBuffer(
27
+ this.txRequest,
28
+ this.vkTreeRoot,
29
+ this.protocolContracts,
30
+ this.privateCall0,
31
+ this.privateCall1,
32
+ this.privateCall2,
33
+ this.privateCall3,
34
+ this.revertibleCounterHint,
35
+ );
36
+ }
37
+
38
+ static fromBuffer(buffer: Buffer | BufferReader): PrivateKernelInit4CircuitPrivateInputs {
39
+ const reader = BufferReader.asReader(buffer);
40
+ return new PrivateKernelInit4CircuitPrivateInputs(
41
+ reader.readObject(TxRequest),
42
+ Fr.fromBuffer(reader),
43
+ reader.readObject(ProtocolContracts),
44
+ reader.readObject(PrivateCallData),
45
+ reader.readObject(PrivateCallData),
46
+ reader.readObject(PrivateCallData),
47
+ reader.readObject(PrivateCallData),
48
+ reader.readBoolean(),
49
+ reader.readNumber(),
50
+ );
51
+ }
52
+ }
@@ -0,0 +1,55 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
3
+
4
+ import { ProtocolContracts } from '../tx/protocol_contracts.js';
5
+ import { TxRequest } from '../tx/tx_request.js';
6
+ import { PrivateCallData } from './private_call_data.js';
7
+
8
+ /**
9
+ * Input to the batched private kernel init circuit, which processes the first five app calls of a
10
+ * transaction in a single iteration.
11
+ */
12
+ export class PrivateKernelInit5CircuitPrivateInputs {
13
+ constructor(
14
+ public txRequest: TxRequest,
15
+ public vkTreeRoot: Fr,
16
+ public protocolContracts: ProtocolContracts,
17
+ public privateCall0: PrivateCallData,
18
+ public privateCall1: PrivateCallData,
19
+ public privateCall2: PrivateCallData,
20
+ public privateCall3: PrivateCallData,
21
+ public privateCall4: PrivateCallData,
22
+ public isPrivateOnly: boolean,
23
+ public revertibleCounterHint: number,
24
+ ) {}
25
+
26
+ toBuffer() {
27
+ return serializeToBuffer(
28
+ this.txRequest,
29
+ this.vkTreeRoot,
30
+ this.protocolContracts,
31
+ this.privateCall0,
32
+ this.privateCall1,
33
+ this.privateCall2,
34
+ this.privateCall3,
35
+ this.privateCall4,
36
+ this.revertibleCounterHint,
37
+ );
38
+ }
39
+
40
+ static fromBuffer(buffer: Buffer | BufferReader): PrivateKernelInit5CircuitPrivateInputs {
41
+ const reader = BufferReader.asReader(buffer);
42
+ return new PrivateKernelInit5CircuitPrivateInputs(
43
+ reader.readObject(TxRequest),
44
+ Fr.fromBuffer(reader),
45
+ reader.readObject(ProtocolContracts),
46
+ reader.readObject(PrivateCallData),
47
+ reader.readObject(PrivateCallData),
48
+ reader.readObject(PrivateCallData),
49
+ reader.readObject(PrivateCallData),
50
+ reader.readObject(PrivateCallData),
51
+ reader.readBoolean(),
52
+ reader.readNumber(),
53
+ );
54
+ }
55
+ }
@@ -30,10 +30,6 @@ export class PrivateKernelInitCircuitPrivateInputs {
30
30
  * Wether this tx will make public calls or not.
31
31
  */
32
32
  public isPrivateOnly: boolean,
33
- /**
34
- * A hint to what will be the first nullifier of the transaction, used for nonce generation.
35
- */
36
- public firstNullifierHint: Fr,
37
33
  /**
38
34
  * A claim to the final min revertible side effect counter of a tx.
39
35
  */
@@ -50,7 +46,6 @@ export class PrivateKernelInitCircuitPrivateInputs {
50
46
  this.vkTreeRoot,
51
47
  this.protocolContracts,
52
48
  this.privateCall,
53
- this.firstNullifierHint,
54
49
  this.revertibleCounterHint,
55
50
  );
56
51
  }
@@ -68,7 +63,6 @@ export class PrivateKernelInitCircuitPrivateInputs {
68
63
  reader.readObject(ProtocolContracts),
69
64
  reader.readObject(PrivateCallData),
70
65
  reader.readBoolean(),
71
- Fr.fromBuffer(reader),
72
66
  reader.readNumber(),
73
67
  );
74
68
  }
@@ -0,0 +1,39 @@
1
+ import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
2
+
3
+ import { PrivateCallData } from './private_call_data.js';
4
+ import { PrivateKernelData } from './private_kernel_data.js';
5
+
6
+ /**
7
+ * Input to the batched private kernel inner circuit, which processes four app calls in a single
8
+ * iteration following a previous kernel.
9
+ */
10
+ export class PrivateKernelInner4CircuitPrivateInputs {
11
+ constructor(
12
+ public previousKernel: PrivateKernelData,
13
+ public privateCall0: PrivateCallData,
14
+ public privateCall1: PrivateCallData,
15
+ public privateCall2: PrivateCallData,
16
+ public privateCall3: PrivateCallData,
17
+ ) {}
18
+
19
+ toBuffer() {
20
+ return serializeToBuffer(
21
+ this.previousKernel,
22
+ this.privateCall0,
23
+ this.privateCall1,
24
+ this.privateCall2,
25
+ this.privateCall3,
26
+ );
27
+ }
28
+
29
+ static fromBuffer(buffer: Buffer | BufferReader): PrivateKernelInner4CircuitPrivateInputs {
30
+ const reader = BufferReader.asReader(buffer);
31
+ return new PrivateKernelInner4CircuitPrivateInputs(
32
+ reader.readObject(PrivateKernelData),
33
+ reader.readObject(PrivateCallData),
34
+ reader.readObject(PrivateCallData),
35
+ reader.readObject(PrivateCallData),
36
+ reader.readObject(PrivateCallData),
37
+ );
38
+ }
39
+ }
@@ -0,0 +1,42 @@
1
+ import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
2
+
3
+ import { PrivateCallData } from './private_call_data.js';
4
+ import { PrivateKernelData } from './private_kernel_data.js';
5
+
6
+ /**
7
+ * Input to the batched private kernel inner circuit, which processes five app calls in a single
8
+ * iteration following a previous kernel.
9
+ */
10
+ export class PrivateKernelInner5CircuitPrivateInputs {
11
+ constructor(
12
+ public previousKernel: PrivateKernelData,
13
+ public privateCall0: PrivateCallData,
14
+ public privateCall1: PrivateCallData,
15
+ public privateCall2: PrivateCallData,
16
+ public privateCall3: PrivateCallData,
17
+ public privateCall4: PrivateCallData,
18
+ ) {}
19
+
20
+ toBuffer() {
21
+ return serializeToBuffer(
22
+ this.previousKernel,
23
+ this.privateCall0,
24
+ this.privateCall1,
25
+ this.privateCall2,
26
+ this.privateCall3,
27
+ this.privateCall4,
28
+ );
29
+ }
30
+
31
+ static fromBuffer(buffer: Buffer | BufferReader): PrivateKernelInner5CircuitPrivateInputs {
32
+ const reader = BufferReader.asReader(buffer);
33
+ return new PrivateKernelInner5CircuitPrivateInputs(
34
+ reader.readObject(PrivateKernelData),
35
+ reader.readObject(PrivateCallData),
36
+ reader.readObject(PrivateCallData),
37
+ reader.readObject(PrivateCallData),
38
+ reader.readObject(PrivateCallData),
39
+ reader.readObject(PrivateCallData),
40
+ );
41
+ }
42
+ }
@@ -1,3 +1,4 @@
1
+ import { CircuitKind } from '@aztec/bb.js';
1
2
  import { bufferSchema, mapSchema } from '@aztec/foundation/schemas';
2
3
  import type { WitnessMap } from '@aztec/noir-acvm_js';
3
4
  import { serializeWitness } from '@aztec/noir-noirc_abi';
@@ -15,6 +16,7 @@ export const PrivateExecutionStepSchema = z.object({
15
16
  bytecode: bufferSchema,
16
17
  witness: mapSchema(z.number(), z.string()),
17
18
  vk: bufferSchema,
19
+ kind: z.nativeEnum(CircuitKind),
18
20
  timings: z.object({
19
21
  witgen: z.number(),
20
22
  gateCount: z.number().optional(),
@@ -31,6 +33,7 @@ export interface PrivateExecutionStep {
31
33
  witness: WitnessMap;
32
34
  /* TODO(https://github.com/AztecProtocol/barretenberg/issues/1328) this should get its own proper class. */
33
35
  vk: Buffer;
36
+ kind: CircuitKind;
34
37
  timings: {
35
38
  witgen: number;
36
39
  gateCount?: number;
@@ -64,6 +67,7 @@ export function serializePrivateExecutionSteps(steps: PrivateExecutionStep[]) {
64
67
  witness: serializeWitness(step.witness),
65
68
  vk: step.vk,
66
69
  functionName: step.functionName,
70
+ kind: step.kind,
67
71
  };
68
72
  };
69
73
  return new Encoder({ useRecords: false }).pack(steps.map(stepToStruct));