@aztec/end-to-end 0.0.1-commit.7d4e6cd → 0.0.1-commit.7ffbba4
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 +13 -14
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +130 -137
- 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/utils.d.ts +6 -5
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +13 -8
- 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 +7 -8
- 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 +68 -64
- 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 +15 -7
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +86 -39
- package/dest/e2e_fees/bridging_race.notest.js +3 -5
- package/dest/e2e_fees/fees_test.d.ts +14 -14
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +133 -144
- 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 -13
- 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 +3 -3
- package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
- package/dest/e2e_p2p/inactivity_slash_test.js +3 -3
- package/dest/e2e_p2p/p2p_network.d.ts +11 -9
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +132 -108
- 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 +20 -6
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +38 -18
- 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 +11 -17
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +112 -127
- 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 +5 -1
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +6 -0
- 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/setup.d.ts +234 -0
- package/dest/fixtures/setup.d.ts.map +1 -0
- package/dest/fixtures/setup.js +605 -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 +40 -29
- 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 -191
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +4 -615
- 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 +14 -4
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +24 -24
- package/dest/shared/gas_portal_test_harness.d.ts +11 -1
- 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 +2 -1
- package/dest/shared/index.d.ts.map +1 -1
- package/dest/shared/index.js +1 -0
- 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 +1 -1
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +24 -22
- package/dest/simulators/lending_simulator.d.ts +5 -1
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +4 -4
- 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 +9 -2
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +94 -36
- package/dest/spartan/tx_metrics.d.ts +51 -2
- package/dest/spartan/tx_metrics.d.ts.map +1 -1
- package/dest/spartan/tx_metrics.js +334 -7
- 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 +42 -0
- package/dest/spartan/utils/config.d.ts.map +1 -0
- package/dest/spartan/utils/config.js +22 -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 +40 -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 -253
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +1 -892
- package/dest/test-wallet/test_wallet.d.ts +83 -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 +47 -43
- package/src/bench/client_flows/benchmark.ts +24 -2
- package/src/bench/client_flows/client_flows_benchmark.ts +148 -210
- package/src/bench/client_flows/config.ts +9 -1
- package/src/bench/utils.ts +15 -8
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +120 -145
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +103 -111
- package/src/e2e_deploy_contract/deploy_test.ts +22 -15
- package/src/e2e_epochs/epochs_test.ts +129 -93
- package/src/e2e_fees/bridging_race.notest.ts +4 -10
- package/src/e2e_fees/fees_test.ts +170 -224
- package/src/e2e_l1_publisher/write_json.ts +16 -13
- package/src/e2e_nested_contract/nested_contract_test.ts +35 -56
- package/src/e2e_p2p/inactivity_slash_test.ts +3 -3
- package/src/e2e_p2p/p2p_network.ts +196 -166
- package/src/e2e_p2p/reqresp/utils.ts +235 -0
- package/src/e2e_p2p/shared.ts +66 -23
- 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 +133 -171
- package/src/fixtures/elu_monitor.ts +126 -0
- package/src/fixtures/fixtures.ts +10 -0
- package/src/fixtures/ha_setup.ts +186 -0
- package/src/fixtures/index.ts +1 -0
- package/src/fixtures/setup.ts +897 -0
- package/src/fixtures/setup_p2p_test.ts +40 -44
- package/src/fixtures/token_utils.ts +10 -6
- package/src/fixtures/utils.ts +27 -901
- package/src/guides/up_quick_start.sh +3 -3
- package/src/quality_of_service/prometheus_client.ts +113 -0
- package/src/shared/cross_chain_test_harness.ts +24 -34
- package/src/shared/gas_portal_test_harness.ts +2 -2
- package/src/shared/index.ts +1 -0
- 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 +26 -33
- package/src/simulators/lending_simulator.ts +6 -4
- package/src/simulators/token_simulator.ts +6 -30
- package/src/spartan/setup_test_wallets.ts +121 -26
- package/src/spartan/tx_metrics.ts +256 -10
- 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 +28 -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 +543 -0
- package/src/spartan/utils/scripts.ts +99 -0
- package/src/spartan/utils.ts +1 -1158
- package/src/test-wallet/test_wallet.ts +306 -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/snapshot_manager.d.ts +0 -93
- package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
- package/dest/fixtures/snapshot_manager.js +0 -488
- package/src/fixtures/snapshot_manager.ts +0 -646
|
@@ -4,7 +4,7 @@ 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';
|
|
7
|
+
import { CheatCodes, getTokenAllowedSetupFunctions } from '@aztec/aztec/testing';
|
|
8
8
|
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
9
9
|
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
10
10
|
import type { DeployAztecL1ContractsArgs } from '@aztec/ethereum/deploy-aztec-l1-contracts';
|
|
@@ -26,38 +26,31 @@ import { type PXEConfig, getPXEConfig } from '@aztec/pxe/server';
|
|
|
26
26
|
import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
27
27
|
import { GasSettings } from '@aztec/stdlib/gas';
|
|
28
28
|
import { deriveSigningKey } from '@aztec/stdlib/keys';
|
|
29
|
-
import { TestWallet } from '@aztec/test-wallet/server';
|
|
30
29
|
|
|
31
30
|
import { MNEMONIC } from '../../fixtures/fixtures.js';
|
|
32
|
-
import {
|
|
33
|
-
type ISnapshotManager,
|
|
34
|
-
type SubsystemsContext,
|
|
35
|
-
createSnapshotManager,
|
|
36
|
-
deployAccounts,
|
|
37
|
-
} from '../../fixtures/snapshot_manager.js';
|
|
31
|
+
import { type EndToEndContext, type SetupOptions, deployAccounts, setup, teardown } from '../../fixtures/setup.js';
|
|
38
32
|
import { mintTokensToPrivate } from '../../fixtures/token_utils.js';
|
|
39
|
-
import {
|
|
33
|
+
import { setupSponsoredFPC } from '../../fixtures/utils.js';
|
|
40
34
|
import { CrossChainTestHarness } from '../../shared/cross_chain_test_harness.js';
|
|
41
35
|
import {
|
|
42
36
|
FeeJuicePortalTestingHarnessFactory,
|
|
43
37
|
type GasBridgingTestHarness,
|
|
44
38
|
} from '../../shared/gas_portal_test_harness.js';
|
|
39
|
+
import { TestWallet } from '../../test-wallet/test_wallet.js';
|
|
45
40
|
import { ProxyLogger } from './benchmark.js';
|
|
46
41
|
import { type ClientFlowsConfig, FULL_FLOWS_CONFIG, KEY_FLOWS_CONFIG } from './config.js';
|
|
47
42
|
|
|
48
|
-
const {
|
|
43
|
+
const { BENCHMARK_CONFIG } = process.env;
|
|
49
44
|
|
|
50
45
|
export type AccountType = 'ecdsar1' | 'schnorr';
|
|
51
46
|
export type FeePaymentMethodGetter = (wallet: Wallet, sender: AztecAddress) => Promise<FeePaymentMethod | undefined>;
|
|
52
47
|
export type BenchmarkingFeePaymentMethod = 'bridged_fee_juice' | 'private_fpc' | 'sponsored_fpc' | 'fee_juice';
|
|
53
48
|
|
|
54
49
|
export class ClientFlowsBenchmark {
|
|
55
|
-
private snapshotManager: ISnapshotManager;
|
|
56
|
-
|
|
57
50
|
public logger: Logger;
|
|
58
51
|
public aztecNode!: AztecNode;
|
|
59
52
|
public cheatCodes!: CheatCodes;
|
|
60
|
-
public context!:
|
|
53
|
+
public context!: EndToEndContext;
|
|
61
54
|
public chainMonitor!: ChainMonitor;
|
|
62
55
|
public feeJuiceBridgeTestHarness!: GasBridgingTestHarness;
|
|
63
56
|
public adminWallet!: TestWallet;
|
|
@@ -125,33 +118,41 @@ export class ClientFlowsBenchmark {
|
|
|
125
118
|
public config: ClientFlowsConfig;
|
|
126
119
|
|
|
127
120
|
private proxyLogger: ProxyLogger;
|
|
121
|
+
private setupOptions: Partial<SetupOptions & DeployAztecL1ContractsArgs>;
|
|
128
122
|
|
|
129
123
|
constructor(testName?: string, setupOptions: Partial<SetupOptions & DeployAztecL1ContractsArgs> = {}) {
|
|
130
124
|
this.logger = createLogger(`bench:client_flows${testName ? `:${testName}` : ''}`);
|
|
131
|
-
this.
|
|
132
|
-
`bench_client_flows${testName ? `/${testName}` : ''}`,
|
|
133
|
-
dataPath,
|
|
134
|
-
{ startProverNode: true, ...setupOptions },
|
|
135
|
-
{ ...setupOptions },
|
|
136
|
-
);
|
|
125
|
+
this.setupOptions = { startProverNode: true, ...setupOptions };
|
|
137
126
|
this.config = BENCHMARK_CONFIG === 'key_flows' ? KEY_FLOWS_CONFIG : FULL_FLOWS_CONFIG;
|
|
138
127
|
ProxyLogger.create();
|
|
139
128
|
this.proxyLogger = ProxyLogger.getInstance();
|
|
140
129
|
}
|
|
141
130
|
|
|
142
131
|
async setup() {
|
|
143
|
-
|
|
144
|
-
|
|
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 });
|
|
145
145
|
|
|
146
|
-
const rollupContract = RollupContract.getFromConfig(context.
|
|
147
|
-
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();
|
|
148
148
|
|
|
149
149
|
return this;
|
|
150
150
|
}
|
|
151
151
|
|
|
152
152
|
async teardown() {
|
|
153
153
|
await this.chainMonitor.stop();
|
|
154
|
-
await this.
|
|
154
|
+
await this.userWallet?.stop();
|
|
155
|
+
await teardown(this.context);
|
|
155
156
|
}
|
|
156
157
|
|
|
157
158
|
async mintAndBridgeFeeJuice(address: AztecAddress) {
|
|
@@ -159,21 +160,20 @@ export class ClientFlowsBenchmark {
|
|
|
159
160
|
const { claimSecret: secret, messageLeafIndex: index } = claim;
|
|
160
161
|
await this.feeJuiceContract.methods
|
|
161
162
|
.claim(address, claim.claimAmount, secret, index)
|
|
162
|
-
.send({ from: this.adminAddress })
|
|
163
|
-
.wait();
|
|
163
|
+
.send({ from: this.adminAddress });
|
|
164
164
|
}
|
|
165
165
|
|
|
166
166
|
/** Admin mints bananaCoin tokens privately to the target address and redeems them. */
|
|
167
167
|
async mintPrivateBananas(amount: bigint, address: AztecAddress) {
|
|
168
|
-
const balanceBefore = await this.bananaCoin.methods
|
|
168
|
+
const { result: balanceBefore } = await this.bananaCoin.methods
|
|
169
169
|
.balance_of_private(address)
|
|
170
|
-
.simulate({ from:
|
|
170
|
+
.simulate({ from: address });
|
|
171
171
|
|
|
172
172
|
await mintTokensToPrivate(this.bananaCoin, this.adminAddress, address, amount);
|
|
173
173
|
|
|
174
|
-
const balanceAfter = await this.bananaCoin.methods
|
|
174
|
+
const { result: balanceAfter } = await this.bananaCoin.methods
|
|
175
175
|
.balance_of_private(address)
|
|
176
|
-
.simulate({ from:
|
|
176
|
+
.simulate({ from: address });
|
|
177
177
|
expect(balanceAfter).toEqual(balanceBefore + amount);
|
|
178
178
|
}
|
|
179
179
|
|
|
@@ -193,161 +193,117 @@ export class ClientFlowsBenchmark {
|
|
|
193
193
|
}
|
|
194
194
|
}
|
|
195
195
|
|
|
196
|
-
public async
|
|
197
|
-
await this.
|
|
198
|
-
await this.
|
|
196
|
+
public async applyBaseSetup() {
|
|
197
|
+
await this.applyInitialAccounts();
|
|
198
|
+
await this.applySetupFeeJuice();
|
|
199
199
|
}
|
|
200
200
|
|
|
201
|
-
async
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
this.adminAddress = adminAddress;
|
|
214
|
-
this.sequencerAddress = sequencerAddress;
|
|
215
|
-
|
|
216
|
-
const canonicalFeeJuice = await getCanonicalFeeJuice();
|
|
217
|
-
this.feeJuiceContract = FeeJuiceContract.at(canonicalFeeJuice.address, this.adminWallet);
|
|
218
|
-
this.coinbase = EthAddress.random();
|
|
219
|
-
|
|
220
|
-
const userPXEConfig = getPXEConfig();
|
|
221
|
-
const userPXEConfigWithContracts = {
|
|
222
|
-
...userPXEConfig,
|
|
223
|
-
proverEnabled: this.realProofs,
|
|
224
|
-
} as PXEConfig;
|
|
225
|
-
|
|
226
|
-
this.userWallet = await TestWallet.create(this.aztecNode, userPXEConfigWithContracts, {
|
|
227
|
-
loggers: {
|
|
228
|
-
prover: this.proxyLogger.createLogger('pxe:bb:wasm:bundle:proxied'),
|
|
229
|
-
},
|
|
230
|
-
});
|
|
231
|
-
},
|
|
232
|
-
);
|
|
233
|
-
}
|
|
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;
|
|
234
212
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
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'),
|
|
251
233
|
},
|
|
252
|
-
);
|
|
234
|
+
});
|
|
253
235
|
}
|
|
254
236
|
|
|
255
|
-
async
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
.send({ from: this.adminAddress })
|
|
267
|
-
.wait();
|
|
268
|
-
this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
|
|
269
|
-
return { bananaCoinAddress: bananaCoin.address, bananaCoinInstance };
|
|
270
|
-
},
|
|
271
|
-
({ bananaCoinAddress, bananaCoinInstance }) => {
|
|
272
|
-
this.bananaCoin = BananaCoin.at(bananaCoinAddress, this.adminWallet);
|
|
273
|
-
this.bananaCoinInstance = bananaCoinInstance;
|
|
274
|
-
return Promise.resolve();
|
|
275
|
-
},
|
|
276
|
-
);
|
|
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
|
+
});
|
|
277
248
|
}
|
|
278
249
|
|
|
279
|
-
async
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
.send({ from: this.adminAddress })
|
|
291
|
-
.wait();
|
|
292
|
-
this.logger.info(`CandyBarCoin deployed at ${candyBarCoin.address}`);
|
|
293
|
-
return { candyBarCoinAddress: candyBarCoin.address, candyBarCoinInstance };
|
|
294
|
-
},
|
|
295
|
-
({ candyBarCoinAddress, candyBarCoinInstance }) => {
|
|
296
|
-
this.candyBarCoin = TokenContract.at(candyBarCoinAddress, this.adminWallet);
|
|
297
|
-
this.candyBarCoinInstance = candyBarCoinInstance;
|
|
298
|
-
return Promise.resolve();
|
|
299
|
-
},
|
|
300
|
-
);
|
|
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;
|
|
301
261
|
}
|
|
302
262
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
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
|
+
}
|
|
309
275
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
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
|
+
});
|
|
318
288
|
|
|
319
|
-
|
|
289
|
+
this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
|
|
320
290
|
|
|
321
|
-
|
|
291
|
+
await this.feeJuiceBridgeTestHarness.bridgeFromL1ToL2(bananaFPC.address, this.adminAddress);
|
|
322
292
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
data => {
|
|
326
|
-
this.bananaFPC = FPCContract.at(data.bananaFPCAddress, this.adminWallet);
|
|
327
|
-
this.bananaFPCInstance = data.bananaFPCInstance;
|
|
328
|
-
return Promise.resolve();
|
|
329
|
-
},
|
|
330
|
-
);
|
|
293
|
+
this.bananaFPC = bananaFPC;
|
|
294
|
+
this.bananaFPCInstance = bananaFPCInstance;
|
|
331
295
|
}
|
|
332
296
|
|
|
333
|
-
async
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
return { sponsoredFPCAddress: sponsoredFPCInstance.address, sponsoredFPCInstance };
|
|
340
|
-
},
|
|
341
|
-
({ sponsoredFPCAddress, sponsoredFPCInstance }) => {
|
|
342
|
-
this.sponsoredFPC = SponsoredFPCContract.at(sponsoredFPCAddress, this.adminWallet);
|
|
343
|
-
this.sponsoredFPCInstance = sponsoredFPCInstance;
|
|
344
|
-
return Promise.resolve();
|
|
345
|
-
},
|
|
346
|
-
);
|
|
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;
|
|
347
303
|
}
|
|
348
304
|
|
|
349
305
|
public async createCrossChainTestHarness(owner: AztecAddress) {
|
|
350
|
-
const l1Client = createExtendedL1Client(this.context.
|
|
306
|
+
const l1Client = createExtendedL1Client(this.context.config.l1RpcUrls, MNEMONIC);
|
|
351
307
|
|
|
352
308
|
const underlyingERC20Address = await deployL1Contract(l1Client, TestERC20Abi, TestERC20Bytecode, [
|
|
353
309
|
'Underlying',
|
|
@@ -376,12 +332,10 @@ export class ClientFlowsBenchmark {
|
|
|
376
332
|
const benchysAddress = benchysAccountManager.address;
|
|
377
333
|
const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(benchysAddress);
|
|
378
334
|
const behchysDeployMethod = await benchysAccountManager.getDeployMethod();
|
|
379
|
-
await behchysDeployMethod
|
|
380
|
-
.
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
})
|
|
384
|
-
.wait();
|
|
335
|
+
await behchysDeployMethod.send({
|
|
336
|
+
from: AztecAddress.ZERO,
|
|
337
|
+
fee: { paymentMethod: new FeeJuicePaymentMethodWithClaim(benchysAddress, claim) },
|
|
338
|
+
});
|
|
385
339
|
// Register benchy on the user's Wallet, where we're going to be interacting from
|
|
386
340
|
const accountManager = await this.userWallet.createAccount({
|
|
387
341
|
secret: benchysAccount.getSecretKey(),
|
|
@@ -391,44 +345,28 @@ export class ClientFlowsBenchmark {
|
|
|
391
345
|
return accountManager.address;
|
|
392
346
|
}
|
|
393
347
|
|
|
394
|
-
public async
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
await liquidityToken.methods.set_minter(amm.address, true).send({ from: this.adminAddress }).wait();
|
|
417
|
-
return {
|
|
418
|
-
ammAddress: amm.address,
|
|
419
|
-
ammInstance,
|
|
420
|
-
liquidityTokenAddress: liquidityToken.address,
|
|
421
|
-
liquidityTokenInstance,
|
|
422
|
-
};
|
|
423
|
-
},
|
|
424
|
-
({ ammAddress, ammInstance, liquidityTokenAddress, liquidityTokenInstance }) => {
|
|
425
|
-
this.liquidityToken = TokenContract.at(liquidityTokenAddress, this.adminWallet);
|
|
426
|
-
this.liquidityTokenInstance = liquidityTokenInstance;
|
|
427
|
-
this.amm = AMMContract.at(ammAddress, this.adminWallet);
|
|
428
|
-
this.ammInstance = ammInstance;
|
|
429
|
-
return Promise.resolve();
|
|
430
|
-
},
|
|
431
|
-
);
|
|
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;
|
|
432
370
|
}
|
|
433
371
|
|
|
434
372
|
public async getBridgedFeeJuicePaymentMethodForWallet(_wallet: Wallet, sender: AztecAddress) {
|
|
@@ -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
|
};
|
package/src/bench/utils.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { AztecNodeService } from '@aztec/aztec-node';
|
|
2
2
|
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
3
|
-
import { BatchCall,
|
|
3
|
+
import { BatchCall, NO_WAIT, type WaitOpts } from '@aztec/aztec.js/contracts';
|
|
4
|
+
import { waitForTx } from '@aztec/aztec.js/node';
|
|
4
5
|
import { mean, stdDev, times } from '@aztec/foundation/collection';
|
|
5
6
|
import { BenchmarkingContract } from '@aztec/noir-test-contracts.js/Benchmarking';
|
|
7
|
+
import type { TxHash } from '@aztec/stdlib/tx';
|
|
6
8
|
import type { MetricDefinition } from '@aztec/telemetry-client';
|
|
7
9
|
import type { BenchmarkDataPoint, BenchmarkMetricsType, BenchmarkTelemetryClient } from '@aztec/telemetry-client/bench';
|
|
8
10
|
|
|
@@ -23,10 +25,10 @@ export async function benchmarkSetup(
|
|
|
23
25
|
) {
|
|
24
26
|
const context = await setup(1, { ...opts, telemetryConfig: { benchmark: true } });
|
|
25
27
|
const defaultAccountAddress = context.accounts[0];
|
|
26
|
-
const contract = await BenchmarkingContract.deploy(context.wallet).send({ from: defaultAccountAddress })
|
|
28
|
+
const { contract } = await BenchmarkingContract.deploy(context.wallet).send({ from: defaultAccountAddress });
|
|
27
29
|
context.logger.info(`Deployed benchmarking contract at ${contract.address}`);
|
|
28
30
|
const sequencer = (context.aztecNode as AztecNodeService).getSequencer()!;
|
|
29
|
-
const telemetry = context.telemetryClient
|
|
31
|
+
const telemetry = context.telemetryClient as BenchmarkTelemetryClient;
|
|
30
32
|
context.logger.warn(`Cleared benchmark data points from setup`);
|
|
31
33
|
telemetry.clear();
|
|
32
34
|
const origTeardown = context.teardown.bind(context);
|
|
@@ -142,18 +144,23 @@ export async function sendTxs(
|
|
|
142
144
|
context: EndToEndContext,
|
|
143
145
|
contract: BenchmarkingContract,
|
|
144
146
|
heavyPublicCompute: boolean = false,
|
|
145
|
-
): Promise<
|
|
147
|
+
): Promise<TxHash[]> {
|
|
146
148
|
const calls = await Promise.all(times(txCount, index => makeCall(index, context, contract, heavyPublicCompute)));
|
|
147
149
|
context.logger.info(`Creating ${txCount} txs`);
|
|
148
150
|
const [from] = context.accounts;
|
|
149
151
|
context.logger.info(`Sending ${txCount} txs`);
|
|
150
|
-
return
|
|
152
|
+
return Promise.all(
|
|
153
|
+
calls.map(async call => {
|
|
154
|
+
const { txHash } = await call.send({ from, wait: NO_WAIT });
|
|
155
|
+
return txHash;
|
|
156
|
+
}),
|
|
157
|
+
);
|
|
151
158
|
}
|
|
152
159
|
|
|
153
|
-
export async function waitTxs(txs:
|
|
160
|
+
export async function waitTxs(txs: TxHash[], context: EndToEndContext, txWaitOpts?: WaitOpts) {
|
|
154
161
|
context.logger.info(`Awaiting ${txs.length} txs to be mined`);
|
|
155
|
-
await Promise.all(txs.map(
|
|
156
|
-
context.logger.info(
|
|
162
|
+
await Promise.all(txs.map(txHash => waitForTx(context.aztecNode, txHash, txWaitOpts)));
|
|
163
|
+
context.logger.info(`${txs.length} txs have been mined`);
|
|
157
164
|
}
|
|
158
165
|
|
|
159
166
|
function randomBytesAsBigInts(length: number): bigint[] {
|