@aztec/end-to-end 0.0.0-test.1 → 0.0.1-commit.017a351

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 (316) hide show
  1. package/README.md +27 -0
  2. package/dest/bench/client_flows/benchmark.d.ts +76 -0
  3. package/dest/bench/client_flows/benchmark.d.ts.map +1 -0
  4. package/dest/bench/client_flows/benchmark.js +298 -0
  5. package/dest/bench/client_flows/client_flows_benchmark.d.ts +79 -0
  6. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -0
  7. package/dest/bench/client_flows/client_flows_benchmark.js +318 -0
  8. package/dest/bench/client_flows/config.d.ts +14 -0
  9. package/dest/bench/client_flows/config.d.ts.map +1 -0
  10. package/dest/bench/client_flows/config.js +124 -0
  11. package/dest/bench/client_flows/data_extractor.d.ts +2 -0
  12. package/dest/bench/client_flows/data_extractor.d.ts.map +1 -0
  13. package/dest/bench/client_flows/data_extractor.js +79 -0
  14. package/dest/bench/utils.d.ts +16 -41
  15. package/dest/bench/utils.d.ts.map +1 -1
  16. package/dest/bench/utils.js +46 -72
  17. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +30 -20
  18. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
  19. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +137 -106
  20. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +44 -33
  21. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
  22. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +136 -103
  23. package/dest/e2e_deploy_contract/deploy_test.d.ts +20 -11
  24. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
  25. package/dest/e2e_deploy_contract/deploy_test.js +28 -28
  26. package/dest/e2e_epochs/epochs_test.d.ts +98 -24
  27. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  28. package/dest/e2e_epochs/epochs_test.js +366 -61
  29. package/dest/e2e_fees/bridging_race.notest.d.ts +2 -0
  30. package/dest/e2e_fees/bridging_race.notest.d.ts.map +1 -0
  31. package/dest/e2e_fees/bridging_race.notest.js +61 -0
  32. package/dest/e2e_fees/fees_test.d.ts +42 -24
  33. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  34. package/dest/e2e_fees/fees_test.js +194 -182
  35. package/dest/e2e_l1_publisher/write_json.d.ts +11 -0
  36. package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -0
  37. package/dest/e2e_l1_publisher/write_json.js +56 -0
  38. package/dest/e2e_multi_validator/utils.d.ts +12 -0
  39. package/dest/e2e_multi_validator/utils.d.ts.map +1 -0
  40. package/dest/e2e_multi_validator/utils.js +214 -0
  41. package/dest/e2e_nested_contract/nested_contract_test.d.ts +16 -16
  42. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
  43. package/dest/e2e_nested_contract/nested_contract_test.js +38 -43
  44. package/dest/e2e_p2p/inactivity_slash_test.d.ts +31 -0
  45. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -0
  46. package/dest/e2e_p2p/inactivity_slash_test.js +137 -0
  47. package/dest/e2e_p2p/p2p_network.d.ts +287 -31
  48. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  49. package/dest/e2e_p2p/p2p_network.js +281 -183
  50. package/dest/e2e_p2p/reqresp/utils.d.ts +22 -0
  51. package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -0
  52. package/dest/e2e_p2p/reqresp/utils.js +206 -0
  53. package/dest/e2e_p2p/shared.d.ts +73 -8
  54. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  55. package/dest/e2e_p2p/shared.js +205 -27
  56. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts +2 -0
  57. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts.map +1 -0
  58. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.js +184 -0
  59. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts +18 -0
  60. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts.map +1 -0
  61. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.js +120 -0
  62. package/dest/e2e_token_contract/token_contract_test.d.ts +30 -15
  63. package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
  64. package/dest/e2e_token_contract/token_contract_test.js +110 -76
  65. package/dest/fixtures/authwit_proxy.d.ts +15 -0
  66. package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
  67. package/dest/fixtures/authwit_proxy.js +34 -0
  68. package/dest/fixtures/e2e_prover_test.d.ts +56 -0
  69. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -0
  70. package/dest/fixtures/e2e_prover_test.js +267 -0
  71. package/dest/fixtures/elu_monitor.d.ts +21 -0
  72. package/dest/fixtures/elu_monitor.d.ts.map +1 -0
  73. package/dest/fixtures/elu_monitor.js +102 -0
  74. package/dest/fixtures/fixtures.d.ts +79 -8
  75. package/dest/fixtures/fixtures.d.ts.map +1 -1
  76. package/dest/fixtures/fixtures.js +76 -5
  77. package/dest/fixtures/get_acvm_config.d.ts +2 -2
  78. package/dest/fixtures/get_acvm_config.d.ts.map +1 -1
  79. package/dest/fixtures/get_acvm_config.js +3 -15
  80. package/dest/fixtures/get_bb_config.d.ts +2 -2
  81. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  82. package/dest/fixtures/get_bb_config.js +10 -17
  83. package/dest/fixtures/ha_setup.d.ts +71 -0
  84. package/dest/fixtures/ha_setup.d.ts.map +1 -0
  85. package/dest/fixtures/ha_setup.js +116 -0
  86. package/dest/fixtures/index.d.ts +2 -1
  87. package/dest/fixtures/index.d.ts.map +1 -1
  88. package/dest/fixtures/index.js +1 -0
  89. package/dest/fixtures/l1_to_l2_messaging.d.ts +11 -7
  90. package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
  91. package/dest/fixtures/l1_to_l2_messaging.js +45 -19
  92. package/dest/fixtures/logging.d.ts +1 -1
  93. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts +25 -0
  94. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts.map +1 -0
  95. package/dest/fixtures/schnorr_hardcoded_account_contract.js +37 -0
  96. package/dest/fixtures/setup.d.ts +272 -0
  97. package/dest/fixtures/setup.d.ts.map +1 -0
  98. package/dest/fixtures/setup.js +735 -0
  99. package/dest/fixtures/setup_p2p_test.d.ts +28 -16
  100. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  101. package/dest/fixtures/setup_p2p_test.js +103 -32
  102. package/dest/fixtures/token_utils.d.ts +10 -4
  103. package/dest/fixtures/token_utils.d.ts.map +1 -1
  104. package/dest/fixtures/token_utils.js +30 -13
  105. package/dest/fixtures/utils.d.ts +5 -153
  106. package/dest/fixtures/utils.d.ts.map +1 -1
  107. package/dest/fixtures/utils.js +4 -552
  108. package/dest/fixtures/web3signer.d.ts +5 -0
  109. package/dest/fixtures/web3signer.d.ts.map +1 -0
  110. package/dest/fixtures/web3signer.js +53 -0
  111. package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
  112. package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
  113. package/dest/fixtures/with_telemetry_utils.js +2 -2
  114. package/dest/forward-compatibility/wallet_rpc_client.d.ts +7 -0
  115. package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
  116. package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
  117. package/dest/forward-compatibility/wallet_service.d.ts +3 -0
  118. package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
  119. package/dest/forward-compatibility/wallet_service.js +109 -0
  120. package/dest/index.d.ts +1 -1
  121. package/dest/install_legacy_contracts.d.cts +10 -0
  122. package/dest/install_legacy_contracts.d.cts.map +1 -0
  123. package/dest/legacy-jest-resolver.d.cts +3 -0
  124. package/dest/legacy-jest-resolver.d.cts.map +1 -0
  125. package/dest/quality_of_service/grafana_client.d.ts +41 -0
  126. package/dest/quality_of_service/grafana_client.d.ts.map +1 -0
  127. package/dest/quality_of_service/{alert_checker.js → grafana_client.js} +1 -1
  128. package/dest/quality_of_service/prometheus_client.d.ts +38 -0
  129. package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
  130. package/dest/quality_of_service/prometheus_client.js +67 -0
  131. package/dest/shared/cross_chain_test_harness.d.ts +46 -27
  132. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  133. package/dest/shared/cross_chain_test_harness.js +113 -55
  134. package/dest/shared/gas_portal_test_harness.d.ts +39 -28
  135. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  136. package/dest/shared/gas_portal_test_harness.js +64 -34
  137. package/dest/shared/index.d.ts +3 -2
  138. package/dest/shared/index.d.ts.map +1 -1
  139. package/dest/shared/index.js +1 -0
  140. package/dest/shared/jest_setup.d.ts +1 -1
  141. package/dest/shared/jest_setup.js +42 -2
  142. package/dest/shared/mock_state_view.d.ts +86 -0
  143. package/dest/shared/mock_state_view.d.ts.map +1 -0
  144. package/dest/shared/mock_state_view.js +186 -0
  145. package/dest/shared/submit-transactions.d.ts +6 -4
  146. package/dest/shared/submit-transactions.d.ts.map +1 -1
  147. package/dest/shared/submit-transactions.js +15 -16
  148. package/dest/shared/uniswap_l1_l2.d.ts +3 -25
  149. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  150. package/dest/shared/uniswap_l1_l2.js +202 -135
  151. package/dest/shared/wait_for_l1_to_l2_message.d.ts +13 -0
  152. package/dest/shared/wait_for_l1_to_l2_message.d.ts.map +1 -0
  153. package/dest/shared/wait_for_l1_to_l2_message.js +10 -0
  154. package/dest/simulators/index.d.ts +1 -1
  155. package/dest/simulators/lending_simulator.d.ts +16 -9
  156. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  157. package/dest/simulators/lending_simulator.js +38 -27
  158. package/dest/simulators/token_simulator.d.ts +6 -3
  159. package/dest/simulators/token_simulator.d.ts.map +1 -1
  160. package/dest/simulators/token_simulator.js +12 -30
  161. package/dest/spartan/setup_test_wallets.d.ts +36 -11
  162. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  163. package/dest/spartan/setup_test_wallets.js +301 -63
  164. package/dest/spartan/tx_metrics.d.ts +102 -0
  165. package/dest/spartan/tx_metrics.d.ts.map +1 -0
  166. package/dest/spartan/tx_metrics.js +475 -0
  167. package/dest/spartan/utils/bot.d.ts +28 -0
  168. package/dest/spartan/utils/bot.d.ts.map +1 -0
  169. package/dest/spartan/utils/bot.js +142 -0
  170. package/dest/spartan/utils/chaos.d.ts +79 -0
  171. package/dest/spartan/utils/chaos.d.ts.map +1 -0
  172. package/dest/spartan/utils/chaos.js +142 -0
  173. package/dest/spartan/utils/clients.d.ts +39 -0
  174. package/dest/spartan/utils/clients.d.ts.map +1 -0
  175. package/dest/spartan/utils/clients.js +90 -0
  176. package/dest/spartan/utils/config.d.ts +19 -0
  177. package/dest/spartan/utils/config.d.ts.map +1 -0
  178. package/dest/spartan/utils/config.js +23 -0
  179. package/dest/spartan/utils/health.d.ts +63 -0
  180. package/dest/spartan/utils/health.d.ts.map +1 -0
  181. package/dest/spartan/utils/health.js +202 -0
  182. package/dest/spartan/utils/helm.d.ts +15 -0
  183. package/dest/spartan/utils/helm.d.ts.map +1 -0
  184. package/dest/spartan/utils/helm.js +47 -0
  185. package/dest/spartan/utils/index.d.ts +11 -0
  186. package/dest/spartan/utils/index.d.ts.map +1 -0
  187. package/dest/spartan/utils/index.js +22 -0
  188. package/dest/spartan/utils/k8s.d.ts +128 -0
  189. package/dest/spartan/utils/k8s.d.ts.map +1 -0
  190. package/dest/spartan/utils/k8s.js +381 -0
  191. package/dest/spartan/utils/nodes.d.ts +40 -0
  192. package/dest/spartan/utils/nodes.d.ts.map +1 -0
  193. package/dest/spartan/utils/nodes.js +461 -0
  194. package/dest/spartan/utils/pod_logs.d.ts +25 -0
  195. package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
  196. package/dest/spartan/utils/pod_logs.js +74 -0
  197. package/dest/spartan/utils/scripts.d.ts +30 -0
  198. package/dest/spartan/utils/scripts.d.ts.map +1 -0
  199. package/dest/spartan/utils/scripts.js +81 -0
  200. package/dest/spartan/utils.d.ts +2 -415
  201. package/dest/spartan/utils.d.ts.map +1 -1
  202. package/dest/spartan/utils.js +1 -445
  203. package/dest/test-wallet/test_wallet.d.ts +85 -0
  204. package/dest/test-wallet/test_wallet.d.ts.map +1 -0
  205. package/dest/test-wallet/test_wallet.js +273 -0
  206. package/dest/test-wallet/utils.d.ts +41 -0
  207. package/dest/test-wallet/utils.d.ts.map +1 -0
  208. package/dest/test-wallet/utils.js +66 -0
  209. package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
  210. package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
  211. package/dest/test-wallet/wallet_worker_script.js +53 -0
  212. package/dest/test-wallet/worker_wallet.d.ts +53 -0
  213. package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
  214. package/dest/test-wallet/worker_wallet.js +155 -0
  215. package/dest/test-wallet/worker_wallet_schema.d.ts +160 -0
  216. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
  217. package/dest/test-wallet/worker_wallet_schema.js +22 -0
  218. package/package.json +79 -64
  219. package/src/bench/client_flows/benchmark.ts +382 -0
  220. package/src/bench/client_flows/client_flows_benchmark.ts +399 -0
  221. package/src/bench/client_flows/config.ts +69 -0
  222. package/src/bench/client_flows/data_extractor.ts +89 -0
  223. package/src/bench/utils.ts +49 -87
  224. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +164 -172
  225. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +194 -183
  226. package/src/e2e_deploy_contract/deploy_test.ts +42 -49
  227. package/src/e2e_epochs/epochs_test.ts +451 -93
  228. package/src/e2e_fees/bridging_race.notest.ts +74 -0
  229. package/src/e2e_fees/fees_test.ts +249 -262
  230. package/src/e2e_l1_publisher/write_json.ts +77 -0
  231. package/src/e2e_multi_validator/utils.ts +258 -0
  232. package/src/e2e_nested_contract/nested_contract_test.ts +51 -60
  233. package/src/e2e_p2p/inactivity_slash_test.ts +180 -0
  234. package/src/e2e_p2p/p2p_network.ts +391 -240
  235. package/src/e2e_p2p/reqresp/utils.ts +274 -0
  236. package/src/e2e_p2p/shared.ts +304 -39
  237. package/src/e2e_storage_proof/fixtures/storage_proof.json +915 -0
  238. package/src/e2e_storage_proof/fixtures/storage_proof_fetcher.ts +190 -0
  239. package/src/e2e_storage_proof/fixtures/storage_proof_fixture.ts +173 -0
  240. package/src/e2e_token_contract/token_contract_test.ts +140 -124
  241. package/src/fixtures/authwit_proxy.ts +54 -0
  242. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  243. package/src/fixtures/e2e_prover_test.ts +329 -0
  244. package/src/fixtures/elu_monitor.ts +126 -0
  245. package/src/fixtures/fixtures.ts +98 -7
  246. package/src/fixtures/get_acvm_config.ts +4 -12
  247. package/src/fixtures/get_bb_config.ts +19 -13
  248. package/src/fixtures/ha_setup.ts +188 -0
  249. package/src/fixtures/index.ts +1 -0
  250. package/src/fixtures/l1_to_l2_messaging.ts +56 -24
  251. package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
  252. package/src/fixtures/setup.ts +1056 -0
  253. package/src/fixtures/setup_p2p_test.ts +142 -54
  254. package/src/fixtures/token_utils.ts +34 -16
  255. package/src/fixtures/utils.ts +29 -820
  256. package/src/fixtures/web3signer.ts +63 -0
  257. package/src/fixtures/with_telemetry_utils.ts +2 -2
  258. package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
  259. package/src/forward-compatibility/wallet_service.ts +104 -0
  260. package/src/guides/up_quick_start.sh +9 -19
  261. package/src/install_legacy_contracts.cjs +75 -0
  262. package/src/legacy-jest-resolver.cjs +112 -0
  263. package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +2 -2
  264. package/src/quality_of_service/prometheus_client.ts +113 -0
  265. package/src/shared/cross_chain_test_harness.ts +116 -90
  266. package/src/shared/gas_portal_test_harness.ts +75 -56
  267. package/src/shared/index.ts +2 -1
  268. package/src/shared/jest_setup.ts +52 -2
  269. package/src/shared/mock_state_view.ts +188 -0
  270. package/src/shared/submit-transactions.ts +19 -20
  271. package/src/shared/uniswap_l1_l2.ts +259 -234
  272. package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
  273. package/src/simulators/lending_simulator.ts +43 -26
  274. package/src/simulators/token_simulator.ts +18 -34
  275. package/src/spartan/DEVELOP.md +128 -0
  276. package/src/spartan/setup_test_wallets.ts +420 -96
  277. package/src/spartan/tx_metrics.ts +434 -0
  278. package/src/spartan/utils/bot.ts +188 -0
  279. package/src/spartan/utils/chaos.ts +253 -0
  280. package/src/spartan/utils/clients.ts +100 -0
  281. package/src/spartan/utils/config.ts +29 -0
  282. package/src/spartan/utils/health.ts +255 -0
  283. package/src/spartan/utils/helm.ts +84 -0
  284. package/src/spartan/utils/index.ts +71 -0
  285. package/src/spartan/utils/k8s.ts +535 -0
  286. package/src/spartan/utils/nodes.ts +543 -0
  287. package/src/spartan/utils/pod_logs.ts +99 -0
  288. package/src/spartan/utils/scripts.ts +99 -0
  289. package/src/spartan/utils.ts +1 -582
  290. package/src/test-wallet/test_wallet.ts +376 -0
  291. package/src/test-wallet/utils.ts +108 -0
  292. package/src/test-wallet/wallet_worker_script.ts +63 -0
  293. package/src/test-wallet/worker_wallet.ts +218 -0
  294. package/src/test-wallet/worker_wallet_schema.ts +13 -0
  295. package/dest/e2e_prover/e2e_prover_test.d.ts +0 -56
  296. package/dest/e2e_prover/e2e_prover_test.d.ts.map +0 -1
  297. package/dest/e2e_prover/e2e_prover_test.js +0 -291
  298. package/dest/fixtures/setup_l1_contracts.d.ts +0 -6
  299. package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
  300. package/dest/fixtures/setup_l1_contracts.js +0 -17
  301. package/dest/fixtures/snapshot_manager.d.ts +0 -87
  302. package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
  303. package/dest/fixtures/snapshot_manager.js +0 -479
  304. package/dest/quality_of_service/alert_checker.d.ts +0 -41
  305. package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
  306. package/dest/sample-dapp/connect.js +0 -12
  307. package/dest/sample-dapp/contracts.js +0 -10
  308. package/dest/sample-dapp/deploy.js +0 -35
  309. package/dest/sample-dapp/index.js +0 -98
  310. package/src/e2e_prover/e2e_prover_test.ts +0 -418
  311. package/src/fixtures/setup_l1_contracts.ts +0 -27
  312. package/src/fixtures/snapshot_manager.ts +0 -617
  313. package/src/sample-dapp/connect.mjs +0 -16
  314. package/src/sample-dapp/contracts.mjs +0 -14
  315. package/src/sample-dapp/deploy.mjs +0 -40
  316. package/src/sample-dapp/index.mjs +0 -128
@@ -1,99 +1,337 @@
1
- import { getSchnorrAccount, getSchnorrWalletWithSecretKey } from '@aztec/accounts/schnorr';
2
- import { generateSchnorrAccounts, getDeployedTestAccountsWallets } from '@aztec/accounts/testing';
3
- import { FeeJuicePaymentMethodWithClaim, Fr, L1FeeJuicePortalManager, createAztecNodeClient, createCompatibleClient, retryUntil } from '@aztec/aztec.js';
4
- import { createEthereumChain, createL1Clients } from '@aztec/ethereum';
1
+ import { generateSchnorrAccounts } from '@aztec/accounts/testing';
2
+ import { NO_FROM } from '@aztec/aztec.js/account';
3
+ import { NO_WAIT } from '@aztec/aztec.js/contracts';
4
+ import { L1FeeJuicePortalManager } from '@aztec/aztec.js/ethereum';
5
+ import { FeeJuicePaymentMethodWithClaim } from '@aztec/aztec.js/fee';
6
+ import { SponsoredFeePaymentMethod } from '@aztec/aztec.js/fee';
7
+ import { Fr } from '@aztec/aztec.js/fields';
8
+ import { waitForL1ToL2MessageReady } from '@aztec/aztec.js/messaging';
9
+ import { createAztecNodeClient, waitForTx } from '@aztec/aztec.js/node';
10
+ import { createEthereumChain } from '@aztec/ethereum/chain';
11
+ import { createExtendedL1Client } from '@aztec/ethereum/client';
12
+ import { makeBackoff, retry, retryUntil } from '@aztec/foundation/retry';
5
13
  import { TokenContract } from '@aztec/noir-contracts.js/Token';
14
+ import { TxStatus } from '@aztec/stdlib/tx';
15
+ import { registerInitialLocalNetworkAccountsInWallet } from '@aztec/wallets/testing';
16
+ import { getACVMConfig } from '../fixtures/get_acvm_config.js';
17
+ import { getBBConfig } from '../fixtures/get_bb_config.js';
18
+ import { getSponsoredFPCAddress, registerSponsoredFPC } from '../fixtures/utils.js';
19
+ import { TestWallet } from '../test-wallet/test_wallet.js';
20
+ import { proveInteraction } from '../test-wallet/utils.js';
21
+ import { WorkerWallet } from '../test-wallet/worker_wallet.js';
6
22
  const TOKEN_NAME = 'USDC';
7
23
  const TOKEN_SYMBOL = 'USD';
8
24
  const TOKEN_DECIMALS = 18n;
9
- export async function setupTestWalletsWithTokens(pxeUrl, mintAmount, logger) {
10
- const WALLET_COUNT = 1; // TODO fix this to allow for 16 wallets again
11
- const pxe = await createCompatibleClient(pxeUrl, logger);
12
- const [recipientWallet, ...wallets] = (await getDeployedTestAccountsWallets(pxe)).slice(0, WALLET_COUNT + 1);
13
- const tokenAdmin = wallets[0];
14
- const tokenAddress = await deployTokenAndMint(wallets, tokenAdmin.getAddress(), mintAmount, logger);
15
- const tokenAdminWallet = await TokenContract.at(tokenAddress, tokenAdmin);
25
+ export async function setupTestAccountsWithTokens(nodeUrl, mintAmount, logger) {
26
+ const ACCOUNT_COUNT = 1; // TODO fix this to allow for 16 wallets again
27
+ const aztecNode = createAztecNodeClient(nodeUrl);
28
+ const wallet = await TestWallet.create(aztecNode);
29
+ const [recipientAccount, ...accounts] = (await registerInitialLocalNetworkAccountsInWallet(wallet)).slice(0, ACCOUNT_COUNT + 1);
30
+ const tokenAdmin = accounts[0];
31
+ const tokenAddress = await deployTokenAndMint(wallet, accounts, tokenAdmin, mintAmount, undefined, logger);
32
+ const tokenContract = TokenContract.at(tokenAddress, wallet);
16
33
  return {
17
- pxe,
18
- wallets,
19
- tokenAdminWallet,
34
+ aztecNode,
35
+ accounts,
36
+ wallet,
37
+ tokenAdminAddress: tokenAdmin,
20
38
  tokenName: TOKEN_NAME,
21
39
  tokenAddress,
22
- recipientWallet
40
+ tokenContract,
41
+ recipientAddress: recipientAccount
23
42
  };
24
43
  }
25
- export async function deployTestWalletWithTokens(pxeUrl, nodeUrl, l1RpcUrl, mnemonicOrPrivateKey, mintAmount, logger, numberOfFundedWallets = 1, initialFeeJuice = 10n ** 22n) {
26
- const pxe = await createCompatibleClient(pxeUrl, logger);
27
- const node = createAztecNodeClient(nodeUrl);
44
+ export async function deploySponsoredTestAccountsWithTokens(wallet, aztecNode, mintAmount, logger, numberOfFundedWallets = 1) {
28
45
  const [recipient, ...funded] = await generateSchnorrAccounts(numberOfFundedWallets + 1);
29
- const recipientWallet = await getSchnorrWalletWithSecretKey(pxe, recipient.secret, recipient.signingKey, recipient.salt);
30
- const fundedAccounts = await Promise.all(funded.map((a)=>getSchnorrAccount(pxe, a.secret, a.signingKey, a.salt)));
31
- const claims = await Promise.all(fundedAccounts.map((a)=>bridgeL1FeeJuice(l1RpcUrl, mnemonicOrPrivateKey, pxe, a.getAddress(), initialFeeJuice, logger)));
32
- // Progress by 2 L2 blocks so that the l1ToL2Message added above will be available to use on L2.
33
- await advanceL2Block(node);
34
- await advanceL2Block(node);
35
- const wallets = await Promise.all(fundedAccounts.map(async (a, i)=>{
36
- const wallet = await a.getWallet();
37
- const paymentMethod = new FeeJuicePaymentMethodWithClaim(wallet, claims[i]);
38
- await a.deploy({
46
+ const recipientAccount = await wallet.createSchnorrAccount(recipient.secret, recipient.salt);
47
+ const fundedAccounts = await Promise.all(funded.map((a)=>wallet.createSchnorrAccount(a.secret, a.salt)));
48
+ await registerSponsoredFPC(wallet);
49
+ const paymentMethod = new SponsoredFeePaymentMethod(await getSponsoredFPCAddress());
50
+ const recipientDeployMethod = await recipientAccount.getDeployMethod();
51
+ await recipientDeployMethod.send({
52
+ from: NO_FROM,
53
+ fee: {
54
+ paymentMethod
55
+ },
56
+ wait: {
57
+ timeout: 2400
58
+ }
59
+ });
60
+ await Promise.all(fundedAccounts.map(async (a)=>{
61
+ const deployMethod = await a.getDeployMethod();
62
+ await deployMethod.send({
63
+ from: NO_FROM,
64
+ fee: {
65
+ paymentMethod
66
+ },
67
+ wait: {
68
+ timeout: 2400
69
+ }
70
+ }); // increase timeout on purpose in order to account for two empty epochs
71
+ logger.info(`Account deployed at ${a.address}`);
72
+ }));
73
+ const tokenAdmin = fundedAccounts[0];
74
+ const tokenAddress = await deployTokenAndMint(wallet, fundedAccounts.map((acc)=>acc.address), tokenAdmin.address, mintAmount, new SponsoredFeePaymentMethod(await getSponsoredFPCAddress()), logger);
75
+ const tokenContract = TokenContract.at(tokenAddress, wallet);
76
+ return {
77
+ aztecNode,
78
+ wallet,
79
+ accounts: fundedAccounts.map((acc)=>acc.address),
80
+ tokenAdminAddress: tokenAdmin.address,
81
+ tokenName: TOKEN_NAME,
82
+ tokenAddress,
83
+ tokenContract,
84
+ recipientAddress: recipientAccount.address
85
+ };
86
+ }
87
+ async function deployAccountWithDiagnostics(account, paymentMethod, aztecNode, logger, accountLabel, estimateGas) {
88
+ const deployMethod = await account.getDeployMethod();
89
+ let gasSettings;
90
+ if (estimateGas) {
91
+ const sim = await deployMethod.simulate({
92
+ from: NO_FROM,
93
+ fee: {
94
+ paymentMethod
95
+ }
96
+ });
97
+ gasSettings = sim.estimatedGas;
98
+ logger.info(`${accountLabel} estimated gas: DA=${gasSettings.gasLimits.daGas} L2=${gasSettings.gasLimits.l2Gas}`);
99
+ }
100
+ // Track the tx hash across retries so we don't re-send when the previous tx is still pending.
101
+ let sentTxHash;
102
+ await retry(async ()=>{
103
+ // Check if already deployed (handles case where previous attempt succeeded but waitForTx timed out)
104
+ const existing = await aztecNode.getContract(account.address);
105
+ if (existing) {
106
+ logger.info(`${accountLabel} already deployed at ${account.address}, skipping`);
107
+ return;
108
+ }
109
+ // If we already sent a tx, check if it was dropped before deciding to re-send.
110
+ if (sentTxHash) {
111
+ const prevReceipt = await aztecNode.getTxReceipt(sentTxHash.txHash);
112
+ if (prevReceipt.isDropped()) {
113
+ logger.info(`${accountLabel} previous tx ${sentTxHash.txHash} was dropped, re-sending`);
114
+ sentTxHash = undefined;
115
+ } else {
116
+ logger.info(`${accountLabel} previous tx ${sentTxHash.txHash} still pending, waiting again...`);
117
+ }
118
+ }
119
+ if (!sentTxHash) {
120
+ const deployResult = await deployMethod.send({
121
+ from: NO_FROM,
122
+ fee: {
123
+ paymentMethod,
124
+ gasSettings
125
+ },
126
+ wait: NO_WAIT
127
+ });
128
+ sentTxHash = {
129
+ txHash: deployResult.txHash
130
+ };
131
+ logger.info(`${accountLabel} tx sent`, {
132
+ txHash: sentTxHash.txHash.toString()
133
+ });
134
+ }
135
+ const receipt = await waitForTx(aztecNode, sentTxHash.txHash, {
136
+ timeout: 600
137
+ });
138
+ if (receipt.isDropped()) {
139
+ sentTxHash = undefined;
140
+ throw new Error(`${accountLabel} tx was dropped, retrying...`);
141
+ }
142
+ logger.info(`${accountLabel} deployed at ${account.address}`);
143
+ }, `deploy ${accountLabel}`, makeBackoff([
144
+ 1,
145
+ 2,
146
+ 4,
147
+ 8,
148
+ 16
149
+ ]), logger);
150
+ }
151
+ async function deployAccountsInBatches(accounts, paymentMethod, aztecNode, logger, labelPrefix, batchSize = 2, estimateGas) {
152
+ for(let i = 0; i < accounts.length; i += batchSize){
153
+ const batch = accounts.slice(i, i + batchSize);
154
+ await Promise.all(batch.map((account, idx)=>deployAccountWithDiagnostics(account, paymentMethod, aztecNode, logger, `${labelPrefix}${i + idx + 1}`, estimateGas)));
155
+ }
156
+ }
157
+ export async function deploySponsoredTestAccounts(wallet, aztecNode, logger, numberOfFundedWallets = 1, opts) {
158
+ const [recipient, ...funded] = await generateSchnorrAccounts(numberOfFundedWallets + 1);
159
+ const recipientAccount = await wallet.createSchnorrAccount(recipient.secret, recipient.salt);
160
+ const fundedAccounts = await Promise.all(funded.map((a)=>wallet.createSchnorrAccount(a.secret, a.salt)));
161
+ await registerSponsoredFPC(wallet);
162
+ const paymentMethod = new SponsoredFeePaymentMethod(await getSponsoredFPCAddress());
163
+ await deployAccountWithDiagnostics(recipientAccount, paymentMethod, aztecNode, logger, 'Recipient account', opts?.estimateGas);
164
+ await deployAccountsInBatches(fundedAccounts, paymentMethod, aztecNode, logger, 'Funded account ', 2, opts?.estimateGas);
165
+ return {
166
+ aztecNode,
167
+ wallet,
168
+ accounts: fundedAccounts.map((acc)=>acc.address),
169
+ recipientAddress: recipientAccount.address
170
+ };
171
+ }
172
+ export async function deployTestAccountsWithTokens(nodeUrl, l1RpcUrls, mnemonicOrPrivateKey, mintAmount, logger, numberOfFundedWallets = 1) {
173
+ const aztecNode = createAztecNodeClient(nodeUrl);
174
+ const wallet = await TestWallet.create(aztecNode);
175
+ const [recipient, ...funded] = await generateSchnorrAccounts(numberOfFundedWallets + 1);
176
+ const recipientAccount = await wallet.createSchnorrAccount(recipient.secret, recipient.salt);
177
+ const fundedAccounts = await Promise.all(funded.map((a)=>wallet.createSchnorrAccount(a.secret, a.salt)));
178
+ const claims = await Promise.all(fundedAccounts.map((a)=>bridgeL1FeeJuice(l1RpcUrls, mnemonicOrPrivateKey, aztecNode, a.address, undefined, logger)));
179
+ // Progress by 3 L2 blocks so that the l1ToL2Message added above will be available to use on L2.
180
+ await advanceL2Block(aztecNode);
181
+ await advanceL2Block(aztecNode);
182
+ await advanceL2Block(aztecNode);
183
+ await Promise.all(fundedAccounts.map(async (a, i)=>{
184
+ const paymentMethod = new FeeJuicePaymentMethodWithClaim(a.address, claims[i]);
185
+ const deployMethod = await a.getDeployMethod();
186
+ await deployMethod.send({
187
+ from: NO_FROM,
39
188
  fee: {
40
189
  paymentMethod
41
190
  }
42
- }).wait();
43
- logger.info(`Account deployed at ${a.getAddress()}`);
44
- return wallet;
191
+ });
192
+ logger.info(`Account deployed at ${a.address}`);
45
193
  }));
46
- const tokenAdmin = wallets[0];
47
- const tokenAddress = await deployTokenAndMint(wallets, tokenAdmin.getAddress(), mintAmount, logger);
48
- const tokenAdminWallet = await TokenContract.at(tokenAddress, tokenAdmin);
194
+ const tokenAdmin = fundedAccounts[0];
195
+ const tokenAddress = await deployTokenAndMint(wallet, fundedAccounts.map((acc)=>acc.address), tokenAdmin.address, mintAmount, undefined, logger);
196
+ const tokenContract = TokenContract.at(tokenAddress, wallet);
49
197
  return {
50
- pxe,
51
- wallets,
52
- tokenAdminWallet,
198
+ aztecNode,
199
+ wallet,
200
+ accounts: fundedAccounts.map((acc)=>acc.address),
201
+ tokenAdminAddress: tokenAdmin.address,
53
202
  tokenName: TOKEN_NAME,
54
203
  tokenAddress,
55
- recipientWallet
204
+ tokenContract,
205
+ recipientAddress: recipientAccount.address
56
206
  };
57
207
  }
58
- async function bridgeL1FeeJuice(l1RpcUrl, mnemonicOrPrivateKey, pxe, recipient, amount, log) {
59
- const { l1ChainId } = await pxe.getNodeInfo();
60
- const chain = createEthereumChain([
61
- l1RpcUrl
62
- ], l1ChainId);
63
- const { publicClient, walletClient } = createL1Clients(chain.rpcUrls, mnemonicOrPrivateKey, chain.chainInfo);
64
- const portal = await L1FeeJuicePortalManager.new(pxe, publicClient, walletClient, log);
208
+ async function bridgeL1FeeJuice(l1RpcUrls, mnemonicOrPrivateKey, aztecNode, recipient, amount, log) {
209
+ const { l1ChainId } = await aztecNode.getNodeInfo();
210
+ const chain = createEthereumChain(l1RpcUrls, l1ChainId);
211
+ const l1Client = createExtendedL1Client(chain.rpcUrls, mnemonicOrPrivateKey, chain.chainInfo);
212
+ const portal = await L1FeeJuicePortalManager.new(aztecNode, l1Client, log);
65
213
  const claim = await portal.bridgeTokensPublic(recipient, amount, true);
66
- const isSynced = async ()=>await pxe.isL1ToL2MessageSynced(Fr.fromHexString(claim.messageHash));
67
- await retryUntil(isSynced, `message ${claim.messageHash} sync`, 24, 0.5);
214
+ await waitForL1ToL2MessageReady(aztecNode, Fr.fromHexString(claim.messageHash), {
215
+ timeoutSeconds: 24
216
+ });
68
217
  log.info(`Created a claim for ${amount} L1 fee juice to ${recipient}.`, claim);
69
218
  return claim;
70
219
  }
71
- async function advanceL2Block(node) {
72
- const initialBlockNumber = await node.getBlockNumber();
73
- await node.flushTxs();
74
- await retryUntil(async ()=>await node.getBlockNumber() >= initialBlockNumber + 1);
220
+ async function advanceL2Block(aztecNode, nodeAdmin) {
221
+ const initialBlockNumber = await aztecNode.getBlockNumber();
222
+ let minTxsPerBlock = undefined;
223
+ if (nodeAdmin) {
224
+ ({ minTxsPerBlock } = await nodeAdmin.getConfig());
225
+ await nodeAdmin.setConfig({
226
+ minTxsPerBlock: 0
227
+ }); // Set to 0 to ensure we can advance the block
228
+ }
229
+ await retryUntil(async ()=>await aztecNode.getBlockNumber() >= initialBlockNumber + 1);
230
+ if (nodeAdmin && minTxsPerBlock !== undefined) {
231
+ await nodeAdmin.setConfig({
232
+ minTxsPerBlock
233
+ });
234
+ }
75
235
  }
76
- async function deployTokenAndMint(wallets, admin, mintAmount, logger) {
236
+ async function deployTokenAndMint(wallet, accounts, admin, mintAmount, paymentMethod, logger) {
77
237
  logger.verbose(`Deploying TokenContract...`);
78
- const tokenContract = await TokenContract.deploy(wallets[0], admin, TOKEN_NAME, TOKEN_SYMBOL, TOKEN_DECIMALS).send().deployed({
79
- timeout: 600
238
+ const { contract: tokenContract } = await TokenContract.deploy(wallet, admin, TOKEN_NAME, TOKEN_SYMBOL, TOKEN_DECIMALS).send({
239
+ from: admin,
240
+ fee: {
241
+ paymentMethod
242
+ },
243
+ wait: {
244
+ timeout: 600
245
+ }
80
246
  });
81
247
  const tokenAddress = tokenContract.address;
82
- logger.verbose(`Minting ${mintAmount} public assets to the ${wallets.length} wallets...`);
83
- await Promise.all(wallets.map(async (w)=>(await TokenContract.at(tokenAddress, w)).methods.mint_to_public(w.getAddress(), mintAmount).send().wait({
84
- timeout: 600
248
+ logger.verbose(`Minting ${mintAmount} public assets to the ${accounts.length} accounts...`);
249
+ await Promise.all(accounts.map((acc)=>TokenContract.at(tokenAddress, wallet).methods.mint_to_public(acc, mintAmount).send({
250
+ from: admin,
251
+ fee: {
252
+ paymentMethod
253
+ },
254
+ wait: {
255
+ timeout: 600
256
+ }
85
257
  })));
86
258
  logger.verbose(`Minting complete.`);
87
259
  return tokenAddress;
88
260
  }
89
- export async function performTransfers({ testWallets, rounds, transferAmount, logger }) {
90
- const recipient = testWallets.recipientWallet.getAddress();
261
+ export async function performTransfers({ wallet, testAccounts, rounds, transferAmount, logger, feePaymentMethod }) {
262
+ const recipient = testAccounts.recipientAddress;
263
+ // Default to sponsored fee payment if no fee method is provided
264
+ const defaultFeePaymentMethod = feePaymentMethod || new SponsoredFeePaymentMethod(await getSponsoredFPCAddress());
91
265
  for(let i = 0; i < rounds; i++){
92
- const interactions = await Promise.all(testWallets.wallets.map(async (w)=>(await TokenContract.at(testWallets.tokenAddress, w)).methods.transfer_in_public(w.getAddress(), recipient, transferAmount, 0)));
93
- const txs = await Promise.all(interactions.map(async (i)=>await i.prove()));
94
- await Promise.all(txs.map((t)=>t.send().wait({
95
- timeout: 600
266
+ const txs = testAccounts.accounts.map((acc)=>{
267
+ const token = TokenContract.at(testAccounts.tokenAddress, testAccounts.wallet);
268
+ return proveInteraction(wallet, token.methods.transfer_in_public(acc, recipient, transferAmount, 0), {
269
+ from: acc,
270
+ fee: {
271
+ paymentMethod: defaultFeePaymentMethod
272
+ }
273
+ });
274
+ });
275
+ const provenTxs = await Promise.all(txs);
276
+ // Wait only for the txs to be proposed, not checkpointed. This is enough to keep the chain
277
+ // loaded for the reorg scenario, and avoids each round blocking on the (slower) checkpoint lag.
278
+ await Promise.all(provenTxs.map((t)=>t.send({
279
+ wait: {
280
+ timeout: 600,
281
+ waitForStatus: TxStatus.PROPOSED
282
+ }
96
283
  })));
97
284
  logger.info(`Completed round ${i + 1} / ${rounds}`);
98
285
  }
99
286
  }
287
+ export async function createWalletAndAztecNodeClient(nodeUrl, proverEnabled, logger) {
288
+ const aztecNode = createAztecNodeClient(nodeUrl);
289
+ const [bbConfig, acvmConfig] = await Promise.all([
290
+ getBBConfig(logger),
291
+ getACVMConfig(logger)
292
+ ]);
293
+ const pxeConfig = {
294
+ dataDirectory: undefined,
295
+ dataStoreMapSizeKb: 1024 * 1024,
296
+ ...bbConfig,
297
+ ...acvmConfig,
298
+ proverEnabled
299
+ };
300
+ const wallet = await TestWallet.create(aztecNode, pxeConfig);
301
+ return {
302
+ wallet,
303
+ aztecNode,
304
+ async cleanup () {
305
+ await wallet.stop();
306
+ await bbConfig?.cleanup();
307
+ await acvmConfig?.cleanup();
308
+ }
309
+ };
310
+ }
311
+ export async function createWorkerWalletClient(nodeUrl, proverEnabled, logger) {
312
+ const aztecNode = createAztecNodeClient(nodeUrl);
313
+ const [bbConfig, acvmConfig] = await Promise.all([
314
+ getBBConfig(logger),
315
+ getACVMConfig(logger)
316
+ ]);
317
+ // Strip cleanup functions — they can't be structured-cloned for worker transfer
318
+ const { cleanup: bbCleanup, ...bbPaths } = bbConfig ?? {};
319
+ const { cleanup: acvmCleanup, ...acvmPaths } = acvmConfig ?? {};
320
+ const pxeConfig = {
321
+ dataDirectory: undefined,
322
+ dataStoreMapSizeKb: 1024 * 1024,
323
+ ...bbPaths,
324
+ ...acvmPaths,
325
+ proverEnabled
326
+ };
327
+ const wallet = await WorkerWallet.create(nodeUrl, pxeConfig);
328
+ return {
329
+ wallet,
330
+ aztecNode,
331
+ async cleanup () {
332
+ await wallet.stop();
333
+ await bbCleanup?.();
334
+ await acvmCleanup?.();
335
+ }
336
+ };
337
+ }
@@ -0,0 +1,102 @@
1
+ import type { AztecNode } from '@aztec/aztec.js/node';
2
+ import type { Logger } from '@aztec/foundation/log';
3
+ import type { TopicType } from '@aztec/stdlib/p2p';
4
+ import { Tx, type TxReceipt } from '@aztec/stdlib/tx';
5
+ /** Metrics class for proving-related benchmarks. */
6
+ export declare class ProvingMetrics {
7
+ private prefix;
8
+ private successfulTxs;
9
+ private proofDuration;
10
+ private activeAgents;
11
+ private avgQueueTime;
12
+ private jobRetries;
13
+ private jobDuration;
14
+ private timedOutJobs;
15
+ private resolvedJobs;
16
+ private rejectedJobs;
17
+ private epochProvingDuration;
18
+ private provenTransactions;
19
+ private provenBlocks;
20
+ constructor(prefix: string);
21
+ recordSuccessfulTxs(count: number): void;
22
+ recordProofDuration(seconds: number): void;
23
+ recordActiveAgents(count: number): void;
24
+ recordAvgQueueTime(ms: number): void;
25
+ recordJobRetries(count: number): void;
26
+ recordJobDuration(ms: number): void;
27
+ recordTimedOutJobs(count: number): void;
28
+ recordResolvedJobs(count: number): void;
29
+ recordRejectedJobs(count: number): void;
30
+ recordEpochProvingDuration(seconds: number): void;
31
+ recordProvenTransactions(count: number): void;
32
+ recordProvenBlocks(count: number): void;
33
+ toGithubActionBenchmarkJSON(): Array<{
34
+ name: string;
35
+ unit: string;
36
+ value: number;
37
+ }>;
38
+ }
39
+ export type TxInclusionData = {
40
+ txHash: string;
41
+ /** Wall-clock at client when the tx was submitted, in ms (Date.now()). */
42
+ sentAtMs: number;
43
+ /** Wall-clock at client when the block containing the tx first became visible, in ms (Date.now()). -1 if never observed. */
44
+ minedAtMs: number;
45
+ /** Reserved for future attestation-observed-at signal; -1 today. */
46
+ attestedAtMs: number;
47
+ blocknumber: number;
48
+ priorityFee: number;
49
+ totalFee: number;
50
+ positionInBlock: number;
51
+ group: string;
52
+ };
53
+ export declare class TxInclusionMetrics {
54
+ private aztecNode;
55
+ private logger?;
56
+ private data;
57
+ private groups;
58
+ private blocks;
59
+ private p2pGossipLatencyByTopic;
60
+ private attestationLatency;
61
+ private attestationCounts;
62
+ private reqRespStats;
63
+ private peerStats;
64
+ private mempoolMinedDelay;
65
+ constructor(aztecNode: AztecNode, logger?: Logger | undefined);
66
+ recordSentTx(tx: Tx, group: string): void;
67
+ /**
68
+ * Stamp mined-at metadata for any tracked tx contained in this block, using
69
+ * `observedAtMs` (caller-supplied wall-clock at the moment they first saw the
70
+ * block). Idempotent: existing minedAtMs is preserved so the first observer
71
+ * wins (typically the block-watcher; recordMinedTx is a fallback).
72
+ */
73
+ observeBlockForMinedTxs(blockNumber: number, txHashes: ReadonlyArray<{
74
+ toString(): string;
75
+ }>, observedAtMs: number): void;
76
+ recordMinedTx(txReceipt: TxReceipt): Promise<void>;
77
+ /** Per-tx inclusion records for a group. Used to serialise out for downstream tooling. */
78
+ getInclusionRecords(group?: string): TxInclusionData[];
79
+ inclusionTimeInSeconds(group: string): {
80
+ count: number;
81
+ group: string;
82
+ min: number;
83
+ mean: number;
84
+ max: number;
85
+ median: number;
86
+ p99: number;
87
+ };
88
+ recordP2PGossipLatency(topicName: TopicType, p50: number, p95: number): void;
89
+ recordAttestationLatency(p50: number, p95: number): void;
90
+ recordAttestationCounts(success: number, failedBad: number, failedNode: number): void;
91
+ recordReqRespStats(fraction: number, delayP50: number, delayP95: number): void;
92
+ recordPeerStats(avgCount: number, connectionDurationP50: number, connectionDurationP95: number): void;
93
+ recordMempoolMinedDelay(txP50: number, txP95: number, attestationP50: number, attestationP95: number): void;
94
+ toGithubActionBenchmarkJSON(): Array<{
95
+ name: string;
96
+ unit: string;
97
+ value: number;
98
+ range?: number;
99
+ extra?: string;
100
+ }>;
101
+ }
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfbWV0cmljcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NwYXJ0YW4vdHhfbWV0cmljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJdEQsb0RBQW9EO0FBQ3BELHFCQUFhLGNBQWM7SUFjYixPQUFPLENBQUMsTUFBTTtJQWIxQixPQUFPLENBQUMsYUFBYSxDQUFxQjtJQUMxQyxPQUFPLENBQUMsYUFBYSxDQUFxQjtJQUMxQyxPQUFPLENBQUMsWUFBWSxDQUFxQjtJQUN6QyxPQUFPLENBQUMsWUFBWSxDQUFxQjtJQUN6QyxPQUFPLENBQUMsVUFBVSxDQUFxQjtJQUN2QyxPQUFPLENBQUMsV0FBVyxDQUFxQjtJQUN4QyxPQUFPLENBQUMsWUFBWSxDQUFxQjtJQUN6QyxPQUFPLENBQUMsWUFBWSxDQUFxQjtJQUN6QyxPQUFPLENBQUMsWUFBWSxDQUFxQjtJQUN6QyxPQUFPLENBQUMsb0JBQW9CLENBQXFCO0lBQ2pELE9BQU8sQ0FBQyxrQkFBa0IsQ0FBcUI7SUFDL0MsT0FBTyxDQUFDLFlBQVksQ0FBcUI7SUFFekMsWUFBb0IsTUFBTSxFQUFFLE1BQU0sRUFBSTtJQUV0QyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FFdkM7SUFFRCxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FFekM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FFdEM7SUFFRCxrQkFBa0IsQ0FBQyxFQUFF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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx_metrics.d.ts","sourceRoot":"","sources":["../../src/spartan/tx_metrics.ts"],"names":[],"mappings":"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"}