@aztec/end-to-end 0.0.1-commit.b655e406 → 0.0.1-commit.b8a057fa

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 (410) hide show
  1. package/README.md +217 -14
  2. package/dest/automine/automine_test_context.d.ts +85 -0
  3. package/dest/automine/automine_test_context.d.ts.map +1 -0
  4. package/dest/automine/automine_test_context.js +98 -0
  5. package/dest/automine/contracts/fixtures/storage_proof_fetcher.d.ts +2 -0
  6. package/dest/automine/contracts/fixtures/storage_proof_fetcher.d.ts.map +1 -0
  7. package/dest/automine/contracts/fixtures/storage_proof_fetcher.js +184 -0
  8. package/dest/automine/contracts/fixtures/storage_proof_fixture.d.ts +18 -0
  9. package/dest/automine/contracts/fixtures/storage_proof_fixture.d.ts.map +1 -0
  10. package/dest/automine/contracts/fixtures/storage_proof_fixture.js +120 -0
  11. package/dest/automine/delivery/onchain_delivery_harness.d.ts +17 -0
  12. package/dest/automine/delivery/onchain_delivery_harness.d.ts.map +1 -0
  13. package/dest/automine/delivery/onchain_delivery_harness.js +123 -0
  14. package/dest/automine/token/blacklist_token_contract_test.d.ts +49 -0
  15. package/dest/automine/token/blacklist_token_contract_test.d.ts.map +1 -0
  16. package/dest/automine/token/blacklist_token_contract_test.js +166 -0
  17. package/dest/automine/token/token_contract_test.d.ts +40 -0
  18. package/dest/automine/token/token_contract_test.d.ts.map +1 -0
  19. package/dest/automine/token/token_contract_test.js +119 -0
  20. package/dest/automine/token/token_test_helpers.d.ts +73 -0
  21. package/dest/automine/token/token_test_helpers.d.ts.map +1 -0
  22. package/dest/automine/token/token_test_helpers.js +97 -0
  23. package/dest/bench/client_flows/benchmark.d.ts +17 -2
  24. package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
  25. package/dest/bench/client_flows/benchmark.js +40 -1
  26. package/dest/bench/client_flows/client_flows_benchmark.d.ts +26 -20
  27. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  28. package/dest/bench/client_flows/client_flows_benchmark.js +159 -140
  29. package/dest/bench/client_flows/config.d.ts +2 -2
  30. package/dest/bench/client_flows/config.d.ts.map +1 -1
  31. package/dest/bench/client_flows/config.js +18 -0
  32. package/dest/bench/client_flows/data_extractor.d.ts +1 -1
  33. package/dest/bench/client_flows/data_extractor.js +8 -27
  34. package/dest/bench/utils.d.ts +10 -9
  35. package/dest/bench/utils.d.ts.map +1 -1
  36. package/dest/bench/utils.js +126 -23
  37. package/dest/composed/ha/ha_full_setup.d.ts +77 -0
  38. package/dest/composed/ha/ha_full_setup.d.ts.map +1 -0
  39. package/dest/composed/ha/ha_full_setup.js +383 -0
  40. package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts +12 -0
  41. package/dest/composed/web3signer/multi_validator_keystore_utils.d.ts.map +1 -0
  42. package/dest/{e2e_multi_validator/utils.js → composed/web3signer/multi_validator_keystore_utils.js} +1 -1
  43. package/dest/fixtures/authwit_proxy.d.ts +15 -0
  44. package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
  45. package/dest/fixtures/authwit_proxy.js +34 -0
  46. package/dest/fixtures/e2e_prover_test.d.ts +27 -29
  47. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  48. package/dest/fixtures/e2e_prover_test.js +156 -156
  49. package/dest/fixtures/elu_monitor.d.ts +21 -0
  50. package/dest/fixtures/elu_monitor.d.ts.map +1 -0
  51. package/dest/fixtures/elu_monitor.js +102 -0
  52. package/dest/fixtures/fixtures.d.ts +83 -3
  53. package/dest/fixtures/fixtures.d.ts.map +1 -1
  54. package/dest/fixtures/fixtures.js +86 -3
  55. package/dest/fixtures/get_acvm_config.d.ts +1 -1
  56. package/dest/fixtures/get_acvm_config.js +1 -1
  57. package/dest/fixtures/get_bb_config.d.ts +1 -1
  58. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  59. package/dest/fixtures/get_bb_config.js +5 -5
  60. package/dest/fixtures/ha_setup.d.ts +71 -0
  61. package/dest/fixtures/ha_setup.d.ts.map +1 -0
  62. package/dest/fixtures/ha_setup.js +119 -0
  63. package/dest/fixtures/index.d.ts +3 -1
  64. package/dest/fixtures/index.d.ts.map +1 -1
  65. package/dest/fixtures/index.js +2 -0
  66. package/dest/fixtures/l1_to_l2_messaging.d.ts +4 -3
  67. package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
  68. package/dest/fixtures/l1_to_l2_messaging.js +2 -2
  69. package/dest/fixtures/logging.d.ts +1 -1
  70. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts +25 -0
  71. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts.map +1 -0
  72. package/dest/fixtures/schnorr_hardcoded_account_contract.js +37 -0
  73. package/dest/fixtures/setup.d.ts +269 -0
  74. package/dest/fixtures/setup.d.ts.map +1 -0
  75. package/dest/fixtures/setup.js +688 -0
  76. package/dest/fixtures/setup_p2p_test.d.ts +22 -11
  77. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  78. package/dest/fixtures/setup_p2p_test.js +60 -41
  79. package/dest/fixtures/timing.d.ts +42 -0
  80. package/dest/fixtures/timing.d.ts.map +1 -0
  81. package/dest/fixtures/timing.js +72 -0
  82. package/dest/fixtures/token_utils.d.ts +26 -5
  83. package/dest/fixtures/token_utils.d.ts.map +1 -1
  84. package/dest/fixtures/token_utils.js +33 -9
  85. package/dest/fixtures/utils.d.ts +5 -192
  86. package/dest/fixtures/utils.d.ts.map +1 -1
  87. package/dest/fixtures/utils.js +4 -648
  88. package/dest/fixtures/wait_helpers.d.ts +135 -0
  89. package/dest/fixtures/wait_helpers.d.ts.map +1 -0
  90. package/dest/fixtures/wait_helpers.js +154 -0
  91. package/dest/fixtures/web3signer.d.ts +1 -1
  92. package/dest/fixtures/web3signer.js +1 -1
  93. package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
  94. package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
  95. package/dest/fixtures/with_telemetry_utils.js +2 -2
  96. package/dest/forward-compatibility/wallet_rpc_client.d.ts +7 -0
  97. package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
  98. package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
  99. package/dest/forward-compatibility/wallet_service.d.ts +3 -0
  100. package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
  101. package/dest/forward-compatibility/wallet_service.js +109 -0
  102. package/dest/index.d.ts +1 -1
  103. package/dest/install_legacy_contracts.d.cts +10 -0
  104. package/dest/install_legacy_contracts.d.cts.map +1 -0
  105. package/dest/legacy-jest-resolver.d.cts +3 -0
  106. package/dest/legacy-jest-resolver.d.cts.map +1 -0
  107. package/dest/multi-node/block-production/setup.d.ts +97 -0
  108. package/dest/multi-node/block-production/setup.d.ts.map +1 -0
  109. package/dest/multi-node/block-production/setup.js +158 -0
  110. package/dest/multi-node/governance/setup.d.ts +67 -0
  111. package/dest/multi-node/governance/setup.d.ts.map +1 -0
  112. package/dest/multi-node/governance/setup.js +126 -0
  113. package/dest/multi-node/multi_node_test_context.d.ts +212 -0
  114. package/dest/multi-node/multi_node_test_context.d.ts.map +1 -0
  115. package/dest/multi-node/multi_node_test_context.js +347 -0
  116. package/dest/multi-node/slashing/inactivity_setup.d.ts +27 -0
  117. package/dest/multi-node/slashing/inactivity_setup.d.ts.map +1 -0
  118. package/dest/multi-node/slashing/inactivity_setup.js +111 -0
  119. package/dest/multi-node/slashing/setup.d.ts +167 -0
  120. package/dest/multi-node/slashing/setup.d.ts.map +1 -0
  121. package/dest/multi-node/slashing/setup.js +275 -0
  122. package/dest/p2p/p2p_network.d.ts +325 -0
  123. package/dest/p2p/p2p_network.d.ts.map +1 -0
  124. package/dest/p2p/p2p_network.js +389 -0
  125. package/dest/p2p/reqresp/utils.d.ts +19 -0
  126. package/dest/p2p/reqresp/utils.d.ts.map +1 -0
  127. package/dest/p2p/reqresp/utils.js +193 -0
  128. package/dest/p2p/shared.d.ts +72 -0
  129. package/dest/p2p/shared.d.ts.map +1 -0
  130. package/dest/p2p/shared.js +212 -0
  131. package/dest/quality_of_service/grafana_client.d.ts +41 -0
  132. package/dest/quality_of_service/grafana_client.d.ts.map +1 -0
  133. package/dest/quality_of_service/{alert_checker.js → grafana_client.js} +1 -1
  134. package/dest/quality_of_service/prometheus_client.d.ts +38 -0
  135. package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
  136. package/dest/quality_of_service/prometheus_client.js +67 -0
  137. package/dest/shared/cross_chain_test_harness.d.ts +11 -8
  138. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  139. package/dest/shared/cross_chain_test_harness.js +45 -40
  140. package/dest/shared/gas_portal_test_harness.d.ts +9 -6
  141. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  142. package/dest/shared/gas_portal_test_harness.js +28 -16
  143. package/dest/shared/index.d.ts +3 -2
  144. package/dest/shared/index.d.ts.map +1 -1
  145. package/dest/shared/index.js +1 -0
  146. package/dest/shared/jest_setup.d.ts +1 -1
  147. package/dest/shared/jest_setup.js +41 -1
  148. package/dest/shared/mock_state_view.d.ts +86 -0
  149. package/dest/shared/mock_state_view.d.ts.map +1 -0
  150. package/dest/shared/mock_state_view.js +186 -0
  151. package/dest/shared/submit-transactions.d.ts +4 -4
  152. package/dest/shared/submit-transactions.d.ts.map +1 -1
  153. package/dest/shared/submit-transactions.js +19 -14
  154. package/dest/shared/timing_env.d.js +5 -0
  155. package/dest/shared/timing_env.js +365 -0
  156. package/dest/shared/uniswap_l1_l2.d.ts +3 -27
  157. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  158. package/dest/shared/uniswap_l1_l2.js +86 -54
  159. package/dest/shared/wait_for_l1_to_l2_message.d.ts +13 -0
  160. package/dest/shared/wait_for_l1_to_l2_message.d.ts.map +1 -0
  161. package/dest/shared/wait_for_l1_to_l2_message.js +10 -0
  162. package/dest/simulators/index.d.ts +1 -1
  163. package/dest/simulators/lending_simulator.d.ts +11 -4
  164. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  165. package/dest/simulators/lending_simulator.js +33 -19
  166. package/dest/simulators/token_simulator.d.ts +1 -1
  167. package/dest/simulators/token_simulator.d.ts.map +1 -1
  168. package/dest/simulators/token_simulator.js +3 -24
  169. package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts +75 -0
  170. package/dest/single-node/cross-chain/cross_chain_messaging_test.d.ts.map +1 -0
  171. package/dest/single-node/cross-chain/cross_chain_messaging_test.js +209 -0
  172. package/dest/single-node/cross-chain/message_test_helpers.d.ts +38 -0
  173. package/dest/single-node/cross-chain/message_test_helpers.d.ts.map +1 -0
  174. package/dest/single-node/cross-chain/message_test_helpers.js +70 -0
  175. package/dest/single-node/fees/bridging_race.notest.d.ts +2 -0
  176. package/dest/single-node/fees/bridging_race.notest.d.ts.map +1 -0
  177. package/dest/{e2e_fees → single-node/fees}/bridging_race.notest.js +21 -10
  178. package/dest/single-node/fees/fees_test.d.ts +93 -0
  179. package/dest/single-node/fees/fees_test.d.ts.map +1 -0
  180. package/dest/single-node/fees/fees_test.js +274 -0
  181. package/dest/single-node/l1-reorgs/setup.d.ts +42 -0
  182. package/dest/single-node/l1-reorgs/setup.d.ts.map +1 -0
  183. package/dest/single-node/l1-reorgs/setup.js +57 -0
  184. package/dest/single-node/partial-proofs/setup.d.ts +5 -0
  185. package/dest/single-node/partial-proofs/setup.d.ts.map +1 -0
  186. package/dest/single-node/partial-proofs/setup.js +5 -0
  187. package/dest/single-node/proving/setup.d.ts +5 -0
  188. package/dest/single-node/proving/setup.d.ts.map +1 -0
  189. package/dest/single-node/proving/setup.js +5 -0
  190. package/dest/single-node/recovery/setup.d.ts +5 -0
  191. package/dest/single-node/recovery/setup.d.ts.map +1 -0
  192. package/dest/single-node/recovery/setup.js +5 -0
  193. package/dest/single-node/setup.d.ts +49 -0
  194. package/dest/single-node/setup.d.ts.map +1 -0
  195. package/dest/single-node/setup.js +56 -0
  196. package/dest/single-node/single_node_test_context.d.ts +360 -0
  197. package/dest/single-node/single_node_test_context.d.ts.map +1 -0
  198. package/dest/single-node/single_node_test_context.js +833 -0
  199. package/dest/spartan/setup_test_wallets.d.ts +18 -6
  200. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  201. package/dest/spartan/setup_test_wallets.js +169 -30
  202. package/dest/spartan/tx_metrics.d.ts +111 -0
  203. package/dest/spartan/tx_metrics.d.ts.map +1 -0
  204. package/dest/spartan/tx_metrics.js +507 -0
  205. package/dest/spartan/utils/bot.d.ts +28 -0
  206. package/dest/spartan/utils/bot.d.ts.map +1 -0
  207. package/dest/spartan/utils/bot.js +142 -0
  208. package/dest/spartan/utils/chaos.d.ts +79 -0
  209. package/dest/spartan/utils/chaos.d.ts.map +1 -0
  210. package/dest/spartan/utils/chaos.js +142 -0
  211. package/dest/spartan/utils/clients.d.ts +39 -0
  212. package/dest/spartan/utils/clients.d.ts.map +1 -0
  213. package/dest/spartan/utils/clients.js +90 -0
  214. package/dest/spartan/utils/config.d.ts +19 -0
  215. package/dest/spartan/utils/config.d.ts.map +1 -0
  216. package/dest/spartan/utils/config.js +23 -0
  217. package/dest/spartan/utils/health.d.ts +63 -0
  218. package/dest/spartan/utils/health.d.ts.map +1 -0
  219. package/dest/spartan/utils/health.js +202 -0
  220. package/dest/spartan/utils/helm.d.ts +15 -0
  221. package/dest/spartan/utils/helm.d.ts.map +1 -0
  222. package/dest/spartan/utils/helm.js +47 -0
  223. package/dest/spartan/utils/index.d.ts +11 -0
  224. package/dest/spartan/utils/index.d.ts.map +1 -0
  225. package/dest/spartan/utils/index.js +22 -0
  226. package/dest/spartan/utils/k8s.d.ts +128 -0
  227. package/dest/spartan/utils/k8s.d.ts.map +1 -0
  228. package/dest/spartan/utils/k8s.js +381 -0
  229. package/dest/spartan/utils/nodes.d.ts +40 -0
  230. package/dest/spartan/utils/nodes.d.ts.map +1 -0
  231. package/dest/spartan/utils/nodes.js +461 -0
  232. package/dest/spartan/utils/pod_logs.d.ts +25 -0
  233. package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
  234. package/dest/spartan/utils/pod_logs.js +74 -0
  235. package/dest/spartan/utils/scripts.d.ts +30 -0
  236. package/dest/spartan/utils/scripts.d.ts.map +1 -0
  237. package/dest/spartan/utils/scripts.js +81 -0
  238. package/dest/spartan/utils.d.ts +2 -218
  239. package/dest/spartan/utils.d.ts.map +1 -1
  240. package/dest/spartan/utils.js +1 -749
  241. package/dest/test-wallet/test_wallet.d.ts +105 -0
  242. package/dest/test-wallet/test_wallet.d.ts.map +1 -0
  243. package/dest/test-wallet/test_wallet.js +323 -0
  244. package/dest/test-wallet/utils.d.ts +76 -0
  245. package/dest/test-wallet/utils.d.ts.map +1 -0
  246. package/dest/test-wallet/utils.js +126 -0
  247. package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
  248. package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
  249. package/dest/test-wallet/wallet_worker_script.js +56 -0
  250. package/dest/test-wallet/worker_wallet.d.ts +53 -0
  251. package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
  252. package/dest/test-wallet/worker_wallet.js +155 -0
  253. package/dest/test-wallet/worker_wallet_schema.d.ts +4 -0
  254. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
  255. package/dest/test-wallet/worker_wallet_schema.js +22 -0
  256. package/package.json +57 -47
  257. package/src/automine/README.md +60 -0
  258. package/src/automine/automine_test_context.ts +153 -0
  259. package/src/automine/contracts/fixtures/storage_proof.json +915 -0
  260. package/src/automine/contracts/fixtures/storage_proof_fetcher.ts +190 -0
  261. package/src/automine/contracts/fixtures/storage_proof_fixture.ts +173 -0
  262. package/src/automine/delivery/onchain_delivery_harness.ts +177 -0
  263. package/src/automine/token/blacklist_token_contract_test.ts +208 -0
  264. package/src/automine/token/token_contract_test.ts +146 -0
  265. package/src/automine/token/token_test_helpers.ts +138 -0
  266. package/src/bench/client_flows/benchmark.ts +45 -2
  267. package/src/bench/client_flows/client_flows_benchmark.ts +227 -211
  268. package/src/bench/client_flows/config.ts +9 -1
  269. package/src/bench/client_flows/data_extractor.ts +7 -28
  270. package/src/bench/utils.ts +144 -25
  271. package/src/composed/ha/ha_full_setup.ts +466 -0
  272. package/src/{e2e_multi_validator/utils.ts → composed/web3signer/multi_validator_keystore_utils.ts} +1 -1
  273. package/src/fixtures/authwit_proxy.ts +54 -0
  274. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  275. package/src/fixtures/e2e_prover_test.ts +175 -214
  276. package/src/fixtures/elu_monitor.ts +126 -0
  277. package/src/fixtures/fixtures.ts +110 -5
  278. package/src/fixtures/get_acvm_config.ts +1 -1
  279. package/src/fixtures/get_bb_config.ts +7 -6
  280. package/src/fixtures/ha_setup.ts +192 -0
  281. package/src/fixtures/index.ts +2 -0
  282. package/src/fixtures/l1_to_l2_messaging.ts +4 -2
  283. package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
  284. package/src/fixtures/setup.ts +987 -0
  285. package/src/fixtures/setup_p2p_test.ts +72 -58
  286. package/src/fixtures/timing.ts +97 -0
  287. package/src/fixtures/token_utils.ts +47 -11
  288. package/src/fixtures/utils.ts +26 -947
  289. package/src/fixtures/wait_helpers.ts +333 -0
  290. package/src/fixtures/web3signer.ts +1 -1
  291. package/src/fixtures/with_telemetry_utils.ts +2 -2
  292. package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
  293. package/src/forward-compatibility/wallet_service.ts +106 -0
  294. package/src/guides/up_quick_start.sh +8 -5
  295. package/src/infra/README.md +12 -0
  296. package/src/install_legacy_contracts.cjs +75 -0
  297. package/src/legacy-jest-resolver.cjs +112 -0
  298. package/src/multi-node/README.md +95 -0
  299. package/src/multi-node/block-production/setup.ts +272 -0
  300. package/src/multi-node/governance/setup.ts +172 -0
  301. package/src/multi-node/multi_node_test_context.ts +447 -0
  302. package/src/multi-node/slashing/inactivity_setup.ts +139 -0
  303. package/src/multi-node/slashing/setup.ts +433 -0
  304. package/src/p2p/README.md +78 -0
  305. package/src/p2p/p2p_network.ts +542 -0
  306. package/src/p2p/reqresp/utils.ts +263 -0
  307. package/src/p2p/shared.ts +329 -0
  308. package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +1 -1
  309. package/src/quality_of_service/prometheus_client.ts +113 -0
  310. package/src/shared/cross_chain_test_harness.ts +51 -43
  311. package/src/shared/gas_portal_test_harness.ts +36 -18
  312. package/src/shared/index.ts +2 -1
  313. package/src/shared/jest_setup.ts +51 -1
  314. package/src/shared/mock_state_view.ts +188 -0
  315. package/src/shared/submit-transactions.ts +22 -19
  316. package/src/shared/timing_env.d.mts +39 -0
  317. package/src/shared/timing_env.mjs +363 -0
  318. package/src/shared/uniswap_l1_l2.ts +136 -115
  319. package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
  320. package/src/simulators/lending_simulator.ts +40 -20
  321. package/src/simulators/token_simulator.ts +6 -30
  322. package/src/single-node/README.md +60 -0
  323. package/src/single-node/cross-chain/cross_chain_messaging_test.ts +302 -0
  324. package/src/single-node/cross-chain/message_test_helpers.ts +125 -0
  325. package/src/{e2e_fees → single-node/fees}/bridging_race.notest.ts +23 -15
  326. package/src/single-node/fees/fees_test.ts +368 -0
  327. package/src/single-node/l1-reorgs/setup.ts +93 -0
  328. package/src/single-node/partial-proofs/setup.ts +8 -0
  329. package/src/single-node/proving/setup.ts +15 -0
  330. package/src/single-node/recovery/setup.ts +8 -0
  331. package/src/single-node/setup.ts +63 -0
  332. package/src/single-node/single_node_test_context.ts +1041 -0
  333. package/src/spartan/DEVELOP.md +7 -0
  334. package/src/spartan/setup_test_wallets.ts +243 -32
  335. package/src/spartan/tx_metrics.ts +460 -0
  336. package/src/spartan/utils/bot.ts +188 -0
  337. package/src/spartan/utils/chaos.ts +253 -0
  338. package/src/spartan/utils/clients.ts +100 -0
  339. package/src/spartan/utils/config.ts +29 -0
  340. package/src/spartan/utils/health.ts +255 -0
  341. package/src/spartan/utils/helm.ts +84 -0
  342. package/src/spartan/utils/index.ts +71 -0
  343. package/src/spartan/utils/k8s.ts +535 -0
  344. package/src/spartan/utils/nodes.ts +543 -0
  345. package/src/spartan/utils/pod_logs.ts +99 -0
  346. package/src/spartan/utils/scripts.ts +99 -0
  347. package/src/spartan/utils.ts +1 -942
  348. package/src/test-wallet/test_wallet.ts +429 -0
  349. package/src/test-wallet/utils.ts +205 -0
  350. package/src/test-wallet/wallet_worker_script.ts +66 -0
  351. package/src/test-wallet/worker_wallet.ts +214 -0
  352. package/src/test-wallet/worker_wallet_schema.ts +14 -0
  353. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +0 -54
  354. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +0 -1
  355. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +0 -185
  356. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +0 -41
  357. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +0 -1
  358. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +0 -107
  359. package/dest/e2e_deploy_contract/deploy_test.d.ts +0 -36
  360. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +0 -1
  361. package/dest/e2e_deploy_contract/deploy_test.js +0 -45
  362. package/dest/e2e_epochs/epochs_test.d.ts +0 -92
  363. package/dest/e2e_epochs/epochs_test.d.ts.map +0 -1
  364. package/dest/e2e_epochs/epochs_test.js +0 -336
  365. package/dest/e2e_fees/bridging_race.notest.d.ts +0 -2
  366. package/dest/e2e_fees/bridging_race.notest.d.ts.map +0 -1
  367. package/dest/e2e_fees/fees_test.d.ts +0 -84
  368. package/dest/e2e_fees/fees_test.d.ts.map +0 -1
  369. package/dest/e2e_fees/fees_test.js +0 -260
  370. package/dest/e2e_l1_publisher/write_json.d.ts +0 -10
  371. package/dest/e2e_l1_publisher/write_json.d.ts.map +0 -1
  372. package/dest/e2e_l1_publisher/write_json.js +0 -57
  373. package/dest/e2e_multi_validator/utils.d.ts +0 -12
  374. package/dest/e2e_multi_validator/utils.d.ts.map +0 -1
  375. package/dest/e2e_nested_contract/nested_contract_test.d.ts +0 -29
  376. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +0 -1
  377. package/dest/e2e_nested_contract/nested_contract_test.js +0 -63
  378. package/dest/e2e_p2p/inactivity_slash_test.d.ts +0 -31
  379. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +0 -1
  380. package/dest/e2e_p2p/inactivity_slash_test.js +0 -135
  381. package/dest/e2e_p2p/p2p_network.d.ts +0 -108
  382. package/dest/e2e_p2p/p2p_network.d.ts.map +0 -1
  383. package/dest/e2e_p2p/p2p_network.js +0 -318
  384. package/dest/e2e_p2p/shared.d.ts +0 -46
  385. package/dest/e2e_p2p/shared.d.ts.map +0 -1
  386. package/dest/e2e_p2p/shared.js +0 -183
  387. package/dest/e2e_token_contract/token_contract_test.d.ts +0 -35
  388. package/dest/e2e_token_contract/token_contract_test.d.ts.map +0 -1
  389. package/dest/e2e_token_contract/token_contract_test.js +0 -126
  390. package/dest/fixtures/setup_l1_contracts.d.ts +0 -6
  391. package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
  392. package/dest/fixtures/setup_l1_contracts.js +0 -17
  393. package/dest/fixtures/snapshot_manager.d.ts +0 -95
  394. package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
  395. package/dest/fixtures/snapshot_manager.js +0 -505
  396. package/dest/quality_of_service/alert_checker.d.ts +0 -41
  397. package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
  398. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +0 -256
  399. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +0 -178
  400. package/src/e2e_deploy_contract/deploy_test.ts +0 -78
  401. package/src/e2e_epochs/epochs_test.ts +0 -437
  402. package/src/e2e_fees/fees_test.ts +0 -378
  403. package/src/e2e_l1_publisher/write_json.ts +0 -76
  404. package/src/e2e_nested_contract/nested_contract_test.ts +0 -95
  405. package/src/e2e_p2p/inactivity_slash_test.ts +0 -178
  406. package/src/e2e_p2p/p2p_network.ts +0 -472
  407. package/src/e2e_p2p/shared.ts +0 -282
  408. package/src/e2e_token_contract/token_contract_test.ts +0 -167
  409. package/src/fixtures/setup_l1_contracts.ts +0 -26
  410. package/src/fixtures/snapshot_manager.ts +0 -665
@@ -1,36 +1,39 @@
1
- import { AztecAddress } from '@aztec/aztec.js/addresses';
1
+ import { NO_FROM } from '@aztec/aztec.js/account';
2
2
  import { FeeJuicePaymentMethodWithClaim } from '@aztec/aztec.js/fee';
3
3
  import { PrivateFeePaymentMethod, SponsoredFeePaymentMethod } from '@aztec/aztec.js/fee';
4
4
  import { createLogger } from '@aztec/aztec.js/log';
5
- import { RollupContract, createExtendedL1Client, deployL1Contract } from '@aztec/ethereum';
5
+ import { getTokenAllowedSetupFunctions } from '@aztec/aztec/testing';
6
+ import { createExtendedL1Client } from '@aztec/ethereum/client';
7
+ import { RollupContract } from '@aztec/ethereum/contracts';
8
+ import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
6
9
  import { ChainMonitor } from '@aztec/ethereum/test';
7
- import { randomBytes } from '@aztec/foundation/crypto';
10
+ import { randomBytes } from '@aztec/foundation/crypto/random';
11
+ import { Fr } from '@aztec/foundation/curves/bn254';
8
12
  import { EthAddress } from '@aztec/foundation/eth-address';
9
- import { Fr } from '@aztec/foundation/fields';
10
13
  import { TestERC20Abi } from '@aztec/l1-artifacts/TestERC20Abi';
11
14
  import { TestERC20Bytecode } from '@aztec/l1-artifacts/TestERC20Bytecode';
12
15
  import { AMMContract } from '@aztec/noir-contracts.js/AMM';
13
16
  import { FPCContract } from '@aztec/noir-contracts.js/FPC';
14
17
  import { FeeJuiceContract } from '@aztec/noir-contracts.js/FeeJuice';
15
18
  import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC';
16
- import { TokenContract as BananaCoin, TokenContract } from '@aztec/noir-contracts.js/Token';
19
+ import { TestTokenContract as BananaCoin, TestTokenContract } from '@aztec/noir-test-contracts.js/TestToken';
17
20
  import { ProtocolContractAddress } from '@aztec/protocol-contracts';
18
21
  import { getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
19
22
  import { getPXEConfig } from '@aztec/pxe/server';
20
- import { GasSettings } from '@aztec/stdlib/gas';
23
+ import { Gas, GasSettings } from '@aztec/stdlib/gas';
21
24
  import { deriveSigningKey } from '@aztec/stdlib/keys';
22
- import { TestWallet } from '@aztec/test-wallet/server';
23
- import { MNEMONIC } from '../../fixtures/fixtures.js';
24
- import { createSnapshotManager, deployAccounts } from '../../fixtures/snapshot_manager.js';
25
+ import { AppTaggingSecretKind } from '@aztec/stdlib/logs';
26
+ import { AUTOMINE_E2E_OPTS, L1_DIRECT_WRITE_ACCOUNT_INDEX, MNEMONIC, getPaddedMaxFeesPerGas } from '../../fixtures/fixtures.js';
27
+ import { setup, teardown } from '../../fixtures/setup.js';
25
28
  import { mintTokensToPrivate } from '../../fixtures/token_utils.js';
26
29
  import { setupSponsoredFPC } from '../../fixtures/utils.js';
27
30
  import { CrossChainTestHarness } from '../../shared/cross_chain_test_harness.js';
28
31
  import { FeeJuicePortalTestingHarnessFactory } from '../../shared/gas_portal_test_harness.js';
32
+ import { TestWallet } from '../../test-wallet/test_wallet.js';
29
33
  import { ProxyLogger } from './benchmark.js';
30
34
  import { FULL_FLOWS_CONFIG, KEY_FLOWS_CONFIG } from './config.js';
31
- const { E2E_DATA_PATH: dataPath, BENCHMARK_CONFIG } = process.env;
35
+ const { BENCHMARK_CONFIG } = process.env;
32
36
  export class ClientFlowsBenchmark {
33
- snapshotManager;
34
37
  logger;
35
38
  aztecNode;
36
39
  cheatCodes;
@@ -47,88 +50,111 @@ export class ClientFlowsBenchmark {
47
50
  feeJuiceContract;
48
51
  // Asset in which fees are paid via FPC
49
52
  bananaCoin;
53
+ bananaCoinInstance;
50
54
  bananaFPC;
55
+ bananaFPCInstance;
51
56
  // Random asset we want to trade
52
57
  candyBarCoin;
58
+ candyBarCoinInstance;
53
59
  // AMM contract
54
60
  amm;
61
+ ammInstance;
55
62
  // Liquidity token for AMM
56
63
  liquidityToken;
64
+ liquidityTokenInstance;
57
65
  // Sponsored FPC contract
58
66
  sponsoredFPC;
67
+ sponsoredFPCInstance;
59
68
  // PXE and Wallet used by the benchmarking user. It can be set up with client-side proving enabled
60
69
  userWallet;
61
70
  realProofs = [
62
71
  'true',
63
72
  '1'
64
73
  ].includes(process.env.REAL_PROOFS ?? '');
74
+ // `apps` is the number of private function calls contributed by this payment method.
75
+ // Each app produces one execution step at proving time; the orchestrator additionally produces
76
+ // one kernel step per batch of N apps (see `expectedExecutionSteps` in `benchmark.ts`).
65
77
  paymentMethods = {
66
78
  // eslint-disable-next-line camelcase
67
79
  bridged_fee_juice: {
68
80
  forWallet: this.getBridgedFeeJuicePaymentMethodForWallet.bind(this),
69
- circuits: 2
81
+ apps: 1
70
82
  },
71
83
  // eslint-disable-next-line camelcase
72
84
  private_fpc: {
73
85
  forWallet: this.getPrivateFPCPaymentMethodForWallet.bind(this),
74
- circuits: 2 + // FPC entrypoint + kernel inner
75
- 2 + // BananaCoin transfer_to_public + kernel inner
76
- 2 + // Account verify_private_authwit + kernel inner
77
- 2
86
+ apps: 1 + // FPC entrypoint
87
+ 1 + // BananaCoin transfer_to_public
88
+ 1 + // Account verify_private_authwit
89
+ 1
78
90
  },
79
91
  // eslint-disable-next-line camelcase
80
92
  sponsored_fpc: {
81
93
  forWallet: this.getSponsoredFPCPaymentMethodForWallet.bind(this),
82
- circuits: 2
94
+ apps: 1
83
95
  },
84
96
  // eslint-disable-next-line camelcase
85
97
  fee_juice: {
86
98
  forWallet: ()=>Promise.resolve(undefined),
87
- circuits: 0
99
+ apps: 0
88
100
  }
89
101
  };
90
102
  config;
91
103
  proxyLogger;
104
+ setupOptions;
92
105
  constructor(testName, setupOptions = {}){
93
106
  this.logger = createLogger(`bench:client_flows${testName ? `:${testName}` : ''}`);
94
- this.snapshotManager = createSnapshotManager(`bench_client_flows${testName ? `/${testName}` : ''}`, dataPath, {
107
+ this.setupOptions = {
108
+ ...AUTOMINE_E2E_OPTS,
95
109
  startProverNode: true,
96
110
  ...setupOptions
97
- }, {
98
- ...setupOptions
99
- });
111
+ };
100
112
  this.config = BENCHMARK_CONFIG === 'key_flows' ? KEY_FLOWS_CONFIG : FULL_FLOWS_CONFIG;
101
113
  ProxyLogger.create();
102
114
  this.proxyLogger = ProxyLogger.getInstance();
103
115
  }
104
116
  async setup() {
105
- const context = await this.snapshotManager.setup();
106
- await context.aztecNode.setConfig({
117
+ this.logger.info('Setting up subsystems from fresh');
118
+ // Token allowlist entries are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
119
+ // BananaCoin is the codegen'd TestToken here, so the allowlist must key on its class, not canonical Token's.
120
+ const tokenAllowList = await getTokenAllowedSetupFunctions(BananaCoin.artifact);
121
+ this.context = await setup(2, {
122
+ ...this.setupOptions,
123
+ fundSponsoredFPC: true,
124
+ l1ContractsArgs: this.setupOptions,
125
+ txPublicSetupAllowListExtend: [
126
+ ...this.setupOptions.txPublicSetupAllowListExtend ?? [],
127
+ ...tokenAllowList
128
+ ]
129
+ });
130
+ await this.applyBaseSetup();
131
+ await this.context.aztecNodeService.setConfig({
107
132
  feeRecipient: this.sequencerAddress,
108
133
  coinbase: this.coinbase
109
134
  });
110
- const rollupContract = RollupContract.getFromConfig(context.aztecNodeConfig);
111
- this.chainMonitor = new ChainMonitor(rollupContract, context.dateProvider, this.logger, 200).start();
135
+ const rollupContract = RollupContract.getFromConfig(this.context.config);
136
+ this.chainMonitor = new ChainMonitor(rollupContract, this.context.dateProvider, this.logger, 200).start();
112
137
  return this;
113
138
  }
114
139
  async teardown() {
115
140
  await this.chainMonitor.stop();
116
- await this.snapshotManager.teardown();
141
+ await this.userWallet?.stop();
142
+ await teardown(this.context);
117
143
  }
118
144
  async mintAndBridgeFeeJuice(address) {
119
145
  const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(address);
120
146
  const { claimSecret: secret, messageLeafIndex: index } = claim;
121
147
  await this.feeJuiceContract.methods.claim(address, claim.claimAmount, secret, index).send({
122
148
  from: this.adminAddress
123
- }).wait();
149
+ });
124
150
  }
125
151
  /** Admin mints bananaCoin tokens privately to the target address and redeems them. */ async mintPrivateBananas(amount, address) {
126
- const balanceBefore = await this.bananaCoin.methods.balance_of_private(address).simulate({
127
- from: this.adminAddress
152
+ const { result: balanceBefore } = await this.bananaCoin.methods.balance_of_private(address).simulate({
153
+ from: address
128
154
  });
129
155
  await mintTokensToPrivate(this.bananaCoin, this.adminAddress, address, amount);
130
- const balanceAfter = await this.bananaCoin.methods.balance_of_private(address).simulate({
131
- from: this.adminAddress
156
+ const { result: balanceAfter } = await this.bananaCoin.methods.balance_of_private(address).simulate({
157
+ from: address
132
158
  });
133
159
  expect(balanceAfter).toEqual(balanceBefore + amount);
134
160
  }
@@ -146,101 +172,97 @@ export class ClientFlowsBenchmark {
146
172
  throw new Error(`Unknown account type: ${type}`);
147
173
  }
148
174
  }
149
- async applyBaseSnapshots() {
150
- await this.applyInitialAccountsSnapshot();
151
- await this.applySetupFeeJuiceSnapshot();
175
+ async applyBaseSetup() {
176
+ await this.applyInitialAccounts();
177
+ await this.applySetupFeeJuice();
152
178
  }
153
- async applyInitialAccountsSnapshot() {
154
- await this.snapshotManager.snapshot('initial_accounts', deployAccounts(2, this.logger), async ({ deployedAccounts: [{ address: adminAddress }, { address: sequencerAddress }] }, { wallet, aztecNode, cheatCodes })=>{
155
- this.adminWallet = wallet;
156
- this.aztecNode = aztecNode;
157
- this.cheatCodes = cheatCodes;
158
- this.adminAddress = adminAddress;
159
- this.sequencerAddress = sequencerAddress;
160
- const canonicalFeeJuice = await getCanonicalFeeJuice();
161
- this.feeJuiceContract = await FeeJuiceContract.at(canonicalFeeJuice.address, this.adminWallet);
162
- this.coinbase = EthAddress.random();
163
- const userPXEConfig = getPXEConfig();
164
- const userPXEConfigWithContracts = {
165
- ...userPXEConfig,
166
- proverEnabled: this.realProofs
167
- };
168
- this.userWallet = await TestWallet.create(this.aztecNode, userPXEConfigWithContracts, {
169
- loggers: {
170
- prover: this.proxyLogger.createLogger('pxe:bb:wasm:bundle:proxied')
171
- }
172
- });
179
+ async applyInitialAccounts() {
180
+ this.logger.info('Applying initial accounts setup');
181
+ const [adminAddress, sequencerAddress] = this.context.accounts;
182
+ this.adminWallet = this.context.wallet;
183
+ this.aztecNode = this.context.aztecNodeService;
184
+ this.cheatCodes = this.context.cheatCodes;
185
+ this.adminAddress = adminAddress;
186
+ this.sequencerAddress = sequencerAddress;
187
+ const canonicalFeeJuice = await getCanonicalFeeJuice();
188
+ this.feeJuiceContract = FeeJuiceContract.at(canonicalFeeJuice.address, this.adminWallet);
189
+ this.coinbase = EthAddress.random();
190
+ const userPXEConfig = getPXEConfig();
191
+ const userPXEConfigWithContracts = {
192
+ ...userPXEConfig,
193
+ proverEnabled: this.realProofs
194
+ };
195
+ this.userWallet = await TestWallet.create(this.aztecNode, userPXEConfigWithContracts, {
196
+ loggers: {
197
+ prover: this.proxyLogger.createLogger('pxe:bb:wasm:bundle:proxied')
198
+ },
199
+ // The benchmark measures steady-state app cost, not first-send discovery cost. Reproduce the pre-handshake-default
200
+ // behavior of unconstrained delivery: derive the tagging secret from the (sender, recipient) key pair via ECDH
201
+ // instead of taking the current default (a non-interactive handshake, which injects two extra private app
202
+ // executions and a nullifier per cold chain). Constrained delivery is unaffected: the Noir circuit rejects
203
+ // address-derived for constrained, so the hook falls through to a handshake there.
204
+ hooks: {
205
+ resolveTaggingSecretStrategy: ({ deliveryMode })=>Promise.resolve(deliveryMode === AppTaggingSecretKind.UNCONSTRAINED ? {
206
+ type: 'address-derived'
207
+ } : {
208
+ type: 'non-interactive-handshake'
209
+ })
210
+ }
173
211
  });
174
212
  }
175
- async applySetupFeeJuiceSnapshot() {
176
- await this.snapshotManager.snapshot('setup_fee_juice', async ()=>{}, async (_data, context)=>{
177
- this.context = context;
178
- this.feeJuiceContract = await FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.adminWallet);
179
- this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
180
- aztecNode: context.aztecNode,
181
- aztecNodeAdmin: context.aztecNode,
182
- l1Client: context.deployL1ContractsValues.l1Client,
183
- wallet: this.adminWallet,
184
- logger: this.logger
185
- });
213
+ async applySetupFeeJuice() {
214
+ this.logger.info('Applying fee juice setup');
215
+ this.feeJuiceContract = FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.adminWallet);
216
+ this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
217
+ aztecNode: this.context.aztecNodeService,
218
+ aztecNodeAdmin: this.context.aztecNodeService,
219
+ // Bridge from a dedicated L1 account so its direct writes don't race the sequencer publisher's
220
+ // txs on the deployer account (see L1_DIRECT_WRITE_ACCOUNT_INDEX).
221
+ l1Client: createExtendedL1Client(this.context.config.l1RpcUrls, MNEMONIC, undefined, undefined, L1_DIRECT_WRITE_ACCOUNT_INDEX),
222
+ wallet: this.adminWallet,
223
+ logger: this.logger
186
224
  });
187
225
  }
188
- async applyDeployBananaTokenSnapshot() {
189
- await this.snapshotManager.snapshot('deploy_banana_token', async ()=>{
190
- const bananaCoin = await BananaCoin.deploy(this.adminWallet, this.adminAddress, 'BC', 'BC', 18n).send({
191
- from: this.adminAddress
192
- }).deployed();
193
- this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
194
- return {
195
- bananaCoinAddress: bananaCoin.address
196
- };
197
- }, async ({ bananaCoinAddress })=>{
198
- this.bananaCoin = await BananaCoin.at(bananaCoinAddress, this.adminWallet);
226
+ async applyDeployBananaToken() {
227
+ this.logger.info('Applying banana token deployment');
228
+ const { contract: bananaCoin, instance: bananaCoinInstance } = await BananaCoin.deploy(this.adminWallet, this.adminAddress, 'BC', 'BC', 18n).send({
229
+ from: this.adminAddress
199
230
  });
231
+ this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
232
+ this.bananaCoin = bananaCoin;
233
+ this.bananaCoinInstance = bananaCoinInstance;
200
234
  }
201
- async applyDeployCandyBarTokenSnapshot() {
202
- await this.snapshotManager.snapshot('deploy_candy_bar_token', async ()=>{
203
- const candyBarCoin = await TokenContract.deploy(this.adminWallet, this.adminAddress, 'CBC', 'CBC', 18n).send({
204
- from: this.adminAddress
205
- }).deployed();
206
- this.logger.info(`CandyBarCoin deployed at ${candyBarCoin.address}`);
207
- return {
208
- candyBarCoinAddress: candyBarCoin.address
209
- };
210
- }, async ({ candyBarCoinAddress })=>{
211
- this.candyBarCoin = await TokenContract.at(candyBarCoinAddress, this.adminWallet);
235
+ async applyDeployCandyBarToken() {
236
+ this.logger.info('Applying candy bar token deployment');
237
+ const { contract: candyBarCoin, instance: candyBarCoinInstance } = await TestTokenContract.deploy(this.adminWallet, this.adminAddress, 'CBC', 'CBC', 18n).send({
238
+ from: this.adminAddress
212
239
  });
240
+ this.logger.info(`CandyBarCoin deployed at ${candyBarCoin.address}`);
241
+ this.candyBarCoin = candyBarCoin;
242
+ this.candyBarCoinInstance = candyBarCoinInstance;
213
243
  }
214
- async applyFPCSetupSnapshot() {
215
- await this.snapshotManager.snapshot('fpc_setup', async (context)=>{
216
- const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
217
- expect((await context.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
218
- const bananaCoin = this.bananaCoin;
219
- const bananaFPC = await FPCContract.deploy(this.adminWallet, bananaCoin.address, this.adminAddress).send({
220
- from: this.adminAddress
221
- }).deployed();
222
- this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
223
- await this.feeJuiceBridgeTestHarness.bridgeFromL1ToL2(bananaFPC.address, this.adminAddress);
224
- return {
225
- bananaFPCAddress: bananaFPC.address
226
- };
227
- }, async (data)=>{
228
- this.bananaFPC = await FPCContract.at(data.bananaFPCAddress, this.adminWallet);
244
+ async applyFPCSetup() {
245
+ this.logger.info('Applying FPC setup');
246
+ const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
247
+ expect((await this.context.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
248
+ const bananaCoin = this.bananaCoin;
249
+ const { contract: bananaFPC, instance: bananaFPCInstance } = await FPCContract.deploy(this.adminWallet, bananaCoin.address, this.adminAddress).send({
250
+ from: this.adminAddress
229
251
  });
252
+ this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
253
+ await this.feeJuiceBridgeTestHarness.bridgeFromL1ToL2(bananaFPC.address, this.adminAddress);
254
+ this.bananaFPC = bananaFPC;
255
+ this.bananaFPCInstance = bananaFPCInstance;
230
256
  }
231
- async applyDeploySponsoredFPCSnapshot() {
232
- await this.snapshotManager.snapshot('deploy_sponsored_fpc', async ()=>{
233
- const sponsoredFPC = await setupSponsoredFPC(this.adminWallet);
234
- this.logger.info(`SponsoredFPC at ${sponsoredFPC.address}`);
235
- return {
236
- sponsoredFPCAddress: sponsoredFPC.address
237
- };
238
- }, async ({ sponsoredFPCAddress })=>{
239
- this.sponsoredFPC = await SponsoredFPCContract.at(sponsoredFPCAddress, this.adminWallet);
240
- });
257
+ async applyDeploySponsoredFPC() {
258
+ this.logger.info('Applying sponsored FPC deployment');
259
+ const sponsoredFPCInstance = await setupSponsoredFPC(this.adminWallet);
260
+ this.logger.info(`SponsoredFPC at ${sponsoredFPCInstance.address}`);
261
+ this.sponsoredFPC = SponsoredFPCContract.at(sponsoredFPCInstance.address, this.adminWallet);
262
+ this.sponsoredFPCInstance = sponsoredFPCInstance;
241
263
  }
242
264
  async createCrossChainTestHarness(owner) {
243
- const l1Client = createExtendedL1Client(this.context.aztecNodeConfig.l1RpcUrls, MNEMONIC);
265
+ const l1Client = createExtendedL1Client(this.context.config.l1RpcUrls, MNEMONIC);
244
266
  const underlyingERC20Address = await deployL1Contract(l1Client, TestERC20Abi, TestERC20Bytecode, [
245
267
  'Underlying',
246
268
  'UND',
@@ -253,44 +275,39 @@ export class ClientFlowsBenchmark {
253
275
  }
254
276
  async createAndFundBenchmarkingAccountOnUserWallet(accountType) {
255
277
  const benchysAccountManager = await this.createBenchmarkingAccountManager(this.adminWallet, accountType);
256
- const benchysAccount = await benchysAccountManager.getAccount();
257
278
  const benchysAddress = benchysAccountManager.address;
258
279
  const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(benchysAddress);
259
280
  const behchysDeployMethod = await benchysAccountManager.getDeployMethod();
260
281
  await behchysDeployMethod.send({
261
- from: AztecAddress.ZERO,
282
+ from: NO_FROM,
262
283
  fee: {
263
284
  paymentMethod: new FeeJuicePaymentMethodWithClaim(benchysAddress, claim)
264
285
  }
265
- }).wait();
286
+ });
266
287
  // Register benchy on the user's Wallet, where we're going to be interacting from
267
288
  const accountManager = await this.userWallet.createAccount({
268
- secret: benchysAccount.getSecretKey(),
269
- salt: new Fr(benchysAccount.salt),
289
+ secret: benchysAccountManager.getSecretKey(),
290
+ salt: new Fr(benchysAccountManager.getInstance().salt),
270
291
  contract: benchysAccountManager.getAccountContract()
271
292
  });
272
293
  return accountManager.address;
273
294
  }
274
- async applyDeployAmmSnapshot() {
275
- await this.snapshotManager.snapshot('deploy_amm', async ()=>{
276
- const liquidityToken = await TokenContract.deploy(this.adminWallet, this.adminAddress, 'LPT', 'LPT', 18n).send({
277
- from: this.adminAddress
278
- }).deployed();
279
- const amm = await AMMContract.deploy(this.adminWallet, this.bananaCoin.address, this.candyBarCoin.address, liquidityToken.address).send({
280
- from: this.adminAddress
281
- }).deployed();
282
- this.logger.info(`AMM deployed at ${amm.address}`);
283
- await liquidityToken.methods.set_minter(amm.address, true).send({
284
- from: this.adminAddress
285
- }).wait();
286
- return {
287
- ammAddress: amm.address,
288
- liquidityTokenAddress: liquidityToken.address
289
- };
290
- }, async ({ ammAddress, liquidityTokenAddress })=>{
291
- this.liquidityToken = await TokenContract.at(liquidityTokenAddress, this.adminWallet);
292
- this.amm = await AMMContract.at(ammAddress, this.adminWallet);
295
+ async applyDeployAmm() {
296
+ this.logger.info('Applying AMM deployment');
297
+ const { contract: liquidityToken, instance: liquidityTokenInstance } = await TestTokenContract.deploy(this.adminWallet, this.adminAddress, 'LPT', 'LPT', 18n).send({
298
+ from: this.adminAddress
299
+ });
300
+ const { contract: amm, instance: ammInstance } = await AMMContract.deploy(this.adminWallet, this.bananaCoin.address, this.candyBarCoin.address, liquidityToken.address).send({
301
+ from: this.adminAddress
302
+ });
303
+ this.logger.info(`AMM deployed at ${amm.address}`);
304
+ await liquidityToken.methods.set_minter(amm.address, true).send({
305
+ from: this.adminAddress
293
306
  });
307
+ this.liquidityToken = liquidityToken;
308
+ this.liquidityTokenInstance = liquidityTokenInstance;
309
+ this.amm = amm;
310
+ this.ammInstance = ammInstance;
294
311
  }
295
312
  async getBridgedFeeJuicePaymentMethodForWallet(_wallet, sender) {
296
313
  const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(sender);
@@ -299,8 +316,10 @@ export class ClientFlowsBenchmark {
299
316
  async getPrivateFPCPaymentMethodForWallet(wallet, sender) {
300
317
  // The private fee paying method assembled on the app side requires knowledge of the maximum
301
318
  // fee the user is willing to pay
302
- const maxFeesPerGas = (await this.aztecNode.getCurrentBaseFees()).mul(1.5);
303
- const gasSettings = GasSettings.default({
319
+ const maxFeesPerGas = await getPaddedMaxFeesPerGas(this.aztecNode);
320
+ const gasLimits = Gas.from((await this.aztecNode.getNodeInfo()).txsLimits.gas);
321
+ const gasSettings = GasSettings.fallback({
322
+ gasLimits,
304
323
  maxFeesPerGas
305
324
  });
306
325
  return new PrivateFeePaymentMethod(this.bananaFPC.address, sender, wallet, gasSettings);
@@ -4,11 +4,11 @@ export type ClientFlowConfig = {
4
4
  feePaymentMethods: BenchmarkingFeePaymentMethod[];
5
5
  recursions?: number[];
6
6
  };
7
- type ClientFlows = 'accountDeployments' | 'deployments' | 'transfers' | 'bridging' | 'amm';
7
+ type ClientFlows = 'accountDeployments' | 'deployments' | 'transfers' | 'bridging' | 'amm' | 'storageProof';
8
8
  export type ClientFlowsConfig = {
9
9
  [key in ClientFlows]: ClientFlowConfig;
10
10
  };
11
11
  export declare const KEY_FLOWS_CONFIG: ClientFlowsConfig;
12
12
  export declare const FULL_FLOWS_CONFIG: ClientFlowsConfig;
13
13
  export {};
14
- //# sourceMappingURL=config.d.ts.map
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmVuY2gvY2xpZW50X2Zsb3dzL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU3RixNQUFNLE1BQU0sZ0JBQWdCLEdBQUc7SUFDN0IsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLGlCQUFpQixFQUFFLDRCQUE0QixFQUFFLENBQUM7SUFDbEQsVUFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7Q0FDdkIsQ0FBQztBQUVGLEtBQUssV0FBVyxHQUFHLG9CQUFvQixHQUFHLGFBQWEsR0FBRyxXQUFXLEdBQUcsVUFBVSxHQUFHLEtBQUssR0FBRyxjQUFjLENBQUM7QUFFNUcsTUFBTSxNQUFNLGlCQUFpQixHQUFHO0tBQzdCLEdBQUcsSUFBSSxXQUFXLEdBQUcsZ0JBQWdCO0NBQ3ZDLENBQUM7QUFFRixlQUFPLE1BQU0sZ0JBQWdCLEVBQUUsaUJBMEI5QixDQUFDO0FBRUYsZUFBTyxNQUFNLGlCQUFpQixFQUFFLGlCQTBCL0IsQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/bench/client_flows/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAE7F,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,iBAAiB,EAAE,4BAA4B,EAAE,CAAC;IAClD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,KAAK,WAAW,GAAG,oBAAoB,GAAG,aAAa,GAAG,WAAW,GAAG,UAAU,GAAG,KAAK,CAAC;AAE3F,MAAM,MAAM,iBAAiB,GAAG;KAC7B,GAAG,IAAI,WAAW,GAAG,gBAAgB;CACvC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,iBAsB9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,iBAsB/B,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/bench/client_flows/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAE7F,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,iBAAiB,EAAE,4BAA4B,EAAE,CAAC;IAClD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,KAAK,WAAW,GAAG,oBAAoB,GAAG,aAAa,GAAG,WAAW,GAAG,UAAU,GAAG,KAAK,GAAG,cAAc,CAAC;AAE5G,MAAM,MAAM,iBAAiB,GAAG;KAC7B,GAAG,IAAI,WAAW,GAAG,gBAAgB;CACvC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,iBA0B9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,iBA0B/B,CAAC"}
@@ -45,6 +45,14 @@ export const KEY_FLOWS_CONFIG = {
45
45
  0,
46
46
  1
47
47
  ]
48
+ },
49
+ storageProof: {
50
+ accounts: [
51
+ 'ecdsar1'
52
+ ],
53
+ feePaymentMethods: [
54
+ 'sponsored_fpc'
55
+ ]
48
56
  }
49
57
  };
50
58
  export const FULL_FLOWS_CONFIG = {
@@ -102,5 +110,15 @@ export const FULL_FLOWS_CONFIG = {
102
110
  1,
103
111
  2
104
112
  ]
113
+ },
114
+ storageProof: {
115
+ accounts: [
116
+ 'ecdsar1',
117
+ 'schnorr'
118
+ ],
119
+ feePaymentMethods: [
120
+ 'sponsored_fpc',
121
+ 'private_fpc'
122
+ ]
105
123
  }
106
124
  };
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data_extractor.d.ts.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YV9leHRyYWN0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iZW5jaC9jbGllbnRfZmxvd3MvZGF0YV9leHRyYWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -1,5 +1,4 @@
1
- import { BBNativePrivateKernelProver } from '@aztec/bb-prover/client/native';
2
- import { BBWASMBundlePrivateKernelProver } from '@aztec/bb-prover/client/wasm/bundle';
1
+ import { BBBundlePrivateKernelProver } from '@aztec/bb-prover/client/bundle';
3
2
  import { createLogger, logger } from '@aztec/foundation/log';
4
3
  import { Timer } from '@aztec/foundation/timer';
5
4
  import { WASMSimulator } from '@aztec/simulator/client';
@@ -7,26 +6,6 @@ import { Decoder } from 'msgpackr';
7
6
  import { readFile, readdir, writeFile } from 'node:fs/promises';
8
7
  import { join } from 'node:path';
9
8
  import { ProxyLogger, generateBenchmark } from './benchmark.js';
10
- async function createProver(config = {}, log) {
11
- const simulator = new WASMSimulator();
12
- if (!config.bbBinaryPath || !config.bbWorkingDirectory) {
13
- return {
14
- prover: new BBWASMBundlePrivateKernelProver(simulator, 16, log),
15
- type: 'wasm'
16
- };
17
- } else {
18
- const bbConfig = config;
19
- return {
20
- prover: await BBNativePrivateKernelProver.new({
21
- bbSkipCleanup: false,
22
- numConcurrentIVCVerifiers: 1,
23
- bbIVCConcurrency: 1,
24
- ...bbConfig
25
- }, simulator, log),
26
- type: 'native'
27
- };
28
- }
29
- }
30
9
  async function main() {
31
10
  ProxyLogger.create();
32
11
  const proxyLogger = ProxyLogger.getInstance();
@@ -36,10 +15,11 @@ async function main() {
36
15
  }
37
16
  const flows = await readdir(ivcFolder);
38
17
  logger.info(`Flows in ${ivcFolder}: \n${flows.map((flowName)=>`\t- ${flowName}`).join('\n')}`);
39
- const { prover, type: proverType } = await createProver({
40
- bbBinaryPath: process.env.BB_BINARY_PATH,
41
- bbWorkingDirectory: process.env.BB_WORKING_DIRECTORY
42
- }, proxyLogger.createLogger('bb:prover'));
18
+ const simulator = new WASMSimulator();
19
+ const log = proxyLogger.createLogger('bb:prover');
20
+ const prover = new BBBundlePrivateKernelProver(simulator, {
21
+ logger: log
22
+ });
43
23
  const userLog = createLogger('chonk_flows:data_processor');
44
24
  for (const flow of flows){
45
25
  userLog.info(`Processing flow ${flow}`);
@@ -63,6 +43,7 @@ async function main() {
63
43
  // TODO(AD) do we still want to take this from witness.json?
64
44
  witness: witnessStack[i],
65
45
  vk: stepsFromFile[i].vk,
46
+ kind: stepsFromFile[i].kind,
66
47
  timings: {
67
48
  witgen: step.timings.witgen,
68
49
  gateCount: step.timings.gateCount
@@ -85,7 +66,7 @@ async function main() {
85
66
  if (!profile.stats.timings.proving) {
86
67
  profile.stats.timings.proving = provingTime;
87
68
  }
88
- const benchmark = generateBenchmark(flow, currentLogs, profile.stats, privateExecutionSteps, proverType, error);
69
+ const benchmark = generateBenchmark(flow, currentLogs, profile.stats, privateExecutionSteps, 'native', error);
89
70
  await writeFile(join(ivcFolder, flow, 'benchmark.json'), JSON.stringify(benchmark, null, 2));
90
71
  proxyLogger.flushLogs();
91
72
  }
@@ -1,23 +1,24 @@
1
- import { type SentTx, type WaitOpts } from '@aztec/aztec.js/contracts';
1
+ import { type WaitOpts } from '@aztec/aztec.js/contracts';
2
2
  import { BenchmarkingContract } from '@aztec/noir-test-contracts.js/Benchmarking';
3
- import type { MetricsType } from '@aztec/telemetry-client';
3
+ import type { TxHash } from '@aztec/stdlib/tx';
4
+ import type { MetricDefinition } from '@aztec/telemetry-client';
4
5
  import type { BenchmarkTelemetryClient } from '@aztec/telemetry-client/bench';
5
6
  import { type EndToEndContext, type SetupOptions } from '../fixtures/utils.js';
6
7
  /**
7
- * Setup for benchmarks. Initializes a remote node with a single account and deploys a benchmark contract.
8
+ * Setup for benchmarks. Initializes a remote node with a funded hardcoded account and deploys a benchmark contract.
8
9
  */
9
10
  export declare function benchmarkSetup(opts: Partial<SetupOptions> & {
10
- /** What metrics to export */ metrics: (MetricsType | MetricFilter)[];
11
+ /** What metrics to export */ metrics: (MetricDefinition | MetricFilter)[];
11
12
  /** Where to output the benchmark data (defaults to BENCH_OUTPUT or bench.json) */
12
13
  benchOutput?: string;
13
14
  }): Promise<{
14
15
  telemetry: BenchmarkTelemetryClient;
15
- context: EndToEndContext;
16
+ context: EndToEndContext<unknown>;
16
17
  contract: BenchmarkingContract;
17
18
  sequencer: import("@aztec/sequencer-client").SequencerClient;
18
19
  }>;
19
20
  type MetricFilter = {
20
- source: MetricsType;
21
+ source: MetricDefinition;
21
22
  transform: (value: number) => number;
22
23
  name: string;
23
24
  unit?: string;
@@ -38,7 +39,7 @@ export type GithubActionBenchmarkResult = {
38
39
  * @param heavyPublicCompute - Whether the transactions include heavy public compute (like a big sha256).
39
40
  * @returns Array of sent txs.
40
41
  */
41
- export declare function sendTxs(txCount: number, context: EndToEndContext, contract: BenchmarkingContract, heavyPublicCompute?: boolean): SentTx[];
42
- export declare function waitTxs(txs: SentTx[], context: EndToEndContext, txWaitOpts?: WaitOpts): Promise<void>;
42
+ export declare function sendTxs(txCount: number, context: EndToEndContext, contract: BenchmarkingContract, heavyPublicCompute?: boolean): Promise<TxHash[]>;
43
+ export declare function waitTxs(txs: TxHash[], context: EndToEndContext, txWaitOpts?: WaitOpts): Promise<void>;
43
44
  export {};
44
- //# sourceMappingURL=utils.d.ts.map
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iZW5jaC91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQXNCLEtBQUssUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJOUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFbEYsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBNEMsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQU14SCxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQUUsS0FBSyxZQUFZLEVBQVMsTUFBTSxzQkFBc0IsQ0FBQztBQU90Rjs7R0FFRztBQUNILHdCQUFzQixjQUFjLENBQ2xDLElBQUksRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUc7SUFDNUIsNkJBQTZCLENBQUMsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQztJQUMzRSxrRkFBa0Y7SUFDbEYsV0FBVyxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ3RCOzs7OztHQWlDRjtBQVVELEtBQUssWUFBWSxHQUFHO0lBQ2xCLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQztJQUN6QixTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxLQUFLLE1BQU0sQ0FBQztJQUNyQyxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ2IsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ2YsQ0FBQztBQUdGLE1BQU0sTUFBTSwyQkFBMkIsR0FBRztJQUN4QyxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ2IsS0FBSyxFQUFFLE1BQU0sQ0FBQztJQUNkLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNmLElBQUksRUFBRSxNQUFNLENBQUM7SUFDYixLQUFLLENBQUMsRUFBRSxNQUFNLENBQUM7Q0FDaEIsQ0FBQztBQW9FRjs7Ozs7Ozs7R0FRRztBQUNILHdCQUFzQixPQUFPLENBQzNCLE9BQU8sRUFBRSxNQUFNLEVBQ2YsT0FBTyxFQUFFLGVBQWUsRUFDeEIsUUFBUSxFQUFFLG9CQUFvQixFQUM5QixrQkFBa0IsR0FBRSxPQUFlLEdBQ2xDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQVduQjtBQUVELHdCQUFzQixPQUFPLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxDQUFDLEVBQUUsUUFBUSxpQkFJM0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/bench/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAElF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAA4C,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAKxH,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAS,MAAM,sBAAsB,CAAC;AAEtF;;GAEG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG;IAC5B,6BAA6B,CAAC,OAAO,EAAE,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,CAAC;IACtE,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;;;;;GAyBF;AAED,KAAK,YAAY,GAAG;IAClB,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAGF,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AA6DF;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CACrB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,oBAAoB,EAC9B,kBAAkB,GAAE,OAAe,GAClC,MAAM,EAAE,CAMV;AAED,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE,QAAQ,iBAI3F"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/bench/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAI9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAElF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAA4C,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAMxH,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAS,MAAM,sBAAsB,CAAC;AAOtF;;GAEG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG;IAC5B,6BAA6B,CAAC,OAAO,EAAE,CAAC,gBAAgB,GAAG,YAAY,CAAC,EAAE,CAAC;IAC3E,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;;;;;GAiCF;AAUD,KAAK,YAAY,GAAG;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAGF,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAoEF;;;;;;;;GAQG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,oBAAoB,EAC9B,kBAAkB,GAAE,OAAe,GAClC,OAAO,CAAC,MAAM,EAAE,CAAC,CAWnB;AAED,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE,QAAQ,iBAI3F"}