@aztec/stdlib 0.86.0-starknet.1 → 0.87.0

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 (517) hide show
  1. package/dest/abi/abi.d.ts +3 -5
  2. package/dest/abi/abi.d.ts.map +1 -1
  3. package/dest/abi/buffer.d.ts +0 -2
  4. package/dest/abi/buffer.d.ts.map +1 -1
  5. package/dest/abi/contract_artifact.d.ts +0 -2
  6. package/dest/abi/contract_artifact.d.ts.map +1 -1
  7. package/dest/abi/contract_artifact.js +3 -16
  8. package/dest/abi/decoder.d.ts.map +1 -1
  9. package/dest/abi/decoder.js +1 -1
  10. package/dest/abi/encoder.d.ts.map +1 -1
  11. package/dest/abi/encoder.js +1 -1
  12. package/dest/abi/event_selector.d.ts +0 -2
  13. package/dest/abi/event_selector.d.ts.map +1 -1
  14. package/dest/abi/function_selector.d.ts +0 -2
  15. package/dest/abi/function_selector.d.ts.map +1 -1
  16. package/dest/abi/note_selector.d.ts +0 -2
  17. package/dest/abi/note_selector.d.ts.map +1 -1
  18. package/dest/abi/selector.d.ts +0 -3
  19. package/dest/abi/selector.d.ts.map +1 -1
  20. package/dest/abi/utils.d.ts +0 -2
  21. package/dest/abi/utils.d.ts.map +1 -1
  22. package/dest/auth_witness/auth_witness.d.ts +1 -3
  23. package/dest/auth_witness/auth_witness.d.ts.map +1 -1
  24. package/dest/avm/avm.d.ts +39 -40
  25. package/dest/avm/avm.d.ts.map +1 -1
  26. package/dest/avm/avm.js +5 -5
  27. package/dest/avm/avm_accumulated_data.d.ts +4 -4
  28. package/dest/avm/avm_accumulated_data.d.ts.map +1 -1
  29. package/dest/avm/avm_accumulated_data.js +18 -2
  30. package/dest/avm/avm_circuit_public_inputs.d.ts +2 -4
  31. package/dest/avm/avm_circuit_public_inputs.d.ts.map +1 -1
  32. package/dest/avm/avm_circuit_public_inputs.js +26 -1
  33. package/dest/avm/avm_proving_request.d.ts +15 -17
  34. package/dest/avm/avm_proving_request.d.ts.map +1 -1
  35. package/dest/avm/contract_storage_read.d.ts +1 -3
  36. package/dest/avm/contract_storage_read.d.ts.map +1 -1
  37. package/dest/avm/contract_storage_update_request.d.ts +1 -3
  38. package/dest/avm/contract_storage_update_request.d.ts.map +1 -1
  39. package/dest/avm/message_pack.d.ts +0 -2
  40. package/dest/avm/message_pack.d.ts.map +1 -1
  41. package/dest/avm/message_pack.js +7 -1
  42. package/dest/avm/public_call_stack_item_compressed.d.ts +1 -3
  43. package/dest/avm/public_call_stack_item_compressed.d.ts.map +1 -1
  44. package/dest/avm/public_data_hint.d.ts +1 -3
  45. package/dest/avm/public_data_hint.d.ts.map +1 -1
  46. package/dest/avm/public_data_read.d.ts +1 -3
  47. package/dest/avm/public_data_read.d.ts.map +1 -1
  48. package/dest/avm/public_data_update_request.d.ts +1 -4
  49. package/dest/avm/public_data_update_request.d.ts.map +1 -1
  50. package/dest/avm/public_data_write.d.ts +4 -3
  51. package/dest/avm/public_data_write.d.ts.map +1 -1
  52. package/dest/avm/public_data_write.js +19 -1
  53. package/dest/avm/public_inner_call_request.d.ts +1 -4
  54. package/dest/avm/public_inner_call_request.d.ts.map +1 -1
  55. package/dest/avm/public_inner_call_request.js +1 -1
  56. package/dest/avm/revert_code.d.ts +0 -3
  57. package/dest/avm/revert_code.d.ts.map +1 -1
  58. package/dest/aztec-address/index.d.ts +1 -4
  59. package/dest/aztec-address/index.d.ts.map +1 -1
  60. package/dest/block/block_hash.d.ts +1 -3
  61. package/dest/block/block_hash.d.ts.map +1 -1
  62. package/dest/block/body.d.ts +1 -4
  63. package/dest/block/body.d.ts.map +1 -1
  64. package/dest/block/body.js +5 -11
  65. package/dest/block/l2_block.d.ts +1 -3
  66. package/dest/block/l2_block.d.ts.map +1 -1
  67. package/dest/block/l2_block.js +1 -1
  68. package/dest/block/l2_block_code_to_purge.d.ts +0 -2
  69. package/dest/block/l2_block_code_to_purge.d.ts.map +1 -1
  70. package/dest/block/l2_block_source.d.ts +0 -1
  71. package/dest/block/l2_block_source.d.ts.map +1 -1
  72. package/dest/config/{config.d.ts → chain-config.d.ts} +1 -1
  73. package/dest/config/chain-config.d.ts.map +1 -0
  74. package/dest/config/index.d.ts +2 -1
  75. package/dest/config/index.d.ts.map +1 -1
  76. package/dest/config/index.js +2 -1
  77. package/dest/config/node-rpc-config.d.ts +7 -0
  78. package/dest/config/node-rpc-config.d.ts.map +1 -0
  79. package/dest/config/node-rpc-config.js +8 -0
  80. package/dest/contract/artifact_hash.d.ts +1 -3
  81. package/dest/contract/artifact_hash.d.ts.map +1 -1
  82. package/dest/contract/artifact_hash.js +3 -2
  83. package/dest/contract/complete_address.d.ts +0 -2
  84. package/dest/contract/complete_address.d.ts.map +1 -1
  85. package/dest/contract/contract_class_id.d.ts +0 -2
  86. package/dest/contract/contract_class_id.d.ts.map +1 -1
  87. package/dest/contract/contract_instance.d.ts +1 -3
  88. package/dest/contract/contract_instance.d.ts.map +1 -1
  89. package/dest/contract/contract_instance_update.d.ts +1 -3
  90. package/dest/contract/contract_instance_update.d.ts.map +1 -1
  91. package/dest/contract/interfaces/contract_class.d.ts +17 -19
  92. package/dest/contract/interfaces/contract_class.d.ts.map +1 -1
  93. package/dest/contract/interfaces/contract_instance.d.ts +2 -2
  94. package/dest/contract/interfaces/contract_instance.d.ts.map +1 -1
  95. package/dest/contract/private_function.d.ts +0 -2
  96. package/dest/contract/private_function.d.ts.map +1 -1
  97. package/dest/database-version/version_manager.d.ts +0 -4
  98. package/dest/database-version/version_manager.d.ts.map +1 -1
  99. package/dest/errors/proving_error.d.ts.map +1 -1
  100. package/dest/errors/simulation_error.d.ts.map +1 -1
  101. package/dest/file-store/factory.js +1 -1
  102. package/dest/file-store/gcs.d.ts +0 -2
  103. package/dest/file-store/gcs.d.ts.map +1 -1
  104. package/dest/file-store/http.d.ts +1 -2
  105. package/dest/file-store/http.d.ts.map +1 -1
  106. package/dest/file-store/http.js +32 -16
  107. package/dest/file-store/interface.d.ts +0 -2
  108. package/dest/file-store/interface.d.ts.map +1 -1
  109. package/dest/file-store/local.d.ts +0 -2
  110. package/dest/file-store/local.d.ts.map +1 -1
  111. package/dest/gas/gas.d.ts +1 -4
  112. package/dest/gas/gas.d.ts.map +1 -1
  113. package/dest/gas/gas_fees.d.ts +1 -4
  114. package/dest/gas/gas_fees.d.ts.map +1 -1
  115. package/dest/gas/gas_settings.d.ts +1 -3
  116. package/dest/gas/gas_settings.d.ts.map +1 -1
  117. package/dest/interfaces/aztec-node-admin.d.ts +10 -0
  118. package/dest/interfaces/aztec-node-admin.d.ts.map +1 -1
  119. package/dest/interfaces/aztec-node-admin.js +4 -1
  120. package/dest/interfaces/aztec-node.d.ts +1 -2
  121. package/dest/interfaces/aztec-node.d.ts.map +1 -1
  122. package/dest/interfaces/aztec-node.js +7 -2
  123. package/dest/interfaces/configs.d.ts +5 -0
  124. package/dest/interfaces/configs.d.ts.map +1 -1
  125. package/dest/interfaces/configs.js +1 -0
  126. package/dest/interfaces/merkle_tree_operations.d.ts +0 -2
  127. package/dest/interfaces/merkle_tree_operations.d.ts.map +1 -1
  128. package/dest/interfaces/p2p.d.ts +2 -0
  129. package/dest/interfaces/p2p.d.ts.map +1 -1
  130. package/dest/interfaces/p2p.js +1 -0
  131. package/dest/interfaces/private_kernel_prover.d.ts +0 -2
  132. package/dest/interfaces/private_kernel_prover.d.ts.map +1 -1
  133. package/dest/interfaces/prover-client.d.ts.map +1 -1
  134. package/dest/interfaces/proving-job.d.ts +15 -17
  135. package/dest/interfaces/proving-job.d.ts.map +1 -1
  136. package/dest/interfaces/pxe.d.ts +2 -3
  137. package/dest/interfaces/pxe.d.ts.map +1 -1
  138. package/dest/interfaces/pxe.js +2 -2
  139. package/dest/interfaces/service.d.ts +2 -3
  140. package/dest/interfaces/service.d.ts.map +1 -1
  141. package/dest/interfaces/world_state.d.ts +4 -1
  142. package/dest/interfaces/world_state.d.ts.map +1 -1
  143. package/dest/kernel/combined_constant_data.d.ts +1 -3
  144. package/dest/kernel/combined_constant_data.d.ts.map +1 -1
  145. package/dest/kernel/hints/key_validation_hint.d.ts +1 -3
  146. package/dest/kernel/hints/key_validation_hint.d.ts.map +1 -1
  147. package/dest/kernel/hints/key_validation_request.d.ts +1 -3
  148. package/dest/kernel/hints/key_validation_request.d.ts.map +1 -1
  149. package/dest/kernel/hints/key_validation_request_and_generator.d.ts +1 -3
  150. package/dest/kernel/hints/key_validation_request_and_generator.d.ts.map +1 -1
  151. package/dest/kernel/hints/note_hash_read_request_hints.d.ts +0 -2
  152. package/dest/kernel/hints/note_hash_read_request_hints.d.ts.map +1 -1
  153. package/dest/kernel/hints/nullifier_read_request_hints.d.ts +0 -2
  154. package/dest/kernel/hints/nullifier_read_request_hints.d.ts.map +1 -1
  155. package/dest/kernel/hints/private_kernel_reset_hints.d.ts +1 -3
  156. package/dest/kernel/hints/private_kernel_reset_hints.d.ts.map +1 -1
  157. package/dest/kernel/hints/read_request.d.ts +0 -2
  158. package/dest/kernel/hints/read_request.d.ts.map +1 -1
  159. package/dest/kernel/hints/read_request_hints.d.ts +4 -6
  160. package/dest/kernel/hints/read_request_hints.d.ts.map +1 -1
  161. package/dest/kernel/hints/rollup_validation_requests.d.ts +1 -3
  162. package/dest/kernel/hints/rollup_validation_requests.d.ts.map +1 -1
  163. package/dest/kernel/hints/scoped_key_validation_request_and_generator.d.ts +1 -3
  164. package/dest/kernel/hints/scoped_key_validation_request_and_generator.d.ts.map +1 -1
  165. package/dest/kernel/hints/transient_data_index_hint.d.ts +0 -3
  166. package/dest/kernel/hints/transient_data_index_hint.d.ts.map +1 -1
  167. package/dest/kernel/hints/tree_leaf_read_request.d.ts +0 -2
  168. package/dest/kernel/hints/tree_leaf_read_request.d.ts.map +1 -1
  169. package/dest/kernel/log_hash.d.ts +27 -9
  170. package/dest/kernel/log_hash.d.ts.map +1 -1
  171. package/dest/kernel/log_hash.js +72 -13
  172. package/dest/kernel/note_hash.d.ts +0 -2
  173. package/dest/kernel/note_hash.d.ts.map +1 -1
  174. package/dest/kernel/nullifier.d.ts +0 -2
  175. package/dest/kernel/nullifier.d.ts.map +1 -1
  176. package/dest/kernel/private_accumulated_data.d.ts +4 -6
  177. package/dest/kernel/private_accumulated_data.d.ts.map +1 -1
  178. package/dest/kernel/private_accumulated_data.js +3 -3
  179. package/dest/kernel/private_call_data.d.ts +0 -2
  180. package/dest/kernel/private_call_data.d.ts.map +1 -1
  181. package/dest/kernel/private_call_request.d.ts +1 -3
  182. package/dest/kernel/private_call_request.d.ts.map +1 -1
  183. package/dest/kernel/private_call_request.js +1 -1
  184. package/dest/kernel/private_circuit_public_inputs.d.ts +5 -7
  185. package/dest/kernel/private_circuit_public_inputs.d.ts.map +1 -1
  186. package/dest/kernel/private_circuit_public_inputs.js +4 -4
  187. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts +2 -4
  188. package/dest/kernel/private_kernel_circuit_public_inputs.d.ts.map +1 -1
  189. package/dest/kernel/private_kernel_data.d.ts +1 -3
  190. package/dest/kernel/private_kernel_data.d.ts.map +1 -1
  191. package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts +1 -3
  192. package/dest/kernel/private_kernel_init_circuit_private_inputs.d.ts.map +1 -1
  193. package/dest/kernel/private_kernel_inner_circuit_private_inputs.d.ts +1 -3
  194. package/dest/kernel/private_kernel_inner_circuit_private_inputs.d.ts.map +1 -1
  195. package/dest/kernel/private_kernel_prover_output.d.ts +5 -7
  196. package/dest/kernel/private_kernel_prover_output.d.ts.map +1 -1
  197. package/dest/kernel/private_kernel_reset_circuit_private_inputs.d.ts +2 -4
  198. package/dest/kernel/private_kernel_reset_circuit_private_inputs.d.ts.map +1 -1
  199. package/dest/kernel/private_kernel_reset_dimensions.d.ts +1 -3
  200. package/dest/kernel/private_kernel_reset_dimensions.d.ts.map +1 -1
  201. package/dest/kernel/private_kernel_simulated_output.d.ts +0 -2
  202. package/dest/kernel/private_kernel_simulated_output.d.ts.map +1 -1
  203. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts +1 -3
  204. package/dest/kernel/private_kernel_tail_circuit_private_inputs.d.ts.map +1 -1
  205. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts +8 -8
  206. package/dest/kernel/private_kernel_tail_circuit_public_inputs.d.ts.map +1 -1
  207. package/dest/kernel/private_kernel_tail_circuit_public_inputs.js +4 -2
  208. package/dest/kernel/private_log_data.d.ts +1 -4
  209. package/dest/kernel/private_log_data.d.ts.map +1 -1
  210. package/dest/kernel/private_log_data.js +4 -2
  211. package/dest/kernel/private_to_avm_accumulated_data.d.ts +3 -5
  212. package/dest/kernel/private_to_avm_accumulated_data.d.ts.map +1 -1
  213. package/dest/kernel/private_to_avm_accumulated_data.js +7 -0
  214. package/dest/kernel/private_to_public_accumulated_data.d.ts +1 -4
  215. package/dest/kernel/private_to_public_accumulated_data.d.ts.map +1 -1
  216. package/dest/kernel/private_to_public_kernel_circuit_public_inputs.d.ts +1 -3
  217. package/dest/kernel/private_to_public_kernel_circuit_public_inputs.d.ts.map +1 -1
  218. package/dest/kernel/private_to_rollup_accumulated_data.d.ts +2 -5
  219. package/dest/kernel/private_to_rollup_accumulated_data.d.ts.map +1 -1
  220. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts +2 -4
  221. package/dest/kernel/private_to_rollup_kernel_circuit_public_inputs.d.ts.map +1 -1
  222. package/dest/kernel/private_validation_requests.d.ts +1 -4
  223. package/dest/kernel/private_validation_requests.d.ts.map +1 -1
  224. package/dest/kernel/private_validation_requests.js +1 -1
  225. package/dest/kernel/public_call_request.d.ts +2 -5
  226. package/dest/kernel/public_call_request.d.ts.map +1 -1
  227. package/dest/kernel/utils/optional_number.d.ts +1 -3
  228. package/dest/kernel/utils/optional_number.d.ts.map +1 -1
  229. package/dest/keys/public_keys.d.ts +0 -2
  230. package/dest/keys/public_keys.d.ts.map +1 -1
  231. package/dest/keys/public_keys.js +0 -1
  232. package/dest/logs/contract_class_log.d.ts +53 -12
  233. package/dest/logs/contract_class_log.d.ts.map +1 -1
  234. package/dest/logs/contract_class_log.js +129 -66
  235. package/dest/logs/extended_contract_class_log.d.ts +0 -2
  236. package/dest/logs/extended_contract_class_log.d.ts.map +1 -1
  237. package/dest/logs/extended_public_log.d.ts +0 -2
  238. package/dest/logs/extended_public_log.d.ts.map +1 -1
  239. package/dest/logs/indexed_tagging_secret.d.ts.map +1 -1
  240. package/dest/logs/log_id.d.ts +0 -2
  241. package/dest/logs/log_id.d.ts.map +1 -1
  242. package/dest/logs/log_with_tx_data.d.ts.map +1 -1
  243. package/dest/logs/log_with_tx_data.js +8 -3
  244. package/dest/logs/private_log.d.ts +13 -7
  245. package/dest/logs/private_log.d.ts.map +1 -1
  246. package/dest/logs/private_log.js +44 -30
  247. package/dest/logs/public_log.d.ts +9 -9
  248. package/dest/logs/public_log.d.ts.map +1 -1
  249. package/dest/logs/public_log.js +45 -32
  250. package/dest/logs/tx_scoped_l2_log.d.ts +8 -6
  251. package/dest/logs/tx_scoped_l2_log.d.ts.map +1 -1
  252. package/dest/logs/tx_scoped_l2_log.js +1 -2
  253. package/dest/messaging/inbox_leaf.d.ts +5 -2
  254. package/dest/messaging/inbox_leaf.d.ts.map +1 -1
  255. package/dest/messaging/inbox_leaf.js +11 -0
  256. package/dest/messaging/l1_actor.d.ts +0 -2
  257. package/dest/messaging/l1_actor.d.ts.map +1 -1
  258. package/dest/messaging/l1_to_l2_message.d.ts +0 -2
  259. package/dest/messaging/l1_to_l2_message.d.ts.map +1 -1
  260. package/dest/messaging/l2_actor.d.ts +0 -2
  261. package/dest/messaging/l2_actor.d.ts.map +1 -1
  262. package/dest/messaging/l2_to_l1_message.d.ts +0 -2
  263. package/dest/messaging/l2_to_l1_message.d.ts.map +1 -1
  264. package/dest/note/extended_note.d.ts +3 -5
  265. package/dest/note/extended_note.d.ts.map +1 -1
  266. package/dest/note/note.d.ts +5 -13
  267. package/dest/note/note.d.ts.map +1 -1
  268. package/dest/p2p/block_attestation.d.ts +1 -3
  269. package/dest/p2p/block_attestation.d.ts.map +1 -1
  270. package/dest/p2p/block_attestation.js +1 -1
  271. package/dest/p2p/block_proposal.d.ts +12 -6
  272. package/dest/p2p/block_proposal.d.ts.map +1 -1
  273. package/dest/p2p/block_proposal.js +25 -9
  274. package/dest/p2p/consensus_payload.d.ts +2 -3
  275. package/dest/p2p/consensus_payload.d.ts.map +1 -1
  276. package/dest/p2p/consensus_payload.js +3 -0
  277. package/dest/p2p/gossipable.d.ts +14 -4
  278. package/dest/p2p/gossipable.d.ts.map +1 -1
  279. package/dest/p2p/gossipable.js +43 -0
  280. package/dest/p2p/signature_utils.d.ts +0 -2
  281. package/dest/p2p/signature_utils.d.ts.map +1 -1
  282. package/dest/p2p/topic_type.d.ts.map +1 -1
  283. package/dest/p2p/topic_type.js +5 -0
  284. package/dest/parity/base_parity_inputs.d.ts +2 -4
  285. package/dest/parity/base_parity_inputs.d.ts.map +1 -1
  286. package/dest/parity/parity_public_inputs.d.ts +2 -4
  287. package/dest/parity/parity_public_inputs.d.ts.map +1 -1
  288. package/dest/parity/root_parity_input.d.ts +4 -6
  289. package/dest/parity/root_parity_input.d.ts.map +1 -1
  290. package/dest/parity/root_parity_inputs.d.ts +2 -4
  291. package/dest/parity/root_parity_inputs.d.ts.map +1 -1
  292. package/dest/proofs/client_ivc_proof.d.ts +2 -4
  293. package/dest/proofs/client_ivc_proof.d.ts.map +1 -1
  294. package/dest/proofs/proof.d.ts +1 -3
  295. package/dest/proofs/proof.d.ts.map +1 -1
  296. package/dest/proofs/recursive_proof.d.ts +4 -6
  297. package/dest/proofs/recursive_proof.d.ts.map +1 -1
  298. package/dest/rollup/avm_proof_data.d.ts +1 -3
  299. package/dest/rollup/avm_proof_data.d.ts.map +1 -1
  300. package/dest/rollup/base_or_merge_rollup_public_inputs.d.ts +2 -4
  301. package/dest/rollup/base_or_merge_rollup_public_inputs.d.ts.map +1 -1
  302. package/dest/rollup/base_rollup_hints.d.ts +9 -11
  303. package/dest/rollup/base_rollup_hints.d.ts.map +1 -1
  304. package/dest/rollup/base_rollup_hints.js +5 -5
  305. package/dest/rollup/block_merge_rollup.d.ts +2 -4
  306. package/dest/rollup/block_merge_rollup.d.ts.map +1 -1
  307. package/dest/rollup/block_root_or_block_merge_public_inputs.d.ts +3 -5
  308. package/dest/rollup/block_root_or_block_merge_public_inputs.d.ts.map +1 -1
  309. package/dest/rollup/block_root_rollup.d.ts +8 -10
  310. package/dest/rollup/block_root_rollup.d.ts.map +1 -1
  311. package/dest/rollup/constant_rollup_data.d.ts +1 -3
  312. package/dest/rollup/constant_rollup_data.d.ts.map +1 -1
  313. package/dest/rollup/empty_block_root_rollup_inputs.d.ts +2 -4
  314. package/dest/rollup/empty_block_root_rollup_inputs.d.ts.map +1 -1
  315. package/dest/rollup/merge_rollup.d.ts +2 -4
  316. package/dest/rollup/merge_rollup.d.ts.map +1 -1
  317. package/dest/rollup/previous_rollup_block_data.d.ts +0 -2
  318. package/dest/rollup/previous_rollup_block_data.d.ts.map +1 -1
  319. package/dest/rollup/previous_rollup_data.d.ts +0 -2
  320. package/dest/rollup/previous_rollup_data.d.ts.map +1 -1
  321. package/dest/rollup/private_base_rollup_inputs.d.ts +2 -4
  322. package/dest/rollup/private_base_rollup_inputs.d.ts.map +1 -1
  323. package/dest/rollup/private_tube_data.d.ts +1 -3
  324. package/dest/rollup/private_tube_data.d.ts.map +1 -1
  325. package/dest/rollup/public_base_rollup_inputs.d.ts +2 -4
  326. package/dest/rollup/public_base_rollup_inputs.d.ts.map +1 -1
  327. package/dest/rollup/public_tube_data.d.ts +1 -3
  328. package/dest/rollup/public_tube_data.d.ts.map +1 -1
  329. package/dest/rollup/root_rollup.d.ts +4 -6
  330. package/dest/rollup/root_rollup.d.ts.map +1 -1
  331. package/dest/rollup/state_diff_hints.d.ts +0 -2
  332. package/dest/rollup/state_diff_hints.d.ts.map +1 -1
  333. package/dest/rollup/tube_inputs.d.ts +2 -4
  334. package/dest/rollup/tube_inputs.d.ts.map +1 -1
  335. package/dest/schemas/schemas.d.ts +4 -6
  336. package/dest/schemas/schemas.d.ts.map +1 -1
  337. package/dest/shared_mutable/scheduled_delay_change.d.ts.map +1 -1
  338. package/dest/shared_mutable/scheduled_value_change.d.ts.map +1 -1
  339. package/dest/shared_mutable/shared_mutable_values.d.ts +0 -2
  340. package/dest/shared_mutable/shared_mutable_values.d.ts.map +1 -1
  341. package/dest/tests/factories.d.ts +0 -2
  342. package/dest/tests/factories.d.ts.map +1 -1
  343. package/dest/tests/factories.js +17 -14
  344. package/dest/tests/mocks.d.ts +1 -0
  345. package/dest/tests/mocks.d.ts.map +1 -1
  346. package/dest/tests/mocks.js +1 -1
  347. package/dest/trees/append_only_tree_snapshot.d.ts +1 -4
  348. package/dest/trees/append_only_tree_snapshot.d.ts.map +1 -1
  349. package/dest/trees/nullifier_leaf.d.ts +0 -2
  350. package/dest/trees/nullifier_leaf.d.ts.map +1 -1
  351. package/dest/trees/nullifier_membership_witness.d.ts +4 -6
  352. package/dest/trees/nullifier_membership_witness.d.ts.map +1 -1
  353. package/dest/trees/protocol_contract_leaf.d.ts +0 -2
  354. package/dest/trees/protocol_contract_leaf.d.ts.map +1 -1
  355. package/dest/trees/public_data_leaf.d.ts +1 -3
  356. package/dest/trees/public_data_leaf.d.ts.map +1 -1
  357. package/dest/trees/public_data_witness.d.ts +4 -6
  358. package/dest/trees/public_data_witness.d.ts.map +1 -1
  359. package/dest/tx/block_header.d.ts +1 -4
  360. package/dest/tx/block_header.d.ts.map +1 -1
  361. package/dest/tx/call_context.d.ts +1 -4
  362. package/dest/tx/call_context.d.ts.map +1 -1
  363. package/dest/tx/capsule.d.ts +1 -3
  364. package/dest/tx/capsule.d.ts.map +1 -1
  365. package/dest/tx/content_commitment.d.ts +10 -12
  366. package/dest/tx/content_commitment.d.ts.map +1 -1
  367. package/dest/tx/function_data.d.ts +0 -2
  368. package/dest/tx/function_data.d.ts.map +1 -1
  369. package/dest/tx/global_variables.d.ts +1 -4
  370. package/dest/tx/global_variables.d.ts.map +1 -1
  371. package/dest/tx/hashed_values.d.ts +1 -3
  372. package/dest/tx/hashed_values.d.ts.map +1 -1
  373. package/dest/tx/max_block_number.d.ts +1 -3
  374. package/dest/tx/max_block_number.d.ts.map +1 -1
  375. package/dest/tx/partial_state_reference.d.ts +1 -3
  376. package/dest/tx/partial_state_reference.d.ts.map +1 -1
  377. package/dest/tx/private_execution_result.d.ts +8 -8
  378. package/dest/tx/private_execution_result.d.ts.map +1 -1
  379. package/dest/tx/private_execution_result.js +3 -2
  380. package/dest/tx/profiling.d.ts +8 -0
  381. package/dest/tx/profiling.d.ts.map +1 -1
  382. package/dest/tx/profiling.js +31 -0
  383. package/dest/tx/proposed_block_header.d.ts +1 -4
  384. package/dest/tx/proposed_block_header.d.ts.map +1 -1
  385. package/dest/tx/proposed_block_header.js +2 -1
  386. package/dest/tx/proven_tx.d.ts.map +1 -1
  387. package/dest/tx/public_call_request_with_calldata.d.ts +1 -4
  388. package/dest/tx/public_call_request_with_calldata.d.ts.map +1 -1
  389. package/dest/tx/simulated_tx.d.ts.map +1 -1
  390. package/dest/tx/state_reference.d.ts +1 -4
  391. package/dest/tx/state_reference.d.ts.map +1 -1
  392. package/dest/tx/tree_snapshots.d.ts +1 -4
  393. package/dest/tx/tree_snapshots.d.ts.map +1 -1
  394. package/dest/tx/tx.d.ts +6 -11
  395. package/dest/tx/tx.d.ts.map +1 -1
  396. package/dest/tx/tx.js +18 -15
  397. package/dest/tx/tx_constant_data.d.ts +1 -3
  398. package/dest/tx/tx_constant_data.d.ts.map +1 -1
  399. package/dest/tx/tx_context.d.ts +1 -3
  400. package/dest/tx/tx_context.d.ts.map +1 -1
  401. package/dest/tx/tx_effect.d.ts +1 -4
  402. package/dest/tx/tx_effect.d.ts.map +1 -1
  403. package/dest/tx/tx_effect.js +33 -63
  404. package/dest/tx/tx_execution_request.d.ts +13 -6
  405. package/dest/tx/tx_execution_request.d.ts.map +1 -1
  406. package/dest/tx/tx_execution_request.js +14 -7
  407. package/dest/tx/tx_hash.d.ts +2 -4
  408. package/dest/tx/tx_hash.d.ts.map +1 -1
  409. package/dest/tx/tx_receipt.d.ts.map +1 -1
  410. package/dest/tx/tx_receipt.js +1 -1
  411. package/dest/tx/tx_request.d.ts +7 -5
  412. package/dest/tx/tx_request.d.ts.map +1 -1
  413. package/dest/tx/tx_request.js +8 -5
  414. package/dest/tx/validator/error_texts.d.ts +1 -1
  415. package/dest/tx/validator/error_texts.d.ts.map +1 -1
  416. package/dest/tx/validator/error_texts.js +1 -1
  417. package/dest/types/shared.d.ts +1 -3
  418. package/dest/types/shared.d.ts.map +1 -1
  419. package/dest/update-checker/index.d.ts +2 -0
  420. package/dest/update-checker/index.d.ts.map +1 -0
  421. package/dest/update-checker/index.js +1 -0
  422. package/dest/update-checker/update-checker.d.ts +48 -0
  423. package/dest/update-checker/update-checker.d.ts.map +1 -0
  424. package/dest/update-checker/update-checker.js +121 -0
  425. package/dest/versioning/versioning.d.ts +1 -1
  426. package/dest/versioning/versioning.d.ts.map +1 -1
  427. package/dest/vks/verification_key.d.ts +7 -9
  428. package/dest/vks/verification_key.d.ts.map +1 -1
  429. package/dest/vks/vk_witness_data.d.ts +1 -3
  430. package/dest/vks/vk_witness_data.d.ts.map +1 -1
  431. package/package.json +16 -13
  432. package/src/abi/abi.ts +2 -2
  433. package/src/abi/contract_artifact.ts +3 -17
  434. package/src/abi/decoder.ts +10 -3
  435. package/src/abi/encoder.ts +5 -2
  436. package/src/avm/avm.ts +13 -7
  437. package/src/avm/avm_accumulated_data.ts +30 -2
  438. package/src/avm/avm_circuit_public_inputs.ts +26 -0
  439. package/src/avm/message_pack.ts +7 -1
  440. package/src/avm/public_data_write.ts +21 -1
  441. package/src/avm/public_inner_call_request.ts +1 -1
  442. package/src/avm/revert_code.ts +5 -5
  443. package/src/block/body.ts +5 -11
  444. package/src/block/l2_block.ts +1 -1
  445. package/src/config/index.ts +2 -1
  446. package/src/config/node-rpc-config.ts +14 -0
  447. package/src/contract/artifact_hash.ts +5 -3
  448. package/src/contract/private_function.ts +4 -2
  449. package/src/errors/proving_error.ts +5 -1
  450. package/src/file-store/factory.ts +1 -1
  451. package/src/file-store/http.ts +27 -18
  452. package/src/gas/gas.ts +4 -1
  453. package/src/interfaces/aztec-node-admin.ts +16 -0
  454. package/src/interfaces/aztec-node.ts +4 -2
  455. package/src/interfaces/configs.ts +3 -0
  456. package/src/interfaces/p2p.ts +4 -0
  457. package/src/interfaces/prover-client.ts +4 -1
  458. package/src/interfaces/pxe.ts +3 -4
  459. package/src/interfaces/service.ts +2 -3
  460. package/src/interfaces/world_state.ts +6 -1
  461. package/src/kernel/hints/note_hash_read_request_hints.ts +4 -1
  462. package/src/kernel/hints/nullifier_read_request_hints.ts +4 -1
  463. package/src/kernel/hints/read_request.ts +4 -1
  464. package/src/kernel/hints/read_request_hints.ts +12 -3
  465. package/src/kernel/hints/transient_data_index_hint.ts +4 -1
  466. package/src/kernel/hints/tree_leaf_read_request.ts +4 -1
  467. package/src/kernel/log_hash.ts +86 -14
  468. package/src/kernel/note_hash.ts +8 -2
  469. package/src/kernel/nullifier.ts +9 -2
  470. package/src/kernel/private_accumulated_data.ts +4 -4
  471. package/src/kernel/private_call_request.ts +1 -1
  472. package/src/kernel/private_circuit_public_inputs.ts +5 -5
  473. package/src/kernel/private_kernel_tail_circuit_public_inputs.ts +13 -2
  474. package/src/kernel/private_log_data.ts +13 -4
  475. package/src/kernel/private_to_avm_accumulated_data.ts +9 -1
  476. package/src/kernel/private_validation_requests.ts +1 -1
  477. package/src/kernel/public_call_request.ts +4 -1
  478. package/src/keys/public_keys.ts +1 -1
  479. package/src/logs/contract_class_log.ts +156 -57
  480. package/src/logs/indexed_tagging_secret.ts +4 -1
  481. package/src/logs/log_with_tx_data.ts +7 -2
  482. package/src/logs/private_log.ts +52 -30
  483. package/src/logs/public_log.ts +62 -38
  484. package/src/logs/tx_scoped_l2_log.ts +1 -2
  485. package/src/messaging/inbox_leaf.ts +10 -0
  486. package/src/messaging/l2_to_l1_message.ts +9 -2
  487. package/src/p2p/block_attestation.ts +1 -1
  488. package/src/p2p/block_proposal.ts +36 -5
  489. package/src/p2p/consensus_payload.ts +4 -0
  490. package/src/p2p/gossipable.ts +44 -2
  491. package/src/p2p/topic_type.ts +2 -0
  492. package/src/rollup/base_rollup_hints.ts +7 -7
  493. package/src/rollup/block_root_or_block_merge_public_inputs.ts +4 -1
  494. package/src/rollup/private_base_rollup_inputs.ts +4 -1
  495. package/src/rollup/tube_inputs.ts +4 -1
  496. package/src/shared_mutable/scheduled_delay_change.ts +5 -1
  497. package/src/shared_mutable/scheduled_value_change.ts +5 -1
  498. package/src/shared_mutable/shared_mutable_values.ts +4 -1
  499. package/src/tests/factories.ts +31 -18
  500. package/src/tests/mocks.ts +2 -1
  501. package/src/tx/content_commitment.ts +6 -1
  502. package/src/tx/private_execution_result.ts +9 -5
  503. package/src/tx/profiling.ts +39 -1
  504. package/src/tx/proposed_block_header.ts +2 -1
  505. package/src/tx/tx.ts +18 -17
  506. package/src/tx/tx_effect.ts +36 -76
  507. package/src/tx/tx_execution_request.ts +11 -0
  508. package/src/tx/tx_receipt.ts +1 -1
  509. package/src/tx/tx_request.ts +12 -3
  510. package/src/tx/validator/error_texts.ts +1 -1
  511. package/src/update-checker/index.ts +1 -0
  512. package/src/update-checker/update-checker.ts +152 -0
  513. package/src/versioning/versioning.ts +1 -1
  514. package/src/vks/verification_key.ts +8 -2
  515. package/dest/config/config.d.ts.map +0 -1
  516. /package/dest/config/{config.js → chain-config.js} +0 -0
  517. /package/src/config/{config.ts → chain-config.ts} +0 -0
@@ -1,139 +1,238 @@
1
- import { CONTRACT_CLASS_LOG_DATA_SIZE_IN_FIELDS, CONTRACT_CLASS_LOG_SIZE_IN_FIELDS } from '@aztec/constants';
1
+ import { CONTRACT_CLASS_LOG_LENGTH, CONTRACT_CLASS_LOG_SIZE_IN_FIELDS } from '@aztec/constants';
2
2
  import { poseidon2Hash } from '@aztec/foundation/crypto';
3
3
  import { Fr } from '@aztec/foundation/fields';
4
4
  import { schemas } from '@aztec/foundation/schemas';
5
- import { BufferReader, FieldReader, serializeToBuffer } from '@aztec/foundation/serialize';
5
+ import { BufferReader, FieldReader, serializeToBuffer, serializeToFields } from '@aztec/foundation/serialize';
6
+ import type { FieldsOf } from '@aztec/foundation/types';
6
7
 
7
8
  import { inspect } from 'util';
8
9
  import { z } from 'zod';
9
10
 
10
11
  import { AztecAddress } from '../aztec-address/index.js';
11
12
 
12
- export class ContractClassLog {
13
- static SIZE_IN_BYTES = Fr.SIZE_IN_BYTES * CONTRACT_CLASS_LOG_SIZE_IN_FIELDS;
14
- // Keeps original first field pre-siloing. Only set by silo().
15
- public unsiloedFirstField?: Fr | undefined;
16
-
13
+ export class ContractClassLogFields {
17
14
  // Below line gives error 'Type instantiation is excessively deep and possibly infinite. ts(2589)'
18
- // public fields: Tuple<Fr, typeof CONTRACT_CLASS_LOG_DATA_SIZE_IN_FIELDS>
19
- constructor(public contractAddress: AztecAddress, public fields: Fr[]) {
20
- if (fields.length !== CONTRACT_CLASS_LOG_DATA_SIZE_IN_FIELDS) {
15
+ // public fields: Tuple<Fr, typeof CONTRACT_CLASS_LOG_SIZE_IN_FIELDS>
16
+ constructor(public fields: Fr[]) {
17
+ if (fields.length !== CONTRACT_CLASS_LOG_SIZE_IN_FIELDS) {
21
18
  throw new Error(
22
- `Invalid number of fields for ContractClassLog. Expected ${CONTRACT_CLASS_LOG_DATA_SIZE_IN_FIELDS}, got ${fields.length}`,
19
+ `Invalid number of fields for ContractClassLog. Expected ${CONTRACT_CLASS_LOG_SIZE_IN_FIELDS}, got ${fields.length}`,
23
20
  );
24
21
  }
25
22
  }
26
23
 
24
+ static get schema() {
25
+ return z
26
+ .object({
27
+ fields: z.array(schemas.Fr).refine(arr => arr.length === CONTRACT_CLASS_LOG_SIZE_IN_FIELDS),
28
+ })
29
+ .transform(({ fields }) => new ContractClassLogFields(fields));
30
+ }
31
+
32
+ toFields(): Fr[] {
33
+ return this.fields;
34
+ }
35
+
36
+ static fromFields(fields: Fr[] | FieldReader) {
37
+ const reader = FieldReader.asReader(fields);
38
+ // Below line gives error 'Type instantiation is excessively deep and possibly infinite. ts(2589)'
39
+ // reader.readFieldArray(CONTRACT_CLASS_LOG_LENGTH);
40
+ return new ContractClassLogFields(
41
+ Array.from({ length: CONTRACT_CLASS_LOG_SIZE_IN_FIELDS }, () => reader.readField()),
42
+ );
43
+ }
44
+
45
+ toBuffer() {
46
+ return serializeToBuffer(this.fields);
47
+ }
48
+
49
+ static fromBuffer(buffer: Buffer | BufferReader) {
50
+ const reader = BufferReader.asReader(buffer);
51
+ // Below line gives error 'Type instantiation is excessively deep and possibly infinite. ts(2589)'
52
+ // reader.readArray(CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, Fr)
53
+ return new ContractClassLogFields(
54
+ Array.from({ length: CONTRACT_CLASS_LOG_SIZE_IN_FIELDS }, () => reader.readObject(Fr)),
55
+ );
56
+ }
57
+
58
+ equals(other: ContractClassLogFields) {
59
+ return this.fields.every((f, i) => f.equals(other.fields[i]));
60
+ }
61
+
62
+ getEmittedFields(emittedLength: number) {
63
+ return this.fields.slice(0, emittedLength);
64
+ }
65
+
66
+ static fromEmittedFields(emittedFields: Fr[]) {
67
+ return new ContractClassLogFields(
68
+ emittedFields.concat(Array(CONTRACT_CLASS_LOG_SIZE_IN_FIELDS - emittedFields.length).fill(Fr.ZERO)),
69
+ );
70
+ }
71
+
72
+ isEmpty() {
73
+ return this.fields.every(f => f.isZero());
74
+ }
75
+
76
+ static empty() {
77
+ return new ContractClassLogFields(Array(CONTRACT_CLASS_LOG_SIZE_IN_FIELDS).fill(Fr.ZERO));
78
+ }
79
+
80
+ static random(emittedLength = CONTRACT_CLASS_LOG_SIZE_IN_FIELDS) {
81
+ return new ContractClassLogFields(
82
+ Array.from({ length: emittedLength }, () => Fr.random()).concat(
83
+ Array(CONTRACT_CLASS_LOG_SIZE_IN_FIELDS - emittedLength).fill(Fr.ZERO),
84
+ ),
85
+ );
86
+ }
87
+
88
+ async hash() {
89
+ return await poseidon2Hash(this.fields);
90
+ }
91
+
92
+ clone() {
93
+ return ContractClassLogFields.fromBuffer(this.toBuffer());
94
+ }
95
+ }
96
+
97
+ export class ContractClassLog {
98
+ static SIZE_IN_BYTES = Fr.SIZE_IN_BYTES * CONTRACT_CLASS_LOG_LENGTH;
99
+ // Keeps original first field pre-siloing. Only set by silo().
100
+ public unsiloedFirstField?: Fr | undefined;
101
+
102
+ constructor(
103
+ public contractAddress: AztecAddress,
104
+ public fields: ContractClassLogFields,
105
+ public emittedLength: number,
106
+ ) {}
107
+
108
+ static from(fields: FieldsOf<ContractClassLog>) {
109
+ return new ContractClassLog(fields.contractAddress, fields.fields, fields.emittedLength);
110
+ }
111
+
27
112
  toFields(): Fr[] {
28
- return [this.contractAddress.toField(), ...this.fields];
113
+ return serializeToFields([this.contractAddress, this.fields, this.emittedLength]);
29
114
  }
30
115
 
31
116
  equals(other: ContractClassLog) {
32
117
  return (
33
118
  this.contractAddress.equals(other.contractAddress) &&
34
- this.fields.length === other.fields.length &&
35
- this.fields.every((f, i) => f.equals(other.fields[i]))
119
+ this.fields.equals(other.fields) &&
120
+ this.emittedLength === other.emittedLength
36
121
  );
37
122
  }
38
123
 
39
124
  static fromFields(fields: Fr[] | FieldReader) {
40
125
  const reader = FieldReader.asReader(fields);
41
- // Below line gives error 'Type instantiation is excessively deep and possibly infinite. ts(2589)'
42
- // return new ContractClassLog(reader.readFieldArray(CONTRACT_CLASS_LOG_SIZE_IN_FIELDS));
43
126
  return new ContractClassLog(
44
127
  reader.readObject(AztecAddress),
45
- Array.from({ length: CONTRACT_CLASS_LOG_DATA_SIZE_IN_FIELDS }, () => reader.readField()),
128
+ reader.readObject(ContractClassLogFields),
129
+ reader.readU32(),
130
+ );
131
+ }
132
+
133
+ getEmittedFields() {
134
+ return this.fields.getEmittedFields(this.emittedLength);
135
+ }
136
+
137
+ toBlobFields(): Fr[] {
138
+ return [new Fr(this.emittedLength), this.contractAddress.toField()].concat(this.getEmittedFields());
139
+ }
140
+
141
+ static fromBlobFields(fields: Fr[] | FieldReader) {
142
+ const reader = FieldReader.asReader(fields);
143
+ const emittedLength = reader.readU32();
144
+ const contractAddress = reader.readObject(AztecAddress);
145
+ const emittedFields = reader.readFieldArray(emittedLength);
146
+ return new ContractClassLog(
147
+ contractAddress,
148
+ ContractClassLogFields.fromEmittedFields(emittedFields),
149
+ emittedLength,
46
150
  );
47
151
  }
48
152
 
49
153
  isEmpty() {
50
- return this.fields.every(f => f.isZero());
154
+ return this.contractAddress.isZero() && this.fields.isEmpty() && this.emittedLength === 0;
51
155
  }
52
156
 
53
157
  static empty() {
54
- return new ContractClassLog(AztecAddress.ZERO, new Array(CONTRACT_CLASS_LOG_DATA_SIZE_IN_FIELDS).fill(Fr.ZERO));
158
+ return new ContractClassLog(AztecAddress.ZERO, ContractClassLogFields.empty(), 0);
55
159
  }
56
160
 
57
161
  toBuffer(): Buffer {
58
- return serializeToBuffer([this.contractAddress, this.fields]);
162
+ return serializeToBuffer([this.contractAddress, this.fields, this.emittedLength]);
59
163
  }
60
164
 
61
165
  static fromBuffer(buffer: Buffer | BufferReader) {
62
166
  const reader = BufferReader.asReader(buffer);
63
- // Below line gives error 'Type instantiation is excessively deep and possibly infinite. ts(2589)'
64
- // reader.readArray(CONTRACT_CLASS_LOG_SIZE_IN_FIELDS, Fr);
65
167
  const address = reader.readObject(AztecAddress);
66
- const fields = Array.from({ length: CONTRACT_CLASS_LOG_DATA_SIZE_IN_FIELDS }, () =>
67
- reader.remainingBytes() == 0 ? Fr.ZERO : Fr.fromBuffer(reader),
68
- );
69
- return new ContractClassLog(address, fields);
70
- }
71
-
72
- clone() {
73
- return ContractClassLog.fromBuffer(this.toBuffer());
168
+ const fields = ContractClassLogFields.fromBuffer(reader);
169
+ const emittedLength = reader.readNumber();
170
+ return new ContractClassLog(address, fields, emittedLength);
74
171
  }
75
172
 
76
173
  static async random() {
77
174
  // NB: Using half the maximum number of fields per log because max fields keeps overfilling blobs in tests.
78
- // Below line gives error 'Type instantiation is excessively deep and possibly infinite. ts(2589)'
79
- // makeTuple(CONTRACT_CLASS_LOG_DATA_SIZE_IN_FIELDS, Fr.random);
80
- const fields = Array.from({ length: Math.ceil(CONTRACT_CLASS_LOG_DATA_SIZE_IN_FIELDS / 2) }, () => Fr.random());
175
+ const emittedLength = Math.ceil(CONTRACT_CLASS_LOG_SIZE_IN_FIELDS / 2);
81
176
  return new ContractClassLog(
82
177
  await AztecAddress.random(),
83
- fields.concat(Array.from({ length: Math.floor(CONTRACT_CLASS_LOG_DATA_SIZE_IN_FIELDS / 2) }, () => Fr.ZERO)),
178
+ ContractClassLogFields.random(emittedLength),
179
+ emittedLength,
84
180
  );
85
181
  }
86
182
 
87
- getEmittedLength() {
88
- // This assumes that we cut trailing zeroes from the end of the log. In ts, these will always be added back.
89
- // Does not include address or length prefix.
90
- // Note: Unlike public logs, address is not included here because it is not included in the log itself.
91
- return this.getEmittedFields().length;
92
- }
93
-
94
- getEmittedFields() {
95
- const lastNonZeroIndex = this.fields.findLastIndex(f => !f.isZero());
96
- return this.fields.slice(0, lastNonZeroIndex + 1);
97
- }
98
-
99
183
  setUnsiloedFirstField(field: Fr) {
100
184
  this.unsiloedFirstField = field;
101
185
  }
102
186
 
103
187
  toUnsiloed() {
188
+ if (this.contractAddress.isZero()) {
189
+ return this;
190
+ }
104
191
  if (this.unsiloedFirstField) {
105
- return new ContractClassLog(this.contractAddress, [this.unsiloedFirstField].concat(this.fields.slice(1)));
192
+ return new ContractClassLog(
193
+ this.contractAddress,
194
+ new ContractClassLogFields([this.unsiloedFirstField].concat(this.fields.fields.slice(1))),
195
+ this.emittedLength,
196
+ );
106
197
  } else {
107
198
  return this;
108
199
  }
109
200
  }
110
201
 
202
+ // TODO(#13914): Don't need to silo the contract class logs.
111
203
  async silo() {
112
- const innerLog = this.clone();
113
- if (innerLog.contractAddress.isZero()) {
114
- return innerLog;
204
+ if (this.contractAddress.isZero()) {
205
+ return this;
115
206
  }
116
- innerLog.setUnsiloedFirstField(innerLog.fields[0]);
117
- innerLog.fields[0] = await poseidon2Hash([innerLog.contractAddress, innerLog.fields[0]]);
118
- return innerLog;
207
+
208
+ const fields = this.fields.clone();
209
+ const unsiloedField = fields.fields[0];
210
+ const siloedField = await poseidon2Hash([this.contractAddress, unsiloedField]);
211
+ fields.fields[0] = siloedField;
212
+ const cloned = new ContractClassLog(this.contractAddress, fields, this.emittedLength);
213
+ cloned.setUnsiloedFirstField(unsiloedField);
214
+ return cloned;
119
215
  }
120
216
 
121
217
  async hash() {
122
- return await poseidon2Hash(this.fields);
218
+ return await this.fields.hash();
123
219
  }
124
220
 
125
221
  static get schema() {
126
222
  return z
127
223
  .object({
128
224
  contractAddress: AztecAddress.schema,
129
- fields: z.array(schemas.Fr),
225
+ fields: ContractClassLogFields.schema,
226
+ emittedLength: z.number(),
130
227
  })
131
- .transform(({ contractAddress, fields }) => ContractClassLog.fromFields([contractAddress.toField(), ...fields]));
228
+ .transform(ContractClassLog.from);
132
229
  }
133
230
 
134
231
  [inspect.custom](): string {
135
232
  return `ContractClassLog {
136
- fields: [${this.fields.map((x: Fr) => inspect(x)).join(', ')}],
233
+ contractAddress: ${this.contractAddress.toString()},
234
+ emittedLength: ${this.emittedLength},
235
+ fields: [${this.fields.fields.map((x: Fr) => inspect(x)).join(', ')}],
137
236
  }`;
138
237
  }
139
238
  }
@@ -4,7 +4,10 @@ import { Fr } from '@aztec/foundation/fields';
4
4
  import type { AztecAddress } from '../aztec-address/index.js';
5
5
 
6
6
  export class IndexedTaggingSecret {
7
- constructor(public appTaggingSecret: Fr, public index: number) {
7
+ constructor(
8
+ public appTaggingSecret: Fr,
9
+ public index: number,
10
+ ) {
8
11
  if (index < 0) {
9
12
  throw new Error('IndexedTaggingSecret index out of bounds');
10
13
  }
@@ -1,4 +1,4 @@
1
- import { MAX_NOTE_HASHES_PER_TX, PUBLIC_LOG_DATA_SIZE_IN_FIELDS } from '@aztec/constants';
1
+ import { MAX_NOTE_HASHES_PER_TX, PUBLIC_LOG_SIZE_IN_FIELDS } from '@aztec/constants';
2
2
  import { Fr } from '@aztec/foundation/fields';
3
3
  import { TxHash } from '@aztec/stdlib/tx';
4
4
 
@@ -6,6 +6,8 @@ import { TxHash } from '@aztec/stdlib/tx';
6
6
  // response for PXE's custom getLogByTag oracle.
7
7
  export class LogWithTxData {
8
8
  constructor(
9
+ // The emitted fields of a log.
10
+ // For public logs, the contract address is prepended to the content.
9
11
  public logContent: Fr[],
10
12
  public txHash: TxHash,
11
13
  public uniqueNoteHashesInTx: Fr[],
@@ -14,7 +16,10 @@ export class LogWithTxData {
14
16
 
15
17
  toNoirSerialization(): (Fr | Fr[])[] {
16
18
  return [
17
- ...toBoundedVecSerialization(this.logContent, PUBLIC_LOG_DATA_SIZE_IN_FIELDS),
19
+ // The log fields length is PUBLIC_LOG_SIZE_IN_FIELDS. + 1 because the contract address is prepended to the content.
20
+ // This is only used for public logs currently, so the maxLength is PUBLIC_LOG_SIZE_IN_FIELDS + 1.
21
+ // TODO(#11639): this could also be used for private logs.
22
+ ...toBoundedVecSerialization(this.logContent, PUBLIC_LOG_SIZE_IN_FIELDS + 1),
18
23
  this.txHash.hash,
19
24
  ...toBoundedVecSerialization(this.uniqueNoteHashesInTx, MAX_NOTE_HASHES_PER_TX),
20
25
  this.firstNullifierInTx,
@@ -1,24 +1,58 @@
1
- import { PRIVATE_LOG_SIZE_IN_FIELDS, PUBLIC_LOG_DATA_SIZE_IN_FIELDS } from '@aztec/constants';
2
- import { makeTuple } from '@aztec/foundation/array';
1
+ import { PRIVATE_LOG_LENGTH, PRIVATE_LOG_SIZE_IN_FIELDS } from '@aztec/constants';
2
+ import { type FieldsOf, makeTuple } from '@aztec/foundation/array';
3
+ import { padArrayEnd } from '@aztec/foundation/collection';
3
4
  import { Fr } from '@aztec/foundation/fields';
4
5
  import { schemas } from '@aztec/foundation/schemas';
5
- import { BufferReader, FieldReader, type Tuple, serializeToBuffer } from '@aztec/foundation/serialize';
6
+ import {
7
+ BufferReader,
8
+ FieldReader,
9
+ type Tuple,
10
+ serializeToBuffer,
11
+ serializeToFields,
12
+ } from '@aztec/foundation/serialize';
6
13
 
7
14
  import { inspect } from 'util';
8
15
  import { z } from 'zod';
9
16
 
10
17
  export class PrivateLog {
11
- static SIZE_IN_BYTES = Fr.SIZE_IN_BYTES * PRIVATE_LOG_SIZE_IN_FIELDS;
18
+ static SIZE_IN_BYTES = Fr.SIZE_IN_BYTES * PRIVATE_LOG_LENGTH;
12
19
 
13
- constructor(public fields: Tuple<Fr, typeof PRIVATE_LOG_SIZE_IN_FIELDS>) {}
20
+ constructor(
21
+ public fields: Tuple<Fr, typeof PRIVATE_LOG_SIZE_IN_FIELDS>,
22
+ // Named `emittedLength` instead of `length` to avoid being confused with fields.length.
23
+ public emittedLength: number,
24
+ ) {}
25
+
26
+ static from(fields: FieldsOf<PrivateLog>) {
27
+ return new PrivateLog(...PrivateLog.getFields(fields));
28
+ }
29
+
30
+ static getFields(fields: FieldsOf<PrivateLog>) {
31
+ return [fields.fields, fields.emittedLength] as const;
32
+ }
14
33
 
15
34
  toFields(): Fr[] {
16
- return this.fields;
35
+ return serializeToFields(...PrivateLog.getFields(this));
17
36
  }
18
37
 
19
38
  static fromFields(fields: Fr[] | FieldReader) {
20
39
  const reader = FieldReader.asReader(fields);
21
- return new PrivateLog(reader.readFieldArray(PRIVATE_LOG_SIZE_IN_FIELDS));
40
+ return new PrivateLog(reader.readFieldArray(PRIVATE_LOG_SIZE_IN_FIELDS), reader.readU32());
41
+ }
42
+
43
+ getEmittedFields() {
44
+ return this.fields.slice(0, this.emittedLength);
45
+ }
46
+
47
+ toBlobFields(): Fr[] {
48
+ return [new Fr(this.emittedLength)].concat(this.getEmittedFields());
49
+ }
50
+
51
+ static fromBlobFields(fields: Fr[] | FieldReader) {
52
+ const reader = FieldReader.asReader(fields);
53
+ const emittedLength = reader.readU32();
54
+ const emittedFields = reader.readFieldArray(emittedLength);
55
+ return new PrivateLog(padArrayEnd(emittedFields, Fr.ZERO, PRIVATE_LOG_SIZE_IN_FIELDS), emittedLength);
22
56
  }
23
57
 
24
58
  isEmpty() {
@@ -26,54 +60,42 @@ export class PrivateLog {
26
60
  }
27
61
 
28
62
  static empty() {
29
- return new PrivateLog(makeTuple(PRIVATE_LOG_SIZE_IN_FIELDS, Fr.zero));
63
+ return new PrivateLog(makeTuple(PRIVATE_LOG_SIZE_IN_FIELDS, Fr.zero), 0);
30
64
  }
31
65
 
32
66
  toBuffer(): Buffer {
33
- return serializeToBuffer(this.fields);
67
+ return serializeToBuffer(this.fields, this.emittedLength);
34
68
  }
35
69
 
36
70
  static fromBuffer(buffer: Buffer | BufferReader) {
37
71
  const reader = BufferReader.asReader(buffer);
38
- return new PrivateLog(reader.readArray(PRIVATE_LOG_SIZE_IN_FIELDS, Fr));
72
+ return new PrivateLog(reader.readArray(PRIVATE_LOG_SIZE_IN_FIELDS, Fr), reader.readNumber());
39
73
  }
40
74
 
41
75
  static random(tag = Fr.random()) {
42
- return PrivateLog.fromFields([tag, ...Array.from({ length: PRIVATE_LOG_SIZE_IN_FIELDS - 1 }, () => Fr.random())]);
43
- }
44
-
45
- getEmittedLength() {
46
- // This assumes that we cut trailing zeroes from the end of the log. In ts, these will always be added back.
47
- // Does not include length prefix.
48
- return this.getEmittedFields().length;
49
- }
50
-
51
- getEmittedFields() {
52
- const lastNonZeroIndex = this.fields.findLastIndex(f => !f.isZero());
53
- return this.fields.slice(0, lastNonZeroIndex + 1);
76
+ const fields = makeTuple(PRIVATE_LOG_SIZE_IN_FIELDS, Fr.random);
77
+ fields[0] = tag;
78
+ return new PrivateLog(fields, PRIVATE_LOG_SIZE_IN_FIELDS);
54
79
  }
55
80
 
56
81
  static get schema() {
57
- if (PUBLIC_LOG_DATA_SIZE_IN_FIELDS + 1 == PRIVATE_LOG_SIZE_IN_FIELDS) {
58
- throw new Error(
59
- 'Constants got updated and schema for PublicLog matches that of PrivateLog. This needs to be updated now as Zod is no longer able to differentiate the 2 in TxScopedL2Log.',
60
- );
61
- }
62
-
63
82
  return z
64
83
  .object({
65
84
  fields: z.array(schemas.Fr),
85
+ emittedLength: z.number(),
66
86
  })
67
- .transform(({ fields }) => PrivateLog.fromFields(fields));
87
+ .strict()
88
+ .transform(({ fields, emittedLength }) => PrivateLog.fromFields(fields.concat(new Fr(emittedLength))));
68
89
  }
69
90
 
70
91
  equals(other: PrivateLog) {
71
- return this.fields.every((field, i) => field.equals(other.fields[i]));
92
+ return this.fields.every((field, i) => field.equals(other.fields[i])) && this.emittedLength === other.emittedLength;
72
93
  }
73
94
 
74
95
  [inspect.custom](): string {
75
96
  return `PrivateLog {
76
97
  fields: [${this.fields.map(x => inspect(x)).join(', ')}],
98
+ emittedLength: ${this.emittedLength},
77
99
  }`;
78
100
  }
79
101
  }
@@ -1,9 +1,6 @@
1
- import {
2
- PRIVATE_LOG_SIZE_IN_FIELDS,
3
- PUBLIC_LOG_DATA_SIZE_IN_FIELDS,
4
- PUBLIC_LOG_SIZE_IN_FIELDS,
5
- } from '@aztec/constants';
1
+ import { PUBLIC_LOG_LENGTH, PUBLIC_LOG_SIZE_IN_FIELDS } from '@aztec/constants';
6
2
  import { type FieldsOf, makeTuple } from '@aztec/foundation/array';
3
+ import { padArrayEnd } from '@aztec/foundation/collection';
7
4
  import { Fr } from '@aztec/foundation/fields';
8
5
  import { type ZodFor, schemas } from '@aztec/foundation/schemas';
9
6
  import {
@@ -20,29 +17,61 @@ import { z } from 'zod';
20
17
  import { AztecAddress } from '../aztec-address/index.js';
21
18
 
22
19
  export class PublicLog {
23
- static SIZE_IN_BYTES = Fr.SIZE_IN_BYTES * PUBLIC_LOG_SIZE_IN_FIELDS;
20
+ static SIZE_IN_BYTES = Fr.SIZE_IN_BYTES * PUBLIC_LOG_LENGTH;
24
21
 
25
- constructor(public contractAddress: AztecAddress, public log: Tuple<Fr, typeof PUBLIC_LOG_DATA_SIZE_IN_FIELDS>) {}
22
+ constructor(
23
+ public contractAddress: AztecAddress,
24
+ public fields: Tuple<Fr, typeof PUBLIC_LOG_SIZE_IN_FIELDS>,
25
+ public emittedLength: number,
26
+ ) {}
26
27
 
27
- toFields(): Fr[] {
28
- return serializeToFields(...PublicLog.getFields(this));
28
+ static from(fields: FieldsOf<PublicLog>) {
29
+ return new PublicLog(...PublicLog.getFields(fields));
29
30
  }
30
31
 
31
32
  static getFields(fields: FieldsOf<PublicLog>) {
32
- return [fields.contractAddress, fields.log] as const;
33
+ return [fields.contractAddress, fields.fields, fields.emittedLength] as const;
34
+ }
35
+
36
+ toFields(): Fr[] {
37
+ return serializeToFields(...PublicLog.getFields(this));
33
38
  }
34
39
 
35
40
  static fromFields(fields: Fr[] | FieldReader) {
36
41
  const reader = FieldReader.asReader(fields);
37
- return new PublicLog(reader.readObject(AztecAddress), reader.readFieldArray(PUBLIC_LOG_DATA_SIZE_IN_FIELDS));
42
+ return new PublicLog(
43
+ reader.readObject(AztecAddress),
44
+ reader.readFieldArray(PUBLIC_LOG_SIZE_IN_FIELDS),
45
+ reader.readU32(),
46
+ );
47
+ }
48
+
49
+ getEmittedFields() {
50
+ return this.fields.slice(0, this.emittedLength);
51
+ }
52
+
53
+ toBlobFields(): Fr[] {
54
+ return [new Fr(this.emittedLength), this.contractAddress.toField()].concat(this.getEmittedFields());
55
+ }
56
+
57
+ static fromBlobFields(fields: Fr[] | FieldReader) {
58
+ const reader = FieldReader.asReader(fields);
59
+ const emittedLength = reader.readU32();
60
+ const contractAddress = reader.readObject(AztecAddress);
61
+ const emittedFields = reader.readFieldArray(emittedLength);
62
+ return new PublicLog(
63
+ contractAddress,
64
+ padArrayEnd(emittedFields, Fr.ZERO, PUBLIC_LOG_SIZE_IN_FIELDS),
65
+ emittedLength,
66
+ );
38
67
  }
39
68
 
40
69
  isEmpty() {
41
- return this.contractAddress.isZero() && this.log.every(f => f.isZero());
70
+ return this.contractAddress.isZero() && this.fields.every(f => f.isZero()) && this.emittedLength === 0;
42
71
  }
43
72
 
44
73
  static empty() {
45
- return new PublicLog(AztecAddress.ZERO, makeTuple(PUBLIC_LOG_DATA_SIZE_IN_FIELDS, Fr.zero));
74
+ return new PublicLog(AztecAddress.ZERO, makeTuple(PUBLIC_LOG_SIZE_IN_FIELDS, Fr.zero), 0);
46
75
  }
47
76
 
48
77
  toBuffer(): Buffer {
@@ -51,55 +80,50 @@ export class PublicLog {
51
80
 
52
81
  static fromBuffer(buffer: Buffer | BufferReader) {
53
82
  const reader = BufferReader.asReader(buffer);
54
- return new PublicLog(reader.readObject(AztecAddress), reader.readArray(PUBLIC_LOG_DATA_SIZE_IN_FIELDS, Fr));
83
+ return new PublicLog(
84
+ reader.readObject(AztecAddress),
85
+ reader.readArray(PUBLIC_LOG_SIZE_IN_FIELDS, Fr),
86
+ reader.readNumber(),
87
+ );
55
88
  }
56
89
 
57
90
  static async random() {
58
- return new PublicLog(await AztecAddress.random(), makeTuple(PUBLIC_LOG_DATA_SIZE_IN_FIELDS, Fr.random));
59
- }
60
-
61
- getEmittedLength() {
62
- // This assumes that we cut trailing zeroes from the end of the log. In ts, these will always be added back.
63
- // Does not include length prefix.
64
- return this.getEmittedFields().length;
65
- }
66
-
67
- getEmittedFields() {
68
- const fields = this.toFields();
69
- const lastNonZeroIndex = fields.findLastIndex(f => !f.isZero());
70
- return fields.slice(0, lastNonZeroIndex + 1);
91
+ return new PublicLog(
92
+ await AztecAddress.random(),
93
+ makeTuple(PUBLIC_LOG_SIZE_IN_FIELDS, Fr.random),
94
+ PUBLIC_LOG_SIZE_IN_FIELDS,
95
+ );
71
96
  }
72
97
 
73
98
  equals(other: this) {
74
99
  return (
75
100
  this.contractAddress.equals(other.contractAddress) &&
76
- this.log.reduce((acc, field, i) => acc && field.equals(other.log[i]), true)
101
+ this.fields.every((field, i) => field.equals(other.fields[i])) &&
102
+ this.emittedLength === other.emittedLength
77
103
  );
78
104
  }
79
105
 
80
106
  toHumanReadable(): string {
81
- return `PublicLog: (contractAddress: ${this.contractAddress} log: ${this.log})`;
107
+ return `PublicLog: (contractAddress: ${this.contractAddress} fields: ${this.fields}) emittedLength: ${this.emittedLength}`;
82
108
  }
83
109
 
84
110
  static get schema(): ZodFor<PublicLog> {
85
- if (PUBLIC_LOG_DATA_SIZE_IN_FIELDS + 1 == PRIVATE_LOG_SIZE_IN_FIELDS) {
86
- throw new Error(
87
- 'Constants got updated and schema for PrivateLog matches that of PublicLog. This needs to be updated now as Zod is no longer able to differentiate the 2 in TxScopedL2Log.',
88
- );
89
- }
90
-
91
111
  return z
92
112
  .object({
93
113
  contractAddress: AztecAddress.schema,
94
- log: z.array(schemas.Fr),
114
+ fields: z.array(schemas.Fr).refine(arr => arr.length === PUBLIC_LOG_SIZE_IN_FIELDS),
115
+ emittedLength: z.number(),
95
116
  })
96
- .transform(({ contractAddress, log }) => PublicLog.fromFields([contractAddress.toField(), ...log]));
117
+ .transform(({ contractAddress, fields, emittedLength }) =>
118
+ PublicLog.fromFields([contractAddress.toField(), ...fields, new Fr(emittedLength)]),
119
+ );
97
120
  }
98
121
 
99
122
  [inspect.custom](): string {
100
123
  return `PublicLog {
101
124
  contractAddress: ${inspect(this.contractAddress)},
102
- log: [${this.log.map(x => inspect(x)).join(', ')}],
125
+ fields: [${this.fields.map(x => inspect(x)).join(', ')}],
126
+ emittedLength: ${this.emittedLength},
103
127
  }`;
104
128
  }
105
129
  }
@@ -75,8 +75,7 @@ export class TxScopedL2Log {
75
75
  return new TxScopedL2Log(txHash, dataStartIndexForTx, logIndexInTx, blockNumber, log);
76
76
  }
77
77
 
78
- static async random() {
79
- const isFromPublic = Math.random() < 0.5;
78
+ static async random(isFromPublic = Math.random() < 0.5) {
80
79
  const log = isFromPublic ? await PublicLog.random() : PrivateLog.random();
81
80
  return new TxScopedL2Log(TxHash.random(), 1, 1, 1, log);
82
81
  }
@@ -25,4 +25,14 @@ export class InboxLeaf {
25
25
  static smallestIndexFromL2Block(l2block: bigint): bigint {
26
26
  return (l2block - BigInt(INITIAL_L2_BLOCK_NUM)) * BigInt(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
27
27
  }
28
+
29
+ /**
30
+ * Returns the range of valid indices for a given L2 block.
31
+ * Start index is inclusive, end index is exclusive.
32
+ */
33
+ static indexRangeFromL2Block(l2block: bigint): [bigint, bigint] {
34
+ const start = this.smallestIndexFromL2Block(l2block);
35
+ const end = start + BigInt(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
36
+ return [start, end];
37
+ }
28
38
  }
@@ -10,7 +10,11 @@ import { z } from 'zod';
10
10
  import { AztecAddress } from '../aztec-address/index.js';
11
11
 
12
12
  export class L2ToL1Message {
13
- constructor(public recipient: EthAddress, public content: Fr, public counter: number) {}
13
+ constructor(
14
+ public recipient: EthAddress,
15
+ public content: Fr,
16
+ public counter: number,
17
+ ) {}
14
18
 
15
19
  static get schema() {
16
20
  return z
@@ -97,7 +101,10 @@ export class L2ToL1Message {
97
101
  }
98
102
 
99
103
  export class ScopedL2ToL1Message {
100
- constructor(public message: L2ToL1Message, public contractAddress: AztecAddress) {}
104
+ constructor(
105
+ public message: L2ToL1Message,
106
+ public contractAddress: AztecAddress,
107
+ ) {}
101
108
 
102
109
  static get schema() {
103
110
  return z