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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (587) hide show
  1. package/dest/abi/abi.d.ts +32 -7
  2. package/dest/abi/abi.d.ts.map +1 -1
  3. package/dest/abi/abi.js +11 -2
  4. package/dest/abi/buffer.d.ts +6 -2
  5. package/dest/abi/buffer.d.ts.map +1 -1
  6. package/dest/abi/buffer.js +13 -1
  7. package/dest/abi/contract_artifact.d.ts +1 -1
  8. package/dest/abi/contract_artifact.d.ts.map +1 -1
  9. package/dest/abi/contract_artifact.js +35 -19
  10. package/dest/abi/decoder.d.ts +12 -5
  11. package/dest/abi/decoder.d.ts.map +1 -1
  12. package/dest/abi/decoder.js +18 -21
  13. package/dest/abi/function_call.d.ts +17 -8
  14. package/dest/abi/function_call.d.ts.map +1 -1
  15. package/dest/abi/function_call.js +28 -9
  16. package/dest/avm/avm.d.ts +212 -211
  17. package/dest/avm/avm.d.ts.map +1 -1
  18. package/dest/avm/avm.js +4 -2
  19. package/dest/avm/index.d.ts +1 -6
  20. package/dest/avm/index.d.ts.map +1 -1
  21. package/dest/avm/index.js +0 -5
  22. package/dest/aztec-address/index.d.ts +35 -5
  23. package/dest/aztec-address/index.d.ts.map +1 -1
  24. package/dest/aztec-address/index.js +32 -8
  25. package/dest/block/attestation_info.d.ts +1 -1
  26. package/dest/block/attestation_info.d.ts.map +1 -1
  27. package/dest/block/attestation_info.js +7 -4
  28. package/dest/block/l2_block_source.d.ts +57 -28
  29. package/dest/block/l2_block_source.d.ts.map +1 -1
  30. package/dest/block/l2_block_source.js +20 -2
  31. package/dest/block/l2_block_stream/event_driven_l2_block_stream.d.ts +39 -0
  32. package/dest/block/l2_block_stream/event_driven_l2_block_stream.d.ts.map +1 -0
  33. package/dest/block/l2_block_stream/event_driven_l2_block_stream.js +165 -0
  34. package/dest/block/l2_block_stream/index.d.ts +2 -1
  35. package/dest/block/l2_block_stream/index.d.ts.map +1 -1
  36. package/dest/block/l2_block_stream/index.js +1 -0
  37. package/dest/block/l2_block_stream/interfaces.d.ts +83 -11
  38. package/dest/block/l2_block_stream/interfaces.d.ts.map +1 -1
  39. package/dest/block/l2_block_stream/interfaces.js +25 -1
  40. package/dest/block/l2_block_stream/l2_block_stream.d.ts +24 -15
  41. package/dest/block/l2_block_stream/l2_block_stream.d.ts.map +1 -1
  42. package/dest/block/l2_block_stream/l2_block_stream.js +175 -151
  43. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts +6 -12
  44. package/dest/block/l2_block_stream/l2_tips_memory_store.d.ts.map +1 -1
  45. package/dest/block/l2_block_stream/l2_tips_memory_store.js +8 -32
  46. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts +17 -18
  47. package/dest/block/l2_block_stream/l2_tips_store_base.d.ts.map +1 -1
  48. package/dest/block/l2_block_stream/l2_tips_store_base.js +70 -58
  49. package/dest/block/proposal/attestations_and_signers.d.ts +19 -1
  50. package/dest/block/proposal/attestations_and_signers.d.ts.map +1 -1
  51. package/dest/block/proposal/attestations_and_signers.js +47 -7
  52. package/dest/block/test/l2_tips_store_test_suite.d.ts +1 -1
  53. package/dest/block/test/l2_tips_store_test_suite.d.ts.map +1 -1
  54. package/dest/block/test/l2_tips_store_test_suite.js +301 -37
  55. package/dest/block/validate_block_result.d.ts +16 -1
  56. package/dest/block/validate_block_result.d.ts.map +1 -1
  57. package/dest/block/validate_block_result.js +18 -3
  58. package/dest/checkpoint/checkpoint.js +2 -2
  59. package/dest/checkpoint/index.d.ts +2 -1
  60. package/dest/checkpoint/index.d.ts.map +1 -1
  61. package/dest/checkpoint/index.js +1 -0
  62. package/dest/checkpoint/simulation_overrides.d.ts +61 -0
  63. package/dest/checkpoint/simulation_overrides.d.ts.map +1 -0
  64. package/dest/checkpoint/simulation_overrides.js +98 -0
  65. package/dest/checkpoint/validate.d.ts +11 -3
  66. package/dest/checkpoint/validate.d.ts.map +1 -1
  67. package/dest/checkpoint/validate.js +9 -6
  68. package/dest/config/index.d.ts +2 -2
  69. package/dest/config/index.d.ts.map +1 -1
  70. package/dest/config/index.js +1 -1
  71. package/dest/config/network-consensus-config.d.ts +72 -0
  72. package/dest/config/network-consensus-config.d.ts.map +1 -0
  73. package/dest/config/network-consensus-config.js +223 -0
  74. package/dest/config/node-rpc-config.d.ts +1 -1
  75. package/dest/config/node-rpc-config.d.ts.map +1 -1
  76. package/dest/config/node-rpc-config.js +1 -1
  77. package/dest/config/sequencer-config.d.ts +4 -2
  78. package/dest/config/sequencer-config.d.ts.map +1 -1
  79. package/dest/config/sequencer-config.js +22 -3
  80. package/dest/contract/artifact_hash.d.ts +2 -2
  81. package/dest/contract/artifact_hash.d.ts.map +1 -1
  82. package/dest/contract/artifact_hash.js +10 -2
  83. package/dest/contract/contract_address.d.ts +5 -4
  84. package/dest/contract/contract_address.d.ts.map +1 -1
  85. package/dest/contract/contract_class.d.ts +1 -1
  86. package/dest/contract/contract_class.d.ts.map +1 -1
  87. package/dest/contract/contract_class.js +3 -2
  88. package/dest/contract/contract_instance.d.ts +16 -2
  89. package/dest/contract/contract_instance.d.ts.map +1 -1
  90. package/dest/contract/contract_instance.js +45 -0
  91. package/dest/contract/index.d.ts +1 -2
  92. package/dest/contract/index.d.ts.map +1 -1
  93. package/dest/contract/index.js +0 -1
  94. package/dest/contract/interfaces/contract_data_source.d.ts +3 -5
  95. package/dest/contract/interfaces/contract_data_source.d.ts.map +1 -1
  96. package/dest/contract/interfaces/contract_instance.d.ts +71 -10
  97. package/dest/contract/interfaces/contract_instance.d.ts.map +1 -1
  98. package/dest/contract/interfaces/contract_instance.js +7 -2
  99. package/dest/contract/interfaces/node-info.d.ts +11 -1
  100. package/dest/contract/interfaces/node-info.d.ts.map +1 -1
  101. package/dest/contract/interfaces/node-info.js +7 -1
  102. package/dest/contract/partial_address.d.ts +9 -3
  103. package/dest/contract/partial_address.d.ts.map +1 -1
  104. package/dest/contract/partial_address.js +8 -2
  105. package/dest/database-version/version_manager.d.ts +18 -4
  106. package/dest/database-version/version_manager.d.ts.map +1 -1
  107. package/dest/database-version/version_manager.js +76 -6
  108. package/dest/deserialization/index.d.ts +35 -3
  109. package/dest/deserialization/index.d.ts.map +1 -1
  110. package/dest/deserialization/index.js +32 -1
  111. package/dest/file-store/factory.d.ts +1 -1
  112. package/dest/file-store/factory.d.ts.map +1 -1
  113. package/dest/file-store/factory.js +7 -0
  114. package/dest/file-store/index.d.ts +2 -1
  115. package/dest/file-store/index.d.ts.map +1 -1
  116. package/dest/file-store/index.js +1 -0
  117. package/dest/file-store/memory.d.ts +24 -0
  118. package/dest/file-store/memory.d.ts.map +1 -0
  119. package/dest/file-store/memory.js +80 -0
  120. package/dest/gas/gas_settings.d.ts +7 -13
  121. package/dest/gas/gas_settings.d.ts.map +1 -1
  122. package/dest/gas/gas_settings.js +9 -16
  123. package/dest/gas/index.d.ts +2 -1
  124. package/dest/gas/index.d.ts.map +1 -1
  125. package/dest/gas/index.js +1 -0
  126. package/dest/gas/tx_gas_limits.d.ts +72 -0
  127. package/dest/gas/tx_gas_limits.d.ts.map +1 -0
  128. package/dest/gas/tx_gas_limits.js +85 -0
  129. package/dest/ha-signing/config.d.ts +19 -5
  130. package/dest/ha-signing/config.d.ts.map +1 -1
  131. package/dest/ha-signing/config.js +9 -3
  132. package/dest/ha-signing/local_config.d.ts +10 -2
  133. package/dest/ha-signing/local_config.d.ts.map +1 -1
  134. package/dest/ha-signing/local_config.js +8 -2
  135. package/dest/hash/hash.d.ts +1 -2
  136. package/dest/hash/hash.d.ts.map +1 -1
  137. package/dest/hash/hash.js +0 -7
  138. package/dest/interfaces/api_limit.d.ts +6 -1
  139. package/dest/interfaces/api_limit.d.ts.map +1 -1
  140. package/dest/interfaces/api_limit.js +3 -0
  141. package/dest/interfaces/archiver.d.ts +12 -7
  142. package/dest/interfaces/archiver.d.ts.map +1 -1
  143. package/dest/interfaces/archiver.js +13 -6
  144. package/dest/interfaces/aztec-node-admin.d.ts +25 -17
  145. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  146. package/dest/interfaces/aztec-node-admin.js +1 -1
  147. package/dest/interfaces/aztec-node-debug.d.ts +40 -2
  148. package/dest/interfaces/aztec-node-debug.d.ts.map +1 -1
  149. package/dest/interfaces/aztec-node-debug.js +29 -1
  150. package/dest/interfaces/aztec-node.d.ts +100 -33
  151. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  152. package/dest/interfaces/aztec-node.js +72 -23
  153. package/dest/interfaces/block-builder.d.ts +9 -2
  154. package/dest/interfaces/block-builder.d.ts.map +1 -1
  155. package/dest/interfaces/block_response.d.ts +5 -5
  156. package/dest/interfaces/block_response.d.ts.map +1 -1
  157. package/dest/interfaces/chain_tips.d.ts +8 -47
  158. package/dest/interfaces/chain_tips.d.ts.map +1 -1
  159. package/dest/interfaces/chain_tips.js +1 -6
  160. package/dest/interfaces/checkpoint_parameter.d.ts +3 -3
  161. package/dest/interfaces/checkpoint_parameter.d.ts.map +1 -1
  162. package/dest/interfaces/checkpoint_parameter.js +3 -3
  163. package/dest/interfaces/checkpoint_response.d.ts +5 -5
  164. package/dest/interfaces/checkpoint_response.d.ts.map +1 -1
  165. package/dest/interfaces/client.d.ts +2 -1
  166. package/dest/interfaces/client.d.ts.map +1 -1
  167. package/dest/interfaces/configs.d.ts +33 -6
  168. package/dest/interfaces/configs.d.ts.map +1 -1
  169. package/dest/interfaces/configs.js +6 -1
  170. package/dest/interfaces/get_tx_by_hash_options.d.ts +9 -0
  171. package/dest/interfaces/get_tx_by_hash_options.d.ts.map +1 -0
  172. package/dest/interfaces/get_tx_by_hash_options.js +4 -0
  173. package/dest/interfaces/merkle_tree_operations.d.ts +8 -3
  174. package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
  175. package/dest/interfaces/p2p.d.ts +38 -9
  176. package/dest/interfaces/p2p.d.ts.map +1 -1
  177. package/dest/interfaces/p2p.js +14 -2
  178. package/dest/interfaces/private_kernel_prover.d.ts +71 -12
  179. package/dest/interfaces/private_kernel_prover.d.ts.map +1 -1
  180. package/dest/interfaces/prover-client.d.ts +2 -3
  181. package/dest/interfaces/prover-client.d.ts.map +1 -1
  182. package/dest/interfaces/prover-node.d.ts +12 -8
  183. package/dest/interfaces/prover-node.d.ts.map +1 -1
  184. package/dest/interfaces/prover-node.js +24 -17
  185. package/dest/interfaces/proving-job.d.ts +17 -4
  186. package/dest/interfaces/proving-job.d.ts.map +1 -1
  187. package/dest/interfaces/proving-job.js +13 -4
  188. package/dest/interfaces/server.d.ts +1 -3
  189. package/dest/interfaces/server.d.ts.map +1 -1
  190. package/dest/interfaces/server.js +0 -2
  191. package/dest/interfaces/server_circuit_prover.d.ts +3 -3
  192. package/dest/interfaces/server_circuit_prover.d.ts.map +1 -1
  193. package/dest/interfaces/tx_provider.d.ts +5 -1
  194. package/dest/interfaces/tx_provider.d.ts.map +1 -1
  195. package/dest/interfaces/validator.d.ts +15 -4
  196. package/dest/interfaces/validator.d.ts.map +1 -1
  197. package/dest/interfaces/validator.js +3 -1
  198. package/dest/interfaces/world_state.d.ts +14 -1
  199. package/dest/interfaces/world_state.d.ts.map +1 -1
  200. package/dest/kernel/hints/find_private_kernel_reset_dimensions.d.ts +8 -2
  201. package/dest/kernel/hints/find_private_kernel_reset_dimensions.d.ts.map +1 -1
  202. package/dest/kernel/hints/find_private_kernel_reset_dimensions.js +12 -74
  203. package/dest/kernel/hints/index.d.ts +1 -2
  204. package/dest/kernel/hints/index.d.ts.map +1 -1
  205. package/dest/kernel/hints/index.js +0 -1
  206. package/dest/kernel/hints/read_request.js +1 -1
  207. package/dest/kernel/index.d.ts +6 -2
  208. package/dest/kernel/index.d.ts.map +1 -1
  209. package/dest/kernel/index.js +5 -1
  210. package/dest/kernel/log_hash.d.ts +1 -1
  211. package/dest/kernel/log_hash.d.ts.map +1 -1
  212. package/dest/kernel/log_hash.js +2 -2
  213. package/dest/kernel/note_hash.js +1 -1
  214. package/dest/kernel/nullifier.js +1 -1
  215. package/dest/kernel/private_circuit_public_inputs.d.ts +13 -3
  216. package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
  217. package/dest/kernel/private_circuit_public_inputs.js +14 -7
  218. package/dest/kernel/private_context_inputs.d.ts +4 -3
  219. package/dest/kernel/private_context_inputs.d.ts.map +1 -1
  220. package/dest/kernel/private_context_inputs.js +7 -3
  221. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts +7 -9
  222. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts.map +1 -1
  223. package/dest/kernel/private_kernel_circuit_public_inputs.js +10 -7
  224. package/dest/kernel/private_kernel_init_2_circuit_private_inputs.d.ts +2 -3
  225. package/dest/kernel/private_kernel_init_2_circuit_private_inputs.d.ts.map +1 -1
  226. package/dest/kernel/private_kernel_init_2_circuit_private_inputs.js +3 -5
  227. package/dest/kernel/private_kernel_init_3_circuit_private_inputs.d.ts +2 -3
  228. package/dest/kernel/private_kernel_init_3_circuit_private_inputs.d.ts.map +1 -1
  229. package/dest/kernel/private_kernel_init_3_circuit_private_inputs.js +3 -5
  230. package/dest/kernel/private_kernel_init_4_circuit_private_inputs.d.ts +24 -0
  231. package/dest/kernel/private_kernel_init_4_circuit_private_inputs.d.ts.map +1 -0
  232. package/dest/kernel/private_kernel_init_4_circuit_private_inputs.js +37 -0
  233. package/dest/kernel/private_kernel_init_5_circuit_private_inputs.d.ts +25 -0
  234. package/dest/kernel/private_kernel_init_5_circuit_private_inputs.d.ts.map +1 -0
  235. package/dest/kernel/private_kernel_init_5_circuit_private_inputs.js +39 -0
  236. package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts +1 -9
  237. package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts.map +1 -1
  238. package/dest/kernel/private_kernel_init_circuit_private_inputs.js +2 -6
  239. package/dest/kernel/private_kernel_inner_4_circuit_private_inputs.d.ts +18 -0
  240. package/dest/kernel/private_kernel_inner_4_circuit_private_inputs.d.ts.map +1 -0
  241. package/dest/kernel/private_kernel_inner_4_circuit_private_inputs.js +27 -0
  242. package/dest/kernel/private_kernel_inner_5_circuit_private_inputs.d.ts +19 -0
  243. package/dest/kernel/private_kernel_inner_5_circuit_private_inputs.d.ts.map +1 -0
  244. package/dest/kernel/private_kernel_inner_5_circuit_private_inputs.js +29 -0
  245. package/dest/kernel/private_kernel_prover_output.d.ts +4 -1
  246. package/dest/kernel/private_kernel_prover_output.d.ts.map +1 -1
  247. package/dest/kernel/private_kernel_prover_output.js +4 -1
  248. package/dest/kernel/private_kernel_reset_dimensions.d.ts +7 -8
  249. package/dest/kernel/private_kernel_reset_dimensions.d.ts.map +1 -1
  250. package/dest/kernel/private_kernel_reset_tail_circuit_private_inputs.d.ts +29 -0
  251. package/dest/kernel/private_kernel_reset_tail_circuit_private_inputs.d.ts.map +1 -0
  252. package/dest/kernel/private_kernel_reset_tail_circuit_private_inputs.js +36 -0
  253. package/dest/kernel/private_kernel_simulated_output.d.ts +1 -7
  254. package/dest/kernel/private_kernel_simulated_output.d.ts.map +1 -1
  255. package/dest/kernel/private_kernel_simulated_output.js +2 -1
  256. package/dest/kernel/private_log_data.d.ts +1 -1
  257. package/dest/kernel/private_log_data.d.ts.map +1 -1
  258. package/dest/kernel/private_log_data.js +1 -1
  259. package/dest/kernel/utils/index.d.ts +1 -2
  260. package/dest/kernel/utils/index.d.ts.map +1 -1
  261. package/dest/kernel/utils/index.js +0 -1
  262. package/dest/keys/derivation.d.ts +41 -6
  263. package/dest/keys/derivation.d.ts.map +1 -1
  264. package/dest/keys/derivation.js +49 -26
  265. package/dest/logs/app_tagging_secret.d.ts +30 -7
  266. package/dest/logs/app_tagging_secret.d.ts.map +1 -1
  267. package/dest/logs/app_tagging_secret.js +46 -39
  268. package/dest/logs/app_tagging_secret_kind.d.ts +2 -1
  269. package/dest/logs/app_tagging_secret_kind.d.ts.map +1 -1
  270. package/dest/logs/app_tagging_secret_kind.js +13 -0
  271. package/dest/logs/contract_class_log.d.ts +1 -2
  272. package/dest/logs/contract_class_log.d.ts.map +1 -1
  273. package/dest/logs/contract_class_log.js +0 -4
  274. package/dest/logs/log_result.d.ts +3 -3
  275. package/dest/logs/log_result.d.ts.map +1 -1
  276. package/dest/logs/logs_query.d.ts +2 -2
  277. package/dest/logs/message_context.d.ts +4 -13
  278. package/dest/logs/message_context.d.ts.map +1 -1
  279. package/dest/logs/message_context.js +1 -62
  280. package/dest/logs/pending_tagged_log.d.ts +6 -8
  281. package/dest/logs/pending_tagged_log.d.ts.map +1 -1
  282. package/dest/logs/pending_tagged_log.js +1 -31
  283. package/dest/logs/shared_secret_derivation.d.ts +29 -6
  284. package/dest/logs/shared_secret_derivation.d.ts.map +1 -1
  285. package/dest/logs/shared_secret_derivation.js +44 -11
  286. package/dest/messaging/l1_to_l2_message.d.ts +23 -2
  287. package/dest/messaging/l1_to_l2_message.d.ts.map +1 -1
  288. package/dest/messaging/l1_to_l2_message.js +36 -11
  289. package/dest/messaging/l2_to_l1_membership.d.ts +11 -4
  290. package/dest/messaging/l2_to_l1_membership.d.ts.map +1 -1
  291. package/dest/messaging/l2_to_l1_membership.js +22 -7
  292. package/dest/noir/index.d.ts +3 -3
  293. package/dest/noir/index.d.ts.map +1 -1
  294. package/dest/p2p/attestation_utils.d.ts +1 -1
  295. package/dest/p2p/attestation_utils.d.ts.map +1 -1
  296. package/dest/p2p/attestation_utils.js +8 -1
  297. package/dest/p2p/checkpoint_attestation.d.ts +10 -1
  298. package/dest/p2p/checkpoint_attestation.d.ts.map +1 -1
  299. package/dest/p2p/checkpoint_attestation.js +10 -0
  300. package/dest/p2p/checkpoint_proposal.d.ts +2 -1
  301. package/dest/p2p/checkpoint_proposal.d.ts.map +1 -1
  302. package/dest/p2p/consensus_payload.d.ts +2 -1
  303. package/dest/p2p/consensus_payload.d.ts.map +1 -1
  304. package/dest/p2p/index.d.ts +1 -2
  305. package/dest/p2p/index.d.ts.map +1 -1
  306. package/dest/p2p/index.js +0 -1
  307. package/dest/p2p/signature_utils.d.ts +10 -1
  308. package/dest/p2p/signature_utils.d.ts.map +1 -1
  309. package/dest/p2p/signature_utils.js +9 -1
  310. package/dest/rollup/avm_proof_data.d.ts +3 -3
  311. package/dest/rollup/avm_proof_data.d.ts.map +1 -1
  312. package/dest/rollup/checkpoint_header.d.ts +8 -3
  313. package/dest/rollup/checkpoint_header.d.ts.map +1 -1
  314. package/dest/rollup/checkpoint_header.js +20 -10
  315. package/dest/stats/stats.d.ts +2 -2
  316. package/dest/stats/stats.d.ts.map +1 -1
  317. package/dest/tests/factories.d.ts +1 -27
  318. package/dest/tests/factories.d.ts.map +1 -1
  319. package/dest/tests/factories.js +10 -45
  320. package/dest/tests/mocks.d.ts +1 -1
  321. package/dest/tests/mocks.d.ts.map +1 -1
  322. package/dest/tests/mocks.js +3 -2
  323. package/dest/timetable/budgets.d.ts +57 -0
  324. package/dest/timetable/budgets.d.ts.map +1 -0
  325. package/dest/timetable/budgets.js +56 -0
  326. package/dest/timetable/build_proposer_timetable.d.ts +21 -0
  327. package/dest/timetable/build_proposer_timetable.d.ts.map +1 -0
  328. package/dest/timetable/build_proposer_timetable.js +17 -0
  329. package/dest/timetable/consensus_timetable.d.ts +70 -0
  330. package/dest/timetable/consensus_timetable.d.ts.map +1 -0
  331. package/dest/timetable/consensus_timetable.js +89 -0
  332. package/dest/timetable/index.d.ts +5 -87
  333. package/dest/timetable/index.d.ts.map +1 -1
  334. package/dest/timetable/index.js +4 -243
  335. package/dest/timetable/proposer_timetable.d.ts +106 -0
  336. package/dest/timetable/proposer_timetable.d.ts.map +1 -0
  337. package/dest/timetable/proposer_timetable.js +132 -0
  338. package/dest/trees/nullifier_membership_witness.d.ts +5 -8
  339. package/dest/trees/nullifier_membership_witness.d.ts.map +1 -1
  340. package/dest/trees/nullifier_membership_witness.js +0 -9
  341. package/dest/trees/public_data_witness.d.ts +7 -17
  342. package/dest/trees/public_data_witness.d.ts.map +1 -1
  343. package/dest/trees/public_data_witness.js +0 -27
  344. package/dest/tx/execution_payload.d.ts +1 -1
  345. package/dest/tx/execution_payload.d.ts.map +1 -1
  346. package/dest/tx/execution_payload.js +1 -1
  347. package/dest/tx/fee_provider.d.ts +2 -2
  348. package/dest/tx/fee_provider.d.ts.map +1 -1
  349. package/dest/tx/global_variable_builder.d.ts +2 -12
  350. package/dest/tx/global_variable_builder.d.ts.map +1 -1
  351. package/dest/tx/global_variables.js +2 -2
  352. package/dest/tx/hashed_values.d.ts +7 -1
  353. package/dest/tx/hashed_values.d.ts.map +1 -1
  354. package/dest/tx/hashed_values.js +9 -1
  355. package/dest/tx/index.d.ts +1 -2
  356. package/dest/tx/index.d.ts.map +1 -1
  357. package/dest/tx/index.js +0 -1
  358. package/dest/tx/indexed_tx_effect.d.ts +5 -2
  359. package/dest/tx/indexed_tx_effect.d.ts.map +1 -1
  360. package/dest/tx/indexed_tx_effect.js +8 -4
  361. package/dest/tx/offchain_effect.js +1 -1
  362. package/dest/tx/private_tx_constant_data.d.ts +18 -2
  363. package/dest/tx/private_tx_constant_data.d.ts.map +1 -1
  364. package/dest/tx/private_tx_constant_data.js +13 -4
  365. package/dest/tx/profiling.d.ts +1 -1
  366. package/dest/tx/profiling.d.ts.map +1 -1
  367. package/dest/tx/profiling.js +2 -0
  368. package/dest/tx/simulated_tx.d.ts +10 -6
  369. package/dest/tx/simulated_tx.d.ts.map +1 -1
  370. package/dest/tx/simulated_tx.js +7 -2
  371. package/dest/tx/tx.d.ts +23 -1
  372. package/dest/tx/tx.d.ts.map +1 -1
  373. package/dest/tx/tx.js +32 -3
  374. package/dest/tx/tx_receipt.d.ts +143 -60
  375. package/dest/tx/tx_receipt.d.ts.map +1 -1
  376. package/dest/tx/tx_receipt.js +141 -45
  377. package/dest/tx/validator/error_texts.d.ts +2 -2
  378. package/dest/tx/validator/error_texts.d.ts.map +1 -1
  379. package/dest/tx/validator/error_texts.js +1 -1
  380. package/dest/validators/errors.d.ts +16 -1
  381. package/dest/validators/errors.d.ts.map +1 -1
  382. package/dest/validators/errors.js +12 -0
  383. package/dest/world-state/genesis_data.d.ts +9 -1
  384. package/dest/world-state/genesis_data.d.ts.map +1 -1
  385. package/dest/world-state/genesis_data.js +1 -0
  386. package/dest/world-state/world_state_revision.d.ts +1 -18
  387. package/dest/world-state/world_state_revision.d.ts.map +1 -1
  388. package/dest/world-state/world_state_revision.js +0 -20
  389. package/package.json +8 -8
  390. package/src/abi/abi.ts +32 -4
  391. package/src/abi/buffer.ts +13 -1
  392. package/src/abi/contract_artifact.ts +40 -16
  393. package/src/abi/decoder.ts +20 -24
  394. package/src/abi/function_call.ts +19 -7
  395. package/src/avm/avm.ts +5 -2
  396. package/src/avm/index.ts +0 -5
  397. package/src/aztec-address/index.ts +36 -6
  398. package/src/block/attestation_info.ts +7 -2
  399. package/src/block/l2_block_source.ts +95 -19
  400. package/src/block/l2_block_stream/event_driven_l2_block_stream.ts +207 -0
  401. package/src/block/l2_block_stream/index.ts +1 -0
  402. package/src/block/l2_block_stream/interfaces.ts +98 -10
  403. package/src/block/l2_block_stream/l2_block_stream.ts +255 -177
  404. package/src/block/l2_block_stream/l2_tips_memory_store.ts +12 -41
  405. package/src/block/l2_block_stream/l2_tips_store_base.ts +84 -93
  406. package/src/block/proposal/attestations_and_signers.ts +53 -7
  407. package/src/block/test/l2_tips_store_test_suite.ts +275 -28
  408. package/src/block/validate_block_result.ts +48 -2
  409. package/src/checkpoint/checkpoint.ts +2 -2
  410. package/src/checkpoint/index.ts +1 -0
  411. package/src/checkpoint/simulation_overrides.ts +171 -0
  412. package/src/checkpoint/validate.ts +16 -6
  413. package/src/config/index.ts +1 -1
  414. package/src/config/network-consensus-config.ts +291 -0
  415. package/src/config/node-rpc-config.ts +2 -1
  416. package/src/config/sequencer-config.ts +36 -5
  417. package/src/contract/artifact_hash.ts +15 -3
  418. package/src/contract/contract_address.ts +4 -3
  419. package/src/contract/contract_class.ts +3 -2
  420. package/src/contract/contract_instance.ts +62 -1
  421. package/src/contract/index.ts +0 -1
  422. package/src/contract/interfaces/contract_data_source.ts +2 -4
  423. package/src/contract/interfaces/contract_instance.ts +26 -8
  424. package/src/contract/interfaces/node-info.ts +11 -0
  425. package/src/contract/partial_address.ts +8 -2
  426. package/src/database-version/version_manager.ts +96 -6
  427. package/src/deserialization/index.ts +35 -2
  428. package/src/file-store/factory.ts +7 -0
  429. package/src/file-store/index.ts +1 -0
  430. package/src/file-store/memory.ts +94 -0
  431. package/src/gas/README.md +199 -35
  432. package/src/gas/gas_settings.ts +11 -21
  433. package/src/gas/index.ts +1 -0
  434. package/src/gas/tx_gas_limits.ts +123 -0
  435. package/src/ha-signing/config.ts +23 -5
  436. package/src/ha-signing/local_config.ts +20 -1
  437. package/src/hash/hash.ts +0 -8
  438. package/src/interfaces/api_limit.ts +5 -0
  439. package/src/interfaces/archiver.ts +22 -9
  440. package/src/interfaces/aztec-node-admin.ts +1 -1
  441. package/src/interfaces/aztec-node-debug.ts +54 -2
  442. package/src/interfaces/aztec-node.ts +175 -49
  443. package/src/interfaces/block-builder.ts +8 -1
  444. package/src/interfaces/block_response.ts +4 -4
  445. package/src/interfaces/chain_tips.ts +8 -16
  446. package/src/interfaces/checkpoint_parameter.ts +3 -3
  447. package/src/interfaces/checkpoint_response.ts +4 -4
  448. package/src/interfaces/client.ts +1 -0
  449. package/src/interfaces/configs.ts +33 -6
  450. package/src/interfaces/get_tx_by_hash_options.ts +14 -0
  451. package/src/interfaces/merkle_tree_operations.ts +8 -2
  452. package/src/interfaces/p2p.ts +29 -9
  453. package/src/interfaces/private_kernel_prover.ts +104 -13
  454. package/src/interfaces/prover-client.ts +1 -3
  455. package/src/interfaces/prover-node.ts +32 -17
  456. package/src/interfaces/proving-job.ts +15 -3
  457. package/src/interfaces/server.ts +0 -2
  458. package/src/interfaces/server_circuit_prover.ts +2 -2
  459. package/src/interfaces/tx_provider.ts +4 -0
  460. package/src/interfaces/validator.ts +11 -0
  461. package/src/interfaces/world_state.ts +14 -0
  462. package/src/kernel/hints/find_private_kernel_reset_dimensions.ts +22 -112
  463. package/src/kernel/hints/index.ts +0 -1
  464. package/src/kernel/hints/read_request.ts +1 -1
  465. package/src/kernel/index.ts +5 -1
  466. package/src/kernel/log_hash.ts +5 -2
  467. package/src/kernel/note_hash.ts +1 -1
  468. package/src/kernel/nullifier.ts +1 -1
  469. package/src/kernel/private_circuit_public_inputs.ts +12 -1
  470. package/src/kernel/private_context_inputs.ts +10 -3
  471. package/src/kernel/private_kernel_circuit_public_inputs.ts +9 -7
  472. package/src/kernel/private_kernel_init_2_circuit_private_inputs.ts +0 -3
  473. package/src/kernel/private_kernel_init_3_circuit_private_inputs.ts +0 -3
  474. package/src/kernel/private_kernel_init_4_circuit_private_inputs.ts +52 -0
  475. package/src/kernel/private_kernel_init_5_circuit_private_inputs.ts +55 -0
  476. package/src/kernel/private_kernel_init_circuit_private_inputs.ts +0 -6
  477. package/src/kernel/private_kernel_inner_4_circuit_private_inputs.ts +39 -0
  478. package/src/kernel/private_kernel_inner_5_circuit_private_inputs.ts +42 -0
  479. package/src/kernel/private_kernel_prover_output.ts +4 -0
  480. package/src/kernel/private_kernel_reset_dimensions.ts +16 -6
  481. package/src/kernel/private_kernel_reset_tail_circuit_private_inputs.ts +69 -0
  482. package/src/kernel/private_kernel_simulated_output.ts +0 -7
  483. package/src/kernel/private_log_data.ts +4 -1
  484. package/src/kernel/utils/index.ts +0 -1
  485. package/src/keys/derivation.ts +69 -24
  486. package/src/logs/app_tagging_secret.ts +62 -39
  487. package/src/logs/app_tagging_secret_kind.ts +15 -0
  488. package/src/logs/contract_class_log.ts +0 -9
  489. package/src/logs/log_result.ts +2 -2
  490. package/src/logs/logs_query.ts +2 -2
  491. package/src/logs/message_context.ts +6 -60
  492. package/src/logs/pending_tagged_log.ts +6 -33
  493. package/src/logs/shared_secret_derivation.ts +47 -14
  494. package/src/messaging/l1_to_l2_message.ts +51 -13
  495. package/src/messaging/l2_to_l1_membership.ts +28 -11
  496. package/src/noir/index.ts +2 -1
  497. package/src/p2p/attestation_utils.ts +8 -1
  498. package/src/p2p/checkpoint_attestation.ts +12 -0
  499. package/src/p2p/index.ts +0 -1
  500. package/src/p2p/signature_utils.ts +9 -0
  501. package/src/rollup/avm_proof_data.ts +2 -2
  502. package/src/rollup/checkpoint_header.ts +16 -2
  503. package/src/stats/stats.ts +6 -2
  504. package/src/tests/factories.ts +13 -51
  505. package/src/tests/mocks.ts +7 -2
  506. package/src/timetable/README.md +609 -0
  507. package/src/timetable/budgets.ts +87 -0
  508. package/src/timetable/build_proposer_timetable.ts +42 -0
  509. package/src/timetable/consensus_timetable.ts +126 -0
  510. package/src/timetable/index.ts +4 -361
  511. package/src/timetable/proposer_timetable.ts +190 -0
  512. package/src/timetable/timetable-example.svg +108 -0
  513. package/src/trees/nullifier_membership_witness.ts +0 -11
  514. package/src/trees/public_data_witness.ts +0 -31
  515. package/src/tx/execution_payload.ts +2 -1
  516. package/src/tx/fee_provider.ts +1 -1
  517. package/src/tx/global_variable_builder.ts +1 -17
  518. package/src/tx/global_variables.ts +2 -2
  519. package/src/tx/hashed_values.ts +11 -6
  520. package/src/tx/index.ts +0 -1
  521. package/src/tx/indexed_tx_effect.ts +17 -4
  522. package/src/tx/offchain_effect.ts +1 -1
  523. package/src/tx/private_tx_constant_data.ts +25 -2
  524. package/src/tx/profiling.ts +2 -0
  525. package/src/tx/simulated_tx.ts +13 -2
  526. package/src/tx/tx.ts +46 -3
  527. package/src/tx/tx_receipt.ts +263 -71
  528. package/src/tx/validator/error_texts.ts +2 -1
  529. package/src/validators/errors.ts +17 -0
  530. package/src/world-state/genesis_data.ts +10 -0
  531. package/src/world-state/world_state_revision.ts +0 -33
  532. package/dest/avm/contract_storage_read.d.ts +0 -58
  533. package/dest/avm/contract_storage_read.d.ts.map +0 -1
  534. package/dest/avm/contract_storage_read.js +0 -65
  535. package/dest/avm/contract_storage_update_request.d.ts +0 -65
  536. package/dest/avm/contract_storage_update_request.d.ts.map +0 -1
  537. package/dest/avm/contract_storage_update_request.js +0 -80
  538. package/dest/avm/public_call_stack_item_compressed.d.ts +0 -43
  539. package/dest/avm/public_call_stack_item_compressed.d.ts.map +0 -1
  540. package/dest/avm/public_call_stack_item_compressed.js +0 -70
  541. package/dest/avm/public_data_update_request.d.ts +0 -62
  542. package/dest/avm/public_data_update_request.d.ts.map +0 -1
  543. package/dest/avm/public_data_update_request.js +0 -67
  544. package/dest/avm/public_inner_call_request.d.ts +0 -50
  545. package/dest/avm/public_inner_call_request.d.ts.map +0 -1
  546. package/dest/avm/public_inner_call_request.js +0 -74
  547. package/dest/config/pipelining-config.d.ts +0 -15
  548. package/dest/config/pipelining-config.d.ts.map +0 -1
  549. package/dest/config/pipelining-config.js +0 -18
  550. package/dest/contract/deployment_info.d.ts +0 -24
  551. package/dest/contract/deployment_info.d.ts.map +0 -1
  552. package/dest/contract/deployment_info.js +0 -3
  553. package/dest/interfaces/epoch-prover.d.ts +0 -57
  554. package/dest/interfaces/epoch-prover.d.ts.map +0 -1
  555. package/dest/interfaces/epoch-prover.js +0 -1
  556. package/dest/interfaces/prover-coordination.d.ts +0 -15
  557. package/dest/interfaces/prover-coordination.d.ts.map +0 -1
  558. package/dest/interfaces/prover-coordination.js +0 -1
  559. package/dest/kernel/hints/tree_leaf_read_request.d.ts +0 -14
  560. package/dest/kernel/hints/tree_leaf_read_request.d.ts.map +0 -1
  561. package/dest/kernel/hints/tree_leaf_read_request.js +0 -33
  562. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts +0 -47
  563. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts.map +0 -1
  564. package/dest/kernel/private_kernel_tail_circuit_private_inputs.js +0 -38
  565. package/dest/kernel/utils/optional_number.d.ts +0 -31
  566. package/dest/kernel/utils/optional_number.d.ts.map +0 -1
  567. package/dest/kernel/utils/optional_number.js +0 -42
  568. package/dest/p2p/interface.d.ts +0 -5
  569. package/dest/p2p/interface.d.ts.map +0 -1
  570. package/dest/p2p/interface.js +0 -1
  571. package/dest/tx/validator/empty_validator.d.ts +0 -5
  572. package/dest/tx/validator/empty_validator.d.ts.map +0 -1
  573. package/dest/tx/validator/empty_validator.js +0 -7
  574. package/src/avm/contract_storage_read.ts +0 -77
  575. package/src/avm/contract_storage_update_request.ts +0 -93
  576. package/src/avm/public_call_stack_item_compressed.ts +0 -113
  577. package/src/avm/public_data_update_request.ts +0 -106
  578. package/src/avm/public_inner_call_request.ts +0 -85
  579. package/src/config/pipelining-config.ts +0 -31
  580. package/src/contract/deployment_info.ts +0 -25
  581. package/src/interfaces/epoch-prover.ts +0 -72
  582. package/src/interfaces/prover-coordination.ts +0 -17
  583. package/src/kernel/hints/tree_leaf_read_request.ts +0 -35
  584. package/src/kernel/private_kernel_tail_circuit_private_inputs.ts +0 -58
  585. package/src/kernel/utils/optional_number.ts +0 -50
  586. package/src/p2p/interface.ts +0 -4
  587. package/src/tx/validator/empty_validator.ts +0 -7
@@ -1,6 +1,4 @@
1
- import { MAX_NOTE_HASHES_PER_TX } from '@aztec/constants';
2
- import { range } from '@aztec/foundation/array';
3
- import { Fr } from '@aztec/foundation/curves/bn254';
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
4
2
 
5
3
  import type { TxHash } from '../tx/tx_hash.js';
6
4
 
@@ -13,60 +11,8 @@ import type { TxHash } from '../tx/tx_hash.js';
13
11
  *
14
12
  * A TS version of `message_context.nr`.
15
13
  */
16
- export class MessageContext {
17
- constructor(
18
- public txHash: TxHash,
19
- public uniqueNoteHashesInTx: Fr[],
20
- public firstNullifierInTx: Fr,
21
- ) {}
22
-
23
- toFields(): Fr[] {
24
- return [
25
- this.txHash.hash,
26
- ...serializeBoundedVec(this.uniqueNoteHashesInTx, MAX_NOTE_HASHES_PER_TX),
27
- this.firstNullifierInTx,
28
- ];
29
- }
30
-
31
- toNoirStruct() {
32
- /* eslint-disable camelcase */
33
- return {
34
- tx_hash: this.txHash.hash,
35
- unique_note_hashes_in_tx: this.uniqueNoteHashesInTx,
36
- first_nullifier_in_tx: this.firstNullifierInTx,
37
- };
38
- /* eslint-enable camelcase */
39
- }
40
-
41
- static toEmptyFields(): Fr[] {
42
- const serializationLen =
43
- 1 /* txHash */ + MAX_NOTE_HASHES_PER_TX + 1 /* uniqueNoteHashesInTx BVec */ + 1; /* firstNullifierInTx */
44
- return range(serializationLen).map(_ => Fr.zero());
45
- }
46
-
47
- static toSerializedOption(response: MessageContext | null): Fr[] {
48
- if (response) {
49
- return [new Fr(1), ...response.toFields()];
50
- } else {
51
- return [new Fr(0), ...MessageContext.toEmptyFields()];
52
- }
53
- }
54
- }
55
-
56
- /**
57
- * Helper function to serialize a bounded vector according to Noir's BoundedVec format
58
- * @param values - The values to serialize
59
- * @param maxLength - The maximum length of the bounded vector
60
- * @returns The serialized bounded vector as Fr[]
61
- * @dev Copied over from pending_tagged_log.ts.
62
- */
63
- function serializeBoundedVec(values: Fr[], maxLength: number): Fr[] {
64
- if (values.length > maxLength) {
65
- throw new Error(`Attempted to serialize ${values} values into a BoundedVec with max length ${maxLength}`);
66
- }
67
-
68
- const lengthDiff = maxLength - values.length;
69
- const zeroPaddingArray = Array(lengthDiff).fill(Fr.ZERO);
70
- const storage = values.concat(zeroPaddingArray);
71
- return [...storage, new Fr(values.length)];
72
- }
14
+ export type MessageContext = {
15
+ txHash: TxHash;
16
+ uniqueNoteHashesInTx: Fr[];
17
+ firstNullifierInTx: Fr;
18
+ };
@@ -1,39 +1,12 @@
1
- import { PRIVATE_LOG_SIZE_IN_FIELDS } from '@aztec/constants';
2
- import { Fr } from '@aztec/foundation/curves/bn254';
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
3
2
 
4
- import type { TxHash } from '../tx/tx_hash.js';
5
- import { MessageContext } from './message_context.js';
3
+ import type { MessageContext } from './message_context.js';
6
4
 
7
5
  /**
8
6
  * Represents a pending tagged log as it is stored in the pending tagged log array to which the fetchTaggedLogs oracle
9
7
  * inserts found private logs. A TS version of `pending_tagged_log.nr`.
10
8
  */
11
- export class PendingTaggedLog {
12
- private context: MessageContext;
13
-
14
- constructor(
15
- public log: Fr[],
16
- txHash: TxHash,
17
- uniqueNoteHashesInTx: Fr[],
18
- firstNullifierInTx: Fr,
19
- ) {
20
- this.context = new MessageContext(txHash, uniqueNoteHashesInTx, firstNullifierInTx);
21
- }
22
-
23
- toFields(): Fr[] {
24
- return [...serializeBoundedVec(this.log, PRIVATE_LOG_SIZE_IN_FIELDS), ...this.context.toFields()];
25
- }
26
- }
27
-
28
- /**
29
- * Helper function to serialize a bounded vector according to Noir's BoundedVec format
30
- * @param values - The values to serialize
31
- * @param maxLength - The maximum length of the bounded vector
32
- * @returns The serialized bounded vector as Fr[]
33
- */
34
- function serializeBoundedVec(values: Fr[], maxLength: number): Fr[] {
35
- const lengthDiff = maxLength - values.length;
36
- const zeroPaddingArray = Array(lengthDiff).fill(Fr.ZERO);
37
- const storage = values.concat(zeroPaddingArray);
38
- return [...storage, new Fr(values.length)];
39
- }
9
+ export type PendingTaggedLog = {
10
+ log: Fr[];
11
+ context: MessageContext;
12
+ };
@@ -2,16 +2,28 @@ import { DomainSeparator } from '@aztec/constants';
2
2
  import { Grumpkin } from '@aztec/foundation/crypto/grumpkin';
3
3
  import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
4
4
  import type { Fr } from '@aztec/foundation/curves/bn254';
5
- import type { GrumpkinScalar } from '@aztec/foundation/curves/grumpkin';
5
+ import { GrumpkinScalar, type Point } from '@aztec/foundation/curves/grumpkin';
6
6
 
7
7
  import type { AztecAddress } from '../aztec-address/index.js';
8
8
  import type { PublicKey } from '../keys/public_key.js';
9
9
 
10
10
  /**
11
- * Derives an app-siloed ECDH shared secret.
11
+ * Derives the raw ECDH shared secret point `S = secretKey * publicKey`.
12
12
  *
13
- * Computes the raw ECDH shared secret `S = secretKey * publicKey`, then app-silos it:
14
- * `s_app = h(DOM_SEP__APP_SILOED_ECDH_SHARED_SECRET, S.x, S.y, contractAddress)`
13
+ * @throws If the publicKey is zero.
14
+ */
15
+ export function deriveEcdhSharedSecretPoint(secretKey: GrumpkinScalar, publicKey: PublicKey): Promise<Point> {
16
+ if (publicKey.isZero()) {
17
+ throw new Error(
18
+ `Attempting to derive a shared secret with a zero public key. You have probably passed a zero public key in your Noir code somewhere thinking that the note won't be broadcast... but it was.`,
19
+ );
20
+ }
21
+ return Grumpkin.mul(publicKey, secretKey);
22
+ }
23
+
24
+ /**
25
+ * Derives an app-siloed ECDH shared secret from keys: ECDHs `S = secretKey * publicKey` via
26
+ * {@link deriveEcdhSharedSecretPoint}, then app-silos it via {@link appSiloEcdhSharedSecretPoint}.
15
27
  *
16
28
  * @param secretKey - The secret key used to derive shared secret.
17
29
  * @param publicKey - The public key used to derive shared secret.
@@ -19,19 +31,40 @@ import type { PublicKey } from '../keys/public_key.js';
19
31
  * @returns The app-siloed shared secret as a Field.
20
32
  * @throws If the publicKey is zero.
21
33
  */
22
- export async function deriveAppSiloedSharedSecret(
34
+ export async function appSiloEcdhSharedSecret(
23
35
  secretKey: GrumpkinScalar,
24
36
  publicKey: PublicKey,
25
37
  contractAddress: AztecAddress,
26
38
  ): Promise<Fr> {
27
- if (publicKey.isZero()) {
28
- throw new Error(
29
- `Attempting to derive a shared secret with a zero public key. You have probably passed a zero public key in your Noir code somewhere thinking that the note won't be broadcast... but it was.`,
30
- );
31
- }
32
- const rawSharedSecret = await Grumpkin.mul(publicKey, secretKey);
33
- return poseidon2HashWithSeparator(
34
- [rawSharedSecret.x, rawSharedSecret.y, contractAddress],
35
- DomainSeparator.APP_SILOED_ECDH_SHARED_SECRET,
39
+ const rawSharedSecret = await deriveEcdhSharedSecretPoint(secretKey, publicKey);
40
+ return appSiloEcdhSharedSecretPoint(rawSharedSecret, contractAddress);
41
+ }
42
+
43
+ /**
44
+ * App-silos a shared secret point: `s_app = h(DOM_SEP__APP_SILOED_ECDH_SHARED_SECRET, S.x, S.y, app)`.
45
+ *
46
+ * Mirrors `compute_app_siloed_shared_secret` in aztec-nr.
47
+ *
48
+ * @param point - The raw shared secret point `S`.
49
+ * @param app - The contract address to silo to.
50
+ */
51
+ export function appSiloEcdhSharedSecretPoint(point: Point, app: AztecAddress): Promise<Fr> {
52
+ return poseidon2HashWithSeparator([point.x, point.y, app], DomainSeparator.APP_SILOED_ECDH_SHARED_SECRET);
53
+ }
54
+
55
+ /**
56
+ * Protects a handshake's shared secret from being forged by the recipient: `S' = hash(ephPk, recipientPoint) * S`.
57
+ *
58
+ * Mirrors aztec-nr's `protect_from_forgery` and must stay byte-compatible with it.
59
+ *
60
+ * @param secret - The raw shared secret `S` to protect.
61
+ * @param ephPk - The handshake's ephemeral public key.
62
+ * @param recipientPoint - The recipient's address point.
63
+ */
64
+ export async function protectFromForgery(secret: Point, ephPk: Point, recipientPoint: Point): Promise<Point> {
65
+ const scalar = await poseidon2HashWithSeparator(
66
+ [ephPk.x, ephPk.y, recipientPoint.x, recipientPoint.y],
67
+ DomainSeparator.HANDSHAKE_FORGERY_PROTECTION,
36
68
  );
69
+ return Grumpkin.mul(secret, new GrumpkinScalar(scalar.toBigInt()));
37
70
  }
@@ -1,4 +1,5 @@
1
- import type { L1_TO_L2_MSG_TREE_HEIGHT } from '@aztec/constants';
1
+ import { DomainSeparator, type L1_TO_L2_MSG_TREE_HEIGHT } from '@aztec/constants';
2
+ import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
2
3
  import { sha256ToField } from '@aztec/foundation/crypto/sha256';
3
4
  import { Fr } from '@aztec/foundation/curves/bn254';
4
5
  import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
@@ -7,7 +8,7 @@ import { SiblingPath } from '@aztec/foundation/trees';
7
8
 
8
9
  import type { AztecAddress } from '../aztec-address/index.js';
9
10
  import type { BlockParameter } from '../block/block_parameter.js';
10
- import { computeL1ToL2MessageNullifier } from '../hash/hash.js';
11
+ import { siloNullifier } from '../hash/hash.js';
11
12
  import type { AztecNode } from '../interfaces/aztec-node.js';
12
13
  import { MerkleTreeId } from '../trees/merkle_tree_id.js';
13
14
  import { L1Actor } from './l1_actor.js';
@@ -74,28 +75,65 @@ export class L1ToL2Message {
74
75
  }
75
76
  }
76
77
 
77
- // This functionality is not on the node because we do not want to pass the node the secret, and give the node the ability to derive a valid nullifer for an L1 to L2 message.
78
- export async function getNonNullifiedL1ToL2MessageWitness(
78
+ /**
79
+ * The unsiloed nullifier a message consumer derives, together with the contract address needed to silo it.
80
+ */
81
+ export interface UnsiloedMessageNullifier {
82
+ contractAddress: AztecAddress;
83
+ nullifier: Fr;
84
+ }
85
+
86
+ /**
87
+ * Computes the unsiloed nullifier that the fee juice contract (and any consumer following the same scheme) derives when
88
+ * consuming an L1 to L2 message.
89
+ *
90
+ * This is not a general-purpose utility: other contracts may derive the secret hash and hence the nullifier
91
+ * differently. The result is unsiloed — callers silo it (with the consuming contract's address) before looking it up
92
+ * in the nullifier tree.
93
+ */
94
+ export function computeFeeJuiceMessageNullifier(messageHash: Fr, secret: Fr): Promise<Fr> {
95
+ return poseidon2HashWithSeparator([messageHash, secret], DomainSeparator.MESSAGE_NULLIFIER);
96
+ }
97
+
98
+ /**
99
+ * Fetches the membership witness of an L1 to L2 message. When `unsiloedNullifier` is provided, the message is
100
+ * additionally required to be un-nullified.
101
+ */
102
+ export async function getL1ToL2MessageWitness(
79
103
  node: AztecNode,
80
- contractAddress: AztecAddress,
81
104
  messageHash: Fr,
82
- secret: Fr,
105
+ unsiloedNullifier?: UnsiloedMessageNullifier,
83
106
  referenceBlock: BlockParameter = 'latest',
84
107
  ): Promise<[bigint, SiblingPath<typeof L1_TO_L2_MSG_TREE_HEIGHT>]> {
85
- const messageNullifier = await computeL1ToL2MessageNullifier(contractAddress, messageHash, secret);
86
-
87
- const [l1ToL2Response, nullifierResponse] = await Promise.all([
88
- node.getL1ToL2MessageMembershipWitness(referenceBlock, messageHash),
89
- node.findLeavesIndexes(referenceBlock, MerkleTreeId.NULLIFIER_TREE, [messageNullifier]),
90
- ]);
108
+ // Both requests are dispatched before awaiting so they run concurrently.
109
+ const l1ToL2ResponsePromise = node.getL1ToL2MessageMembershipWitness(referenceBlock, messageHash);
110
+ const nullifierResponsePromise = unsiloedNullifier
111
+ ? siloNullifier(unsiloedNullifier.contractAddress, unsiloedNullifier.nullifier).then(siloed =>
112
+ node.findLeavesIndexes(referenceBlock, MerkleTreeId.NULLIFIER_TREE, [siloed]),
113
+ )
114
+ : undefined;
91
115
 
116
+ const l1ToL2Response = await l1ToL2ResponsePromise;
92
117
  if (!l1ToL2Response) {
93
118
  throw new Error(`No L1 to L2 message found for message hash ${messageHash.toString()}`);
94
119
  }
95
120
 
96
- if (nullifierResponse[0] !== undefined) {
121
+ const nullifierResponse = await nullifierResponsePromise;
122
+ if (nullifierResponse?.[0] !== undefined) {
97
123
  throw new Error(`No non-nullified L1 to L2 message found for message hash ${messageHash.toString()}`);
98
124
  }
99
125
 
100
126
  return l1ToL2Response;
101
127
  }
128
+
129
+ // This functionality is not on the node because we do not want to pass the node the secret, and give the node the ability to derive a valid nullifer for an L1 to L2 message.
130
+ export async function getNonNullifiedL1ToL2MessageWitness(
131
+ node: AztecNode,
132
+ contractAddress: AztecAddress,
133
+ messageHash: Fr,
134
+ secret: Fr,
135
+ referenceBlock: BlockParameter = 'latest',
136
+ ): Promise<[bigint, SiblingPath<typeof L1_TO_L2_MSG_TREE_HEIGHT>]> {
137
+ const nullifier = await computeFeeJuiceMessageNullifier(messageHash, secret);
138
+ return getL1ToL2MessageWitness(node, messageHash, { contractAddress, nullifier }, referenceBlock);
139
+ }
@@ -1,11 +1,14 @@
1
1
  import { MAX_CHECKPOINTS_PER_EPOCH, OUT_HASH_TREE_LEAF_COUNT } from '@aztec/constants';
2
- import type { EpochNumber } from '@aztec/foundation/branded-types';
2
+ import { type EpochNumber, EpochNumberSchema } from '@aztec/foundation/branded-types';
3
3
  import { Fr } from '@aztec/foundation/curves/bn254';
4
4
  import { SiblingPath, UnbalancedMerkleTreeCalculator, computeUnbalancedShaRoot } from '@aztec/foundation/trees';
5
5
 
6
+ import { z } from 'zod';
7
+
6
8
  import type { AztecNode } from '../interfaces/aztec-node.js';
9
+ import { schemas } from '../schemas/schemas.js';
7
10
  import { TxHash } from '../tx/tx_hash.js';
8
- import { TxReceipt } from '../tx/tx_receipt.js';
11
+ import type { TxReceipt } from '../tx/tx_receipt.js';
9
12
 
10
13
  /**
11
14
  * Provides access to the L1 Outbox's per-epoch roots so the witness helper can pick the smallest
@@ -123,6 +126,19 @@ export type L2ToL1MembershipWitness = {
123
126
  siblingPath: SiblingPath<number>;
124
127
  };
125
128
 
129
+ /**
130
+ * Zod schema for {@link L2ToL1MembershipWitness}. The sibling-path length varies with the shape of
131
+ * the per-epoch tree, so we use the unsized `SiblingPath.schema` here rather than a fixed-height
132
+ * `schemaFor`.
133
+ */
134
+ export const L2ToL1MembershipWitnessSchema = z.object({
135
+ epochNumber: EpochNumberSchema,
136
+ numCheckpointsInEpoch: schemas.Integer,
137
+ root: schemas.Fr,
138
+ leafIndex: schemas.BigInt,
139
+ siblingPath: SiblingPath.schema,
140
+ }) as unknown as z.ZodType<L2ToL1MembershipWitness>;
141
+
126
142
  /**
127
143
  * Computes the L2 to L1 membership witness for a given message in a transaction.
128
144
  *
@@ -144,26 +160,27 @@ export type L2ToL1MembershipWitness = {
144
160
  * If not provided, the message is found by scanning the tx's messages (throws if duplicates exist).
145
161
  */
146
162
  export async function computeL2ToL1MembershipWitness(
147
- node: Pick<AztecNode, 'getL2ToL1Messages' | 'getTxReceipt' | 'getTxEffect' | 'getBlock' | 'getCheckpointsData'>,
163
+ node: Pick<AztecNode, 'getL2ToL1Messages' | 'getTxReceipt' | 'getBlock' | 'getCheckpointsData'>,
148
164
  outboxOrRoots: OutboxRootsReader | Fr[],
149
165
  message: Fr,
150
- txHashOrReceipt: TxHash | Pick<TxReceipt, 'txHash' | 'epochNumber' | 'blockNumber'>,
166
+ txHashOrReceipt: TxHash | Pick<TxReceipt, 'txHash' | 'epochNumber' | 'blockNumber' | 'txIndexInBlock'>,
151
167
  messageIndexInTx?: number,
152
168
  ): Promise<L2ToL1MembershipWitness | undefined> {
153
- const receipt = 'txHash' in txHashOrReceipt ? txHashOrReceipt : await node.getTxReceipt(txHashOrReceipt);
154
- const { txHash, epochNumber, blockNumber } = receipt;
155
- if (epochNumber === undefined || blockNumber === undefined) {
169
+ const receipt =
170
+ 'txHash' in txHashOrReceipt ? txHashOrReceipt : await node.getTxReceipt(txHashOrReceipt, { includeTxEffect: true });
171
+
172
+ const { epochNumber, blockNumber, txIndexInBlock } = receipt;
173
+ if (epochNumber === undefined || blockNumber === undefined || txIndexInBlock === undefined) {
156
174
  return undefined;
157
175
  }
158
176
 
159
- const [messagesInEpoch, block, txEffect, checkpointsData] = await Promise.all([
177
+ const [messagesInEpoch, block, checkpointsData] = await Promise.all([
160
178
  node.getL2ToL1Messages(epochNumber),
161
179
  node.getBlock(blockNumber),
162
- node.getTxEffect(txHash),
163
180
  node.getCheckpointsData({ epoch: epochNumber }),
164
181
  ]);
165
182
 
166
- if (messagesInEpoch.length === 0 || !block || !txEffect) {
183
+ if (messagesInEpoch.length === 0 || !block) {
167
184
  return undefined;
168
185
  }
169
186
 
@@ -173,7 +190,7 @@ export async function computeL2ToL1MembershipWitness(
173
190
  }
174
191
 
175
192
  const blockIndex = block.indexWithinCheckpoint;
176
- const txIndex = txEffect.txIndexInBlock;
193
+ const txIndex = txIndexInBlock;
177
194
 
178
195
  // Pick the smallest partial-proof root on the Outbox that covers checkpointIndex. The Outbox
179
196
  // stores roots keyed by `numCheckpointsInEpoch - 1`, so to cover a tx in checkpoint at index
package/src/noir/index.ts CHANGED
@@ -2,6 +2,7 @@ import type {
2
2
  ABIParameter,
3
3
  ABIParameterVisibility,
4
4
  AbiErrorType,
5
+ AbiNamedValue,
5
6
  AbiType,
6
7
  AbiValue,
7
8
  DebugFileMap,
@@ -73,7 +74,7 @@ export interface NoirCompiledContract {
73
74
  /** The events of the contract */
74
75
  outputs: {
75
76
  structs: Record<string, AbiType[]>;
76
- globals: Record<string, AbiValue[]>;
77
+ globals: Record<string, (AbiNamedValue | AbiValue)[]>;
77
78
  };
78
79
  /** The map of file ID to the source code and path of the file. */
79
80
  file_map: DebugFileMap;
@@ -1,3 +1,4 @@
1
+ import { normalizeSignature } from '@aztec/foundation/crypto/secp256k1-signer';
1
2
  import type { EthAddress } from '@aztec/foundation/eth-address';
2
3
 
3
4
  import { CommitteeAttestation } from '../block/index.js';
@@ -18,9 +19,15 @@ export function orderAttestations(
18
19
  for (const attestation of attestations) {
19
20
  const sender = attestation.getSender();
20
21
  if (sender) {
22
+ // Canonicalize the recovery byte to v ∈ {27, 28} before it reaches the L1 bundle. A committee
23
+ // member (or a peer mutating the byte in flight) can emit an equivalent signature in yParity form
24
+ // (v = 0/1); left as-is it makes `packAttestations` (empty iff v === 0) and `getSigners` (empty iff
25
+ // r,s,v all zero) disagree, reverting `propose()` with SignersSizeMismatch, and a v = 1 byte would
26
+ // later revert epoch proving in ECDSA.recover. `sender` recovered, so the signature is non-empty
27
+ // and low-s, and normalizeSignature preserves the recovered address.
21
28
  attestationMap.set(
22
29
  sender.toString(),
23
- CommitteeAttestation.fromAddressAndSignature(sender, attestation.signature),
30
+ CommitteeAttestation.fromAddressAndSignature(sender, normalizeSignature(attestation.signature)),
24
31
  );
25
32
  }
26
33
  }
@@ -1,5 +1,6 @@
1
1
  import { CheckpointProposalHash, type SlotNumber } from '@aztec/foundation/branded-types';
2
2
  import { type BaseBuffer32, Buffer32 } from '@aztec/foundation/buffer';
3
+ import { normalizeSignature } from '@aztec/foundation/crypto/secp256k1-signer';
3
4
  import type { Fr } from '@aztec/foundation/curves/bn254';
4
5
  import type { EthAddress } from '@aztec/foundation/eth-address';
5
6
  import { Signature } from '@aztec/foundation/eth-signature';
@@ -97,6 +98,17 @@ export class CheckpointAttestation extends Gossipable {
97
98
  return this.cachedProposer ?? undefined;
98
99
  }
99
100
 
101
+ /**
102
+ * Returns a copy with the attester signature canonicalized to v ∈ {27, 28}. Callers store attestations
103
+ * received from gossip verbatim; normalizing on ingress keeps a signature emitted in yParity form
104
+ * (v = 0/1) — whether by a malicious committee member or a peer mutating the byte in flight — from
105
+ * reaching the L1 bundle in a non-canonical form. Must only be called once the signature has recovered
106
+ * a sender (so it is non-empty and low-s); `normalizeSignature` throws on an all-zero signature.
107
+ */
108
+ withNormalizedSignature(): CheckpointAttestation {
109
+ return new CheckpointAttestation(this.payload, normalizeSignature(this.signature), this.proposerSignature);
110
+ }
111
+
100
112
  getPayload(): Buffer {
101
113
  return this.payload.getPayloadToSign();
102
114
  }
package/src/p2p/index.ts CHANGED
@@ -4,7 +4,6 @@ export * from './checkpoint_attestation.js';
4
4
  export * from './checkpoint_proposal.js';
5
5
  export * from './consensus_payload.js';
6
6
  export * from './gossipable.js';
7
- export * from './interface.js';
8
7
  export * from './signature_utils.js';
9
8
  export * from './signed_txs.js';
10
9
  export * from './topic_type.js';
@@ -112,6 +112,15 @@ export function getHashedSignaturePayloadTypedData(signable: Signable): Buffer32
112
112
  return Buffer32.fromString(hashTypedData(getCoordinationSignatureTypedData(signable)));
113
113
  }
114
114
 
115
+ /**
116
+ * Recovers the sender of a gossiped coordination message. Deliberately lenient (allowYParityAsV): a
117
+ * signature whose recovery byte is in yParity form (v ∈ {0, 1}) still resolves to its sender, so the P2P
118
+ * layer can attribute and accept it and then canonicalize on ingress (CheckpointAttestation.
119
+ * withNormalizedSignature, A-1351) before it reaches the L1 bundle. This is intentionally looser than
120
+ * on-chain checkpoint validation (getAttestationInfoFromPayload), which recovers strictly to mirror L1's
121
+ * ECDSA.recover — do not unify the two. These proposal/attestation signatures are P2P-only and never reach
122
+ * L1 verbatim, so leniency here cannot leak a non-canonical byte onto L1.
123
+ */
115
124
  export function recoverCoordinationSigner(signable: Signable, signature: Signature): EthAddress | undefined {
116
125
  const digest = getHashedSignaturePayloadTypedData(signable);
117
126
  return tryRecoverAddress(digest, signature, { allowYParityAsV: true });
@@ -1,6 +1,6 @@
1
- import { AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED } from '@aztec/constants';
1
+ import { AVM_V2_PROOF_LENGTH_IN_FIELDS } from '@aztec/constants';
2
2
 
3
3
  import { AvmCircuitPublicInputs } from '../avm/avm_circuit_public_inputs.js';
4
4
  import type { ProofDataForFixedVk } from '../proofs/proof_data.js';
5
5
 
6
- export type AvmProofData = ProofDataForFixedVk<AvmCircuitPublicInputs, typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>;
6
+ export type AvmProofData = ProofDataForFixedVk<AvmCircuitPublicInputs, typeof AVM_V2_PROOF_LENGTH_IN_FIELDS>;
@@ -52,6 +52,8 @@ export class CheckpointHeader {
52
52
  public gasFees: GasFees,
53
53
  /** Total mana used in the block, computed by the root rollup circuit */
54
54
  public totalManaUsed: Fr,
55
+ /** Total fees accrued across the checkpoint. */
56
+ public accumulatedFees: Fr,
55
57
  ) {}
56
58
 
57
59
  static get schema(): ZodFor<CheckpointHeader> {
@@ -68,6 +70,7 @@ export class CheckpointHeader {
68
70
  feeRecipient: schemas.AztecAddress,
69
71
  gasFees: GasFees.schema,
70
72
  totalManaUsed: schemas.Fr,
73
+ accumulatedFees: schemas.Fr,
71
74
  })
72
75
  .transform(CheckpointHeader.from);
73
76
  }
@@ -85,6 +88,7 @@ export class CheckpointHeader {
85
88
  fields.feeRecipient,
86
89
  fields.gasFees,
87
90
  fields.totalManaUsed,
91
+ fields.accumulatedFees,
88
92
  ] as const;
89
93
  }
90
94
 
@@ -107,6 +111,7 @@ export class CheckpointHeader {
107
111
  reader.readObject(AztecAddress),
108
112
  reader.readObject(GasFees),
109
113
  reader.readObject(Fr),
114
+ reader.readObject(Fr),
110
115
  );
111
116
  }
112
117
 
@@ -122,7 +127,8 @@ export class CheckpointHeader {
122
127
  this.coinbase.equals(other.coinbase) &&
123
128
  this.feeRecipient.equals(other.feeRecipient) &&
124
129
  this.gasFees.equals(other.gasFees) &&
125
- this.totalManaUsed.equals(other.totalManaUsed)
130
+ this.totalManaUsed.equals(other.totalManaUsed) &&
131
+ this.accumulatedFees.equals(other.accumulatedFees)
126
132
  );
127
133
  }
128
134
 
@@ -151,6 +157,7 @@ export class CheckpointHeader {
151
157
  this.feeRecipient,
152
158
  this.gasFees,
153
159
  this.totalManaUsed,
160
+ this.accumulatedFees,
154
161
  ]);
155
162
  }
156
163
 
@@ -171,6 +178,7 @@ export class CheckpointHeader {
171
178
  feeRecipient: AztecAddress.ZERO,
172
179
  gasFees: GasFees.empty(),
173
180
  totalManaUsed: Fr.ZERO,
181
+ accumulatedFees: Fr.ZERO,
174
182
  ...fields,
175
183
  });
176
184
  }
@@ -188,6 +196,7 @@ export class CheckpointHeader {
188
196
  feeRecipient: new AztecAddress(Fr.random()),
189
197
  gasFees: GasFees.random(),
190
198
  totalManaUsed: new Fr(BigInt(Math.floor(Math.random() * 1000000))),
199
+ accumulatedFees: new Fr(BigInt(Math.floor(Math.random() * 1000000))),
191
200
  ...overrides,
192
201
  });
193
202
  }
@@ -204,7 +213,8 @@ export class CheckpointHeader {
204
213
  this.coinbase.isZero() &&
205
214
  this.feeRecipient.isZero() &&
206
215
  this.gasFees.isEmpty() &&
207
- this.totalManaUsed.isZero()
216
+ this.totalManaUsed.isZero() &&
217
+ this.accumulatedFees.isZero()
208
218
  );
209
219
  }
210
220
 
@@ -233,6 +243,7 @@ export class CheckpointHeader {
233
243
  new AztecAddress(hexToBuffer(header.feeRecipient)),
234
244
  new GasFees(header.gasFees.feePerDaGas, header.gasFees.feePerL2Gas),
235
245
  new Fr(header.totalManaUsed),
246
+ new Fr(header.accumulatedFees),
236
247
  );
237
248
  }
238
249
 
@@ -260,6 +271,7 @@ export class CheckpointHeader {
260
271
  feePerL2Gas: this.gasFees.feePerL2Gas,
261
272
  },
262
273
  totalManaUsed: this.totalManaUsed.toBigInt(),
274
+ accumulatedFees: this.accumulatedFees.toBigInt(),
263
275
  };
264
276
  }
265
277
 
@@ -276,6 +288,7 @@ export class CheckpointHeader {
276
288
  feeRecipient: this.feeRecipient.toString(),
277
289
  gasFees: this.gasFees.toInspect(),
278
290
  totalManaUsed: this.totalManaUsed.toBigInt(),
291
+ accumulatedFees: this.accumulatedFees.toBigInt(),
279
292
  };
280
293
  }
281
294
 
@@ -292,6 +305,7 @@ export class CheckpointHeader {
292
305
  feeRecipient: ${this.feeRecipient.toString()},
293
306
  gasFees: { da:${this.gasFees.feePerDaGas}, l2:${this.gasFees.feePerL2Gas} },
294
307
  totalManaUsed: ${this.totalManaUsed.toBigInt()},
308
+ accumulatedFees: ${this.accumulatedFees.toBigInt()},
295
309
  }`;
296
310
  }
297
311
  }
@@ -86,12 +86,16 @@ export type ClientCircuitName =
86
86
  | 'private-kernel-init'
87
87
  | 'private-kernel-init-2'
88
88
  | 'private-kernel-init-3'
89
+ | 'private-kernel-init-4'
90
+ | 'private-kernel-init-5'
89
91
  | 'private-kernel-inner'
90
92
  | 'private-kernel-inner-2'
91
93
  | 'private-kernel-inner-3'
94
+ | 'private-kernel-inner-4'
95
+ | 'private-kernel-inner-5'
92
96
  | 'private-kernel-reset'
93
- | 'private-kernel-tail'
94
- | 'private-kernel-tail-to-public'
97
+ | 'private-kernel-reset-tail'
98
+ | 'private-kernel-reset-tail-to-public'
95
99
  | 'hiding-kernel-to-rollup'
96
100
  | 'hiding-kernel-to-public'
97
101
  | 'app-circuit';