@aztec/end-to-end 0.0.0-test.1 → 0.0.1-commit.21caa21

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 (174) hide show
  1. package/dest/bench/client_flows/benchmark.d.ts +61 -0
  2. package/dest/bench/client_flows/benchmark.d.ts.map +1 -0
  3. package/dest/bench/client_flows/benchmark.js +261 -0
  4. package/dest/bench/client_flows/client_flows_benchmark.d.ts +80 -0
  5. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -0
  6. package/dest/bench/client_flows/client_flows_benchmark.js +334 -0
  7. package/dest/bench/client_flows/config.d.ts +14 -0
  8. package/dest/bench/client_flows/config.d.ts.map +1 -0
  9. package/dest/bench/client_flows/config.js +106 -0
  10. package/dest/bench/client_flows/data_extractor.d.ts +2 -0
  11. package/dest/bench/client_flows/data_extractor.d.ts.map +1 -0
  12. package/dest/bench/client_flows/data_extractor.js +77 -0
  13. package/dest/bench/utils.d.ts +12 -38
  14. package/dest/bench/utils.d.ts.map +1 -1
  15. package/dest/bench/utils.js +26 -66
  16. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +21 -13
  17. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
  18. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +85 -57
  19. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +19 -25
  20. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
  21. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +50 -70
  22. package/dest/e2e_deploy_contract/deploy_test.d.ts +16 -8
  23. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
  24. package/dest/e2e_deploy_contract/deploy_test.js +13 -19
  25. package/dest/e2e_epochs/epochs_test.d.ts +59 -18
  26. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  27. package/dest/e2e_epochs/epochs_test.js +226 -44
  28. package/dest/e2e_fees/bridging_race.notest.d.ts +2 -0
  29. package/dest/e2e_fees/bridging_race.notest.d.ts.map +1 -0
  30. package/dest/e2e_fees/bridging_race.notest.js +63 -0
  31. package/dest/e2e_fees/fees_test.d.ts +21 -10
  32. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  33. package/dest/e2e_fees/fees_test.js +103 -109
  34. package/dest/e2e_l1_publisher/write_json.d.ts +10 -0
  35. package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -0
  36. package/dest/e2e_l1_publisher/write_json.js +58 -0
  37. package/dest/e2e_multi_validator/utils.d.ts +12 -0
  38. package/dest/e2e_multi_validator/utils.d.ts.map +1 -0
  39. package/dest/e2e_multi_validator/utils.js +214 -0
  40. package/dest/e2e_nested_contract/nested_contract_test.d.ts +10 -7
  41. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
  42. package/dest/e2e_nested_contract/nested_contract_test.js +24 -20
  43. package/dest/e2e_p2p/inactivity_slash_test.d.ts +31 -0
  44. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -0
  45. package/dest/e2e_p2p/inactivity_slash_test.js +139 -0
  46. package/dest/e2e_p2p/p2p_network.d.ts +275 -23
  47. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  48. package/dest/e2e_p2p/p2p_network.js +184 -131
  49. package/dest/e2e_p2p/shared.d.ts +43 -7
  50. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  51. package/dest/e2e_p2p/shared.js +164 -19
  52. package/dest/e2e_token_contract/token_contract_test.d.ts +12 -6
  53. package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
  54. package/dest/e2e_token_contract/token_contract_test.js +50 -26
  55. package/dest/fixtures/e2e_prover_test.d.ts +63 -0
  56. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -0
  57. package/dest/{e2e_prover → fixtures}/e2e_prover_test.js +104 -105
  58. package/dest/fixtures/fixtures.d.ts +6 -7
  59. package/dest/fixtures/fixtures.d.ts.map +1 -1
  60. package/dest/fixtures/fixtures.js +4 -3
  61. package/dest/fixtures/get_acvm_config.d.ts +2 -2
  62. package/dest/fixtures/get_acvm_config.d.ts.map +1 -1
  63. package/dest/fixtures/get_acvm_config.js +2 -14
  64. package/dest/fixtures/get_bb_config.d.ts +2 -2
  65. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  66. package/dest/fixtures/get_bb_config.js +10 -17
  67. package/dest/fixtures/index.d.ts +1 -1
  68. package/dest/fixtures/l1_to_l2_messaging.d.ts +9 -6
  69. package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
  70. package/dest/fixtures/l1_to_l2_messaging.js +44 -18
  71. package/dest/fixtures/logging.d.ts +1 -1
  72. package/dest/fixtures/setup_l1_contracts.d.ts +476 -5
  73. package/dest/fixtures/setup_l1_contracts.d.ts.map +1 -1
  74. package/dest/fixtures/setup_l1_contracts.js +4 -4
  75. package/dest/fixtures/setup_p2p_test.d.ts +15 -14
  76. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  77. package/dest/fixtures/setup_p2p_test.js +81 -21
  78. package/dest/fixtures/snapshot_manager.d.ts +17 -9
  79. package/dest/fixtures/snapshot_manager.d.ts.map +1 -1
  80. package/dest/fixtures/snapshot_manager.js +147 -121
  81. package/dest/fixtures/token_utils.d.ts +10 -4
  82. package/dest/fixtures/token_utils.d.ts.map +1 -1
  83. package/dest/fixtures/token_utils.js +28 -12
  84. package/dest/fixtures/utils.d.ts +524 -40
  85. package/dest/fixtures/utils.d.ts.map +1 -1
  86. package/dest/fixtures/utils.js +464 -369
  87. package/dest/fixtures/web3signer.d.ts +5 -0
  88. package/dest/fixtures/web3signer.d.ts.map +1 -0
  89. package/dest/fixtures/web3signer.js +53 -0
  90. package/dest/fixtures/with_telemetry_utils.d.ts +1 -1
  91. package/dest/index.d.ts +1 -1
  92. package/dest/quality_of_service/alert_checker.d.ts +2 -2
  93. package/dest/quality_of_service/alert_checker.d.ts.map +1 -1
  94. package/dest/shared/cross_chain_test_harness.d.ts +39 -34
  95. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  96. package/dest/shared/cross_chain_test_harness.js +104 -50
  97. package/dest/shared/gas_portal_test_harness.d.ts +29 -31
  98. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  99. package/dest/shared/gas_portal_test_harness.js +51 -30
  100. package/dest/shared/index.d.ts +1 -1
  101. package/dest/shared/jest_setup.d.ts +1 -1
  102. package/dest/shared/jest_setup.js +1 -1
  103. package/dest/shared/submit-transactions.d.ts +6 -4
  104. package/dest/shared/submit-transactions.d.ts.map +1 -1
  105. package/dest/shared/submit-transactions.js +8 -7
  106. package/dest/shared/uniswap_l1_l2.d.ts +14 -12
  107. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  108. package/dest/shared/uniswap_l1_l2.js +146 -116
  109. package/dest/simulators/index.d.ts +1 -1
  110. package/dest/simulators/lending_simulator.d.ts +7 -11
  111. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  112. package/dest/simulators/lending_simulator.js +15 -16
  113. package/dest/simulators/token_simulator.d.ts +6 -3
  114. package/dest/simulators/token_simulator.d.ts.map +1 -1
  115. package/dest/simulators/token_simulator.js +16 -13
  116. package/dest/spartan/setup_test_wallets.d.ts +26 -11
  117. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  118. package/dest/spartan/setup_test_wallets.js +201 -58
  119. package/dest/spartan/utils.d.ts +116 -313
  120. package/dest/spartan/utils.d.ts.map +1 -1
  121. package/dest/spartan/utils.js +434 -130
  122. package/package.json +65 -58
  123. package/src/bench/client_flows/benchmark.ts +341 -0
  124. package/src/bench/client_flows/client_flows_benchmark.ts +447 -0
  125. package/src/bench/client_flows/config.ts +61 -0
  126. package/src/bench/client_flows/data_extractor.ts +89 -0
  127. package/src/bench/utils.ts +22 -76
  128. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +80 -77
  129. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +65 -106
  130. package/src/e2e_deploy_contract/deploy_test.ts +24 -39
  131. package/src/e2e_epochs/epochs_test.ts +276 -55
  132. package/src/e2e_fees/bridging_race.notest.ts +80 -0
  133. package/src/e2e_fees/fees_test.ts +142 -138
  134. package/src/e2e_l1_publisher/write_json.ts +77 -0
  135. package/src/e2e_multi_validator/utils.ts +258 -0
  136. package/src/e2e_nested_contract/nested_contract_test.ts +29 -19
  137. package/src/e2e_p2p/inactivity_slash_test.ts +182 -0
  138. package/src/e2e_p2p/p2p_network.ts +279 -169
  139. package/src/e2e_p2p/shared.ts +247 -29
  140. package/src/e2e_token_contract/token_contract_test.ts +43 -39
  141. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  142. package/src/{e2e_prover → fixtures}/e2e_prover_test.ts +107 -152
  143. package/src/fixtures/fixtures.ts +4 -3
  144. package/src/fixtures/get_acvm_config.ts +3 -11
  145. package/src/fixtures/get_bb_config.ts +18 -13
  146. package/src/fixtures/l1_to_l2_messaging.ts +53 -23
  147. package/src/fixtures/setup_l1_contracts.ts +6 -7
  148. package/src/fixtures/setup_p2p_test.ts +126 -38
  149. package/src/fixtures/snapshot_manager.ts +187 -139
  150. package/src/fixtures/token_utils.ts +32 -15
  151. package/src/fixtures/utils.ts +580 -434
  152. package/src/fixtures/web3signer.ts +63 -0
  153. package/src/guides/up_quick_start.sh +7 -15
  154. package/src/quality_of_service/alert_checker.ts +1 -1
  155. package/src/shared/cross_chain_test_harness.ts +108 -79
  156. package/src/shared/gas_portal_test_harness.ts +59 -50
  157. package/src/shared/jest_setup.ts +1 -1
  158. package/src/shared/submit-transactions.ts +12 -8
  159. package/src/shared/uniswap_l1_l2.ts +181 -184
  160. package/src/simulators/lending_simulator.ts +14 -15
  161. package/src/simulators/token_simulator.ts +21 -13
  162. package/src/spartan/DEVELOP.md +121 -0
  163. package/src/spartan/setup_test_wallets.ts +251 -93
  164. package/src/spartan/utils.ts +490 -130
  165. package/dest/e2e_prover/e2e_prover_test.d.ts +0 -56
  166. package/dest/e2e_prover/e2e_prover_test.d.ts.map +0 -1
  167. package/dest/sample-dapp/connect.js +0 -12
  168. package/dest/sample-dapp/contracts.js +0 -10
  169. package/dest/sample-dapp/deploy.js +0 -35
  170. package/dest/sample-dapp/index.js +0 -98
  171. package/src/sample-dapp/connect.mjs +0 -16
  172. package/src/sample-dapp/contracts.mjs +0 -14
  173. package/src/sample-dapp/deploy.mjs +0 -40
  174. package/src/sample-dapp/index.mjs +0 -128
@@ -0,0 +1,61 @@
1
+ import { ContractFunctionInteraction, DeployMethod, type DeployOptions, type ProfileInteractionOptions } from '@aztec/aztec.js/contracts';
2
+ import type { Logger } from '@aztec/aztec.js/log';
3
+ import { type PrivateExecutionStep } from '@aztec/stdlib/kernel';
4
+ import type { ProvingStats, ProvingTimings, SimulationStats, SimulationTimings } from '@aztec/stdlib/tx';
5
+ import type { GithubActionBenchmarkResult } from '../utils.js';
6
+ declare const logLevel: readonly ["silent", "fatal", "error", "warn", "info", "verbose", "debug", "trace"];
7
+ type LogLevel = (typeof logLevel)[number];
8
+ export type Log = {
9
+ type: LogLevel;
10
+ timestamp: number;
11
+ prefix: string;
12
+ message: string;
13
+ data: any;
14
+ };
15
+ declare const GATE_TYPES: readonly ["ecc_op", "busread", "lookup", "pub_inputs", "arithmetic", "delta_range", "elliptic", "memory", "nnf", "poseidon2_external", "poseidon2_internal", "overflow"];
16
+ type GateType = (typeof GATE_TYPES)[number];
17
+ type StructuredTrace = {
18
+ [k in GateType]: number;
19
+ };
20
+ export declare class ProxyLogger {
21
+ private static instance;
22
+ private logs;
23
+ private constructor();
24
+ static create(): void;
25
+ static getInstance(): ProxyLogger;
26
+ createLogger(prefix: string): Logger;
27
+ private handleLog;
28
+ flushLogs(): void;
29
+ getLogs(): Log[];
30
+ }
31
+ export type ProverType = 'wasm' | 'native';
32
+ type CallRecording = {
33
+ calls: number;
34
+ max: number;
35
+ min: number;
36
+ avg: number;
37
+ total: number;
38
+ };
39
+ type Step = Pick<PrivateExecutionStep, 'functionName' | 'gateCount'> & {
40
+ time: number;
41
+ accGateCount?: number;
42
+ oracles: Record<string, CallRecording>;
43
+ };
44
+ type ClientFlowBenchmark = {
45
+ name: string;
46
+ timings: Omit<ProvingTimings & SimulationTimings, 'perFunction'> & {
47
+ witgen: number;
48
+ };
49
+ maxMemory: number;
50
+ rpc: Record<string, CallRecording>;
51
+ proverType: ProverType;
52
+ minimumTrace: StructuredTrace;
53
+ totalGateCount: number;
54
+ steps: Step[];
55
+ error: string | undefined;
56
+ };
57
+ export declare function generateBenchmark(flow: string, logs: Log[], stats: ProvingStats | SimulationStats, privateExecutionSteps: PrivateExecutionStep[], proverType: ProverType, error: string | undefined): ClientFlowBenchmark;
58
+ export declare function convertProfileToGHBenchmark(benchmark: ClientFlowBenchmark): GithubActionBenchmarkResult[];
59
+ export declare function captureProfile(label: string, interaction: ContractFunctionInteraction | DeployMethod, opts: Omit<ProfileInteractionOptions & DeployOptions, 'profileMode'>, expectedSteps?: number): Promise<import("@aztec/stdlib/tx").TxProfileResult>;
60
+ export {};
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVuY2htYXJrLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmVuY2gvY2xpZW50X2Zsb3dzL2JlbmNobWFyay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLFlBQVksRUFDWixLQUFLLGFBQWEsRUFDbEIsS0FBSyx5QkFBeUIsRUFDL0IsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxPQUFPLEVBQUUsS0FBSyxvQkFBb0IsRUFBa0MsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRyxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBTXpHLE9BQU8sS0FBSyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSS9ELFFBQUEsTUFBTSxRQUFRLG9GQUFxRixDQUFDO0FBQ3BHLEtBQUssUUFBUSxHQUFHLENBQUMsT0FBTyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUUxQyxNQUFNLE1BQU0sR0FBRyxHQUFHO0lBQ2hCLElBQUksRUFBRSxRQUFRLENBQUM7SUFDZixTQUFTLEVBQUUsTUFBTSxDQUFDO0lBQ2xCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDZixPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQ2hCLElBQUksRUFBRSxHQUFHLENBQUM7Q0FDWCxDQUFDO0FBRUYsUUFBQSxNQUFNLFVBQVUsMEtBYU4sQ0FBQztBQUVYLEtBQUssUUFBUSxHQUFHLENBQUMsT0FBTyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUU1QyxLQUFLLGVBQWUsR0FBRztLQUNwQixDQUFDLElBQUksUUFBUSxHQUFHLE1BQU07Q0FDeEIsQ0FBQztBQUVGLHFCQUFhLFdBQVc7SUFDdEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQWM7SUFDckMsT0FBTyxDQUFDLElBQUksQ0FBYTtJQUV6QixPQUFPLGVBQWlCO0lBRXhCLE1BQU0sQ0FBQyxNQUFNLFNBRVo7SUFFRCxNQUFNLENBQUMsV0FBVyxnQkFFakI7SUFFRCxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxNQUFNLENBZW5DO0lBRUQsT0FBTyxDQUFDLFNBQVM7SUFJVixTQUFTLFNBRWY7SUFFTSxPQUFPLFVBRWI7Q0FDRjtBQUVELE1BQU0sTUFBTSxVQUFVLEdBQUcsTUFBTSxHQUFHLFFBQVEsQ0FBQztBQUUzQyxLQUFLLGFBQWEsR0FBRztJQUVuQixLQUFLLEVBQUUsTUFBTSxDQUFDO0lBRWQsR0FBRyxFQUFFLE1BQU0sQ0FBQztJQUVaLEdBQUcsRUFBRSxNQUFNLENBQUM7SUFFWixHQUFHLEVBQUUsTUFBTSxDQUFDO0lBRVosS0FBSyxFQUFFLE1BQU0sQ0FBQztDQUNmLENBQUM7QUFFRixLQUFLLElBQUksR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsY0FBYyxHQUFHLFdBQVcsQ0FBQyxHQUFHO0lBQ3JFLElBQUksRUFBRSxNQUFNLENBQUM7SUFDYixZQUFZLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDdEIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7Q0FDeEMsQ0FBQztBQUVGLEtBQUssbUJBQW1CLEdBQUc7SUFDekIsSUFBSSxFQUFFLE1BQU0sQ0FBQztJQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxHQUFHLGlCQUFpQixFQUFFLGFBQWEsQ0FBQyxHQUFHO1FBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQTtLQUFFLENBQUM7SUFDdEYsU0FBUyxFQUFFLE1BQU0sQ0FBQztJQUNsQixHQUFHLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNuQyxVQUFVLEVBQUUsVUFBVSxDQUFDO0lBQ3ZCLFlBQVksRUFBRSxlQUFlLENBQUM7SUFDOUIsY0FBYyxFQUFFLE1BQU0sQ0FBQztJQUN2QixLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDZCxLQUFLLEVBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQztDQUMzQixDQUFDO0FBMENGLHdCQUFnQixpQkFBaUIsQ0FDL0IsSUFBSSxFQUFFLE1BQU0sRUFDWixJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQ1gsS0FBSyxFQUFFLFlBQVksR0FBRyxlQUFlLEVBQ3JDLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLEVBQzdDLFVBQVUsRUFBRSxVQUFVLEVBQ3RCLEtBQUssRUFBRSxNQUFNLEdBQUcsU0FBUyxHQUN4QixtQkFBbUIsQ0FzRXJCO0FBRUQsd0JBQWdCLDJCQUEyQixDQUFDLFNBQVMsRUFBRSxtQkFBbUIsR0FBRywyQkFBMkIsRUFBRSxDQW1Eekc7QUFFRCx3QkFBc0IsY0FBYyxDQUNsQyxLQUFLLEVBQUUsTUFBTSxFQUNiLFdBQVcsRUFBRSwyQkFBMkIsR0FBRyxZQUFZLEVBQ3ZELElBQUksRUFBRSxJQUFJLENBQUMseUJBQXlCLEdBQUcsYUFBYSxFQUFFLGFBQWEsQ0FBQyxFQUNwRSxhQUFhLENBQUMsRUFBRSxNQUFNLHVEQW9DdkIifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../../../src/bench/client_flows/benchmark.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,261 @@
1
+ import { createLogger } from '@aztec/foundation/log';
2
+ import { serializePrivateExecutionSteps } from '@aztec/stdlib/kernel';
3
+ import assert from 'node:assert';
4
+ import { mkdir, writeFile } from 'node:fs/promises';
5
+ import { join } from 'node:path';
6
+ const logger = createLogger('bench:profile_capture');
7
+ const logLevel = [
8
+ 'silent',
9
+ 'fatal',
10
+ 'error',
11
+ 'warn',
12
+ 'info',
13
+ 'verbose',
14
+ 'debug',
15
+ 'trace'
16
+ ];
17
+ const GATE_TYPES = [
18
+ 'ecc_op',
19
+ 'busread',
20
+ 'lookup',
21
+ 'pub_inputs',
22
+ 'arithmetic',
23
+ 'delta_range',
24
+ 'elliptic',
25
+ 'memory',
26
+ 'nnf',
27
+ 'poseidon2_external',
28
+ 'poseidon2_internal',
29
+ 'overflow'
30
+ ];
31
+ export class ProxyLogger {
32
+ static instance;
33
+ logs = [];
34
+ constructor(){}
35
+ static create() {
36
+ ProxyLogger.instance = new ProxyLogger();
37
+ }
38
+ static getInstance() {
39
+ return ProxyLogger.instance;
40
+ }
41
+ createLogger(prefix) {
42
+ return new Proxy(createLogger(prefix), {
43
+ get: (target, prop)=>{
44
+ if (logLevel.includes(prop)) {
45
+ return function(...data) {
46
+ const loggingFn = prop;
47
+ const args = [
48
+ loggingFn,
49
+ prefix,
50
+ ...data
51
+ ];
52
+ ProxyLogger.getInstance().handleLog(...args);
53
+ target[loggingFn].call(this, ...[
54
+ data[0],
55
+ data[1]
56
+ ]);
57
+ };
58
+ } else {
59
+ return target[prop];
60
+ }
61
+ }
62
+ });
63
+ }
64
+ handleLog(type, prefix, message, data) {
65
+ this.logs.unshift({
66
+ type,
67
+ prefix,
68
+ message,
69
+ data,
70
+ timestamp: Date.now()
71
+ });
72
+ }
73
+ flushLogs() {
74
+ this.logs = [];
75
+ }
76
+ getLogs() {
77
+ return this.logs;
78
+ }
79
+ }
80
+ function getMinimumTrace(logs) {
81
+ const LOG_MESSAGE_CANDIDATE_PADDING = 5;
82
+ const minimumMessage = 'Minimum required block sizes for structured trace';
83
+ const minimumMessageIndex = logs.findIndex((log)=>log.message.includes(minimumMessage));
84
+ const candidateLogs = logs.slice(minimumMessageIndex - GATE_TYPES.length, minimumMessageIndex + LOG_MESSAGE_CANDIDATE_PADDING);
85
+ const traceLogs = candidateLogs.filter((log)=>GATE_TYPES.some((type)=>log.message.includes(type))).map((log)=>log.message.split(/\t|\n/)).flat().map((log)=>log.replace(/\(mem: .*\)/, '').trim()).filter(Boolean);
86
+ const traceSizes = traceLogs.map((log)=>{
87
+ const [gateType, gateSizeStr] = log.replace(/\n.*\)$/, '').replace(/bb - /, '').split(':').map((s)=>s.trim());
88
+ const gateSize = parseInt(gateSizeStr);
89
+ assert(GATE_TYPES.includes(gateType), `Gate type ${gateType} is not recognized`);
90
+ return {
91
+ [gateType]: gateSize
92
+ };
93
+ });
94
+ assert(traceSizes.length === GATE_TYPES.length, 'Decoded trace sizes do not match expected amount of gate types');
95
+ return traceSizes.reduce((acc, curr)=>({
96
+ ...acc,
97
+ ...curr
98
+ }), {});
99
+ }
100
+ function getMaxMemory(logs) {
101
+ const candidateLogs = logs.slice(0, 100).filter((log)=>/\(mem: .*MiB\)/.test(log.message));
102
+ const usage = candidateLogs.map((log)=>{
103
+ const memStr = log ? log.message.slice(log.message.indexOf('(mem: ') + 6, log.message.indexOf('MiB') - 3) : '';
104
+ return memStr ? parseInt(memStr) : 0;
105
+ });
106
+ return Math.max(...usage);
107
+ }
108
+ export function generateBenchmark(flow, logs, stats, privateExecutionSteps, proverType, error) {
109
+ let maxMemory = 0;
110
+ let minimumTrace;
111
+ try {
112
+ minimumTrace = getMinimumTrace(logs);
113
+ maxMemory = getMaxMemory(logs);
114
+ } catch {
115
+ logger.warn(`Failed obtain minimum trace and max memory for ${flow}. Did you run with REAL_PROOFS=1?`);
116
+ }
117
+ const steps = privateExecutionSteps.reduce((acc, step, i)=>{
118
+ const previousAccGateCount = i === 0 ? 0 : acc[i - 1].accGateCount;
119
+ return [
120
+ ...acc,
121
+ {
122
+ functionName: step.functionName,
123
+ gateCount: step.gateCount,
124
+ accGateCount: previousAccGateCount + step.gateCount,
125
+ time: step.timings.witgen,
126
+ oracles: Object.entries(step.timings.oracles ?? {}).reduce((acc, [oracleName, oracleData])=>{
127
+ const total = oracleData.times.reduce((sum, time)=>sum + time, 0);
128
+ const calls = oracleData.times.length;
129
+ acc[oracleName] = {
130
+ calls,
131
+ max: Math.max(...oracleData.times),
132
+ min: Math.min(...oracleData.times),
133
+ total,
134
+ avg: total / calls
135
+ };
136
+ return acc;
137
+ }, {})
138
+ }
139
+ ];
140
+ }, []);
141
+ const timings = stats.timings;
142
+ const totalGateCount = steps[steps.length - 1].accGateCount;
143
+ return {
144
+ name: flow,
145
+ timings: {
146
+ total: timings.total,
147
+ sync: timings.sync,
148
+ proving: timings.proving,
149
+ unaccounted: timings.unaccounted,
150
+ witgen: timings.perFunction.reduce((acc, fn)=>acc + fn.time, 0)
151
+ },
152
+ rpc: Object.entries(stats.nodeRPCCalls ?? {}).reduce((acc, [RPCName, RPCCalls])=>{
153
+ const total = RPCCalls.times.reduce((sum, time)=>sum + time, 0);
154
+ const calls = RPCCalls.times.length;
155
+ acc[RPCName] = {
156
+ calls,
157
+ max: Math.max(...RPCCalls.times),
158
+ min: Math.min(...RPCCalls.times),
159
+ total,
160
+ avg: total / calls
161
+ };
162
+ return acc;
163
+ }, {}),
164
+ maxMemory,
165
+ proverType,
166
+ minimumTrace: minimumTrace,
167
+ totalGateCount: totalGateCount,
168
+ steps,
169
+ error
170
+ };
171
+ }
172
+ export function convertProfileToGHBenchmark(benchmark) {
173
+ const totalRPCCalls = Object.values(benchmark.rpc).reduce((acc, call)=>acc + call.calls, 0);
174
+ const benches = [
175
+ {
176
+ name: `${benchmark.name}/witgen`,
177
+ value: benchmark.timings.witgen,
178
+ unit: 'ms'
179
+ },
180
+ {
181
+ name: `${benchmark.name}/total`,
182
+ value: benchmark.timings.total,
183
+ unit: 'ms'
184
+ },
185
+ {
186
+ name: `${benchmark.name}/sync`,
187
+ value: benchmark.timings.sync,
188
+ unit: 'ms'
189
+ },
190
+ {
191
+ name: `${benchmark.name}/unaccounted`,
192
+ value: benchmark.timings.unaccounted,
193
+ unit: 'ms'
194
+ },
195
+ {
196
+ name: `${benchmark.name}/total_gate_count`,
197
+ value: benchmark.totalGateCount,
198
+ unit: 'gates'
199
+ },
200
+ {
201
+ name: `${benchmark.name}/rpc`,
202
+ value: totalRPCCalls,
203
+ unit: 'calls'
204
+ }
205
+ ];
206
+ if (benchmark.timings.proving) {
207
+ benches.push({
208
+ name: `${benchmark.name}/proving`,
209
+ value: benchmark.timings.proving,
210
+ unit: 'ms'
211
+ });
212
+ }
213
+ if (benchmark.maxMemory) {
214
+ benches.push({
215
+ name: `${benchmark.name}/max_memory`,
216
+ value: benchmark.maxMemory,
217
+ unit: 'MiB'
218
+ });
219
+ }
220
+ return benches;
221
+ }
222
+ export async function captureProfile(label, interaction, opts, expectedSteps) {
223
+ // Make sure the proxy logger starts from a clean slate
224
+ ProxyLogger.getInstance().flushLogs();
225
+ const result = await interaction.profile({
226
+ ...opts,
227
+ profileMode: 'full',
228
+ skipProofGeneration: false
229
+ });
230
+ const logs = ProxyLogger.getInstance().getLogs();
231
+ if (expectedSteps !== undefined && result.executionSteps.length !== expectedSteps) {
232
+ throw new Error(`Expected ${expectedSteps} execution steps, got ${result.executionSteps.length}`);
233
+ }
234
+ const benchmark = generateBenchmark(label, logs, result.stats, result.executionSteps, 'wasm', undefined);
235
+ const ivcFolder = process.env.CAPTURE_IVC_FOLDER;
236
+ if (ivcFolder) {
237
+ logger.info(`Capturing chonk execution profile for ${label}`);
238
+ const resultsDirectory = join(ivcFolder, label);
239
+ logger.info(`Writing private execution steps to ${resultsDirectory}`);
240
+ await mkdir(resultsDirectory, {
241
+ recursive: true
242
+ });
243
+ // Write the chonk files read by the prover.
244
+ const ivcInputsPath = join(resultsDirectory, 'ivc-inputs.msgpack');
245
+ await writeFile(ivcInputsPath, serializePrivateExecutionSteps(result.executionSteps));
246
+ await writeFile(join(resultsDirectory, 'logs.json'), JSON.stringify(logs, null, 2));
247
+ await writeFile(join(resultsDirectory, 'benchmark.json'), JSON.stringify(benchmark, null, 2));
248
+ logger.info(`Wrote private execution steps to ${resultsDirectory}`);
249
+ }
250
+ const benchOutput = process.env.BENCH_OUTPUT;
251
+ if (benchOutput) {
252
+ await mkdir(benchOutput, {
253
+ recursive: true
254
+ });
255
+ const ghBenchmark = convertProfileToGHBenchmark(benchmark);
256
+ const benchFile = join(benchOutput, `${label}.bench.json`);
257
+ await writeFile(benchFile, JSON.stringify(ghBenchmark));
258
+ logger.info(`Wrote benchmark to ${benchFile}`);
259
+ }
260
+ return result;
261
+ }
@@ -0,0 +1,80 @@
1
+ import { AztecAddress } from '@aztec/aztec.js/addresses';
2
+ import { FeeJuicePaymentMethodWithClaim } from '@aztec/aztec.js/fee';
3
+ import { type FeePaymentMethod, PrivateFeePaymentMethod, SponsoredFeePaymentMethod } from '@aztec/aztec.js/fee';
4
+ import { type Logger } from '@aztec/aztec.js/log';
5
+ import type { AztecNode } from '@aztec/aztec.js/node';
6
+ import type { Wallet } from '@aztec/aztec.js/wallet';
7
+ import { CheatCodes } from '@aztec/aztec/testing';
8
+ import { type DeployL1ContractsArgs } from '@aztec/ethereum';
9
+ import { ChainMonitor } from '@aztec/ethereum/test';
10
+ import { EthAddress } from '@aztec/foundation/eth-address';
11
+ import { AMMContract } from '@aztec/noir-contracts.js/AMM';
12
+ import { FPCContract } from '@aztec/noir-contracts.js/FPC';
13
+ import { FeeJuiceContract } from '@aztec/noir-contracts.js/FeeJuice';
14
+ import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC';
15
+ import { TokenContract as BananaCoin, TokenContract } from '@aztec/noir-contracts.js/Token';
16
+ import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
17
+ import { TestWallet } from '@aztec/test-wallet/server';
18
+ import { type SubsystemsContext } from '../../fixtures/snapshot_manager.js';
19
+ import { type SetupOptions } from '../../fixtures/utils.js';
20
+ import { CrossChainTestHarness } from '../../shared/cross_chain_test_harness.js';
21
+ import { type GasBridgingTestHarness } from '../../shared/gas_portal_test_harness.js';
22
+ import { type ClientFlowsConfig } from './config.js';
23
+ export type AccountType = 'ecdsar1' | 'schnorr';
24
+ export type FeePaymentMethodGetter = (wallet: Wallet, sender: AztecAddress) => Promise<FeePaymentMethod | undefined>;
25
+ export type BenchmarkingFeePaymentMethod = 'bridged_fee_juice' | 'private_fpc' | 'sponsored_fpc' | 'fee_juice';
26
+ export declare class ClientFlowsBenchmark {
27
+ private snapshotManager;
28
+ logger: Logger;
29
+ aztecNode: AztecNode;
30
+ cheatCodes: CheatCodes;
31
+ context: SubsystemsContext;
32
+ chainMonitor: ChainMonitor;
33
+ feeJuiceBridgeTestHarness: GasBridgingTestHarness;
34
+ adminWallet: TestWallet;
35
+ adminAddress: AztecAddress;
36
+ sequencerAddress: AztecAddress;
37
+ coinbase: EthAddress;
38
+ feeJuiceContract: FeeJuiceContract;
39
+ bananaCoin: BananaCoin;
40
+ bananaCoinInstance: ContractInstanceWithAddress;
41
+ bananaFPC: FPCContract;
42
+ bananaFPCInstance: ContractInstanceWithAddress;
43
+ candyBarCoin: TokenContract;
44
+ candyBarCoinInstance: ContractInstanceWithAddress;
45
+ amm: AMMContract;
46
+ ammInstance: ContractInstanceWithAddress;
47
+ liquidityToken: TokenContract;
48
+ liquidityTokenInstance: ContractInstanceWithAddress;
49
+ sponsoredFPC: SponsoredFPCContract;
50
+ sponsoredFPCInstance: ContractInstanceWithAddress;
51
+ userWallet: TestWallet;
52
+ realProofs: boolean;
53
+ paymentMethods: Record<BenchmarkingFeePaymentMethod, {
54
+ forWallet: FeePaymentMethodGetter;
55
+ circuits: number;
56
+ }>;
57
+ config: ClientFlowsConfig;
58
+ private proxyLogger;
59
+ constructor(testName?: string, setupOptions?: Partial<SetupOptions & DeployL1ContractsArgs>);
60
+ setup(): Promise<this>;
61
+ teardown(): Promise<void>;
62
+ mintAndBridgeFeeJuice(address: AztecAddress): Promise<void>;
63
+ /** Admin mints bananaCoin tokens privately to the target address and redeems them. */
64
+ mintPrivateBananas(amount: bigint, address: AztecAddress): Promise<void>;
65
+ createBenchmarkingAccountManager(wallet: TestWallet, type: 'ecdsar1' | 'schnorr'): Promise<import("@aztec/aztec.js/wallet").AccountManager>;
66
+ applyBaseSnapshots(): Promise<void>;
67
+ applyInitialAccountsSnapshot(): Promise<void>;
68
+ applySetupFeeJuiceSnapshot(): Promise<void>;
69
+ applyDeployBananaTokenSnapshot(): Promise<void>;
70
+ applyDeployCandyBarTokenSnapshot(): Promise<void>;
71
+ applyFPCSetupSnapshot(): Promise<void>;
72
+ applyDeploySponsoredFPCSnapshot(): Promise<void>;
73
+ createCrossChainTestHarness(owner: AztecAddress): Promise<CrossChainTestHarness>;
74
+ createAndFundBenchmarkingAccountOnUserWallet(accountType: AccountType): Promise<AztecAddress>;
75
+ applyDeployAmmSnapshot(): Promise<void>;
76
+ getBridgedFeeJuicePaymentMethodForWallet(_wallet: Wallet, sender: AztecAddress): Promise<FeeJuicePaymentMethodWithClaim>;
77
+ getPrivateFPCPaymentMethodForWallet(wallet: Wallet, sender: AztecAddress): Promise<PrivateFeePaymentMethod>;
78
+ getSponsoredFPCPaymentMethodForWallet(_wallet: Wallet, _sender: AztecAddress): Promise<SponsoredFeePaymentMethod>;
79
+ }
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50X2Zsb3dzX2JlbmNobWFyay5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JlbmNoL2NsaWVudF9mbG93cy9jbGllbnRfZmxvd3NfYmVuY2htYXJrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLEtBQUsscUJBQXFCLEVBQTRELE1BQU0saUJBQWlCLENBQUM7QUFDdkgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXBELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUkzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLElBQUksVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBSTVGLE9BQU8sS0FB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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client_flows_benchmark.d.ts","sourceRoot":"","sources":["../../../src/bench/client_flows/client_flows_benchmark.ts"],"names":[],"mappings":"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"}