@aztec/end-to-end 0.0.1-commit.b655e406 → 0.0.1-commit.b6e433891
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/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 +22 -16
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +142 -124
- 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.d.ts +1 -1
- package/dest/bench/client_flows/data_extractor.js +7 -27
- package/dest/bench/utils.d.ts +8 -7
- 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 +9 -8
- 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 +107 -113
- 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 -70
- package/dest/e2e_deploy_contract/deploy_test.d.ts +6 -5
- 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 +107 -54
- package/dest/e2e_fees/bridging_race.notest.d.ts +1 -1
- package/dest/e2e_fees/bridging_race.notest.js +5 -7
- 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 +138 -143
- 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 +18 -19
- package/dest/e2e_multi_validator/utils.d.ts +1 -1
- 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 -39
- package/dest/e2e_p2p/inactivity_slash_test.d.ts +3 -3
- package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
- package/dest/e2e_p2p/inactivity_slash_test.js +7 -6
- package/dest/e2e_p2p/p2p_network.d.ts +229 -21
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +142 -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 +190 -0
- package/dest/e2e_p2p/shared.d.ts +31 -11
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +51 -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 +30 -0
- package/dest/fixtures/e2e_prover_test.d.ts +15 -21
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +123 -138
- package/dest/fixtures/elu_monitor.d.ts +21 -0
- package/dest/fixtures/elu_monitor.d.ts.map +1 -0
- package/dest/fixtures/elu_monitor.js +102 -0
- 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.d.ts +1 -1
- package/dest/fixtures/get_acvm_config.js +1 -1
- package/dest/fixtures/get_bb_config.d.ts +1 -1
- package/dest/fixtures/get_bb_config.d.ts.map +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/logging.d.ts +1 -1
- package/dest/fixtures/setup.d.ts +239 -0
- package/dest/fixtures/setup.d.ts.map +1 -0
- package/dest/fixtures/setup.js +606 -0
- package/dest/fixtures/setup_p2p_test.d.ts +17 -10
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +55 -36
- package/dest/fixtures/token_utils.d.ts +6 -3
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +17 -10
- package/dest/fixtures/utils.d.ts +5 -192
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +4 -648
- package/dest/fixtures/web3signer.d.ts +1 -1
- 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/index.d.ts +1 -1
- 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 +7 -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 +2 -2
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.js +4 -4
- 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/jest_setup.d.ts +1 -1
- package/dest/shared/jest_setup.js +41 -1
- 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/index.d.ts +1 -1
- package/dest/simulators/lending_simulator.d.ts +2 -2
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +8 -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 +18 -6
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +129 -24
- 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 +45 -0
- package/dest/spartan/utils/config.d.ts.map +1 -0
- package/dest/spartan/utils/config.js +23 -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 +11 -0
- package/dest/spartan/utils/index.d.ts.map +1 -0
- package/dest/spartan/utils/index.js +22 -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 +40 -0
- package/dest/spartan/utils/nodes.d.ts.map +1 -0
- package/dest/spartan/utils/nodes.js +461 -0
- package/dest/spartan/utils/pod_logs.d.ts +25 -0
- package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
- package/dest/spartan/utils/pod_logs.js +74 -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 -218
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +1 -749
- package/dest/test-wallet/test_wallet.d.ts +76 -0
- package/dest/test-wallet/test_wallet.d.ts.map +1 -0
- package/dest/test-wallet/test_wallet.js +214 -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 +49 -44
- package/src/bench/client_flows/benchmark.ts +24 -2
- package/src/bench/client_flows/client_flows_benchmark.ts +163 -177
- package/src/bench/client_flows/config.ts +9 -1
- package/src/bench/client_flows/data_extractor.ts +6 -28
- package/src/bench/utils.ts +36 -21
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +120 -145
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +140 -125
- package/src/e2e_deploy_contract/deploy_test.ts +23 -16
- package/src/e2e_epochs/epochs_test.ts +176 -114
- package/src/e2e_fees/bridging_race.notest.ts +6 -12
- package/src/e2e_fees/fees_test.ts +179 -226
- package/src/e2e_l1_publisher/write_json.ts +20 -19
- package/src/e2e_multi_validator/utils.ts +1 -1
- package/src/e2e_nested_contract/nested_contract_test.ts +35 -55
- package/src/e2e_p2p/inactivity_slash_test.ts +8 -7
- package/src/e2e_p2p/p2p_network.ts +205 -178
- package/src/e2e_p2p/reqresp/utils.ts +256 -0
- package/src/e2e_p2p/shared.ts +90 -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 +50 -0
- package/src/fixtures/dumps/epoch_proof_result.json +1 -1
- package/src/fixtures/e2e_prover_test.ts +144 -186
- package/src/fixtures/elu_monitor.ts +126 -0
- 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 +903 -0
- package/src/fixtures/setup_p2p_test.ts +58 -48
- package/src/fixtures/token_utils.ts +12 -8
- package/src/fixtures/utils.ts +27 -947
- package/src/fixtures/web3signer.ts +1 -1
- package/src/fixtures/with_telemetry_utils.ts +2 -2
- package/src/guides/up_quick_start.sh +4 -4
- 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 +4 -4
- package/src/shared/index.ts +2 -1
- package/src/shared/jest_setup.ts +51 -1
- package/src/shared/mock_state_view.ts +188 -0
- package/src/shared/submit-transactions.ts +11 -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 +205 -29
- 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 +29 -0
- package/src/spartan/utils/health.ts +255 -0
- package/src/spartan/utils/helm.ts +84 -0
- package/src/spartan/utils/index.ts +71 -0
- package/src/spartan/utils/k8s.ts +535 -0
- package/src/spartan/utils/nodes.ts +543 -0
- package/src/spartan/utils/pod_logs.ts +99 -0
- package/src/spartan/utils/scripts.ts +99 -0
- package/src/spartan/utils.ts +1 -942
- package/src/test-wallet/test_wallet.ts +294 -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 +213 -0
- package/src/test-wallet/worker_wallet_schema.ts +13 -0
- package/dest/fixtures/setup_l1_contracts.d.ts +0 -6
- 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
|
@@ -7,7 +7,13 @@ import {
|
|
|
7
7
|
import type { Logger } from '@aztec/aztec.js/log';
|
|
8
8
|
import { createLogger } from '@aztec/foundation/log';
|
|
9
9
|
import { type PrivateExecutionStep, serializePrivateExecutionSteps } from '@aztec/stdlib/kernel';
|
|
10
|
-
import type {
|
|
10
|
+
import type {
|
|
11
|
+
ProvingStats,
|
|
12
|
+
ProvingTimings,
|
|
13
|
+
RoundTripStats,
|
|
14
|
+
SimulationStats,
|
|
15
|
+
SimulationTimings,
|
|
16
|
+
} from '@aztec/stdlib/tx';
|
|
11
17
|
|
|
12
18
|
import assert from 'node:assert';
|
|
13
19
|
import { mkdir, writeFile } from 'node:fs/promises';
|
|
@@ -119,6 +125,7 @@ type ClientFlowBenchmark = {
|
|
|
119
125
|
timings: Omit<ProvingTimings & SimulationTimings, 'perFunction'> & { witgen: number };
|
|
120
126
|
maxMemory: number;
|
|
121
127
|
rpc: Record<string, CallRecording>;
|
|
128
|
+
roundTrips: RoundTripStats;
|
|
122
129
|
proverType: ProverType;
|
|
123
130
|
minimumTrace: StructuredTrace;
|
|
124
131
|
totalGateCount: number;
|
|
@@ -212,6 +219,10 @@ export function generateBenchmark(
|
|
|
212
219
|
}, []);
|
|
213
220
|
const timings = stats.timings;
|
|
214
221
|
const totalGateCount = steps[steps.length - 1].accGateCount;
|
|
222
|
+
const nodeRPCCalls = stats.nodeRPCCalls ?? {
|
|
223
|
+
perMethod: {},
|
|
224
|
+
roundTrips: { roundTrips: 0, totalBlockingTime: 0, roundTripDurations: [], roundTripMethods: [] },
|
|
225
|
+
};
|
|
215
226
|
return {
|
|
216
227
|
name: flow,
|
|
217
228
|
timings: {
|
|
@@ -221,7 +232,7 @@ export function generateBenchmark(
|
|
|
221
232
|
unaccounted: timings.unaccounted,
|
|
222
233
|
witgen: timings.perFunction.reduce((acc, fn) => acc + fn.time, 0),
|
|
223
234
|
},
|
|
224
|
-
rpc: Object.entries(
|
|
235
|
+
rpc: Object.entries(nodeRPCCalls.perMethod).reduce(
|
|
225
236
|
(acc, [RPCName, RPCCalls]) => {
|
|
226
237
|
const total = RPCCalls.times.reduce((sum, time) => sum + time, 0);
|
|
227
238
|
const calls = RPCCalls.times.length;
|
|
@@ -236,6 +247,7 @@ export function generateBenchmark(
|
|
|
236
247
|
},
|
|
237
248
|
{} as Record<string, CallRecording>,
|
|
238
249
|
),
|
|
250
|
+
roundTrips: nodeRPCCalls.roundTrips,
|
|
239
251
|
maxMemory,
|
|
240
252
|
proverType,
|
|
241
253
|
minimumTrace: minimumTrace!,
|
|
@@ -280,6 +292,16 @@ export function convertProfileToGHBenchmark(benchmark: ClientFlowBenchmark): Git
|
|
|
280
292
|
value: totalRPCCalls,
|
|
281
293
|
unit: 'calls',
|
|
282
294
|
},
|
|
295
|
+
{
|
|
296
|
+
name: `${benchmark.name}/round_trips`,
|
|
297
|
+
value: benchmark.roundTrips.roundTrips,
|
|
298
|
+
unit: 'round_trips',
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
name: `${benchmark.name}/round_trips_blocking_time`,
|
|
302
|
+
value: benchmark.roundTrips.totalBlockingTime,
|
|
303
|
+
unit: 'ms',
|
|
304
|
+
},
|
|
283
305
|
];
|
|
284
306
|
if (benchmark.timings.proving) {
|
|
285
307
|
benches.push({
|
|
@@ -4,12 +4,15 @@ import { type FeePaymentMethod, PrivateFeePaymentMethod, SponsoredFeePaymentMeth
|
|
|
4
4
|
import { type Logger, createLogger } 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
|
-
import { CheatCodes } from '@aztec/aztec/testing';
|
|
8
|
-
import {
|
|
7
|
+
import { CheatCodes, getTokenAllowedSetupFunctions } from '@aztec/aztec/testing';
|
|
8
|
+
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
9
|
+
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
10
|
+
import type { DeployAztecL1ContractsArgs } from '@aztec/ethereum/deploy-aztec-l1-contracts';
|
|
11
|
+
import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
|
|
9
12
|
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
10
|
-
import { randomBytes } from '@aztec/foundation/crypto';
|
|
13
|
+
import { randomBytes } from '@aztec/foundation/crypto/random';
|
|
14
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
11
15
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
12
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
13
16
|
import { TestERC20Abi } from '@aztec/l1-artifacts/TestERC20Abi';
|
|
14
17
|
import { TestERC20Bytecode } from '@aztec/l1-artifacts/TestERC20Bytecode';
|
|
15
18
|
import { AMMContract } from '@aztec/noir-contracts.js/AMM';
|
|
@@ -20,40 +23,34 @@ import { TokenContract as BananaCoin, TokenContract } from '@aztec/noir-contract
|
|
|
20
23
|
import { ProtocolContractAddress } from '@aztec/protocol-contracts';
|
|
21
24
|
import { getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
|
|
22
25
|
import { type PXEConfig, getPXEConfig } from '@aztec/pxe/server';
|
|
26
|
+
import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
23
27
|
import { GasSettings } from '@aztec/stdlib/gas';
|
|
24
28
|
import { deriveSigningKey } from '@aztec/stdlib/keys';
|
|
25
|
-
import { TestWallet } from '@aztec/test-wallet/server';
|
|
26
29
|
|
|
27
30
|
import { MNEMONIC } from '../../fixtures/fixtures.js';
|
|
28
|
-
import {
|
|
29
|
-
type ISnapshotManager,
|
|
30
|
-
type SubsystemsContext,
|
|
31
|
-
createSnapshotManager,
|
|
32
|
-
deployAccounts,
|
|
33
|
-
} from '../../fixtures/snapshot_manager.js';
|
|
31
|
+
import { type EndToEndContext, type SetupOptions, deployAccounts, setup, teardown } from '../../fixtures/setup.js';
|
|
34
32
|
import { mintTokensToPrivate } from '../../fixtures/token_utils.js';
|
|
35
|
-
import {
|
|
33
|
+
import { setupSponsoredFPC } from '../../fixtures/utils.js';
|
|
36
34
|
import { CrossChainTestHarness } from '../../shared/cross_chain_test_harness.js';
|
|
37
35
|
import {
|
|
38
36
|
FeeJuicePortalTestingHarnessFactory,
|
|
39
37
|
type GasBridgingTestHarness,
|
|
40
38
|
} from '../../shared/gas_portal_test_harness.js';
|
|
39
|
+
import { TestWallet } from '../../test-wallet/test_wallet.js';
|
|
41
40
|
import { ProxyLogger } from './benchmark.js';
|
|
42
41
|
import { type ClientFlowsConfig, FULL_FLOWS_CONFIG, KEY_FLOWS_CONFIG } from './config.js';
|
|
43
42
|
|
|
44
|
-
const {
|
|
43
|
+
const { BENCHMARK_CONFIG } = process.env;
|
|
45
44
|
|
|
46
45
|
export type AccountType = 'ecdsar1' | 'schnorr';
|
|
47
46
|
export type FeePaymentMethodGetter = (wallet: Wallet, sender: AztecAddress) => Promise<FeePaymentMethod | undefined>;
|
|
48
47
|
export type BenchmarkingFeePaymentMethod = 'bridged_fee_juice' | 'private_fpc' | 'sponsored_fpc' | 'fee_juice';
|
|
49
48
|
|
|
50
49
|
export class ClientFlowsBenchmark {
|
|
51
|
-
private snapshotManager: ISnapshotManager;
|
|
52
|
-
|
|
53
50
|
public logger: Logger;
|
|
54
51
|
public aztecNode!: AztecNode;
|
|
55
52
|
public cheatCodes!: CheatCodes;
|
|
56
|
-
public context!:
|
|
53
|
+
public context!: EndToEndContext;
|
|
57
54
|
public chainMonitor!: ChainMonitor;
|
|
58
55
|
public feeJuiceBridgeTestHarness!: GasBridgingTestHarness;
|
|
59
56
|
public adminWallet!: TestWallet;
|
|
@@ -69,15 +66,21 @@ export class ClientFlowsBenchmark {
|
|
|
69
66
|
public feeJuiceContract!: FeeJuiceContract;
|
|
70
67
|
// Asset in which fees are paid via FPC
|
|
71
68
|
public bananaCoin!: BananaCoin;
|
|
69
|
+
public bananaCoinInstance!: ContractInstanceWithAddress;
|
|
72
70
|
public bananaFPC!: FPCContract;
|
|
71
|
+
public bananaFPCInstance!: ContractInstanceWithAddress;
|
|
73
72
|
// Random asset we want to trade
|
|
74
73
|
public candyBarCoin!: TokenContract;
|
|
74
|
+
public candyBarCoinInstance!: ContractInstanceWithAddress;
|
|
75
75
|
// AMM contract
|
|
76
76
|
public amm!: AMMContract;
|
|
77
|
+
public ammInstance!: ContractInstanceWithAddress;
|
|
77
78
|
// Liquidity token for AMM
|
|
78
79
|
public liquidityToken!: TokenContract;
|
|
80
|
+
public liquidityTokenInstance!: ContractInstanceWithAddress;
|
|
79
81
|
// Sponsored FPC contract
|
|
80
82
|
public sponsoredFPC!: SponsoredFPCContract;
|
|
83
|
+
public sponsoredFPCInstance!: ContractInstanceWithAddress;
|
|
81
84
|
|
|
82
85
|
// PXE and Wallet used by the benchmarking user. It can be set up with client-side proving enabled
|
|
83
86
|
public userWallet!: TestWallet;
|
|
@@ -115,33 +118,41 @@ export class ClientFlowsBenchmark {
|
|
|
115
118
|
public config: ClientFlowsConfig;
|
|
116
119
|
|
|
117
120
|
private proxyLogger: ProxyLogger;
|
|
121
|
+
private setupOptions: Partial<SetupOptions & DeployAztecL1ContractsArgs>;
|
|
118
122
|
|
|
119
|
-
constructor(testName?: string, setupOptions: Partial<SetupOptions &
|
|
123
|
+
constructor(testName?: string, setupOptions: Partial<SetupOptions & DeployAztecL1ContractsArgs> = {}) {
|
|
120
124
|
this.logger = createLogger(`bench:client_flows${testName ? `:${testName}` : ''}`);
|
|
121
|
-
this.
|
|
122
|
-
`bench_client_flows${testName ? `/${testName}` : ''}`,
|
|
123
|
-
dataPath,
|
|
124
|
-
{ startProverNode: true, ...setupOptions },
|
|
125
|
-
{ ...setupOptions },
|
|
126
|
-
);
|
|
125
|
+
this.setupOptions = { startProverNode: true, ...setupOptions };
|
|
127
126
|
this.config = BENCHMARK_CONFIG === 'key_flows' ? KEY_FLOWS_CONFIG : FULL_FLOWS_CONFIG;
|
|
128
127
|
ProxyLogger.create();
|
|
129
128
|
this.proxyLogger = ProxyLogger.getInstance();
|
|
130
129
|
}
|
|
131
130
|
|
|
132
131
|
async setup() {
|
|
133
|
-
|
|
134
|
-
|
|
132
|
+
this.logger.info('Setting up subsystems from fresh');
|
|
133
|
+
// Token allowlist entries are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
|
|
134
|
+
const tokenAllowList = await getTokenAllowedSetupFunctions();
|
|
135
|
+
this.context = await setup(0, {
|
|
136
|
+
...this.setupOptions,
|
|
137
|
+
fundSponsoredFPC: true,
|
|
138
|
+
skipAccountDeployment: true,
|
|
139
|
+
l1ContractsArgs: this.setupOptions,
|
|
140
|
+
txPublicSetupAllowListExtend: [...(this.setupOptions.txPublicSetupAllowListExtend ?? []), ...tokenAllowList],
|
|
141
|
+
});
|
|
142
|
+
await this.applyBaseSetup();
|
|
143
|
+
|
|
144
|
+
await this.context.aztecNodeService.setConfig({ feeRecipient: this.sequencerAddress, coinbase: this.coinbase });
|
|
135
145
|
|
|
136
|
-
const rollupContract = RollupContract.getFromConfig(context.
|
|
137
|
-
this.chainMonitor = new ChainMonitor(rollupContract, context.dateProvider, this.logger, 200).start();
|
|
146
|
+
const rollupContract = RollupContract.getFromConfig(this.context.config);
|
|
147
|
+
this.chainMonitor = new ChainMonitor(rollupContract, this.context.dateProvider, this.logger, 200).start();
|
|
138
148
|
|
|
139
149
|
return this;
|
|
140
150
|
}
|
|
141
151
|
|
|
142
152
|
async teardown() {
|
|
143
153
|
await this.chainMonitor.stop();
|
|
144
|
-
await this.
|
|
154
|
+
await this.userWallet?.stop();
|
|
155
|
+
await teardown(this.context);
|
|
145
156
|
}
|
|
146
157
|
|
|
147
158
|
async mintAndBridgeFeeJuice(address: AztecAddress) {
|
|
@@ -149,21 +160,20 @@ export class ClientFlowsBenchmark {
|
|
|
149
160
|
const { claimSecret: secret, messageLeafIndex: index } = claim;
|
|
150
161
|
await this.feeJuiceContract.methods
|
|
151
162
|
.claim(address, claim.claimAmount, secret, index)
|
|
152
|
-
.send({ from: this.adminAddress })
|
|
153
|
-
.wait();
|
|
163
|
+
.send({ from: this.adminAddress });
|
|
154
164
|
}
|
|
155
165
|
|
|
156
166
|
/** Admin mints bananaCoin tokens privately to the target address and redeems them. */
|
|
157
167
|
async mintPrivateBananas(amount: bigint, address: AztecAddress) {
|
|
158
|
-
const balanceBefore = await this.bananaCoin.methods
|
|
168
|
+
const { result: balanceBefore } = await this.bananaCoin.methods
|
|
159
169
|
.balance_of_private(address)
|
|
160
|
-
.simulate({ from:
|
|
170
|
+
.simulate({ from: address });
|
|
161
171
|
|
|
162
172
|
await mintTokensToPrivate(this.bananaCoin, this.adminAddress, address, amount);
|
|
163
173
|
|
|
164
|
-
const balanceAfter = await this.bananaCoin.methods
|
|
174
|
+
const { result: balanceAfter } = await this.bananaCoin.methods
|
|
165
175
|
.balance_of_private(address)
|
|
166
|
-
.simulate({ from:
|
|
176
|
+
.simulate({ from: address });
|
|
167
177
|
expect(balanceAfter).toEqual(balanceBefore + amount);
|
|
168
178
|
}
|
|
169
179
|
|
|
@@ -183,137 +193,117 @@ export class ClientFlowsBenchmark {
|
|
|
183
193
|
}
|
|
184
194
|
}
|
|
185
195
|
|
|
186
|
-
public async
|
|
187
|
-
await this.
|
|
188
|
-
await this.
|
|
196
|
+
public async applyBaseSetup() {
|
|
197
|
+
await this.applyInitialAccounts();
|
|
198
|
+
await this.applySetupFeeJuice();
|
|
189
199
|
}
|
|
190
200
|
|
|
191
|
-
async
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
this.adminAddress = adminAddress;
|
|
204
|
-
this.sequencerAddress = sequencerAddress;
|
|
205
|
-
|
|
206
|
-
const canonicalFeeJuice = await getCanonicalFeeJuice();
|
|
207
|
-
this.feeJuiceContract = await FeeJuiceContract.at(canonicalFeeJuice.address, this.adminWallet);
|
|
208
|
-
this.coinbase = EthAddress.random();
|
|
209
|
-
|
|
210
|
-
const userPXEConfig = getPXEConfig();
|
|
211
|
-
const userPXEConfigWithContracts = {
|
|
212
|
-
...userPXEConfig,
|
|
213
|
-
proverEnabled: this.realProofs,
|
|
214
|
-
} as PXEConfig;
|
|
215
|
-
|
|
216
|
-
this.userWallet = await TestWallet.create(this.aztecNode, userPXEConfigWithContracts, {
|
|
217
|
-
loggers: {
|
|
218
|
-
prover: this.proxyLogger.createLogger('pxe:bb:wasm:bundle:proxied'),
|
|
219
|
-
},
|
|
220
|
-
});
|
|
221
|
-
},
|
|
222
|
-
);
|
|
223
|
-
}
|
|
201
|
+
async applyInitialAccounts() {
|
|
202
|
+
this.logger.info('Applying initial accounts setup');
|
|
203
|
+
const { deployedAccounts } = await deployAccounts(
|
|
204
|
+
2,
|
|
205
|
+
this.logger,
|
|
206
|
+
)({
|
|
207
|
+
wallet: this.context.wallet,
|
|
208
|
+
initialFundedAccounts: this.context.initialFundedAccounts,
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
const [{ address: adminAddress }, { address: sequencerAddress }] = deployedAccounts;
|
|
224
212
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
213
|
+
this.adminWallet = this.context.wallet;
|
|
214
|
+
this.aztecNode = this.context.aztecNodeService;
|
|
215
|
+
this.cheatCodes = this.context.cheatCodes;
|
|
216
|
+
|
|
217
|
+
this.adminAddress = adminAddress;
|
|
218
|
+
this.sequencerAddress = sequencerAddress;
|
|
219
|
+
|
|
220
|
+
const canonicalFeeJuice = await getCanonicalFeeJuice();
|
|
221
|
+
this.feeJuiceContract = FeeJuiceContract.at(canonicalFeeJuice.address, this.adminWallet);
|
|
222
|
+
this.coinbase = EthAddress.random();
|
|
223
|
+
|
|
224
|
+
const userPXEConfig = getPXEConfig();
|
|
225
|
+
const userPXEConfigWithContracts = {
|
|
226
|
+
...userPXEConfig,
|
|
227
|
+
proverEnabled: this.realProofs,
|
|
228
|
+
} as PXEConfig;
|
|
229
|
+
|
|
230
|
+
this.userWallet = await TestWallet.create(this.aztecNode, userPXEConfigWithContracts, {
|
|
231
|
+
loggers: {
|
|
232
|
+
prover: this.proxyLogger.createLogger('pxe:bb:wasm:bundle:proxied'),
|
|
241
233
|
},
|
|
242
|
-
);
|
|
234
|
+
});
|
|
243
235
|
}
|
|
244
236
|
|
|
245
|
-
async
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
this.bananaCoin = await BananaCoin.at(bananaCoinAddress, this.adminWallet);
|
|
257
|
-
},
|
|
258
|
-
);
|
|
237
|
+
async applySetupFeeJuice() {
|
|
238
|
+
this.logger.info('Applying fee juice setup');
|
|
239
|
+
this.feeJuiceContract = FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.adminWallet);
|
|
240
|
+
|
|
241
|
+
this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
|
|
242
|
+
aztecNode: this.context.aztecNodeService,
|
|
243
|
+
aztecNodeAdmin: this.context.aztecNodeService,
|
|
244
|
+
l1Client: this.context.deployL1ContractsValues.l1Client,
|
|
245
|
+
wallet: this.adminWallet,
|
|
246
|
+
logger: this.logger,
|
|
247
|
+
});
|
|
259
248
|
}
|
|
260
249
|
|
|
261
|
-
async
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
this.candyBarCoin = await TokenContract.at(candyBarCoinAddress, this.adminWallet);
|
|
273
|
-
},
|
|
274
|
-
);
|
|
250
|
+
async applyDeployBananaToken() {
|
|
251
|
+
this.logger.info('Applying banana token deployment');
|
|
252
|
+
const {
|
|
253
|
+
receipt: { contract: bananaCoin, instance: bananaCoinInstance },
|
|
254
|
+
} = await BananaCoin.deploy(this.adminWallet, this.adminAddress, 'BC', 'BC', 18n).send({
|
|
255
|
+
from: this.adminAddress,
|
|
256
|
+
wait: { returnReceipt: true },
|
|
257
|
+
});
|
|
258
|
+
this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
|
|
259
|
+
this.bananaCoin = bananaCoin;
|
|
260
|
+
this.bananaCoinInstance = bananaCoinInstance;
|
|
275
261
|
}
|
|
276
262
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
263
|
+
async applyDeployCandyBarToken() {
|
|
264
|
+
this.logger.info('Applying candy bar token deployment');
|
|
265
|
+
const {
|
|
266
|
+
receipt: { contract: candyBarCoin, instance: candyBarCoinInstance },
|
|
267
|
+
} = await TokenContract.deploy(this.adminWallet, this.adminAddress, 'CBC', 'CBC', 18n).send({
|
|
268
|
+
from: this.adminAddress,
|
|
269
|
+
wait: { returnReceipt: true },
|
|
270
|
+
});
|
|
271
|
+
this.logger.info(`CandyBarCoin deployed at ${candyBarCoin.address}`);
|
|
272
|
+
this.candyBarCoin = candyBarCoin;
|
|
273
|
+
this.candyBarCoinInstance = candyBarCoinInstance;
|
|
274
|
+
}
|
|
283
275
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
276
|
+
public async applyFPCSetup() {
|
|
277
|
+
this.logger.info('Applying FPC setup');
|
|
278
|
+
const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
|
|
279
|
+
expect((await this.context.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
|
|
280
|
+
|
|
281
|
+
const bananaCoin = this.bananaCoin;
|
|
282
|
+
const {
|
|
283
|
+
receipt: { contract: bananaFPC, instance: bananaFPCInstance },
|
|
284
|
+
} = await FPCContract.deploy(this.adminWallet, bananaCoin.address, this.adminAddress).send({
|
|
285
|
+
from: this.adminAddress,
|
|
286
|
+
wait: { returnReceipt: true },
|
|
287
|
+
});
|
|
288
288
|
|
|
289
|
-
|
|
289
|
+
this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
|
|
290
290
|
|
|
291
|
-
|
|
291
|
+
await this.feeJuiceBridgeTestHarness.bridgeFromL1ToL2(bananaFPC.address, this.adminAddress);
|
|
292
292
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
async data => {
|
|
296
|
-
this.bananaFPC = await FPCContract.at(data.bananaFPCAddress, this.adminWallet);
|
|
297
|
-
},
|
|
298
|
-
);
|
|
293
|
+
this.bananaFPC = bananaFPC;
|
|
294
|
+
this.bananaFPCInstance = bananaFPCInstance;
|
|
299
295
|
}
|
|
300
296
|
|
|
301
|
-
async
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
return { sponsoredFPCAddress: sponsoredFPC.address };
|
|
308
|
-
},
|
|
309
|
-
async ({ sponsoredFPCAddress }) => {
|
|
310
|
-
this.sponsoredFPC = await SponsoredFPCContract.at(sponsoredFPCAddress, this.adminWallet);
|
|
311
|
-
},
|
|
312
|
-
);
|
|
297
|
+
async applyDeploySponsoredFPC() {
|
|
298
|
+
this.logger.info('Applying sponsored FPC deployment');
|
|
299
|
+
const sponsoredFPCInstance = await setupSponsoredFPC(this.adminWallet);
|
|
300
|
+
this.logger.info(`SponsoredFPC at ${sponsoredFPCInstance.address}`);
|
|
301
|
+
this.sponsoredFPC = SponsoredFPCContract.at(sponsoredFPCInstance.address, this.adminWallet);
|
|
302
|
+
this.sponsoredFPCInstance = sponsoredFPCInstance;
|
|
313
303
|
}
|
|
314
304
|
|
|
315
305
|
public async createCrossChainTestHarness(owner: AztecAddress) {
|
|
316
|
-
const l1Client = createExtendedL1Client(this.context.
|
|
306
|
+
const l1Client = createExtendedL1Client(this.context.config.l1RpcUrls, MNEMONIC);
|
|
317
307
|
|
|
318
308
|
const underlyingERC20Address = await deployL1Contract(l1Client, TestERC20Abi, TestERC20Bytecode, [
|
|
319
309
|
'Underlying',
|
|
@@ -342,12 +332,10 @@ export class ClientFlowsBenchmark {
|
|
|
342
332
|
const benchysAddress = benchysAccountManager.address;
|
|
343
333
|
const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(benchysAddress);
|
|
344
334
|
const behchysDeployMethod = await benchysAccountManager.getDeployMethod();
|
|
345
|
-
await behchysDeployMethod
|
|
346
|
-
.
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
})
|
|
350
|
-
.wait();
|
|
335
|
+
await behchysDeployMethod.send({
|
|
336
|
+
from: AztecAddress.ZERO,
|
|
337
|
+
fee: { paymentMethod: new FeeJuicePaymentMethodWithClaim(benchysAddress, claim) },
|
|
338
|
+
});
|
|
351
339
|
// Register benchy on the user's Wallet, where we're going to be interacting from
|
|
352
340
|
const accountManager = await this.userWallet.createAccount({
|
|
353
341
|
secret: benchysAccount.getSecretKey(),
|
|
@@ -357,30 +345,28 @@ export class ClientFlowsBenchmark {
|
|
|
357
345
|
return accountManager.address;
|
|
358
346
|
}
|
|
359
347
|
|
|
360
|
-
public async
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
},
|
|
383
|
-
);
|
|
348
|
+
public async applyDeployAmm() {
|
|
349
|
+
this.logger.info('Applying AMM deployment');
|
|
350
|
+
const {
|
|
351
|
+
receipt: { contract: liquidityToken, instance: liquidityTokenInstance },
|
|
352
|
+
} = await TokenContract.deploy(this.adminWallet, this.adminAddress, 'LPT', 'LPT', 18n).send({
|
|
353
|
+
from: this.adminAddress,
|
|
354
|
+
wait: { returnReceipt: true },
|
|
355
|
+
});
|
|
356
|
+
const {
|
|
357
|
+
receipt: { contract: amm, instance: ammInstance },
|
|
358
|
+
} = await AMMContract.deploy(
|
|
359
|
+
this.adminWallet,
|
|
360
|
+
this.bananaCoin.address,
|
|
361
|
+
this.candyBarCoin.address,
|
|
362
|
+
liquidityToken.address,
|
|
363
|
+
).send({ from: this.adminAddress, wait: { returnReceipt: true } });
|
|
364
|
+
this.logger.info(`AMM deployed at ${amm.address}`);
|
|
365
|
+
await liquidityToken.methods.set_minter(amm.address, true).send({ from: this.adminAddress });
|
|
366
|
+
this.liquidityToken = liquidityToken;
|
|
367
|
+
this.liquidityTokenInstance = liquidityTokenInstance;
|
|
368
|
+
this.amm = amm;
|
|
369
|
+
this.ammInstance = ammInstance;
|
|
384
370
|
}
|
|
385
371
|
|
|
386
372
|
public async getBridgedFeeJuicePaymentMethodForWallet(_wallet: Wallet, sender: AztecAddress) {
|
|
@@ -391,7 +377,7 @@ export class ClientFlowsBenchmark {
|
|
|
391
377
|
public async getPrivateFPCPaymentMethodForWallet(wallet: Wallet, sender: AztecAddress) {
|
|
392
378
|
// The private fee paying method assembled on the app side requires knowledge of the maximum
|
|
393
379
|
// fee the user is willing to pay
|
|
394
|
-
const maxFeesPerGas = (await this.aztecNode.
|
|
380
|
+
const maxFeesPerGas = (await this.aztecNode.getCurrentMinFees()).mul(1.5);
|
|
395
381
|
const gasSettings = GasSettings.default({ maxFeesPerGas });
|
|
396
382
|
return new PrivateFeePaymentMethod(this.bananaFPC.address, sender, wallet, gasSettings);
|
|
397
383
|
}
|
|
@@ -6,7 +6,7 @@ export type ClientFlowConfig = {
|
|
|
6
6
|
recursions?: number[];
|
|
7
7
|
};
|
|
8
8
|
|
|
9
|
-
type ClientFlows = 'accountDeployments' | 'deployments' | 'transfers' | 'bridging' | 'amm';
|
|
9
|
+
type ClientFlows = 'accountDeployments' | 'deployments' | 'transfers' | 'bridging' | 'amm' | 'storageProof';
|
|
10
10
|
|
|
11
11
|
export type ClientFlowsConfig = {
|
|
12
12
|
[key in ClientFlows]: ClientFlowConfig;
|
|
@@ -34,6 +34,10 @@ export const KEY_FLOWS_CONFIG: ClientFlowsConfig = {
|
|
|
34
34
|
feePaymentMethods: ['sponsored_fpc', 'private_fpc'],
|
|
35
35
|
recursions: [0, 1],
|
|
36
36
|
},
|
|
37
|
+
storageProof: {
|
|
38
|
+
accounts: ['ecdsar1'],
|
|
39
|
+
feePaymentMethods: ['sponsored_fpc'],
|
|
40
|
+
},
|
|
37
41
|
};
|
|
38
42
|
|
|
39
43
|
export const FULL_FLOWS_CONFIG: ClientFlowsConfig = {
|
|
@@ -58,4 +62,8 @@ export const FULL_FLOWS_CONFIG: ClientFlowsConfig = {
|
|
|
58
62
|
feePaymentMethods: ['sponsored_fpc', 'private_fpc'],
|
|
59
63
|
recursions: [0, 1, 2],
|
|
60
64
|
},
|
|
65
|
+
storageProof: {
|
|
66
|
+
accounts: ['ecdsar1', 'schnorr'],
|
|
67
|
+
feePaymentMethods: ['sponsored_fpc', 'private_fpc'],
|
|
68
|
+
},
|
|
61
69
|
};
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { BBNativePrivateKernelProver } from '@aztec/bb-prover/client/native';
|
|
3
|
-
import { BBWASMBundlePrivateKernelProver } from '@aztec/bb-prover/client/wasm/bundle';
|
|
1
|
+
import { BBBundlePrivateKernelProver } from '@aztec/bb-prover/client/bundle';
|
|
4
2
|
import { createLogger, logger } from '@aztec/foundation/log';
|
|
5
3
|
import { Timer } from '@aztec/foundation/timer';
|
|
6
4
|
import { WASMSimulator } from '@aztec/simulator/client';
|
|
@@ -11,26 +9,7 @@ import { Decoder } from 'msgpackr';
|
|
|
11
9
|
import { readFile, readdir, writeFile } from 'node:fs/promises';
|
|
12
10
|
import { join } from 'node:path';
|
|
13
11
|
|
|
14
|
-
import { type Log,
|
|
15
|
-
|
|
16
|
-
type NativeProverConfig = { bbBinaryPath?: string; bbWorkingDirectory?: string };
|
|
17
|
-
|
|
18
|
-
async function createProver(config: NativeProverConfig = {}, log: Logger) {
|
|
19
|
-
const simulator = new WASMSimulator();
|
|
20
|
-
if (!config.bbBinaryPath || !config.bbWorkingDirectory) {
|
|
21
|
-
return { prover: new BBWASMBundlePrivateKernelProver(simulator, 16, log), type: 'wasm' as ProverType };
|
|
22
|
-
} else {
|
|
23
|
-
const bbConfig = config as Required<NativeProverConfig>;
|
|
24
|
-
return {
|
|
25
|
-
prover: await BBNativePrivateKernelProver.new(
|
|
26
|
-
{ bbSkipCleanup: false, numConcurrentIVCVerifiers: 1, bbIVCConcurrency: 1, ...bbConfig },
|
|
27
|
-
simulator,
|
|
28
|
-
log,
|
|
29
|
-
),
|
|
30
|
-
type: 'native' as ProverType,
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
}
|
|
12
|
+
import { type Log, ProxyLogger, generateBenchmark } from './benchmark.js';
|
|
34
13
|
|
|
35
14
|
async function main() {
|
|
36
15
|
ProxyLogger.create();
|
|
@@ -41,10 +20,9 @@ async function main() {
|
|
|
41
20
|
}
|
|
42
21
|
const flows = await readdir(ivcFolder);
|
|
43
22
|
logger.info(`Flows in ${ivcFolder}: \n${flows.map(flowName => `\t- ${flowName}`).join('\n')}`);
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
);
|
|
23
|
+
const simulator = new WASMSimulator();
|
|
24
|
+
const log = proxyLogger.createLogger('bb:prover');
|
|
25
|
+
const prover = new BBBundlePrivateKernelProver(simulator, { logger: log });
|
|
48
26
|
|
|
49
27
|
const userLog = createLogger('chonk_flows:data_processor');
|
|
50
28
|
|
|
@@ -96,7 +74,7 @@ async function main() {
|
|
|
96
74
|
if (!(profile.stats.timings as ProvingTimings).proving) {
|
|
97
75
|
(profile.stats.timings as ProvingTimings).proving = provingTime;
|
|
98
76
|
}
|
|
99
|
-
const benchmark = generateBenchmark(flow, currentLogs, profile.stats, privateExecutionSteps,
|
|
77
|
+
const benchmark = generateBenchmark(flow, currentLogs, profile.stats, privateExecutionSteps, 'native', error);
|
|
100
78
|
await writeFile(join(ivcFolder, flow, 'benchmark.json'), JSON.stringify(benchmark, null, 2));
|
|
101
79
|
proxyLogger.flushLogs();
|
|
102
80
|
}
|