@aztec/end-to-end 0.0.1-commit.d431d1c → 0.0.1-commit.d939eb5aa
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/client_flows_benchmark.d.ts +2 -2
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +25 -17
- 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 +5 -4
- 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 +6 -3
- 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 +28 -19
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +2 -2
- 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 +3 -2
- package/dest/e2e_deploy_contract/deploy_test.d.ts +2 -2
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.d.ts +17 -7
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +92 -42
- package/dest/e2e_fees/bridging_race.notest.js +1 -1
- package/dest/e2e_fees/fees_test.d.ts +2 -2
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +25 -18
- 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 +1 -7
- package/dest/e2e_nested_contract/nested_contract_test.js +4 -6
- package/dest/e2e_p2p/inactivity_slash_test.js +3 -3
- package/dest/e2e_p2p/p2p_network.d.ts +9 -10
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +43 -21
- 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 +30 -12
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +62 -60
- 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 +4 -2
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +20 -10
- 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 +7 -6
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +40 -49
- 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/get_bb_config.d.ts +1 -1
- package/dest/fixtures/get_bb_config.d.ts.map +1 -1
- package/dest/fixtures/get_bb_config.js +5 -5
- 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 +57 -31
- package/dest/fixtures/setup.d.ts.map +1 -1
- package/dest/fixtures/setup.js +105 -178
- package/dest/fixtures/setup_p2p_test.d.ts +18 -11
- 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 +7 -6
- package/dest/legacy-jest-resolver.d.cts +3 -0
- package/dest/legacy-jest-resolver.d.cts.map +1 -0
- package/dest/shared/cross_chain_test_harness.d.ts +3 -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.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 +27 -28
- package/dest/simulators/lending_simulator.d.ts +1 -1
- 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 +12 -3
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +130 -42
- package/dest/spartan/tx_metrics.d.ts +38 -2
- package/dest/spartan/tx_metrics.d.ts.map +1 -1
- package/dest/spartan/tx_metrics.js +179 -5
- 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 -260
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +1 -942
- 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 +279 -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 +46 -43
- package/src/bench/client_flows/client_flows_benchmark.ts +36 -36
- 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 +36 -29
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +7 -8
- package/src/e2e_deploy_contract/deploy_test.ts +3 -3
- package/src/e2e_epochs/epochs_test.ts +140 -92
- package/src/e2e_fees/bridging_race.notest.ts +2 -5
- package/src/e2e_fees/fees_test.ts +29 -41
- package/src/e2e_l1_publisher/write_json.ts +3 -8
- package/src/e2e_nested_contract/nested_contract_test.ts +7 -7
- package/src/e2e_p2p/inactivity_slash_test.ts +7 -7
- package/src/e2e_p2p/p2p_network.ts +71 -44
- package/src/e2e_p2p/reqresp/utils.ts +256 -0
- package/src/e2e_p2p/shared.ts +92 -80
- 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 +27 -12
- 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 +49 -63
- package/src/fixtures/elu_monitor.ts +126 -0
- package/src/fixtures/fixtures.ts +10 -0
- package/src/fixtures/get_bb_config.ts +7 -6
- package/src/fixtures/ha_setup.ts +186 -0
- package/src/fixtures/index.ts +1 -0
- package/src/fixtures/setup.ts +144 -244
- package/src/fixtures/setup_p2p_test.ts +48 -52
- package/src/fixtures/token_utils.ts +7 -6
- package/src/guides/up_quick_start.sh +3 -3
- package/src/legacy-jest-resolver.cjs +135 -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 +49 -51
- package/src/simulators/lending_simulator.ts +10 -6
- package/src/simulators/token_simulator.ts +6 -30
- package/src/spartan/setup_test_wallets.ts +183 -26
- package/src/spartan/tx_metrics.ts +153 -8
- 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 -1246
- 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
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { NO_FROM } from '@aztec/aztec.js/account';
|
|
1
2
|
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
3
|
import { FeeJuicePaymentMethodWithClaim } from '@aztec/aztec.js/fee';
|
|
3
4
|
import { type FeePaymentMethod, PrivateFeePaymentMethod, SponsoredFeePaymentMethod } from '@aztec/aztec.js/fee';
|
|
4
5
|
import { type Logger, createLogger } from '@aztec/aztec.js/log';
|
|
5
6
|
import type { AztecNode } from '@aztec/aztec.js/node';
|
|
6
7
|
import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
7
|
-
import { CheatCodes } from '@aztec/aztec/testing';
|
|
8
|
+
import { CheatCodes, getTokenAllowedSetupFunctions } from '@aztec/aztec/testing';
|
|
8
9
|
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
9
10
|
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
10
11
|
import type { DeployAztecL1ContractsArgs } from '@aztec/ethereum/deploy-aztec-l1-contracts';
|
|
@@ -26,7 +27,6 @@ import { type PXEConfig, getPXEConfig } from '@aztec/pxe/server';
|
|
|
26
27
|
import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
27
28
|
import { GasSettings } from '@aztec/stdlib/gas';
|
|
28
29
|
import { deriveSigningKey } from '@aztec/stdlib/keys';
|
|
29
|
-
import { TestWallet } from '@aztec/test-wallet/server';
|
|
30
30
|
|
|
31
31
|
import { MNEMONIC } from '../../fixtures/fixtures.js';
|
|
32
32
|
import { type EndToEndContext, type SetupOptions, deployAccounts, setup, teardown } from '../../fixtures/setup.js';
|
|
@@ -37,6 +37,7 @@ import {
|
|
|
37
37
|
FeeJuicePortalTestingHarnessFactory,
|
|
38
38
|
type GasBridgingTestHarness,
|
|
39
39
|
} from '../../shared/gas_portal_test_harness.js';
|
|
40
|
+
import { TestWallet } from '../../test-wallet/test_wallet.js';
|
|
40
41
|
import { ProxyLogger } from './benchmark.js';
|
|
41
42
|
import { type ClientFlowsConfig, FULL_FLOWS_CONFIG, KEY_FLOWS_CONFIG } from './config.js';
|
|
42
43
|
|
|
@@ -130,24 +131,28 @@ export class ClientFlowsBenchmark {
|
|
|
130
131
|
|
|
131
132
|
async setup() {
|
|
132
133
|
this.logger.info('Setting up subsystems from fresh');
|
|
134
|
+
// Token allowlist entries are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
|
|
135
|
+
const tokenAllowList = await getTokenAllowedSetupFunctions();
|
|
133
136
|
this.context = await setup(0, {
|
|
134
137
|
...this.setupOptions,
|
|
135
138
|
fundSponsoredFPC: true,
|
|
136
139
|
skipAccountDeployment: true,
|
|
137
140
|
l1ContractsArgs: this.setupOptions,
|
|
141
|
+
txPublicSetupAllowListExtend: [...(this.setupOptions.txPublicSetupAllowListExtend ?? []), ...tokenAllowList],
|
|
138
142
|
});
|
|
139
143
|
await this.applyBaseSetup();
|
|
140
144
|
|
|
141
|
-
await this.context.aztecNodeService
|
|
145
|
+
await this.context.aztecNodeService.setConfig({ feeRecipient: this.sequencerAddress, coinbase: this.coinbase });
|
|
142
146
|
|
|
143
147
|
const rollupContract = RollupContract.getFromConfig(this.context.config);
|
|
144
|
-
this.chainMonitor = new ChainMonitor(rollupContract, this.context.dateProvider
|
|
148
|
+
this.chainMonitor = new ChainMonitor(rollupContract, this.context.dateProvider, this.logger, 200).start();
|
|
145
149
|
|
|
146
150
|
return this;
|
|
147
151
|
}
|
|
148
152
|
|
|
149
153
|
async teardown() {
|
|
150
154
|
await this.chainMonitor.stop();
|
|
155
|
+
await this.userWallet?.stop();
|
|
151
156
|
await teardown(this.context);
|
|
152
157
|
}
|
|
153
158
|
|
|
@@ -156,21 +161,20 @@ export class ClientFlowsBenchmark {
|
|
|
156
161
|
const { claimSecret: secret, messageLeafIndex: index } = claim;
|
|
157
162
|
await this.feeJuiceContract.methods
|
|
158
163
|
.claim(address, claim.claimAmount, secret, index)
|
|
159
|
-
.send({ from: this.adminAddress })
|
|
160
|
-
.wait();
|
|
164
|
+
.send({ from: this.adminAddress });
|
|
161
165
|
}
|
|
162
166
|
|
|
163
167
|
/** Admin mints bananaCoin tokens privately to the target address and redeems them. */
|
|
164
168
|
async mintPrivateBananas(amount: bigint, address: AztecAddress) {
|
|
165
|
-
const balanceBefore = await this.bananaCoin.methods
|
|
169
|
+
const { result: balanceBefore } = await this.bananaCoin.methods
|
|
166
170
|
.balance_of_private(address)
|
|
167
|
-
.simulate({ from:
|
|
171
|
+
.simulate({ from: address });
|
|
168
172
|
|
|
169
173
|
await mintTokensToPrivate(this.bananaCoin, this.adminAddress, address, amount);
|
|
170
174
|
|
|
171
|
-
const balanceAfter = await this.bananaCoin.methods
|
|
175
|
+
const { result: balanceAfter } = await this.bananaCoin.methods
|
|
172
176
|
.balance_of_private(address)
|
|
173
|
-
.simulate({ from:
|
|
177
|
+
.simulate({ from: address });
|
|
174
178
|
expect(balanceAfter).toEqual(balanceBefore + amount);
|
|
175
179
|
}
|
|
176
180
|
|
|
@@ -208,7 +212,7 @@ export class ClientFlowsBenchmark {
|
|
|
208
212
|
const [{ address: adminAddress }, { address: sequencerAddress }] = deployedAccounts;
|
|
209
213
|
|
|
210
214
|
this.adminWallet = this.context.wallet;
|
|
211
|
-
this.aztecNode = this.context.aztecNodeService
|
|
215
|
+
this.aztecNode = this.context.aztecNodeService;
|
|
212
216
|
this.cheatCodes = this.context.cheatCodes;
|
|
213
217
|
|
|
214
218
|
this.adminAddress = adminAddress;
|
|
@@ -236,8 +240,8 @@ export class ClientFlowsBenchmark {
|
|
|
236
240
|
this.feeJuiceContract = FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.adminWallet);
|
|
237
241
|
|
|
238
242
|
this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
|
|
239
|
-
aztecNode: this.context.aztecNodeService
|
|
240
|
-
aztecNodeAdmin: this.context.aztecNodeService
|
|
243
|
+
aztecNode: this.context.aztecNodeService,
|
|
244
|
+
aztecNodeAdmin: this.context.aztecNodeService,
|
|
241
245
|
l1Client: this.context.deployL1ContractsValues.l1Client,
|
|
242
246
|
wallet: this.adminWallet,
|
|
243
247
|
logger: this.logger,
|
|
@@ -252,9 +256,9 @@ export class ClientFlowsBenchmark {
|
|
|
252
256
|
'BC',
|
|
253
257
|
'BC',
|
|
254
258
|
18n,
|
|
255
|
-
)
|
|
256
|
-
|
|
257
|
-
|
|
259
|
+
).send({
|
|
260
|
+
from: this.adminAddress,
|
|
261
|
+
});
|
|
258
262
|
this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
|
|
259
263
|
this.bananaCoin = bananaCoin;
|
|
260
264
|
this.bananaCoinInstance = bananaCoinInstance;
|
|
@@ -268,9 +272,9 @@ export class ClientFlowsBenchmark {
|
|
|
268
272
|
'CBC',
|
|
269
273
|
'CBC',
|
|
270
274
|
18n,
|
|
271
|
-
)
|
|
272
|
-
|
|
273
|
-
|
|
275
|
+
).send({
|
|
276
|
+
from: this.adminAddress,
|
|
277
|
+
});
|
|
274
278
|
this.logger.info(`CandyBarCoin deployed at ${candyBarCoin.address}`);
|
|
275
279
|
this.candyBarCoin = candyBarCoin;
|
|
276
280
|
this.candyBarCoinInstance = candyBarCoinInstance;
|
|
@@ -286,9 +290,9 @@ export class ClientFlowsBenchmark {
|
|
|
286
290
|
this.adminWallet,
|
|
287
291
|
bananaCoin.address,
|
|
288
292
|
this.adminAddress,
|
|
289
|
-
)
|
|
290
|
-
|
|
291
|
-
|
|
293
|
+
).send({
|
|
294
|
+
from: this.adminAddress,
|
|
295
|
+
});
|
|
292
296
|
|
|
293
297
|
this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
|
|
294
298
|
|
|
@@ -336,12 +340,10 @@ export class ClientFlowsBenchmark {
|
|
|
336
340
|
const benchysAddress = benchysAccountManager.address;
|
|
337
341
|
const claim = await this.feeJuiceBridgeTestHarness.prepareTokensOnL1(benchysAddress);
|
|
338
342
|
const behchysDeployMethod = await benchysAccountManager.getDeployMethod();
|
|
339
|
-
await behchysDeployMethod
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
})
|
|
344
|
-
.wait();
|
|
343
|
+
await behchysDeployMethod.send({
|
|
344
|
+
from: NO_FROM,
|
|
345
|
+
fee: { paymentMethod: new FeeJuicePaymentMethodWithClaim(benchysAddress, claim) },
|
|
346
|
+
});
|
|
345
347
|
// Register benchy on the user's Wallet, where we're going to be interacting from
|
|
346
348
|
const accountManager = await this.userWallet.createAccount({
|
|
347
349
|
secret: benchysAccount.getSecretKey(),
|
|
@@ -359,19 +361,17 @@ export class ClientFlowsBenchmark {
|
|
|
359
361
|
'LPT',
|
|
360
362
|
'LPT',
|
|
361
363
|
18n,
|
|
362
|
-
)
|
|
363
|
-
|
|
364
|
-
|
|
364
|
+
).send({
|
|
365
|
+
from: this.adminAddress,
|
|
366
|
+
});
|
|
365
367
|
const { contract: amm, instance: ammInstance } = await AMMContract.deploy(
|
|
366
368
|
this.adminWallet,
|
|
367
369
|
this.bananaCoin.address,
|
|
368
370
|
this.candyBarCoin.address,
|
|
369
371
|
liquidityToken.address,
|
|
370
|
-
)
|
|
371
|
-
.send({ from: this.adminAddress })
|
|
372
|
-
.wait();
|
|
372
|
+
).send({ from: this.adminAddress });
|
|
373
373
|
this.logger.info(`AMM deployed at ${amm.address}`);
|
|
374
|
-
await liquidityToken.methods.set_minter(amm.address, true).send({ from: this.adminAddress })
|
|
374
|
+
await liquidityToken.methods.set_minter(amm.address, true).send({ from: this.adminAddress });
|
|
375
375
|
this.liquidityToken = liquidityToken;
|
|
376
376
|
this.liquidityTokenInstance = liquidityTokenInstance;
|
|
377
377
|
this.amm = amm;
|
|
@@ -387,7 +387,7 @@ export class ClientFlowsBenchmark {
|
|
|
387
387
|
// The private fee paying method assembled on the app side requires knowledge of the maximum
|
|
388
388
|
// fee the user is willing to pay
|
|
389
389
|
const maxFeesPerGas = (await this.aztecNode.getCurrentMinFees()).mul(1.5);
|
|
390
|
-
const gasSettings = GasSettings.
|
|
390
|
+
const gasSettings = GasSettings.fallback({ maxFeesPerGas });
|
|
391
391
|
return new PrivateFeePaymentMethod(this.bananaFPC.address, sender, wallet, gasSettings);
|
|
392
392
|
}
|
|
393
393
|
|
|
@@ -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[] {
|
|
@@ -7,14 +7,16 @@ import type { TxHash } from '@aztec/aztec.js/tx';
|
|
|
7
7
|
import type { CheatCodes } from '@aztec/aztec/testing';
|
|
8
8
|
import type { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
9
9
|
import { TokenBlacklistContract } from '@aztec/noir-contracts.js/TokenBlacklist';
|
|
10
|
+
import { GenericProxyContract } from '@aztec/noir-test-contracts.js/GenericProxy';
|
|
10
11
|
import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
|
|
11
12
|
import type { SequencerClient } from '@aztec/sequencer-client';
|
|
12
|
-
import type {
|
|
13
|
+
import type { AztecNodeDebug } from '@aztec/stdlib/interfaces/client';
|
|
13
14
|
|
|
14
15
|
import { jest } from '@jest/globals';
|
|
15
16
|
|
|
16
17
|
import { type EndToEndContext, deployAccounts, publicDeployAccounts, setup, teardown } from '../fixtures/setup.js';
|
|
17
18
|
import { TokenSimulator } from '../simulators/token_simulator.js';
|
|
19
|
+
import type { TestWallet } from '../test-wallet/test_wallet.js';
|
|
18
20
|
|
|
19
21
|
export class Role {
|
|
20
22
|
private isAdmin = false;
|
|
@@ -53,9 +55,10 @@ export class BlacklistTokenContractTest {
|
|
|
53
55
|
asset!: TokenBlacklistContract;
|
|
54
56
|
tokenSim!: TokenSimulator;
|
|
55
57
|
badAccount!: InvalidAccountContract;
|
|
58
|
+
authwitProxy!: GenericProxyContract;
|
|
56
59
|
cheatCodes!: CheatCodes;
|
|
57
60
|
sequencer!: SequencerClient;
|
|
58
|
-
aztecNode!: AztecNode;
|
|
61
|
+
aztecNode!: AztecNode & AztecNodeDebug;
|
|
59
62
|
|
|
60
63
|
adminAddress!: AztecAddress;
|
|
61
64
|
otherAddress!: AztecAddress;
|
|
@@ -66,11 +69,7 @@ export class BlacklistTokenContractTest {
|
|
|
66
69
|
}
|
|
67
70
|
|
|
68
71
|
async crossTimestampOfChange() {
|
|
69
|
-
await this.cheatCodes.warpL2TimeAtLeastBy(
|
|
70
|
-
this.sequencer,
|
|
71
|
-
this.aztecNode,
|
|
72
|
-
BlacklistTokenContractTest.CHANGE_ROLES_DELAY,
|
|
73
|
-
);
|
|
72
|
+
await this.cheatCodes.warpL2TimeAtLeastBy(this.aztecNode, BlacklistTokenContractTest.CHANGE_ROLES_DELAY);
|
|
74
73
|
}
|
|
75
74
|
|
|
76
75
|
/**
|
|
@@ -92,7 +91,7 @@ export class BlacklistTokenContractTest {
|
|
|
92
91
|
});
|
|
93
92
|
|
|
94
93
|
this.cheatCodes = this.context.cheatCodes;
|
|
95
|
-
this.aztecNode = this.context.aztecNodeService
|
|
94
|
+
this.aztecNode = this.context.aztecNodeService;
|
|
96
95
|
this.sequencer = this.context.sequencer!;
|
|
97
96
|
this.wallet = this.context.wallet;
|
|
98
97
|
this.adminAddress = deployedAccounts[0].address;
|
|
@@ -105,15 +104,26 @@ export class BlacklistTokenContractTest {
|
|
|
105
104
|
await publicDeployAccounts(this.wallet, [this.adminAddress, this.otherAddress, this.blacklistedAddress]);
|
|
106
105
|
|
|
107
106
|
this.logger.verbose(`Deploying TokenContract...`);
|
|
108
|
-
this.asset = await TokenBlacklistContract.deploy(this.wallet, this.adminAddress)
|
|
109
|
-
|
|
110
|
-
|
|
107
|
+
({ contract: this.asset } = await TokenBlacklistContract.deploy(this.wallet, this.adminAddress).send({
|
|
108
|
+
from: this.adminAddress,
|
|
109
|
+
}));
|
|
111
110
|
this.logger.verbose(`Token deployed to ${this.asset.address}`);
|
|
112
111
|
|
|
113
112
|
this.logger.verbose(`Deploying bad account...`);
|
|
114
|
-
this.badAccount = await InvalidAccountContract.deploy(this.wallet).send({
|
|
113
|
+
({ contract: this.badAccount } = await InvalidAccountContract.deploy(this.wallet).send({
|
|
114
|
+
from: this.adminAddress,
|
|
115
|
+
}));
|
|
115
116
|
this.logger.verbose(`Deployed to ${this.badAccount.address}.`);
|
|
116
117
|
|
|
118
|
+
// Deploy a proxy contract for "on behalf of other" tests. The note owner must be the tx sender
|
|
119
|
+
// (so their notes are in scope), but msg_sender in the target must differ from the note owner
|
|
120
|
+
// to trigger authwit validation. The proxy forwards calls so that msg_sender != tx sender.
|
|
121
|
+
this.logger.verbose(`Deploying generic proxy...`);
|
|
122
|
+
({ contract: this.authwitProxy } = await GenericProxyContract.deploy(this.wallet).send({
|
|
123
|
+
from: this.adminAddress,
|
|
124
|
+
}));
|
|
125
|
+
this.logger.verbose(`Deployed to ${this.authwitProxy.address}.`);
|
|
126
|
+
|
|
117
127
|
await this.crossTimestampOfChange();
|
|
118
128
|
|
|
119
129
|
this.tokenSim = new TokenSimulator(
|
|
@@ -124,9 +134,9 @@ export class BlacklistTokenContractTest {
|
|
|
124
134
|
[this.adminAddress, this.otherAddress, this.blacklistedAddress],
|
|
125
135
|
);
|
|
126
136
|
|
|
127
|
-
expect(
|
|
128
|
-
|
|
129
|
-
);
|
|
137
|
+
expect(
|
|
138
|
+
(await this.asset.methods.get_roles(this.adminAddress).simulate({ from: this.adminAddress })).result,
|
|
139
|
+
).toEqual(new Role().withAdmin().toNoirStruct());
|
|
130
140
|
}
|
|
131
141
|
|
|
132
142
|
async setup() {
|
|
@@ -171,50 +181,47 @@ export class BlacklistTokenContractTest {
|
|
|
171
181
|
const adminMinterRole = new Role().withAdmin().withMinter();
|
|
172
182
|
await this.asset.methods
|
|
173
183
|
.update_roles(this.adminAddress, adminMinterRole.toNoirStruct())
|
|
174
|
-
.send({ from: this.adminAddress })
|
|
175
|
-
.wait();
|
|
184
|
+
.send({ from: this.adminAddress });
|
|
176
185
|
|
|
177
186
|
const blacklistRole = new Role().withBlacklisted();
|
|
178
187
|
await this.asset.methods
|
|
179
188
|
.update_roles(this.blacklistedAddress, blacklistRole.toNoirStruct())
|
|
180
|
-
.send({ from: this.adminAddress })
|
|
181
|
-
.wait();
|
|
189
|
+
.send({ from: this.adminAddress });
|
|
182
190
|
|
|
183
191
|
await this.crossTimestampOfChange();
|
|
184
192
|
|
|
185
|
-
expect(
|
|
186
|
-
|
|
187
|
-
);
|
|
193
|
+
expect(
|
|
194
|
+
(await this.asset.methods.get_roles(this.adminAddress).simulate({ from: this.adminAddress })).result,
|
|
195
|
+
).toEqual(adminMinterRole.toNoirStruct());
|
|
188
196
|
|
|
189
197
|
this.logger.verbose(`Minting ${amount} publicly...`);
|
|
190
|
-
await asset.methods.mint_public(this.adminAddress, amount).send({ from: this.adminAddress })
|
|
198
|
+
await asset.methods.mint_public(this.adminAddress, amount).send({ from: this.adminAddress });
|
|
191
199
|
|
|
192
200
|
this.logger.verbose(`Minting ${amount} privately...`);
|
|
193
201
|
const secret = Fr.random();
|
|
194
202
|
const secretHash = await computeSecretHash(secret);
|
|
195
|
-
const receipt = await asset.methods.mint_private(amount, secretHash).send({ from: this.adminAddress })
|
|
203
|
+
const { receipt } = await asset.methods.mint_private(amount, secretHash).send({ from: this.adminAddress });
|
|
196
204
|
|
|
197
205
|
await this.addPendingShieldNoteToPXE(asset, this.adminAddress, amount, secretHash, receipt.txHash);
|
|
198
|
-
|
|
199
|
-
await txClaim.wait();
|
|
206
|
+
await asset.methods.redeem_shield(this.adminAddress, amount, secret).send({ from: this.adminAddress });
|
|
200
207
|
this.logger.verbose(`Minting complete.`);
|
|
201
208
|
|
|
202
209
|
tokenSim.mintPublic(this.adminAddress, amount);
|
|
203
210
|
|
|
204
|
-
const publicBalance = await asset.methods
|
|
211
|
+
const { result: publicBalance } = await asset.methods
|
|
205
212
|
.balance_of_public(this.adminAddress)
|
|
206
213
|
.simulate({ from: this.adminAddress });
|
|
207
214
|
this.logger.verbose(`Public balance of wallet 0: ${publicBalance}`);
|
|
208
215
|
expect(publicBalance).toEqual(this.tokenSim.balanceOfPublic(this.adminAddress));
|
|
209
216
|
|
|
210
217
|
tokenSim.mintPrivate(this.adminAddress, amount);
|
|
211
|
-
const privateBalance = await asset.methods
|
|
218
|
+
const { result: privateBalance } = await asset.methods
|
|
212
219
|
.balance_of_private(this.adminAddress)
|
|
213
220
|
.simulate({ from: this.adminAddress });
|
|
214
221
|
this.logger.verbose(`Private balance of wallet 0: ${privateBalance}`);
|
|
215
222
|
expect(privateBalance).toEqual(tokenSim.balanceOfPrivate(this.adminAddress));
|
|
216
223
|
|
|
217
|
-
const totalSupply = await asset.methods.total_supply().simulate({ from: this.adminAddress });
|
|
224
|
+
const { result: totalSupply } = await asset.methods.total_supply().simulate({ from: this.adminAddress });
|
|
218
225
|
this.logger.verbose(`Total supply: ${totalSupply}`);
|
|
219
226
|
expect(totalSupply).toEqual(tokenSim.totalSupply);
|
|
220
227
|
}
|
|
@@ -13,13 +13,12 @@ import type {
|
|
|
13
13
|
} from '@aztec/ethereum/deploy-aztec-l1-contracts';
|
|
14
14
|
import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
|
|
15
15
|
import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
|
|
16
|
-
import {
|
|
16
|
+
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
17
17
|
import { sleep } from '@aztec/foundation/sleep';
|
|
18
18
|
import { TestERC20Abi, TestERC20Bytecode } from '@aztec/l1-artifacts';
|
|
19
19
|
import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
20
20
|
import { TokenBridgeContract } from '@aztec/noir-contracts.js/TokenBridge';
|
|
21
21
|
import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
22
|
-
import type { TestWallet } from '@aztec/test-wallet/server';
|
|
23
22
|
|
|
24
23
|
import { MNEMONIC } from '../fixtures/fixtures.js';
|
|
25
24
|
import {
|
|
@@ -31,6 +30,7 @@ import {
|
|
|
31
30
|
teardown,
|
|
32
31
|
} from '../fixtures/setup.js';
|
|
33
32
|
import { CrossChainTestHarness } from '../shared/cross_chain_test_harness.js';
|
|
33
|
+
import type { TestWallet } from '../test-wallet/test_wallet.js';
|
|
34
34
|
|
|
35
35
|
export class CrossChainMessagingTest {
|
|
36
36
|
private requireEpochProven: boolean;
|
|
@@ -86,9 +86,8 @@ export class CrossChainMessagingTest {
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
async advanceToEpochProven(l2TxReceipt: TxReceipt): Promise<EpochNumber> {
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
);
|
|
89
|
+
const block = await this.aztecNode.getBlock(l2TxReceipt.blockNumber!);
|
|
90
|
+
const epoch = await this.rollup.getEpochNumberForCheckpoint(block!.checkpointNumber);
|
|
92
91
|
// Warp to the next epoch.
|
|
93
92
|
await this.cheatCodes.rollup.advanceToEpoch(EpochNumber(epoch + 1));
|
|
94
93
|
// Wait for the tx to be proven.
|
|
@@ -110,16 +109,16 @@ export class CrossChainMessagingTest {
|
|
|
110
109
|
|
|
111
110
|
async applyBaseSetup() {
|
|
112
111
|
// Set up base context fields
|
|
113
|
-
this.aztecNode = this.context.aztecNodeService
|
|
112
|
+
this.aztecNode = this.context.aztecNodeService;
|
|
114
113
|
this.wallet = this.context.wallet;
|
|
115
114
|
this.aztecNodeConfig = this.context.config;
|
|
116
115
|
this.cheatCodes = this.context.cheatCodes;
|
|
117
116
|
this.deployL1ContractsValues = this.context.deployL1ContractsValues;
|
|
118
|
-
this.aztecNodeAdmin = this.context.aztecNodeService
|
|
117
|
+
this.aztecNodeAdmin = this.context.aztecNodeService;
|
|
119
118
|
|
|
120
119
|
if (this.requireEpochProven) {
|
|
121
120
|
// Turn off the watcher to prevent it from keep marking blocks as proven.
|
|
122
|
-
this.context.watcher
|
|
121
|
+
this.context.watcher.setIsMarkingAsProven(false);
|
|
123
122
|
}
|
|
124
123
|
|
|
125
124
|
// Deploy 3 accounts
|
|
@@ -8,9 +8,9 @@ import type { AztecNode } from '@aztec/aztec.js/node';
|
|
|
8
8
|
import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
9
9
|
import type { StatefulTestContract } from '@aztec/noir-test-contracts.js/StatefulTest';
|
|
10
10
|
import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
11
|
-
import type { TestWallet } from '@aztec/test-wallet/server';
|
|
12
11
|
|
|
13
12
|
import { type EndToEndContext, deployAccounts, setup, teardown } from '../fixtures/setup.js';
|
|
13
|
+
import type { TestWallet } from '../test-wallet/test_wallet.js';
|
|
14
14
|
|
|
15
15
|
export class DeployTest {
|
|
16
16
|
public context!: EndToEndContext;
|
|
@@ -30,9 +30,9 @@ export class DeployTest {
|
|
|
30
30
|
fundSponsoredFPC: true,
|
|
31
31
|
skipAccountDeployment: true,
|
|
32
32
|
});
|
|
33
|
-
this.aztecNode = this.context.aztecNodeService
|
|
33
|
+
this.aztecNode = this.context.aztecNodeService;
|
|
34
34
|
this.wallet = this.context.wallet;
|
|
35
|
-
this.aztecNodeAdmin = this.context.aztecNodeService
|
|
35
|
+
this.aztecNodeAdmin = this.context.aztecNodeService;
|
|
36
36
|
await this.applyInitialAccount();
|
|
37
37
|
return this;
|
|
38
38
|
}
|