@aztec/pxe 0.0.0-test.1 → 0.0.1-commit.5476d83

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 (328) hide show
  1. package/README.md +5 -5
  2. package/dest/bin/check_oracle_version.d.ts +2 -0
  3. package/dest/bin/check_oracle_version.d.ts.map +1 -0
  4. package/dest/bin/check_oracle_version.js +39 -0
  5. package/dest/config/index.d.ts +11 -24
  6. package/dest/config/index.d.ts.map +1 -1
  7. package/dest/config/index.js +18 -33
  8. package/dest/config/package_info.d.ts +1 -1
  9. package/dest/config/package_info.js +1 -1
  10. package/dest/contract_function_simulator/contract_function_simulator.d.ts +56 -0
  11. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -0
  12. package/dest/contract_function_simulator/contract_function_simulator.js +300 -0
  13. package/dest/contract_function_simulator/execution_data_provider.d.ts +265 -0
  14. package/dest/contract_function_simulator/execution_data_provider.d.ts.map +1 -0
  15. package/dest/contract_function_simulator/execution_data_provider.js +14 -0
  16. package/dest/contract_function_simulator/execution_note_cache.d.ts +94 -0
  17. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -0
  18. package/dest/contract_function_simulator/execution_note_cache.js +190 -0
  19. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +16 -0
  20. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -0
  21. package/dest/contract_function_simulator/execution_tagging_index_cache.js +26 -0
  22. package/dest/contract_function_simulator/hashed_values_cache.d.ts +28 -0
  23. package/dest/contract_function_simulator/hashed_values_cache.d.ts.map +1 -0
  24. package/dest/contract_function_simulator/hashed_values_cache.js +36 -0
  25. package/dest/contract_function_simulator/index.d.ts +14 -0
  26. package/dest/contract_function_simulator/index.d.ts.map +1 -0
  27. package/dest/contract_function_simulator/index.js +12 -0
  28. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +20 -0
  29. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -0
  30. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +37 -0
  31. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +15 -0
  32. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -0
  33. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +25 -0
  34. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +17 -0
  35. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -0
  36. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +65 -0
  37. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +23 -0
  38. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -0
  39. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +48 -0
  40. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +22 -0
  41. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -0
  42. package/dest/contract_function_simulator/noir-structs/utility_context.js +33 -0
  43. package/dest/contract_function_simulator/oracle/index.d.ts +14 -0
  44. package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -0
  45. package/dest/contract_function_simulator/oracle/index.js +2 -0
  46. package/dest/contract_function_simulator/oracle/interfaces.d.ts +100 -0
  47. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -0
  48. package/dest/contract_function_simulator/oracle/interfaces.js +4 -0
  49. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +17 -0
  50. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -0
  51. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +24 -0
  52. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +24 -0
  53. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -0
  54. package/dest/contract_function_simulator/oracle/note_packing_utils.js +50 -0
  55. package/dest/contract_function_simulator/oracle/oracle.d.ts +58 -0
  56. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -0
  57. package/dest/contract_function_simulator/oracle/oracle.js +333 -0
  58. package/dest/contract_function_simulator/oracle/private_execution.d.ts +48 -0
  59. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -0
  60. package/dest/contract_function_simulator/oracle/private_execution.js +123 -0
  61. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +231 -0
  62. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -0
  63. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +428 -0
  64. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +153 -0
  65. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -0
  66. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +265 -0
  67. package/dest/contract_function_simulator/pick_notes.d.ts +85 -0
  68. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -0
  69. package/dest/contract_function_simulator/pick_notes.js +51 -0
  70. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +6 -0
  71. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -0
  72. package/dest/contract_function_simulator/proxied_contract_data_source.js +62 -0
  73. package/dest/contract_function_simulator/proxied_node.d.ts +9 -0
  74. package/dest/contract_function_simulator/proxied_node.d.ts.map +1 -0
  75. package/dest/contract_function_simulator/proxied_node.js +27 -0
  76. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts +122 -0
  77. package/dest/contract_function_simulator/pxe_oracle_interface.d.ts.map +1 -0
  78. package/dest/contract_function_simulator/pxe_oracle_interface.js +694 -0
  79. package/dest/entrypoints/client/bundle/index.d.ts +5 -3
  80. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  81. package/dest/entrypoints/client/bundle/index.js +3 -2
  82. package/dest/entrypoints/client/bundle/utils.d.ts +10 -10
  83. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  84. package/dest/entrypoints/client/bundle/utils.js +18 -12
  85. package/dest/entrypoints/client/lazy/index.d.ts +5 -3
  86. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  87. package/dest/entrypoints/client/lazy/index.js +3 -2
  88. package/dest/entrypoints/client/lazy/utils.d.ts +9 -9
  89. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  90. package/dest/entrypoints/client/lazy/utils.js +17 -11
  91. package/dest/entrypoints/pxe_creation_options.d.ts +14 -0
  92. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -0
  93. package/dest/entrypoints/server/index.d.ts +6 -4
  94. package/dest/entrypoints/server/index.d.ts.map +1 -1
  95. package/dest/entrypoints/server/index.js +4 -3
  96. package/dest/entrypoints/server/utils.d.ts +8 -16
  97. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  98. package/dest/entrypoints/server/utils.js +30 -35
  99. package/dest/error_enriching.d.ts +11 -0
  100. package/dest/error_enriching.d.ts.map +1 -0
  101. package/dest/{pxe_service/error_enriching.js → error_enriching.js} +26 -18
  102. package/dest/oracle_version.d.ts +3 -0
  103. package/dest/oracle_version.d.ts.map +1 -0
  104. package/dest/oracle_version.js +10 -0
  105. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +28 -0
  106. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +1 -0
  107. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.js +271 -0
  108. package/dest/private_kernel/hints/compute_side_effect_uniqueness_hints.d.ts +3 -0
  109. package/dest/private_kernel/hints/compute_side_effect_uniqueness_hints.d.ts.map +1 -0
  110. package/dest/private_kernel/hints/compute_side_effect_uniqueness_hints.js +48 -0
  111. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +4 -0
  112. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +1 -0
  113. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.js +41 -0
  114. package/dest/private_kernel/hints/index.d.ts +3 -0
  115. package/dest/private_kernel/hints/index.d.ts.map +1 -0
  116. package/dest/{kernel_prover → private_kernel}/hints/index.js +1 -0
  117. package/dest/private_kernel/index.d.ts +3 -0
  118. package/dest/private_kernel/index.d.ts.map +1 -0
  119. package/dest/private_kernel/index.js +2 -0
  120. package/dest/private_kernel/private_kernel_execution_prover.d.ts +44 -0
  121. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -0
  122. package/dest/private_kernel/private_kernel_execution_prover.js +289 -0
  123. package/dest/private_kernel/private_kernel_oracle.d.ts +62 -0
  124. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -0
  125. package/dest/private_kernel/private_kernel_oracle.js +4 -0
  126. package/dest/private_kernel/private_kernel_oracle_impl.d.ts +45 -0
  127. package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +1 -0
  128. package/dest/{kernel_oracle/index.js → private_kernel/private_kernel_oracle_impl.js} +19 -9
  129. package/dest/pxe.d.ts +240 -0
  130. package/dest/pxe.d.ts.map +1 -0
  131. package/dest/pxe.js +771 -0
  132. package/dest/storage/address_data_provider/address_data_provider.d.ts +2 -4
  133. package/dest/storage/address_data_provider/address_data_provider.d.ts.map +1 -1
  134. package/dest/storage/address_data_provider/address_data_provider.js +0 -3
  135. package/dest/storage/address_data_provider/index.d.ts +1 -1
  136. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +15 -6
  137. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +1 -1
  138. package/dest/storage/capsule_data_provider/capsule_data_provider.js +85 -24
  139. package/dest/storage/capsule_data_provider/index.d.ts +1 -1
  140. package/dest/storage/contract_data_provider/contract_data_provider.d.ts +13 -58
  141. package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +1 -1
  142. package/dest/storage/contract_data_provider/contract_data_provider.js +89 -79
  143. package/dest/storage/contract_data_provider/index.d.ts +1 -2
  144. package/dest/storage/contract_data_provider/index.d.ts.map +1 -1
  145. package/dest/storage/contract_data_provider/index.js +0 -1
  146. package/dest/storage/contract_data_provider/private_functions_tree.d.ts +3 -42
  147. package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +1 -1
  148. package/dest/storage/contract_data_provider/private_functions_tree.js +9 -61
  149. package/dest/storage/index.d.ts +3 -4
  150. package/dest/storage/index.d.ts.map +1 -1
  151. package/dest/storage/index.js +2 -3
  152. package/dest/storage/metadata.d.ts +2 -0
  153. package/dest/storage/metadata.d.ts.map +1 -0
  154. package/dest/storage/metadata.js +1 -0
  155. package/dest/storage/note_data_provider/index.d.ts +2 -2
  156. package/dest/storage/note_data_provider/index.d.ts.map +1 -1
  157. package/dest/storage/note_data_provider/index.js +1 -1
  158. package/dest/storage/note_data_provider/note_data_provider.d.ts +73 -10
  159. package/dest/storage/note_data_provider/note_data_provider.d.ts.map +1 -1
  160. package/dest/storage/note_data_provider/note_data_provider.js +145 -83
  161. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +37 -0
  162. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +1 -0
  163. package/dest/storage/private_event_data_provider/private_event_data_provider.js +105 -0
  164. package/dest/storage/sync_data_provider/index.d.ts +1 -1
  165. package/dest/storage/sync_data_provider/sync_data_provider.d.ts +3 -5
  166. package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +1 -1
  167. package/dest/storage/sync_data_provider/sync_data_provider.js +2 -5
  168. package/dest/storage/tagging_data_provider/index.d.ts +1 -1
  169. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +29 -7
  170. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +1 -1
  171. package/dest/storage/tagging_data_provider/tagging_data_provider.js +48 -24
  172. package/dest/synchronizer/index.d.ts +1 -1
  173. package/dest/synchronizer/synchronizer.d.ts +8 -10
  174. package/dest/synchronizer/synchronizer.d.ts.map +1 -1
  175. package/dest/synchronizer/synchronizer.js +17 -19
  176. package/dest/tagging/constants.d.ts +2 -0
  177. package/dest/tagging/constants.d.ts.map +1 -0
  178. package/dest/tagging/constants.js +2 -0
  179. package/dest/tagging/index.d.ts +7 -0
  180. package/dest/tagging/index.d.ts.map +1 -0
  181. package/dest/tagging/index.js +5 -0
  182. package/dest/tagging/siloed_tag.d.ts +14 -0
  183. package/dest/tagging/siloed_tag.d.ts.map +1 -0
  184. package/dest/tagging/siloed_tag.js +20 -0
  185. package/dest/tagging/tag.d.ts +12 -0
  186. package/dest/tagging/tag.d.ts.map +1 -0
  187. package/dest/tagging/tag.js +17 -0
  188. package/dest/tagging/utils.d.ts +18 -0
  189. package/dest/tagging/utils.d.ts.map +1 -0
  190. package/dest/tagging/utils.js +24 -0
  191. package/package.json +37 -34
  192. package/src/bin/check_oracle_version.ts +50 -0
  193. package/src/config/index.ts +27 -55
  194. package/src/config/package_info.ts +1 -1
  195. package/src/contract_function_simulator/contract_function_simulator.ts +553 -0
  196. package/src/contract_function_simulator/execution_data_provider.ts +333 -0
  197. package/src/contract_function_simulator/execution_note_cache.ts +229 -0
  198. package/src/contract_function_simulator/execution_tagging_index_cache.ts +32 -0
  199. package/src/contract_function_simulator/hashed_values_cache.ts +47 -0
  200. package/src/contract_function_simulator/index.ts +13 -0
  201. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +47 -0
  202. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +27 -0
  203. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +69 -0
  204. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +61 -0
  205. package/src/contract_function_simulator/noir-structs/utility_context.ts +42 -0
  206. package/src/contract_function_simulator/oracle/index.ts +16 -0
  207. package/src/contract_function_simulator/oracle/interfaces.ts +170 -0
  208. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +23 -0
  209. package/src/contract_function_simulator/oracle/note_packing_utils.ts +54 -0
  210. package/src/contract_function_simulator/oracle/oracle.ts +583 -0
  211. package/src/contract_function_simulator/oracle/private_execution.ts +207 -0
  212. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +633 -0
  213. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +358 -0
  214. package/src/contract_function_simulator/pick_notes.ts +141 -0
  215. package/src/contract_function_simulator/proxied_contract_data_source.ts +66 -0
  216. package/src/contract_function_simulator/proxied_node.ts +33 -0
  217. package/src/contract_function_simulator/pxe_oracle_interface.ts +1008 -0
  218. package/src/entrypoints/client/bundle/index.ts +4 -2
  219. package/src/entrypoints/client/bundle/utils.ts +36 -36
  220. package/src/entrypoints/client/lazy/index.ts +4 -2
  221. package/src/entrypoints/client/lazy/utils.ts +36 -31
  222. package/src/entrypoints/{client/pxe_creation_options.ts → pxe_creation_options.ts} +4 -1
  223. package/src/entrypoints/server/index.ts +5 -3
  224. package/src/entrypoints/server/utils.ts +58 -50
  225. package/src/{pxe_service/error_enriching.ts → error_enriching.ts} +36 -27
  226. package/src/oracle_version.ts +11 -0
  227. package/src/{kernel_prover → private_kernel}/hints/build_private_kernel_reset_private_inputs.ts +158 -146
  228. package/src/private_kernel/hints/compute_side_effect_uniqueness_hints.ts +173 -0
  229. package/src/private_kernel/hints/compute_tx_include_by_timestamp.ts +58 -0
  230. package/src/{kernel_prover → private_kernel}/hints/index.ts +1 -0
  231. package/src/private_kernel/index.ts +2 -0
  232. package/src/private_kernel/private_kernel_execution_prover.ts +436 -0
  233. package/src/{kernel_prover/proving_data_oracle.ts → private_kernel/private_kernel_oracle.ts} +17 -29
  234. package/src/{kernel_oracle/index.ts → private_kernel/private_kernel_oracle_impl.ts} +30 -15
  235. package/src/pxe.ts +1085 -0
  236. package/src/storage/address_data_provider/address_data_provider.ts +1 -7
  237. package/src/storage/capsule_data_provider/capsule_data_provider.ts +97 -30
  238. package/src/storage/contract_data_provider/contract_data_provider.ts +109 -93
  239. package/src/storage/contract_data_provider/index.ts +0 -1
  240. package/src/storage/contract_data_provider/private_functions_tree.ts +11 -75
  241. package/src/storage/index.ts +2 -4
  242. package/src/storage/metadata.ts +1 -0
  243. package/src/storage/note_data_provider/index.ts +1 -1
  244. package/src/storage/note_data_provider/note_data_provider.ts +176 -122
  245. package/src/storage/private_event_data_provider/private_event_data_provider.ts +143 -0
  246. package/src/storage/sync_data_provider/sync_data_provider.ts +4 -10
  247. package/src/storage/tagging_data_provider/tagging_data_provider.ts +58 -30
  248. package/src/synchronizer/synchronizer.ts +21 -22
  249. package/src/tagging/constants.ts +2 -0
  250. package/src/tagging/index.ts +6 -0
  251. package/src/tagging/siloed_tag.ts +22 -0
  252. package/src/tagging/tag.ts +16 -0
  253. package/src/tagging/utils.ts +31 -0
  254. package/dest/bin/index.d.ts +0 -3
  255. package/dest/bin/index.d.ts.map +0 -1
  256. package/dest/bin/index.js +0 -28
  257. package/dest/entrypoints/client/pxe_creation_options.d.ts +0 -11
  258. package/dest/entrypoints/client/pxe_creation_options.d.ts.map +0 -1
  259. package/dest/kernel_oracle/index.d.ts +0 -45
  260. package/dest/kernel_oracle/index.d.ts.map +0 -1
  261. package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
  262. package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
  263. package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.js +0 -270
  264. package/dest/kernel_prover/hints/index.d.ts +0 -2
  265. package/dest/kernel_prover/hints/index.d.ts.map +0 -1
  266. package/dest/kernel_prover/index.d.ts +0 -3
  267. package/dest/kernel_prover/index.d.ts.map +0 -1
  268. package/dest/kernel_prover/index.js +0 -2
  269. package/dest/kernel_prover/kernel_prover.d.ts +0 -38
  270. package/dest/kernel_prover/kernel_prover.d.ts.map +0 -1
  271. package/dest/kernel_prover/kernel_prover.js +0 -217
  272. package/dest/kernel_prover/proving_data_oracle.d.ts +0 -73
  273. package/dest/kernel_prover/proving_data_oracle.d.ts.map +0 -1
  274. package/dest/kernel_prover/proving_data_oracle.js +0 -4
  275. package/dest/note_decryption_utils/add_public_values_to_payload.d.ts +0 -11
  276. package/dest/note_decryption_utils/add_public_values_to_payload.d.ts.map +0 -1
  277. package/dest/note_decryption_utils/add_public_values_to_payload.js +0 -47
  278. package/dest/pxe_http/index.d.ts +0 -2
  279. package/dest/pxe_http/index.d.ts.map +0 -1
  280. package/dest/pxe_http/index.js +0 -1
  281. package/dest/pxe_http/pxe_http_server.d.ts +0 -16
  282. package/dest/pxe_http/pxe_http_server.d.ts.map +0 -1
  283. package/dest/pxe_http/pxe_http_server.js +0 -27
  284. package/dest/pxe_oracle_interface/index.d.ts +0 -159
  285. package/dest/pxe_oracle_interface/index.d.ts.map +0 -1
  286. package/dest/pxe_oracle_interface/index.js +0 -692
  287. package/dest/pxe_oracle_interface/tagging_utils.d.ts +0 -17
  288. package/dest/pxe_oracle_interface/tagging_utils.d.ts.map +0 -1
  289. package/dest/pxe_oracle_interface/tagging_utils.js +0 -23
  290. package/dest/pxe_service/error_enriching.d.ts +0 -11
  291. package/dest/pxe_service/error_enriching.d.ts.map +0 -1
  292. package/dest/pxe_service/index.d.ts +0 -3
  293. package/dest/pxe_service/index.d.ts.map +0 -1
  294. package/dest/pxe_service/index.js +0 -2
  295. package/dest/pxe_service/pxe_service.d.ts +0 -111
  296. package/dest/pxe_service/pxe_service.d.ts.map +0 -1
  297. package/dest/pxe_service/pxe_service.js +0 -664
  298. package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.d.ts +0 -11
  299. package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.d.ts.map +0 -1
  300. package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.js +0 -20
  301. package/dest/storage/auth_witness_data_provider/index.d.ts +0 -2
  302. package/dest/storage/auth_witness_data_provider/index.d.ts.map +0 -1
  303. package/dest/storage/auth_witness_data_provider/index.js +0 -1
  304. package/dest/storage/data_provider.d.ts +0 -4
  305. package/dest/storage/data_provider.d.ts.map +0 -1
  306. package/dest/storage/data_provider.js +0 -1
  307. package/dest/storage/note_data_provider/note_dao.d.ts +0 -106
  308. package/dest/storage/note_data_provider/note_dao.d.ts.map +0 -1
  309. package/dest/storage/note_data_provider/note_dao.js +0 -106
  310. package/dest/test/pxe_test_suite.d.ts +0 -3
  311. package/dest/test/pxe_test_suite.d.ts.map +0 -1
  312. package/dest/test/pxe_test_suite.js +0 -97
  313. package/src/bin/index.ts +0 -38
  314. package/src/kernel_prover/index.ts +0 -2
  315. package/src/kernel_prover/kernel_prover.ts +0 -351
  316. package/src/note_decryption_utils/add_public_values_to_payload.ts +0 -64
  317. package/src/pxe_http/index.ts +0 -1
  318. package/src/pxe_http/pxe_http_server.ts +0 -29
  319. package/src/pxe_oracle_interface/index.ts +0 -925
  320. package/src/pxe_oracle_interface/tagging_utils.ts +0 -32
  321. package/src/pxe_service/index.ts +0 -2
  322. package/src/pxe_service/pxe_service.ts +0 -949
  323. package/src/storage/auth_witness_data_provider/auth_witness_data_provider.ts +0 -34
  324. package/src/storage/auth_witness_data_provider/index.ts +0 -1
  325. package/src/storage/data_provider.ts +0 -3
  326. package/src/storage/note_data_provider/note_dao.ts +0 -162
  327. package/src/test/pxe_test_suite.ts +0 -111
  328. /package/dest/entrypoints/{client/pxe_creation_options.js → pxe_creation_options.js} +0 -0
@@ -0,0 +1,583 @@
1
+ import { Fr, Point } from '@aztec/foundation/fields';
2
+ import {
3
+ type ACIRCallback,
4
+ type ACVMField,
5
+ arrayOfArraysToBoundedVecOfArrays,
6
+ bufferToBoundedVec,
7
+ fromUintArray,
8
+ fromUintBoundedVec,
9
+ toACVMField,
10
+ } from '@aztec/simulator/client';
11
+ import { FunctionSelector, NoteSelector } from '@aztec/stdlib/abi';
12
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
13
+ import { ContractClassLog, ContractClassLogFields } from '@aztec/stdlib/logs';
14
+ import { MerkleTreeId } from '@aztec/stdlib/trees';
15
+
16
+ import type { IMiscOracle, IPrivateExecutionOracle, IUtilityExecutionOracle } from './interfaces.js';
17
+ import { packAsRetrievedNote } from './note_packing_utils.js';
18
+
19
+ export class UnavailableOracleError extends Error {
20
+ constructor(oracleName: string) {
21
+ super(`${oracleName} oracles not available with the current handler`);
22
+ }
23
+ }
24
+
25
+ /**
26
+ * A data source that has all the apis required by Aztec.nr.
27
+ */
28
+ export class Oracle {
29
+ constructor(private handler: IMiscOracle | IUtilityExecutionOracle | IPrivateExecutionOracle) {}
30
+
31
+ private handlerAsMisc(): IMiscOracle {
32
+ if (!('isMisc' in this.handler)) {
33
+ throw new UnavailableOracleError('Misc');
34
+ }
35
+
36
+ return this.handler;
37
+ }
38
+
39
+ private handlerAsUtility(): IUtilityExecutionOracle {
40
+ if (!('isUtility' in this.handler)) {
41
+ throw new UnavailableOracleError('Utility');
42
+ }
43
+
44
+ return this.handler;
45
+ }
46
+
47
+ private handlerAsPrivate(): IPrivateExecutionOracle {
48
+ if (!('isPrivate' in this.handler)) {
49
+ throw new UnavailableOracleError('Private');
50
+ }
51
+
52
+ return this.handler;
53
+ }
54
+
55
+ toACIRCallback(): ACIRCallback {
56
+ const excludedProps = [
57
+ 'handler',
58
+ 'constructor',
59
+ 'toACIRCallback',
60
+ 'handlerAsMisc',
61
+ 'handlerAsUtility',
62
+ 'handlerAsPrivate',
63
+ ] as const;
64
+
65
+ // Get all the oracle function names
66
+ const oracleNames = Object.getOwnPropertyNames(Oracle.prototype).filter(
67
+ name => !excludedProps.includes(name as (typeof excludedProps)[number]),
68
+ );
69
+
70
+ // Validate oracle names - these must be prefixed with either "private" or "utility" to indicate their scope
71
+ // and must correspond to a function on the Oracle class.
72
+ oracleNames.forEach(name => {
73
+ if (!name.startsWith('private') && !name.startsWith('utility')) {
74
+ throw new Error(
75
+ `Oracle function "${name}" must be prefixed with either "private" or "utility" to indicate its scope`,
76
+ );
77
+ }
78
+
79
+ const method = this[name as keyof Omit<Oracle, (typeof excludedProps)[number]>];
80
+ if (typeof method !== 'function') {
81
+ throw new Error(`Oracle property "${name}" must be a function`);
82
+ }
83
+ });
84
+
85
+ // Build callback object and return it
86
+ return oracleNames.reduce((acc, name) => {
87
+ const method = this[name as keyof Omit<Oracle, (typeof excludedProps)[number]>];
88
+ acc[name] = method.bind(this);
89
+ return acc;
90
+ }, {} as ACIRCallback);
91
+ }
92
+
93
+ utilityAssertCompatibleOracleVersion([version]: ACVMField[]) {
94
+ this.handlerAsMisc().utilityAssertCompatibleOracleVersion(Fr.fromString(version).toNumber());
95
+ return Promise.resolve([]);
96
+ }
97
+
98
+ utilityGetRandomField(): Promise<ACVMField[]> {
99
+ const val = this.handlerAsMisc().utilityGetRandomField();
100
+ return Promise.resolve([toACVMField(val)]);
101
+ }
102
+
103
+ privateStoreInExecutionCache(values: ACVMField[], [hash]: ACVMField[]): Promise<ACVMField[]> {
104
+ this.handlerAsPrivate().privateStoreInExecutionCache(values.map(Fr.fromString), Fr.fromString(hash));
105
+ return Promise.resolve([]);
106
+ }
107
+
108
+ async privateLoadFromExecutionCache([returnsHash]: ACVMField[]): Promise<ACVMField[][]> {
109
+ const values = await this.handlerAsPrivate().privateLoadFromExecutionCache(Fr.fromString(returnsHash));
110
+ return [values.map(toACVMField)];
111
+ }
112
+
113
+ async utilityGetUtilityContext(): Promise<(ACVMField | ACVMField[])[]> {
114
+ const context = await this.handlerAsUtility().utilityGetUtilityContext();
115
+ return context.toNoirRepresentation();
116
+ }
117
+
118
+ async utilityGetKeyValidationRequest([pkMHash]: ACVMField[]): Promise<ACVMField[]> {
119
+ const keyValidationRequest = await this.handlerAsUtility().utilityGetKeyValidationRequest(Fr.fromString(pkMHash));
120
+
121
+ return keyValidationRequest.toFields().map(toACVMField);
122
+ }
123
+
124
+ async utilityGetContractInstance([address]: ACVMField[]): Promise<ACVMField[]> {
125
+ const instance = await this.handlerAsUtility().utilityGetContractInstance(
126
+ AztecAddress.fromField(Fr.fromString(address)),
127
+ );
128
+
129
+ return [
130
+ instance.salt,
131
+ instance.deployer,
132
+ instance.currentContractClassId,
133
+ instance.initializationHash,
134
+ ...instance.publicKeys.toFields(),
135
+ ].map(toACVMField);
136
+ }
137
+
138
+ async utilityGetMembershipWitness(
139
+ [blockNumber]: ACVMField[],
140
+ [treeId]: ACVMField[],
141
+ [leafValue]: ACVMField[],
142
+ ): Promise<(ACVMField | ACVMField[])[]> {
143
+ const parsedBlockNumber = Fr.fromString(blockNumber).toNumber();
144
+ const parsedTreeId = Fr.fromString(treeId).toNumber();
145
+ const parsedLeafValue = Fr.fromString(leafValue);
146
+
147
+ const witness = await this.handlerAsUtility().utilityGetMembershipWitness(
148
+ parsedBlockNumber,
149
+ parsedTreeId,
150
+ parsedLeafValue,
151
+ );
152
+ if (!witness) {
153
+ throw new Error(
154
+ `Leaf ${leafValue} not found in the tree ${MerkleTreeId[parsedTreeId]} at block ${parsedBlockNumber}.`,
155
+ );
156
+ }
157
+ return [toACVMField(witness[0]), witness.slice(1).map(toACVMField)];
158
+ }
159
+
160
+ async utilityGetNullifierMembershipWitness(
161
+ [blockNumber]: ACVMField[],
162
+ [nullifier]: ACVMField[], // nullifier, we try to find the witness for (to prove inclusion)
163
+ ): Promise<(ACVMField | ACVMField[])[]> {
164
+ const parsedBlockNumber = Fr.fromString(blockNumber).toNumber();
165
+ const parsedNullifier = Fr.fromString(nullifier);
166
+
167
+ const witness = await this.handlerAsUtility().utilityGetNullifierMembershipWitness(
168
+ parsedBlockNumber,
169
+ parsedNullifier,
170
+ );
171
+ if (!witness) {
172
+ throw new Error(`Nullifier witness not found for nullifier ${parsedNullifier} at block ${parsedBlockNumber}.`);
173
+ }
174
+ return witness.toNoirRepresentation();
175
+ }
176
+
177
+ async utilityGetLowNullifierMembershipWitness(
178
+ [blockNumber]: ACVMField[],
179
+ [nullifier]: ACVMField[], // nullifier, we try to find the low nullifier witness for (to prove non-inclusion)
180
+ ): Promise<(ACVMField | ACVMField[])[]> {
181
+ const parsedBlockNumber = Fr.fromString(blockNumber).toNumber();
182
+ const parsedNullifier = Fr.fromString(nullifier);
183
+
184
+ const witness = await this.handlerAsUtility().utilityGetLowNullifierMembershipWitness(
185
+ parsedBlockNumber,
186
+ parsedNullifier,
187
+ );
188
+ if (!witness) {
189
+ throw new Error(
190
+ `Low nullifier witness not found for nullifier ${parsedNullifier} at block ${parsedBlockNumber}.`,
191
+ );
192
+ }
193
+ return witness.toNoirRepresentation();
194
+ }
195
+
196
+ async utilityGetPublicDataWitness(
197
+ [blockNumber]: ACVMField[],
198
+ [leafSlot]: ACVMField[],
199
+ ): Promise<(ACVMField | ACVMField[])[]> {
200
+ const parsedBlockNumber = Fr.fromString(blockNumber).toNumber();
201
+ const parsedLeafSlot = Fr.fromString(leafSlot);
202
+
203
+ const witness = await this.handlerAsUtility().utilityGetPublicDataWitness(parsedBlockNumber, parsedLeafSlot);
204
+ if (!witness) {
205
+ throw new Error(`Public data witness not found for slot ${parsedLeafSlot} at block ${parsedBlockNumber}.`);
206
+ }
207
+ return witness.toNoirRepresentation();
208
+ }
209
+
210
+ async utilityGetBlockHeader([blockNumber]: ACVMField[]): Promise<ACVMField[]> {
211
+ const parsedBlockNumber = Fr.fromString(blockNumber).toNumber();
212
+
213
+ const header = await this.handlerAsUtility().utilityGetBlockHeader(parsedBlockNumber);
214
+ if (!header) {
215
+ throw new Error(`Block header not found for block ${parsedBlockNumber}.`);
216
+ }
217
+ return header.toFields().map(toACVMField);
218
+ }
219
+
220
+ async utilityGetAuthWitness([messageHash]: ACVMField[]): Promise<ACVMField[][]> {
221
+ const messageHashField = Fr.fromString(messageHash);
222
+ const witness = await this.handlerAsUtility().utilityGetAuthWitness(messageHashField);
223
+ if (!witness) {
224
+ throw new Error(`Unknown auth witness for message hash ${messageHashField}`);
225
+ }
226
+ return [witness.map(toACVMField)];
227
+ }
228
+
229
+ async utilityGetPublicKeysAndPartialAddress([address]: ACVMField[]): Promise<ACVMField[][]> {
230
+ const parsedAddress = AztecAddress.fromField(Fr.fromString(address));
231
+ const { publicKeys, partialAddress } =
232
+ await this.handlerAsUtility().utilityGetPublicKeysAndPartialAddress(parsedAddress);
233
+
234
+ return [[...publicKeys.toFields(), partialAddress].map(toACVMField)];
235
+ }
236
+
237
+ async utilityGetNotes(
238
+ [storageSlot]: ACVMField[],
239
+ [numSelects]: ACVMField[],
240
+ selectByIndexes: ACVMField[],
241
+ selectByOffsets: ACVMField[],
242
+ selectByLengths: ACVMField[],
243
+ selectValues: ACVMField[],
244
+ selectComparators: ACVMField[],
245
+ sortByIndexes: ACVMField[],
246
+ sortByOffsets: ACVMField[],
247
+ sortByLengths: ACVMField[],
248
+ sortOrder: ACVMField[],
249
+ [limit]: ACVMField[],
250
+ [offset]: ACVMField[],
251
+ [status]: ACVMField[],
252
+ [maxNotes]: ACVMField[],
253
+ [packedRetrievedNoteLength]: ACVMField[],
254
+ ): Promise<(ACVMField | ACVMField[])[]> {
255
+ const noteDatas = await this.handlerAsUtility().utilityGetNotes(
256
+ Fr.fromString(storageSlot),
257
+ +numSelects,
258
+ selectByIndexes.map(s => +s),
259
+ selectByOffsets.map(s => +s),
260
+ selectByLengths.map(s => +s),
261
+ selectValues.map(Fr.fromString),
262
+ selectComparators.map(s => +s),
263
+ sortByIndexes.map(s => +s),
264
+ sortByOffsets.map(s => +s),
265
+ sortByLengths.map(s => +s),
266
+ sortOrder.map(s => +s),
267
+ +limit,
268
+ +offset,
269
+ +status,
270
+ );
271
+
272
+ const returnDataAsArrayOfPackedRetrievedNotes = noteDatas.map(packAsRetrievedNote);
273
+
274
+ // Now we convert each sub-array to an array of ACVMField
275
+ const returnDataAsArrayOfACVMFieldArrays = returnDataAsArrayOfPackedRetrievedNotes.map(subArray =>
276
+ subArray.map(toACVMField),
277
+ );
278
+
279
+ // At last we convert the array of arrays to a bounded vec of arrays
280
+ return arrayOfArraysToBoundedVecOfArrays(returnDataAsArrayOfACVMFieldArrays, +maxNotes, +packedRetrievedNoteLength);
281
+ }
282
+
283
+ privateNotifyCreatedNote(
284
+ [storageSlot]: ACVMField[],
285
+ [randomness]: ACVMField[],
286
+ [noteTypeId]: ACVMField[],
287
+ note: ACVMField[],
288
+ [noteHash]: ACVMField[],
289
+ [counter]: ACVMField[],
290
+ ): Promise<ACVMField[]> {
291
+ this.handlerAsPrivate().privateNotifyCreatedNote(
292
+ Fr.fromString(storageSlot),
293
+ Fr.fromString(randomness),
294
+ NoteSelector.fromField(Fr.fromString(noteTypeId)),
295
+ note.map(Fr.fromString),
296
+ Fr.fromString(noteHash),
297
+ +counter,
298
+ );
299
+ return Promise.resolve([]);
300
+ }
301
+
302
+ async privateNotifyNullifiedNote(
303
+ [innerNullifier]: ACVMField[],
304
+ [noteHash]: ACVMField[],
305
+ [counter]: ACVMField[],
306
+ ): Promise<ACVMField[]> {
307
+ await this.handlerAsPrivate().privateNotifyNullifiedNote(
308
+ Fr.fromString(innerNullifier),
309
+ Fr.fromString(noteHash),
310
+ +counter,
311
+ );
312
+ return [];
313
+ }
314
+
315
+ async privateNotifyCreatedNullifier([innerNullifier]: ACVMField[]): Promise<ACVMField[]> {
316
+ await this.handlerAsPrivate().privateNotifyCreatedNullifier(Fr.fromString(innerNullifier));
317
+ return [];
318
+ }
319
+
320
+ async utilityCheckNullifierExists([innerNullifier]: ACVMField[]): Promise<ACVMField[]> {
321
+ const exists = await this.handlerAsUtility().utilityCheckNullifierExists(Fr.fromString(innerNullifier));
322
+ return [toACVMField(exists)];
323
+ }
324
+
325
+ async utilityGetL1ToL2MembershipWitness(
326
+ [contractAddress]: ACVMField[],
327
+ [messageHash]: ACVMField[],
328
+ [secret]: ACVMField[],
329
+ ): Promise<(ACVMField | ACVMField[])[]> {
330
+ const message = await this.handlerAsUtility().utilityGetL1ToL2MembershipWitness(
331
+ AztecAddress.fromString(contractAddress),
332
+ Fr.fromString(messageHash),
333
+ Fr.fromString(secret),
334
+ );
335
+ return message.toNoirRepresentation();
336
+ }
337
+
338
+ async utilityStorageRead(
339
+ [contractAddress]: ACVMField[],
340
+ [startStorageSlot]: ACVMField[],
341
+ [blockNumber]: ACVMField[],
342
+ [numberOfElements]: ACVMField[],
343
+ ): Promise<ACVMField[][]> {
344
+ const values = await this.handlerAsUtility().utilityStorageRead(
345
+ new AztecAddress(Fr.fromString(contractAddress)),
346
+ Fr.fromString(startStorageSlot),
347
+ +blockNumber,
348
+ +numberOfElements,
349
+ );
350
+ return [values.map(toACVMField)];
351
+ }
352
+
353
+ privateNotifyCreatedContractClassLog(
354
+ [contractAddress]: ACVMField[],
355
+ message: ACVMField[],
356
+ [length]: ACVMField[],
357
+ [counter]: ACVMField[],
358
+ ): Promise<ACVMField[]> {
359
+ const logFields = new ContractClassLogFields(message.map(Fr.fromString));
360
+ const log = new ContractClassLog(new AztecAddress(Fr.fromString(contractAddress)), logFields, +length);
361
+
362
+ this.handlerAsPrivate().privateNotifyCreatedContractClassLog(log, +counter);
363
+ return Promise.resolve([]);
364
+ }
365
+
366
+ utilityDebugLog(
367
+ level: ACVMField[],
368
+ message: ACVMField[],
369
+ _ignoredFieldsSize: ACVMField[],
370
+ fields: ACVMField[],
371
+ ): Promise<ACVMField[]> {
372
+ const levelFr = Fr.fromString(level[0]);
373
+ const messageStr = message.map(acvmField => String.fromCharCode(Fr.fromString(acvmField).toNumber())).join('');
374
+ const fieldsFr = fields.map(Fr.fromString);
375
+ this.handlerAsMisc().utilityDebugLog(levelFr.toNumber(), messageStr, fieldsFr);
376
+ return Promise.resolve([]);
377
+ }
378
+
379
+ // This function's name is directly hardcoded in `circuit_recorder.ts`. Don't forget to update it there if you
380
+ // change the name here.
381
+ async privateCallPrivateFunction(
382
+ [contractAddress]: ACVMField[],
383
+ [functionSelector]: ACVMField[],
384
+ [argsHash]: ACVMField[],
385
+ [sideEffectCounter]: ACVMField[],
386
+ [isStaticCall]: ACVMField[],
387
+ ): Promise<ACVMField[][]> {
388
+ const { endSideEffectCounter, returnsHash } = await this.handlerAsPrivate().privateCallPrivateFunction(
389
+ AztecAddress.fromField(Fr.fromString(contractAddress)),
390
+ FunctionSelector.fromField(Fr.fromString(functionSelector)),
391
+ Fr.fromString(argsHash),
392
+ Fr.fromString(sideEffectCounter).toNumber(),
393
+ Fr.fromString(isStaticCall).toBool(),
394
+ );
395
+ return [[endSideEffectCounter, returnsHash].map(toACVMField)];
396
+ }
397
+
398
+ async privateNotifyEnqueuedPublicFunctionCall(
399
+ [contractAddress]: ACVMField[],
400
+ [calldataHash]: ACVMField[],
401
+ [sideEffectCounter]: ACVMField[],
402
+ [isStaticCall]: ACVMField[],
403
+ ): Promise<ACVMField[]> {
404
+ await this.handlerAsPrivate().privateNotifyEnqueuedPublicFunctionCall(
405
+ AztecAddress.fromString(contractAddress),
406
+ Fr.fromString(calldataHash),
407
+ Fr.fromString(sideEffectCounter).toNumber(),
408
+ Fr.fromString(isStaticCall).toBool(),
409
+ );
410
+ return [];
411
+ }
412
+
413
+ async privateNotifySetPublicTeardownFunctionCall(
414
+ [contractAddress]: ACVMField[],
415
+ [calldataHash]: ACVMField[],
416
+ [sideEffectCounter]: ACVMField[],
417
+ [isStaticCall]: ACVMField[],
418
+ ): Promise<ACVMField[]> {
419
+ await this.handlerAsPrivate().privateNotifySetPublicTeardownFunctionCall(
420
+ AztecAddress.fromString(contractAddress),
421
+ Fr.fromString(calldataHash),
422
+ Fr.fromString(sideEffectCounter).toNumber(),
423
+ Fr.fromString(isStaticCall).toBool(),
424
+ );
425
+ return [];
426
+ }
427
+
428
+ async privateNotifySetMinRevertibleSideEffectCounter([minRevertibleSideEffectCounter]: ACVMField[]): Promise<
429
+ ACVMField[]
430
+ > {
431
+ await this.handlerAsPrivate().privateNotifySetMinRevertibleSideEffectCounter(
432
+ Fr.fromString(minRevertibleSideEffectCounter).toNumber(),
433
+ );
434
+ return Promise.resolve([]);
435
+ }
436
+
437
+ async privateIsSideEffectCounterRevertible([sideEffectCounter]: ACVMField[]): Promise<ACVMField[]> {
438
+ const isRevertible = await this.handlerAsPrivate().privateIsSideEffectCounterRevertible(
439
+ Fr.fromString(sideEffectCounter).toNumber(),
440
+ );
441
+ return Promise.resolve([toACVMField(isRevertible)]);
442
+ }
443
+
444
+ async privateGetNextAppTagAsSender([sender]: ACVMField[], [recipient]: ACVMField[]): Promise<ACVMField[]> {
445
+ const tag = await this.handlerAsPrivate().privateGetNextAppTagAsSender(
446
+ AztecAddress.fromString(sender),
447
+ AztecAddress.fromString(recipient),
448
+ );
449
+ return [toACVMField(tag.value)];
450
+ }
451
+
452
+ async utilityFetchTaggedLogs([pendingTaggedLogArrayBaseSlot]: ACVMField[]): Promise<ACVMField[]> {
453
+ await this.handlerAsUtility().utilityFetchTaggedLogs(Fr.fromString(pendingTaggedLogArrayBaseSlot));
454
+ return [];
455
+ }
456
+
457
+ async utilityValidateEnqueuedNotesAndEvents(
458
+ [contractAddress]: ACVMField[],
459
+ [noteValidationRequestsArrayBaseSlot]: ACVMField[],
460
+ [eventValidationRequestsArrayBaseSlot]: ACVMField[],
461
+ ): Promise<ACVMField[]> {
462
+ await this.handlerAsUtility().utilityValidateEnqueuedNotesAndEvents(
463
+ AztecAddress.fromString(contractAddress),
464
+ Fr.fromString(noteValidationRequestsArrayBaseSlot),
465
+ Fr.fromString(eventValidationRequestsArrayBaseSlot),
466
+ );
467
+
468
+ return [];
469
+ }
470
+
471
+ async utilityBulkRetrieveLogs(
472
+ [contractAddress]: ACVMField[],
473
+ [logRetrievalRequestsArrayBaseSlot]: ACVMField[],
474
+ [logRetrievalResponsesArrayBaseSlot]: ACVMField[],
475
+ ): Promise<ACVMField[]> {
476
+ await this.handlerAsUtility().utilityBulkRetrieveLogs(
477
+ AztecAddress.fromString(contractAddress),
478
+ Fr.fromString(logRetrievalRequestsArrayBaseSlot),
479
+ Fr.fromString(logRetrievalResponsesArrayBaseSlot),
480
+ );
481
+ return [];
482
+ }
483
+
484
+ async utilityStoreCapsule(
485
+ [contractAddress]: ACVMField[],
486
+ [slot]: ACVMField[],
487
+ capsule: ACVMField[],
488
+ ): Promise<ACVMField[]> {
489
+ await this.handlerAsUtility().utilityStoreCapsule(
490
+ AztecAddress.fromField(Fr.fromString(contractAddress)),
491
+ Fr.fromString(slot),
492
+ capsule.map(Fr.fromString),
493
+ );
494
+ return [];
495
+ }
496
+
497
+ async utilityLoadCapsule(
498
+ [contractAddress]: ACVMField[],
499
+ [slot]: ACVMField[],
500
+ [tSize]: ACVMField[],
501
+ ): Promise<(ACVMField | ACVMField[])[]> {
502
+ const values = await this.handlerAsUtility().utilityLoadCapsule(
503
+ AztecAddress.fromField(Fr.fromString(contractAddress)),
504
+ Fr.fromString(slot),
505
+ );
506
+
507
+ // We are going to return a Noir Option struct to represent the possibility of null values. Options are a struct
508
+ // with two fields: `some` (a boolean) and `value` (a field array in this case).
509
+ if (values === null) {
510
+ // No data was found so we set `some` to 0 and pad `value` with zeros get the correct return size.
511
+ return [toACVMField(0), Array(Fr.fromString(tSize).toNumber()).fill(toACVMField(0))];
512
+ } else {
513
+ // Data was found so we set `some` to 1 and return it along with `value`.
514
+ return [toACVMField(1), values.map(toACVMField)];
515
+ }
516
+ }
517
+
518
+ async utilityDeleteCapsule([contractAddress]: ACVMField[], [slot]: ACVMField[]): Promise<ACVMField[]> {
519
+ await this.handlerAsUtility().utilityDeleteCapsule(
520
+ AztecAddress.fromField(Fr.fromString(contractAddress)),
521
+ Fr.fromString(slot),
522
+ );
523
+ return [];
524
+ }
525
+
526
+ async utilityCopyCapsule(
527
+ [contractAddress]: ACVMField[],
528
+ [srcSlot]: ACVMField[],
529
+ [dstSlot]: ACVMField[],
530
+ [numEntries]: ACVMField[],
531
+ ): Promise<ACVMField[]> {
532
+ await this.handlerAsUtility().utilityCopyCapsule(
533
+ AztecAddress.fromField(Fr.fromString(contractAddress)),
534
+ Fr.fromString(srcSlot),
535
+ Fr.fromString(dstSlot),
536
+ Fr.fromString(numEntries).toNumber(),
537
+ );
538
+ return [];
539
+ }
540
+
541
+ async utilityAes128Decrypt(
542
+ ciphertextBVecStorage: ACVMField[],
543
+ [ciphertextLength]: ACVMField[],
544
+ iv: ACVMField[],
545
+ symKey: ACVMField[],
546
+ ): Promise<(ACVMField | ACVMField[])[]> {
547
+ const ciphertext = fromUintBoundedVec(ciphertextBVecStorage, ciphertextLength, 8);
548
+ const ivBuffer = fromUintArray(iv, 8);
549
+ const symKeyBuffer = fromUintArray(symKey, 8);
550
+
551
+ const plaintext = await this.handlerAsUtility().utilityAes128Decrypt(ciphertext, ivBuffer, symKeyBuffer);
552
+ return bufferToBoundedVec(plaintext, ciphertextBVecStorage.length);
553
+ }
554
+
555
+ async utilityGetSharedSecret(
556
+ [address]: ACVMField[],
557
+ [ephPKField0]: ACVMField[],
558
+ [ephPKField1]: ACVMField[],
559
+ [ephPKField2]: ACVMField[],
560
+ ): Promise<ACVMField[]> {
561
+ const secret = await this.handlerAsUtility().utilityGetSharedSecret(
562
+ AztecAddress.fromField(Fr.fromString(address)),
563
+ Point.fromFields([ephPKField0, ephPKField1, ephPKField2].map(Fr.fromString)),
564
+ );
565
+ return secret.toFields().map(toACVMField);
566
+ }
567
+
568
+ async utilityEmitOffchainEffect(data: ACVMField[]) {
569
+ await this.handlerAsPrivate().utilityEmitOffchainEffect(data.map(Fr.fromString));
570
+ return [];
571
+ }
572
+
573
+ async privateGetSenderForTags(): Promise<ACVMField[]> {
574
+ const sender = await this.handlerAsPrivate().privateGetSenderForTags();
575
+ // Return [1, address] for Some(address), [0, 0] for None
576
+ return sender ? [toACVMField(1n), toACVMField(sender)] : [toACVMField(0n), toACVMField(0n)];
577
+ }
578
+
579
+ async privateSetSenderForTags([senderForTags]: ACVMField[]): Promise<ACVMField[]> {
580
+ await this.handlerAsPrivate().privateSetSenderForTags(AztecAddress.fromField(Fr.fromString(senderForTags)));
581
+ return [];
582
+ }
583
+ }