@aztec/end-to-end 0.0.1-commit.5476d83 → 0.0.1-commit.5914bae
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.
- package/README.md +27 -0
- package/dest/bench/client_flows/benchmark.d.ts +3 -2
- package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/benchmark.js +21 -1
- package/dest/bench/client_flows/client_flows_benchmark.d.ts +15 -16
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +138 -144
- package/dest/bench/client_flows/config.d.ts +2 -2
- package/dest/bench/client_flows/config.d.ts.map +1 -1
- package/dest/bench/client_flows/config.js +18 -0
- package/dest/bench/client_flows/data_extractor.js +3 -1
- package/dest/bench/utils.d.ts +9 -8
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +31 -19
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +11 -9
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +108 -114
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +20 -14
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +92 -71
- package/dest/e2e_deploy_contract/deploy_test.d.ts +5 -4
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
- package/dest/e2e_deploy_contract/deploy_test.js +18 -13
- package/dest/e2e_epochs/epochs_test.d.ts +27 -15
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +104 -52
- package/dest/e2e_fees/bridging_race.notest.js +4 -6
- package/dest/e2e_fees/fees_test.d.ts +21 -17
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +137 -145
- package/dest/e2e_l1_publisher/write_json.d.ts +4 -3
- package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
- package/dest/e2e_l1_publisher/write_json.js +14 -16
- package/dest/e2e_multi_validator/utils.js +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.d.ts +6 -9
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +30 -40
- package/dest/e2e_p2p/inactivity_slash_test.d.ts +4 -4
- package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
- package/dest/e2e_p2p/inactivity_slash_test.js +7 -9
- package/dest/e2e_p2p/p2p_network.d.ts +16 -13
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +140 -114
- package/dest/e2e_p2p/reqresp/utils.d.ts +22 -0
- package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -0
- package/dest/e2e_p2p/reqresp/utils.js +177 -0
- package/dest/e2e_p2p/shared.d.ts +39 -7
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +73 -22
- package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts +2 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts.map +1 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.js +184 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts +18 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts.map +1 -0
- package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.js +120 -0
- package/dest/e2e_token_contract/token_contract_test.d.ts +19 -10
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +100 -92
- package/dest/fixtures/authwit_proxy.d.ts +15 -0
- package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
- package/dest/fixtures/authwit_proxy.js +34 -0
- package/dest/fixtures/e2e_prover_test.d.ts +13 -21
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +114 -133
- package/dest/fixtures/fixtures.d.ts +6 -3
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +8 -3
- package/dest/fixtures/get_acvm_config.js +1 -1
- package/dest/fixtures/ha_setup.d.ts +71 -0
- package/dest/fixtures/ha_setup.d.ts.map +1 -0
- package/dest/fixtures/ha_setup.js +116 -0
- package/dest/fixtures/index.d.ts +2 -1
- package/dest/fixtures/index.d.ts.map +1 -1
- package/dest/fixtures/index.js +1 -0
- package/dest/fixtures/l1_to_l2_messaging.d.ts +4 -3
- package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
- package/dest/fixtures/l1_to_l2_messaging.js +2 -2
- package/dest/fixtures/setup.d.ts +238 -0
- package/dest/fixtures/setup.d.ts.map +1 -0
- package/dest/fixtures/setup.js +609 -0
- package/dest/fixtures/setup_p2p_test.d.ts +16 -9
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +43 -32
- package/dest/fixtures/token_utils.d.ts +2 -2
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +12 -8
- package/dest/fixtures/utils.d.ts +5 -637
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +4 -647
- package/dest/fixtures/web3signer.js +1 -1
- package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
- package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
- package/dest/fixtures/with_telemetry_utils.js +2 -2
- package/dest/forward-compatibility/wallet_rpc_client.d.ts +7 -0
- package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
- package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
- package/dest/forward-compatibility/wallet_service.d.ts +3 -0
- package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
- package/dest/forward-compatibility/wallet_service.js +109 -0
- package/dest/legacy-jest-resolver.d.cts +3 -0
- package/dest/legacy-jest-resolver.d.cts.map +1 -0
- package/dest/quality_of_service/grafana_client.d.ts +41 -0
- package/dest/quality_of_service/grafana_client.d.ts.map +1 -0
- package/dest/quality_of_service/{alert_checker.js → grafana_client.js} +1 -1
- package/dest/quality_of_service/prometheus_client.d.ts +38 -0
- package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
- package/dest/quality_of_service/prometheus_client.js +67 -0
- package/dest/shared/cross_chain_test_harness.d.ts +18 -6
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +27 -27
- package/dest/shared/gas_portal_test_harness.d.ts +12 -2
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.js +3 -3
- package/dest/shared/index.d.ts +3 -2
- package/dest/shared/index.d.ts.map +1 -1
- package/dest/shared/index.js +1 -0
- package/dest/shared/mock_state_view.d.ts +86 -0
- package/dest/shared/mock_state_view.d.ts.map +1 -0
- package/dest/shared/mock_state_view.js +186 -0
- package/dest/shared/submit-transactions.d.ts +4 -4
- package/dest/shared/submit-transactions.d.ts.map +1 -1
- package/dest/shared/submit-transactions.js +9 -11
- package/dest/shared/uniswap_l1_l2.d.ts +3 -27
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +58 -39
- package/dest/simulators/lending_simulator.d.ts +6 -2
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +6 -6
- package/dest/simulators/token_simulator.d.ts +1 -1
- package/dest/simulators/token_simulator.d.ts.map +1 -1
- package/dest/simulators/token_simulator.js +3 -24
- package/dest/spartan/setup_test_wallets.d.ts +15 -5
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +113 -42
- package/dest/spartan/tx_metrics.d.ts +88 -0
- package/dest/spartan/tx_metrics.d.ts.map +1 -0
- package/dest/spartan/tx_metrics.js +422 -0
- package/dest/spartan/utils/bot.d.ts +28 -0
- package/dest/spartan/utils/bot.d.ts.map +1 -0
- package/dest/spartan/utils/bot.js +142 -0
- package/dest/spartan/utils/chaos.d.ts +79 -0
- package/dest/spartan/utils/chaos.d.ts.map +1 -0
- package/dest/spartan/utils/chaos.js +142 -0
- package/dest/spartan/utils/clients.d.ts +39 -0
- package/dest/spartan/utils/clients.d.ts.map +1 -0
- package/dest/spartan/utils/clients.js +90 -0
- package/dest/spartan/utils/config.d.ts +39 -0
- package/dest/spartan/utils/config.d.ts.map +1 -0
- package/dest/spartan/utils/config.js +21 -0
- package/dest/spartan/utils/health.d.ts +63 -0
- package/dest/spartan/utils/health.d.ts.map +1 -0
- package/dest/spartan/utils/health.js +202 -0
- package/dest/spartan/utils/helm.d.ts +15 -0
- package/dest/spartan/utils/helm.d.ts.map +1 -0
- package/dest/spartan/utils/helm.js +47 -0
- package/dest/spartan/utils/index.d.ts +10 -0
- package/dest/spartan/utils/index.d.ts.map +1 -0
- package/dest/spartan/utils/index.js +20 -0
- package/dest/spartan/utils/k8s.d.ts +128 -0
- package/dest/spartan/utils/k8s.d.ts.map +1 -0
- package/dest/spartan/utils/k8s.js +381 -0
- package/dest/spartan/utils/nodes.d.ts +41 -0
- package/dest/spartan/utils/nodes.d.ts.map +1 -0
- package/dest/spartan/utils/nodes.js +461 -0
- package/dest/spartan/utils/scripts.d.ts +30 -0
- package/dest/spartan/utils/scripts.d.ts.map +1 -0
- package/dest/spartan/utils/scripts.js +81 -0
- package/dest/spartan/utils.d.ts +2 -220
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +1 -782
- package/dest/test-wallet/test_wallet.d.ts +84 -0
- package/dest/test-wallet/test_wallet.d.ts.map +1 -0
- package/dest/test-wallet/test_wallet.js +249 -0
- package/dest/test-wallet/utils.d.ts +41 -0
- package/dest/test-wallet/utils.d.ts.map +1 -0
- package/dest/test-wallet/utils.js +71 -0
- package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
- package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
- package/dest/test-wallet/wallet_worker_script.js +48 -0
- package/dest/test-wallet/worker_wallet.d.ts +52 -0
- package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet.js +151 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts +274 -0
- package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
- package/dest/test-wallet/worker_wallet_schema.js +10 -0
- package/package.json +47 -41
- package/src/bench/client_flows/benchmark.ts +24 -2
- package/src/bench/client_flows/client_flows_benchmark.ts +157 -216
- package/src/bench/client_flows/config.ts +9 -1
- package/src/bench/client_flows/data_extractor.ts +1 -1
- package/src/bench/utils.ts +36 -21
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +123 -151
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +140 -126
- package/src/e2e_deploy_contract/deploy_test.ts +22 -15
- package/src/e2e_epochs/epochs_test.ts +172 -111
- package/src/e2e_fees/bridging_race.notest.ts +5 -11
- package/src/e2e_fees/fees_test.ts +178 -228
- package/src/e2e_l1_publisher/write_json.ts +16 -16
- package/src/e2e_multi_validator/utils.ts +1 -1
- package/src/e2e_nested_contract/nested_contract_test.ts +35 -56
- package/src/e2e_p2p/inactivity_slash_test.ts +8 -10
- package/src/e2e_p2p/p2p_network.ts +203 -180
- package/src/e2e_p2p/reqresp/utils.ts +235 -0
- package/src/e2e_p2p/shared.ts +129 -29
- package/src/e2e_storage_proof/fixtures/storage_proof.json +915 -0
- package/src/e2e_storage_proof/fixtures/storage_proof_fetcher.ts +190 -0
- package/src/e2e_storage_proof/fixtures/storage_proof_fixture.ts +173 -0
- package/src/e2e_token_contract/token_contract_test.ts +121 -119
- package/src/fixtures/authwit_proxy.ts +54 -0
- package/src/fixtures/dumps/epoch_proof_result.json +1 -1
- package/src/fixtures/e2e_prover_test.ts +136 -177
- package/src/fixtures/fixtures.ts +12 -5
- package/src/fixtures/get_acvm_config.ts +1 -1
- package/src/fixtures/ha_setup.ts +186 -0
- package/src/fixtures/index.ts +1 -0
- package/src/fixtures/l1_to_l2_messaging.ts +4 -2
- package/src/fixtures/setup.ts +905 -0
- package/src/fixtures/setup_p2p_test.ts +43 -47
- package/src/fixtures/token_utils.ts +10 -6
- package/src/fixtures/utils.ts +27 -966
- package/src/fixtures/web3signer.ts +1 -1
- package/src/fixtures/with_telemetry_utils.ts +2 -2
- package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
- package/src/forward-compatibility/wallet_service.ts +104 -0
- package/src/guides/up_quick_start.sh +3 -3
- package/src/legacy-jest-resolver.cjs +135 -0
- package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +1 -1
- package/src/quality_of_service/prometheus_client.ts +113 -0
- package/src/shared/cross_chain_test_harness.ts +30 -43
- package/src/shared/gas_portal_test_harness.ts +3 -3
- package/src/shared/index.ts +2 -1
- package/src/shared/mock_state_view.ts +188 -0
- package/src/shared/submit-transactions.ts +14 -16
- package/src/shared/uniswap_l1_l2.ts +86 -102
- package/src/simulators/lending_simulator.ts +11 -7
- package/src/simulators/token_simulator.ts +6 -30
- package/src/spartan/DEVELOP.md +7 -0
- package/src/spartan/setup_test_wallets.ts +168 -27
- package/src/spartan/tx_metrics.ts +376 -0
- package/src/spartan/utils/bot.ts +188 -0
- package/src/spartan/utils/chaos.ts +253 -0
- package/src/spartan/utils/clients.ts +100 -0
- package/src/spartan/utils/config.ts +27 -0
- package/src/spartan/utils/health.ts +255 -0
- package/src/spartan/utils/helm.ts +84 -0
- package/src/spartan/utils/index.ts +68 -0
- package/src/spartan/utils/k8s.ts +535 -0
- package/src/spartan/utils/nodes.ts +538 -0
- package/src/spartan/utils/scripts.ts +99 -0
- package/src/spartan/utils.ts +1 -982
- package/src/test-wallet/test_wallet.ts +351 -0
- package/src/test-wallet/utils.ts +112 -0
- package/src/test-wallet/wallet_worker_script.ts +60 -0
- package/src/test-wallet/worker_wallet.ts +214 -0
- package/src/test-wallet/worker_wallet_schema.ts +13 -0
- package/dest/fixtures/setup_l1_contracts.d.ts +0 -477
- package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
- package/dest/fixtures/setup_l1_contracts.js +0 -17
- package/dest/fixtures/snapshot_manager.d.ts +0 -95
- package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
- package/dest/fixtures/snapshot_manager.js +0 -505
- package/dest/quality_of_service/alert_checker.d.ts +0 -41
- package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
- package/src/fixtures/setup_l1_contracts.ts +0 -26
- package/src/fixtures/snapshot_manager.ts +0 -665
package/README.md
CHANGED
|
@@ -24,3 +24,30 @@ which will spawn the two processes.
|
|
|
24
24
|
You can also run this by `docker-compose up` which will spawn 2 different containers for Anvil and the test runner.
|
|
25
25
|
|
|
26
26
|
You can run a single test by running `yarn test:compose <test_name>`.
|
|
27
|
+
|
|
28
|
+
## Running tests against legacy contract artifacts
|
|
29
|
+
|
|
30
|
+
To verify that contracts deployed from a previous release still work against the current stack, set
|
|
31
|
+
`CONTRACT_ARTIFACTS_VERSION` to a published version of `@aztec/noir-contracts.js` / `@aztec/noir-test-contracts.js`:
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
CONTRACT_ARTIFACTS_VERSION=4.1.3 yarn test:e2e src/e2e_amm.test.ts
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Only the JSON artifact files (`.../artifacts/*.json`) are redirected. The TypeScript wrapper classes
|
|
38
|
+
(e.g. `TokenContract`) continue to load from the current workspace and use the current `@aztec/aztec.js` — so this
|
|
39
|
+
exercises whether a deployed contract's ABI / bytecode / notes still work through the *new* client, not whether the
|
|
40
|
+
legacy wrapper code still imports cleanly.
|
|
41
|
+
|
|
42
|
+
The first run downloads the pinned packages into `.legacy-contracts/<version>/node_modules/` (cached across runs). A
|
|
43
|
+
startup banner and a per-redirect line are printed to stderr so you can confirm the legacy artifacts were actually
|
|
44
|
+
loaded:
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
[legacy-contracts][jest] CONTRACT_ARTIFACTS_VERSION=4.1.3
|
|
48
|
+
[legacy-contracts][jest] redirecting @aztec/noir-contracts.js/artifacts/*.json -> .legacy-contracts/4.1.3/...
|
|
49
|
+
[legacy-contracts][jest] redirected token_contract-Token.json -> /abs/.../.legacy-contracts/4.1.3/.../token_contract-Token.json
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
When `CONTRACT_ARTIFACTS_VERSION` is unset the test run is byte-identical to the default behaviour. The cache is
|
|
53
|
+
populated automatically on first use.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ContractFunctionInteraction, DeployMethod, type DeployOptions, type ProfileInteractionOptions } from '@aztec/aztec.js/contracts';
|
|
2
2
|
import type { Logger } from '@aztec/aztec.js/log';
|
|
3
3
|
import { type PrivateExecutionStep } from '@aztec/stdlib/kernel';
|
|
4
|
-
import type { ProvingStats, ProvingTimings, SimulationStats, SimulationTimings } from '@aztec/stdlib/tx';
|
|
4
|
+
import type { ProvingStats, ProvingTimings, RoundTripStats, SimulationStats, SimulationTimings } from '@aztec/stdlib/tx';
|
|
5
5
|
import type { GithubActionBenchmarkResult } from '../utils.js';
|
|
6
6
|
declare const logLevel: readonly ["silent", "fatal", "error", "warn", "info", "verbose", "debug", "trace"];
|
|
7
7
|
type LogLevel = (typeof logLevel)[number];
|
|
@@ -48,6 +48,7 @@ type ClientFlowBenchmark = {
|
|
|
48
48
|
};
|
|
49
49
|
maxMemory: number;
|
|
50
50
|
rpc: Record<string, CallRecording>;
|
|
51
|
+
roundTrips: RoundTripStats;
|
|
51
52
|
proverType: ProverType;
|
|
52
53
|
minimumTrace: StructuredTrace;
|
|
53
54
|
totalGateCount: number;
|
|
@@ -58,4 +59,4 @@ export declare function generateBenchmark(flow: string, logs: Log[], stats: Prov
|
|
|
58
59
|
export declare function convertProfileToGHBenchmark(benchmark: ClientFlowBenchmark): GithubActionBenchmarkResult[];
|
|
59
60
|
export declare function captureProfile(label: string, interaction: ContractFunctionInteraction | DeployMethod, opts: Omit<ProfileInteractionOptions & DeployOptions, 'profileMode'>, expectedSteps?: number): Promise<import("@aztec/stdlib/tx").TxProfileResult>;
|
|
60
61
|
export {};
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVuY2htYXJrLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmVuY2gvY2xpZW50X2Zsb3dzL2JlbmNobWFyay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLFlBQVksRUFDWixLQUFLLGFBQWEsRUFDbEIsS0FBSyx5QkFBeUIsRUFDL0IsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxPQUFPLEVBQUUsS0FBSyxvQkFBb0IsRUFBa0MsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRyxPQUFPLEtBQUssRUFDVixZQUFZLEVBQ1osY0FBYyxFQUNkLGNBQWMsRUFDZCxlQUFlLEVBQ2YsaUJBQWlCLEVBQ2xCLE1BQU0sa0JBQWtCLENBQUM7QUFNMUIsT0FBTyxLQUFLLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJL0QsUUFBQSxNQUFNLFFBQVEsb0ZBQXFGLENBQUM7QUFDcEcsS0FBSyxRQUFRLEdBQUcsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRTFDLE1BQU0sTUFBTSxHQUFHLEdBQUc7SUFDaEIsSUFBSSxFQUFFLFFBQVEsQ0FBQztJQUNmLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLE9BQU8sRUFBRSxNQUFNLENBQUM7SUFDaEIsSUFBSSxFQUFFLEdBQUcsQ0FBQztDQUNYLENBQUM7QUFFRixRQUFBLE1BQU0sVUFBVSwwS0FhTixDQUFDO0FBRVgsS0FBSyxRQUFRLEdBQUcsQ0FBQyxPQUFPLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRTVDLEtBQUssZUFBZSxHQUFHO0tBQ3BCLENBQUMsSUFBSSxRQUFRLEdBQUcsTUFBTTtDQUN4QixDQUFDO0FBRUYscUJBQWEsV0FBVztJQUN0QixPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBYztJQUNyQyxPQUFPLENBQUMsSUFBSSxDQUFhO0lBRXpCLE9BQU8sZUFBaUI7SUFFeEIsTUFBTSxDQUFDLE1BQU0sU0FFWjtJQUVELE1BQU0sQ0FBQyxXQUFXLGdCQUVqQjtJQUVELFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE1BQU0sQ0FlbkM7SUFFRCxPQUFPLENBQUMsU0FBUztJQUlWLFNBQVMsU0FFZjtJQUVNLE9BQU8sVUFFYjtDQUNGO0FBRUQsTUFBTSxNQUFNLFVBQVUsR0FBRyxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBRTNDLEtBQUssYUFBYSxHQUFHO0lBRW5CLEtBQUssRUFBRSxNQUFNLENBQUM7SUFFZCxHQUFHLEVBQUUsTUFBTSxDQUFDO0lBRVosR0FBRyxFQUFFLE1BQU0sQ0FBQztJQUVaLEdBQUcsRUFBRSxNQUFNLENBQUM7SUFFWixLQUFLLEVBQUUsTUFBTSxDQUFDO0NBQ2YsQ0FBQztBQUVGLEtBQUssSUFBSSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxjQUFjLEdBQUcsV0FBVyxDQUFDLEdBQUc7SUFDckUsSUFBSSxFQUFFLE1BQU0sQ0FBQztJQUNiLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUN0QixPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztDQUN4QyxDQUFDO0FBRUYsS0FBSyxtQkFBbUIsR0FBRztJQUN6QixJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ2IsT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjLEdBQUcsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLEdBQUc7UUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFBO0tBQUUsQ0FBQztJQUN0RixTQUFTLEVBQUUsTUFBTSxDQUFDO0lBQ2xCLEdBQUcsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ25DLFVBQVUsRUFBRSxjQUFjLENBQUM7SUFDM0IsVUFBVSxFQUFFLFVBQVUsQ0FBQztJQUN2QixZQUFZLEVBQUUsZUFBZSxDQUFDO0lBQzlCLGNBQWMsRUFBRSxNQUFNLENBQUM7SUFDdkIsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ2QsS0FBSyxFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7Q0FDM0IsQ0FBQztBQTBDRix3QkFBZ0IsaUJBQWlCLENBQy9CLElBQUksRUFBRSxNQUFNLEVBQ1osSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUNYLEtBQUssRUFBRSxZQUFZLEdBQUcsZUFBZSxFQUNyQyxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxFQUM3QyxVQUFVLEVBQUUsVUFBVSxFQUN0QixLQUFLLEVBQUUsTUFBTSxHQUFHLFNBQVMsR0FDeEIsbUJBQW1CLENBMkVyQjtBQUVELHdCQUFnQiwyQkFBMkIsQ0FBQyxTQUFTLEVBQUUsbUJBQW1CLEdBQUcsMkJBQTJCLEVBQUUsQ0E2RHpHO0FBRUQsd0JBQXNCLGNBQWMsQ0FDbEMsS0FBSyxFQUFFLE1BQU0sRUFDYixXQUFXLEVBQUUsMkJBQTJCLEdBQUcsWUFBWSxFQUN2RCxJQUFJLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixHQUFHLGFBQWEsRUFBRSxhQUFhLENBQUMsRUFDcEUsYUFBYSxDQUFDLEVBQUUsTUFBTSx1REFvQ3ZCIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../../../src/bench/client_flows/benchmark.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,yBAAyB,EAC/B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,KAAK,oBAAoB,EAAkC,MAAM,sBAAsB,CAAC;AACjG,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../../../src/bench/client_flows/benchmark.ts"],"names":[],"mappings":"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"}
|
|
@@ -140,6 +140,15 @@ export function generateBenchmark(flow, logs, stats, privateExecutionSteps, prov
|
|
|
140
140
|
}, []);
|
|
141
141
|
const timings = stats.timings;
|
|
142
142
|
const totalGateCount = steps[steps.length - 1].accGateCount;
|
|
143
|
+
const nodeRPCCalls = stats.nodeRPCCalls ?? {
|
|
144
|
+
perMethod: {},
|
|
145
|
+
roundTrips: {
|
|
146
|
+
roundTrips: 0,
|
|
147
|
+
totalBlockingTime: 0,
|
|
148
|
+
roundTripDurations: [],
|
|
149
|
+
roundTripMethods: []
|
|
150
|
+
}
|
|
151
|
+
};
|
|
143
152
|
return {
|
|
144
153
|
name: flow,
|
|
145
154
|
timings: {
|
|
@@ -149,7 +158,7 @@ export function generateBenchmark(flow, logs, stats, privateExecutionSteps, prov
|
|
|
149
158
|
unaccounted: timings.unaccounted,
|
|
150
159
|
witgen: timings.perFunction.reduce((acc, fn)=>acc + fn.time, 0)
|
|
151
160
|
},
|
|
152
|
-
rpc: Object.entries(
|
|
161
|
+
rpc: Object.entries(nodeRPCCalls.perMethod).reduce((acc, [RPCName, RPCCalls])=>{
|
|
153
162
|
const total = RPCCalls.times.reduce((sum, time)=>sum + time, 0);
|
|
154
163
|
const calls = RPCCalls.times.length;
|
|
155
164
|
acc[RPCName] = {
|
|
@@ -161,6 +170,7 @@ export function generateBenchmark(flow, logs, stats, privateExecutionSteps, prov
|
|
|
161
170
|
};
|
|
162
171
|
return acc;
|
|
163
172
|
}, {}),
|
|
173
|
+
roundTrips: nodeRPCCalls.roundTrips,
|
|
164
174
|
maxMemory,
|
|
165
175
|
proverType,
|
|
166
176
|
minimumTrace: minimumTrace,
|
|
@@ -201,6 +211,16 @@ export function convertProfileToGHBenchmark(benchmark) {
|
|
|
201
211
|
name: `${benchmark.name}/rpc`,
|
|
202
212
|
value: totalRPCCalls,
|
|
203
213
|
unit: 'calls'
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
name: `${benchmark.name}/round_trips`,
|
|
217
|
+
value: benchmark.roundTrips.roundTrips,
|
|
218
|
+
unit: 'round_trips'
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
name: `${benchmark.name}/round_trips_blocking_time`,
|
|
222
|
+
value: benchmark.roundTrips.totalBlockingTime,
|
|
223
|
+
unit: 'ms'
|
|
204
224
|
}
|
|
205
225
|
];
|
|
206
226
|
if (benchmark.timings.proving) {
|
|
@@ -5,7 +5,7 @@ import { type Logger } from '@aztec/aztec.js/log';
|
|
|
5
5
|
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
6
6
|
import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
7
7
|
import { CheatCodes } from '@aztec/aztec/testing';
|
|
8
|
-
import {
|
|
8
|
+
import type { DeployAztecL1ContractsArgs } from '@aztec/ethereum/deploy-aztec-l1-contracts';
|
|
9
9
|
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
10
10
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
11
11
|
import { AMMContract } from '@aztec/noir-contracts.js/AMM';
|
|
@@ -14,21 +14,19 @@ import { FeeJuiceContract } from '@aztec/noir-contracts.js/FeeJuice';
|
|
|
14
14
|
import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC';
|
|
15
15
|
import { TokenContract as BananaCoin, TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
16
16
|
import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
17
|
-
import {
|
|
18
|
-
import { type SubsystemsContext } from '../../fixtures/snapshot_manager.js';
|
|
19
|
-
import { type SetupOptions } from '../../fixtures/utils.js';
|
|
17
|
+
import { type EndToEndContext, type SetupOptions } from '../../fixtures/setup.js';
|
|
20
18
|
import { CrossChainTestHarness } from '../../shared/cross_chain_test_harness.js';
|
|
21
19
|
import { type GasBridgingTestHarness } from '../../shared/gas_portal_test_harness.js';
|
|
20
|
+
import { TestWallet } from '../../test-wallet/test_wallet.js';
|
|
22
21
|
import { type ClientFlowsConfig } from './config.js';
|
|
23
22
|
export type AccountType = 'ecdsar1' | 'schnorr';
|
|
24
23
|
export type FeePaymentMethodGetter = (wallet: Wallet, sender: AztecAddress) => Promise<FeePaymentMethod | undefined>;
|
|
25
24
|
export type BenchmarkingFeePaymentMethod = 'bridged_fee_juice' | 'private_fpc' | 'sponsored_fpc' | 'fee_juice';
|
|
26
25
|
export declare class ClientFlowsBenchmark {
|
|
27
|
-
private snapshotManager;
|
|
28
26
|
logger: Logger;
|
|
29
27
|
aztecNode: AztecNode;
|
|
30
28
|
cheatCodes: CheatCodes;
|
|
31
|
-
context:
|
|
29
|
+
context: EndToEndContext;
|
|
32
30
|
chainMonitor: ChainMonitor;
|
|
33
31
|
feeJuiceBridgeTestHarness: GasBridgingTestHarness;
|
|
34
32
|
adminWallet: TestWallet;
|
|
@@ -56,25 +54,26 @@ export declare class ClientFlowsBenchmark {
|
|
|
56
54
|
}>;
|
|
57
55
|
config: ClientFlowsConfig;
|
|
58
56
|
private proxyLogger;
|
|
59
|
-
|
|
57
|
+
private setupOptions;
|
|
58
|
+
constructor(testName?: string, setupOptions?: Partial<SetupOptions & DeployAztecL1ContractsArgs>);
|
|
60
59
|
setup(): Promise<this>;
|
|
61
60
|
teardown(): Promise<void>;
|
|
62
61
|
mintAndBridgeFeeJuice(address: AztecAddress): Promise<void>;
|
|
63
62
|
/** Admin mints bananaCoin tokens privately to the target address and redeems them. */
|
|
64
63
|
mintPrivateBananas(amount: bigint, address: AztecAddress): Promise<void>;
|
|
65
64
|
createBenchmarkingAccountManager(wallet: TestWallet, type: 'ecdsar1' | 'schnorr'): Promise<import("@aztec/aztec.js/wallet").AccountManager>;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
65
|
+
applyBaseSetup(): Promise<void>;
|
|
66
|
+
applyInitialAccounts(): Promise<void>;
|
|
67
|
+
applySetupFeeJuice(): Promise<void>;
|
|
68
|
+
applyDeployBananaToken(): Promise<void>;
|
|
69
|
+
applyDeployCandyBarToken(): Promise<void>;
|
|
70
|
+
applyFPCSetup(): Promise<void>;
|
|
71
|
+
applyDeploySponsoredFPC(): Promise<void>;
|
|
73
72
|
createCrossChainTestHarness(owner: AztecAddress): Promise<CrossChainTestHarness>;
|
|
74
73
|
createAndFundBenchmarkingAccountOnUserWallet(accountType: AccountType): Promise<AztecAddress>;
|
|
75
|
-
|
|
74
|
+
applyDeployAmm(): Promise<void>;
|
|
76
75
|
getBridgedFeeJuicePaymentMethodForWallet(_wallet: Wallet, sender: AztecAddress): Promise<FeeJuicePaymentMethodWithClaim>;
|
|
77
76
|
getPrivateFPCPaymentMethodForWallet(wallet: Wallet, sender: AztecAddress): Promise<PrivateFeePaymentMethod>;
|
|
78
77
|
getSponsoredFPCPaymentMethodForWallet(_wallet: Wallet, _sender: AztecAddress): Promise<SponsoredFeePaymentMethod>;
|
|
79
78
|
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50X2Zsb3dzX2JlbmNobWFyay5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JlbmNoL2NsaWVudF9mbG93cy9jbGllbnRfZmxvd3NfYmVuY2htYXJrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFpQyxNQUFNLHNCQUFzQixDQUFDO0FBR2pGLE9BQU8sS0FBSyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFNUYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUczRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLElBQUksVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBSTVGLE9BQU8sS0FB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client_flows_benchmark.d.ts","sourceRoot":"","sources":["../../../src/bench/client_flows/client_flows_benchmark.ts"],"names":[],"mappings":"
|
|
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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"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import {
|
|
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 {
|
|
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';
|
|
@@ -19,18 +22,17 @@ import { getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
|
|
|
19
22
|
import { getPXEConfig } from '@aztec/pxe/server';
|
|
20
23
|
import { GasSettings } from '@aztec/stdlib/gas';
|
|
21
24
|
import { deriveSigningKey } from '@aztec/stdlib/keys';
|
|
22
|
-
import { TestWallet } from '@aztec/test-wallet/server';
|
|
23
25
|
import { MNEMONIC } from '../../fixtures/fixtures.js';
|
|
24
|
-
import {
|
|
26
|
+
import { deployAccounts, setup, teardown } from '../../fixtures/setup.js';
|
|
25
27
|
import { mintTokensToPrivate } from '../../fixtures/token_utils.js';
|
|
26
28
|
import { setupSponsoredFPC } from '../../fixtures/utils.js';
|
|
27
29
|
import { CrossChainTestHarness } from '../../shared/cross_chain_test_harness.js';
|
|
28
30
|
import { FeeJuicePortalTestingHarnessFactory } from '../../shared/gas_portal_test_harness.js';
|
|
31
|
+
import { TestWallet } from '../../test-wallet/test_wallet.js';
|
|
29
32
|
import { ProxyLogger } from './benchmark.js';
|
|
30
33
|
import { FULL_FLOWS_CONFIG, KEY_FLOWS_CONFIG } from './config.js';
|
|
31
|
-
const {
|
|
34
|
+
const { BENCHMARK_CONFIG } = process.env;
|
|
32
35
|
export class ClientFlowsBenchmark {
|
|
33
|
-
snapshotManager;
|
|
34
36
|
logger;
|
|
35
37
|
aztecNode;
|
|
36
38
|
cheatCodes;
|
|
@@ -95,46 +97,58 @@ export class ClientFlowsBenchmark {
|
|
|
95
97
|
};
|
|
96
98
|
config;
|
|
97
99
|
proxyLogger;
|
|
100
|
+
setupOptions;
|
|
98
101
|
constructor(testName, setupOptions = {}){
|
|
99
102
|
this.logger = createLogger(`bench:client_flows${testName ? `:${testName}` : ''}`);
|
|
100
|
-
this.
|
|
103
|
+
this.setupOptions = {
|
|
101
104
|
startProverNode: true,
|
|
102
105
|
...setupOptions
|
|
103
|
-
}
|
|
104
|
-
...setupOptions
|
|
105
|
-
});
|
|
106
|
+
};
|
|
106
107
|
this.config = BENCHMARK_CONFIG === 'key_flows' ? KEY_FLOWS_CONFIG : FULL_FLOWS_CONFIG;
|
|
107
108
|
ProxyLogger.create();
|
|
108
109
|
this.proxyLogger = ProxyLogger.getInstance();
|
|
109
110
|
}
|
|
110
111
|
async setup() {
|
|
111
|
-
|
|
112
|
-
|
|
112
|
+
this.logger.info('Setting up subsystems from fresh');
|
|
113
|
+
// Token allowlist entries are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
|
|
114
|
+
const tokenAllowList = await getTokenAllowedSetupFunctions();
|
|
115
|
+
this.context = await setup(0, {
|
|
116
|
+
...this.setupOptions,
|
|
117
|
+
fundSponsoredFPC: true,
|
|
118
|
+
skipAccountDeployment: true,
|
|
119
|
+
l1ContractsArgs: this.setupOptions,
|
|
120
|
+
txPublicSetupAllowListExtend: [
|
|
121
|
+
...this.setupOptions.txPublicSetupAllowListExtend ?? [],
|
|
122
|
+
...tokenAllowList
|
|
123
|
+
]
|
|
124
|
+
});
|
|
125
|
+
await this.applyBaseSetup();
|
|
126
|
+
await this.context.aztecNodeService.setConfig({
|
|
113
127
|
feeRecipient: this.sequencerAddress,
|
|
114
128
|
coinbase: this.coinbase
|
|
115
129
|
});
|
|
116
|
-
const rollupContract = RollupContract.getFromConfig(context.
|
|
117
|
-
this.chainMonitor = new ChainMonitor(rollupContract, context.dateProvider, this.logger, 200).start();
|
|
130
|
+
const rollupContract = RollupContract.getFromConfig(this.context.config);
|
|
131
|
+
this.chainMonitor = new ChainMonitor(rollupContract, this.context.dateProvider, this.logger, 200).start();
|
|
118
132
|
return this;
|
|
119
133
|
}
|
|
120
134
|
async teardown() {
|
|
121
135
|
await this.chainMonitor.stop();
|
|
122
|
-
await this.
|
|
136
|
+
await teardown(this.context);
|
|
123
137
|
}
|
|
124
138
|
async mintAndBridgeFeeJuice(address) {
|
|
125
139
|
const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(address);
|
|
126
140
|
const { claimSecret: secret, messageLeafIndex: index } = claim;
|
|
127
141
|
await this.feeJuiceContract.methods.claim(address, claim.claimAmount, secret, index).send({
|
|
128
142
|
from: this.adminAddress
|
|
129
|
-
})
|
|
143
|
+
});
|
|
130
144
|
}
|
|
131
145
|
/** Admin mints bananaCoin tokens privately to the target address and redeems them. */ async mintPrivateBananas(amount, address) {
|
|
132
|
-
const balanceBefore = await this.bananaCoin.methods.balance_of_private(address).simulate({
|
|
133
|
-
from:
|
|
146
|
+
const { result: balanceBefore } = await this.bananaCoin.methods.balance_of_private(address).simulate({
|
|
147
|
+
from: address
|
|
134
148
|
});
|
|
135
149
|
await mintTokensToPrivate(this.bananaCoin, this.adminAddress, address, amount);
|
|
136
|
-
const balanceAfter = await this.bananaCoin.methods.balance_of_private(address).simulate({
|
|
137
|
-
from:
|
|
150
|
+
const { result: balanceAfter } = await this.bananaCoin.methods.balance_of_private(address).simulate({
|
|
151
|
+
from: address
|
|
138
152
|
});
|
|
139
153
|
expect(balanceAfter).toEqual(balanceBefore + amount);
|
|
140
154
|
}
|
|
@@ -152,113 +166,96 @@ export class ClientFlowsBenchmark {
|
|
|
152
166
|
throw new Error(`Unknown account type: ${type}`);
|
|
153
167
|
}
|
|
154
168
|
}
|
|
155
|
-
async
|
|
156
|
-
await this.
|
|
157
|
-
await this.
|
|
169
|
+
async applyBaseSetup() {
|
|
170
|
+
await this.applyInitialAccounts();
|
|
171
|
+
await this.applySetupFeeJuice();
|
|
158
172
|
}
|
|
159
|
-
async
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
this.
|
|
163
|
-
this.
|
|
164
|
-
this.adminAddress = adminAddress;
|
|
165
|
-
this.sequencerAddress = sequencerAddress;
|
|
166
|
-
const canonicalFeeJuice = await getCanonicalFeeJuice();
|
|
167
|
-
this.feeJuiceContract = FeeJuiceContract.at(canonicalFeeJuice.address, this.adminWallet);
|
|
168
|
-
this.coinbase = EthAddress.random();
|
|
169
|
-
const userPXEConfig = getPXEConfig();
|
|
170
|
-
const userPXEConfigWithContracts = {
|
|
171
|
-
...userPXEConfig,
|
|
172
|
-
proverEnabled: this.realProofs
|
|
173
|
-
};
|
|
174
|
-
this.userWallet = await TestWallet.create(this.aztecNode, userPXEConfigWithContracts, {
|
|
175
|
-
loggers: {
|
|
176
|
-
prover: this.proxyLogger.createLogger('pxe:bb:wasm:bundle:proxied')
|
|
177
|
-
}
|
|
178
|
-
});
|
|
173
|
+
async applyInitialAccounts() {
|
|
174
|
+
this.logger.info('Applying initial accounts setup');
|
|
175
|
+
const { deployedAccounts } = await deployAccounts(2, this.logger)({
|
|
176
|
+
wallet: this.context.wallet,
|
|
177
|
+
initialFundedAccounts: this.context.initialFundedAccounts
|
|
179
178
|
});
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
179
|
+
const [{ address: adminAddress }, { address: sequencerAddress }] = deployedAccounts;
|
|
180
|
+
this.adminWallet = this.context.wallet;
|
|
181
|
+
this.aztecNode = this.context.aztecNodeService;
|
|
182
|
+
this.cheatCodes = this.context.cheatCodes;
|
|
183
|
+
this.adminAddress = adminAddress;
|
|
184
|
+
this.sequencerAddress = sequencerAddress;
|
|
185
|
+
const canonicalFeeJuice = await getCanonicalFeeJuice();
|
|
186
|
+
this.feeJuiceContract = FeeJuiceContract.at(canonicalFeeJuice.address, this.adminWallet);
|
|
187
|
+
this.coinbase = EthAddress.random();
|
|
188
|
+
const userPXEConfig = getPXEConfig();
|
|
189
|
+
const userPXEConfigWithContracts = {
|
|
190
|
+
...userPXEConfig,
|
|
191
|
+
proverEnabled: this.realProofs
|
|
192
|
+
};
|
|
193
|
+
this.userWallet = await TestWallet.create(this.aztecNode, userPXEConfigWithContracts, {
|
|
194
|
+
loggers: {
|
|
195
|
+
prover: this.proxyLogger.createLogger('pxe:bb:wasm:bundle:proxied')
|
|
196
|
+
}
|
|
192
197
|
});
|
|
193
198
|
}
|
|
194
|
-
async
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
this.
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
};
|
|
204
|
-
}, ({ bananaCoinAddress, bananaCoinInstance })=>{
|
|
205
|
-
this.bananaCoin = BananaCoin.at(bananaCoinAddress, this.adminWallet);
|
|
206
|
-
this.bananaCoinInstance = bananaCoinInstance;
|
|
207
|
-
return Promise.resolve();
|
|
199
|
+
async applySetupFeeJuice() {
|
|
200
|
+
this.logger.info('Applying fee juice setup');
|
|
201
|
+
this.feeJuiceContract = FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.adminWallet);
|
|
202
|
+
this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
|
|
203
|
+
aztecNode: this.context.aztecNodeService,
|
|
204
|
+
aztecNodeAdmin: this.context.aztecNodeService,
|
|
205
|
+
l1Client: this.context.deployL1ContractsValues.l1Client,
|
|
206
|
+
wallet: this.adminWallet,
|
|
207
|
+
logger: this.logger
|
|
208
208
|
});
|
|
209
209
|
}
|
|
210
|
-
async
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
candyBarCoinAddress: candyBarCoin.address,
|
|
218
|
-
candyBarCoinInstance
|
|
219
|
-
};
|
|
220
|
-
}, ({ candyBarCoinAddress, candyBarCoinInstance })=>{
|
|
221
|
-
this.candyBarCoin = TokenContract.at(candyBarCoinAddress, this.adminWallet);
|
|
222
|
-
this.candyBarCoinInstance = candyBarCoinInstance;
|
|
223
|
-
return Promise.resolve();
|
|
210
|
+
async applyDeployBananaToken() {
|
|
211
|
+
this.logger.info('Applying banana token deployment');
|
|
212
|
+
const { receipt: { contract: bananaCoin, instance: bananaCoinInstance } } = await BananaCoin.deploy(this.adminWallet, this.adminAddress, 'BC', 'BC', 18n).send({
|
|
213
|
+
from: this.adminAddress,
|
|
214
|
+
wait: {
|
|
215
|
+
returnReceipt: true
|
|
216
|
+
}
|
|
224
217
|
});
|
|
218
|
+
this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
|
|
219
|
+
this.bananaCoin = bananaCoin;
|
|
220
|
+
this.bananaCoinInstance = bananaCoinInstance;
|
|
225
221
|
}
|
|
226
|
-
async
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
}).wait();
|
|
234
|
-
this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
|
|
235
|
-
await this.feeJuiceBridgeTestHarness.bridgeFromL1ToL2(bananaFPC.address, this.adminAddress);
|
|
236
|
-
return {
|
|
237
|
-
bananaFPCAddress: bananaFPC.address,
|
|
238
|
-
bananaFPCInstance
|
|
239
|
-
};
|
|
240
|
-
}, (data)=>{
|
|
241
|
-
this.bananaFPC = FPCContract.at(data.bananaFPCAddress, this.adminWallet);
|
|
242
|
-
this.bananaFPCInstance = data.bananaFPCInstance;
|
|
243
|
-
return Promise.resolve();
|
|
222
|
+
async applyDeployCandyBarToken() {
|
|
223
|
+
this.logger.info('Applying candy bar token deployment');
|
|
224
|
+
const { receipt: { contract: candyBarCoin, instance: candyBarCoinInstance } } = await TokenContract.deploy(this.adminWallet, this.adminAddress, 'CBC', 'CBC', 18n).send({
|
|
225
|
+
from: this.adminAddress,
|
|
226
|
+
wait: {
|
|
227
|
+
returnReceipt: true
|
|
228
|
+
}
|
|
244
229
|
});
|
|
230
|
+
this.logger.info(`CandyBarCoin deployed at ${candyBarCoin.address}`);
|
|
231
|
+
this.candyBarCoin = candyBarCoin;
|
|
232
|
+
this.candyBarCoinInstance = candyBarCoinInstance;
|
|
245
233
|
}
|
|
246
|
-
async
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
this.sponsoredFPCInstance = sponsoredFPCInstance;
|
|
257
|
-
return Promise.resolve();
|
|
234
|
+
async applyFPCSetup() {
|
|
235
|
+
this.logger.info('Applying FPC setup');
|
|
236
|
+
const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
|
|
237
|
+
expect((await this.context.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
|
|
238
|
+
const bananaCoin = this.bananaCoin;
|
|
239
|
+
const { receipt: { contract: bananaFPC, instance: bananaFPCInstance } } = await FPCContract.deploy(this.adminWallet, bananaCoin.address, this.adminAddress).send({
|
|
240
|
+
from: this.adminAddress,
|
|
241
|
+
wait: {
|
|
242
|
+
returnReceipt: true
|
|
243
|
+
}
|
|
258
244
|
});
|
|
245
|
+
this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
|
|
246
|
+
await this.feeJuiceBridgeTestHarness.bridgeFromL1ToL2(bananaFPC.address, this.adminAddress);
|
|
247
|
+
this.bananaFPC = bananaFPC;
|
|
248
|
+
this.bananaFPCInstance = bananaFPCInstance;
|
|
249
|
+
}
|
|
250
|
+
async applyDeploySponsoredFPC() {
|
|
251
|
+
this.logger.info('Applying sponsored FPC deployment');
|
|
252
|
+
const sponsoredFPCInstance = await setupSponsoredFPC(this.adminWallet);
|
|
253
|
+
this.logger.info(`SponsoredFPC at ${sponsoredFPCInstance.address}`);
|
|
254
|
+
this.sponsoredFPC = SponsoredFPCContract.at(sponsoredFPCInstance.address, this.adminWallet);
|
|
255
|
+
this.sponsoredFPCInstance = sponsoredFPCInstance;
|
|
259
256
|
}
|
|
260
257
|
async createCrossChainTestHarness(owner) {
|
|
261
|
-
const l1Client = createExtendedL1Client(this.context.
|
|
258
|
+
const l1Client = createExtendedL1Client(this.context.config.l1RpcUrls, MNEMONIC);
|
|
262
259
|
const underlyingERC20Address = await deployL1Contract(l1Client, TestERC20Abi, TestERC20Bytecode, [
|
|
263
260
|
'Underlying',
|
|
264
261
|
'UND',
|
|
@@ -276,11 +273,11 @@ export class ClientFlowsBenchmark {
|
|
|
276
273
|
const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(benchysAddress);
|
|
277
274
|
const behchysDeployMethod = await benchysAccountManager.getDeployMethod();
|
|
278
275
|
await behchysDeployMethod.send({
|
|
279
|
-
from:
|
|
276
|
+
from: NO_FROM,
|
|
280
277
|
fee: {
|
|
281
278
|
paymentMethod: new FeeJuicePaymentMethodWithClaim(benchysAddress, claim)
|
|
282
279
|
}
|
|
283
|
-
})
|
|
280
|
+
});
|
|
284
281
|
// Register benchy on the user's Wallet, where we're going to be interacting from
|
|
285
282
|
const accountManager = await this.userWallet.createAccount({
|
|
286
283
|
secret: benchysAccount.getSecretKey(),
|
|
@@ -289,31 +286,28 @@ export class ClientFlowsBenchmark {
|
|
|
289
286
|
});
|
|
290
287
|
return accountManager.address;
|
|
291
288
|
}
|
|
292
|
-
async
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
};
|
|
310
|
-
}, ({ ammAddress, ammInstance, liquidityTokenAddress, liquidityTokenInstance })=>{
|
|
311
|
-
this.liquidityToken = TokenContract.at(liquidityTokenAddress, this.adminWallet);
|
|
312
|
-
this.liquidityTokenInstance = liquidityTokenInstance;
|
|
313
|
-
this.amm = AMMContract.at(ammAddress, this.adminWallet);
|
|
314
|
-
this.ammInstance = ammInstance;
|
|
315
|
-
return Promise.resolve();
|
|
289
|
+
async applyDeployAmm() {
|
|
290
|
+
this.logger.info('Applying AMM deployment');
|
|
291
|
+
const { receipt: { contract: liquidityToken, instance: liquidityTokenInstance } } = await TokenContract.deploy(this.adminWallet, this.adminAddress, 'LPT', 'LPT', 18n).send({
|
|
292
|
+
from: this.adminAddress,
|
|
293
|
+
wait: {
|
|
294
|
+
returnReceipt: true
|
|
295
|
+
}
|
|
296
|
+
});
|
|
297
|
+
const { receipt: { contract: amm, instance: ammInstance } } = await AMMContract.deploy(this.adminWallet, this.bananaCoin.address, this.candyBarCoin.address, liquidityToken.address).send({
|
|
298
|
+
from: this.adminAddress,
|
|
299
|
+
wait: {
|
|
300
|
+
returnReceipt: true
|
|
301
|
+
}
|
|
302
|
+
});
|
|
303
|
+
this.logger.info(`AMM deployed at ${amm.address}`);
|
|
304
|
+
await liquidityToken.methods.set_minter(amm.address, true).send({
|
|
305
|
+
from: this.adminAddress
|
|
316
306
|
});
|
|
307
|
+
this.liquidityToken = liquidityToken;
|
|
308
|
+
this.liquidityTokenInstance = liquidityTokenInstance;
|
|
309
|
+
this.amm = amm;
|
|
310
|
+
this.ammInstance = ammInstance;
|
|
317
311
|
}
|
|
318
312
|
async getBridgedFeeJuicePaymentMethodForWallet(_wallet, sender) {
|
|
319
313
|
const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(sender);
|
|
@@ -322,8 +316,8 @@ export class ClientFlowsBenchmark {
|
|
|
322
316
|
async getPrivateFPCPaymentMethodForWallet(wallet, sender) {
|
|
323
317
|
// The private fee paying method assembled on the app side requires knowledge of the maximum
|
|
324
318
|
// fee the user is willing to pay
|
|
325
|
-
const maxFeesPerGas = (await this.aztecNode.
|
|
326
|
-
const gasSettings = GasSettings.
|
|
319
|
+
const maxFeesPerGas = (await this.aztecNode.getCurrentMinFees()).mul(1.5);
|
|
320
|
+
const gasSettings = GasSettings.fallback({
|
|
327
321
|
maxFeesPerGas
|
|
328
322
|
});
|
|
329
323
|
return new PrivateFeePaymentMethod(this.bananaFPC.address, sender, wallet, gasSettings);
|