@aztec/end-to-end 0.0.0-test.1 → 0.0.1-fake-c83136db25
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 +61 -0
- package/dest/bench/client_flows/benchmark.d.ts.map +1 -0
- package/dest/bench/client_flows/benchmark.js +261 -0
- package/dest/bench/client_flows/client_flows_benchmark.d.ts +73 -0
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -0
- package/dest/bench/client_flows/client_flows_benchmark.js +311 -0
- package/dest/bench/client_flows/config.d.ts +14 -0
- package/dest/bench/client_flows/config.d.ts.map +1 -0
- package/dest/bench/client_flows/config.js +106 -0
- package/dest/bench/client_flows/data_extractor.d.ts +2 -0
- package/dest/bench/client_flows/data_extractor.d.ts.map +1 -0
- package/dest/bench/client_flows/data_extractor.js +99 -0
- package/dest/bench/utils.d.ts +10 -36
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +26 -66
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +20 -12
- 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 +85 -57
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +18 -24
- 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 +48 -69
- package/dest/e2e_deploy_contract/deploy_test.d.ts +14 -6
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
- package/dest/e2e_deploy_contract/deploy_test.js +13 -19
- package/dest/e2e_epochs/epochs_test.d.ts +58 -17
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +224 -43
- package/dest/e2e_fees/bridging_race.notest.d.ts +2 -0
- package/dest/e2e_fees/bridging_race.notest.d.ts.map +1 -0
- package/dest/e2e_fees/bridging_race.notest.js +63 -0
- package/dest/e2e_fees/fees_test.d.ts +20 -9
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +98 -107
- package/dest/e2e_l1_publisher/write_json.d.ts +10 -0
- package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -0
- package/dest/e2e_l1_publisher/write_json.js +57 -0
- package/dest/e2e_multi_validator/utils.d.ts +12 -0
- package/dest/e2e_multi_validator/utils.d.ts.map +1 -0
- package/dest/e2e_multi_validator/utils.js +214 -0
- package/dest/e2e_nested_contract/nested_contract_test.d.ts +9 -6
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +22 -19
- package/dest/e2e_p2p/inactivity_slash_test.d.ts +31 -0
- package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -0
- package/dest/e2e_p2p/inactivity_slash_test.js +135 -0
- package/dest/e2e_p2p/p2p_network.d.ts +69 -22
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +180 -129
- package/dest/e2e_p2p/shared.d.ts +41 -5
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +163 -19
- package/dest/e2e_token_contract/token_contract_test.d.ts +11 -5
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +50 -26
- package/dest/{e2e_prover → fixtures}/e2e_prover_test.d.ts +14 -9
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -0
- package/dest/{e2e_prover → fixtures}/e2e_prover_test.js +95 -100
- package/dest/fixtures/fixtures.d.ts +5 -6
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +4 -3
- package/dest/fixtures/get_acvm_config.d.ts +1 -1
- package/dest/fixtures/get_acvm_config.d.ts.map +1 -1
- package/dest/fixtures/get_acvm_config.js +2 -14
- 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 +10 -17
- package/dest/fixtures/l1_to_l2_messaging.d.ts +8 -5
- package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
- package/dest/fixtures/l1_to_l2_messaging.js +44 -18
- package/dest/fixtures/setup_l1_contracts.d.ts +3 -3
- package/dest/fixtures/setup_l1_contracts.d.ts.map +1 -1
- package/dest/fixtures/setup_l1_contracts.js +4 -4
- package/dest/fixtures/setup_p2p_test.d.ts +14 -13
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +73 -21
- package/dest/fixtures/snapshot_manager.d.ts +15 -7
- package/dest/fixtures/snapshot_manager.d.ts.map +1 -1
- package/dest/fixtures/snapshot_manager.js +147 -121
- 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 +23 -10
- package/dest/fixtures/utils.d.ts +76 -37
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +464 -368
- package/dest/fixtures/web3signer.d.ts +5 -0
- package/dest/fixtures/web3signer.d.ts.map +1 -0
- package/dest/fixtures/web3signer.js +53 -0
- package/dest/quality_of_service/alert_checker.d.ts +1 -1
- package/dest/quality_of_service/alert_checker.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.d.ts +41 -25
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +104 -50
- package/dest/shared/gas_portal_test_harness.d.ts +32 -24
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.js +50 -29
- package/dest/shared/jest_setup.js +1 -1
- package/dest/shared/submit-transactions.d.ts +5 -3
- package/dest/shared/submit-transactions.d.ts.map +1 -1
- package/dest/shared/submit-transactions.js +8 -7
- package/dest/shared/uniswap_l1_l2.d.ts +13 -11
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +138 -108
- package/dest/simulators/lending_simulator.d.ts +6 -6
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +13 -16
- package/dest/simulators/token_simulator.d.ts +5 -2
- package/dest/simulators/token_simulator.d.ts.map +1 -1
- package/dest/simulators/token_simulator.js +16 -13
- package/dest/spartan/setup_test_wallets.d.ts +23 -10
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +167 -58
- package/dest/spartan/utils.d.ts +100 -303
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +407 -130
- package/package.json +61 -56
- package/src/bench/client_flows/benchmark.ts +341 -0
- package/src/bench/client_flows/client_flows_benchmark.ts +402 -0
- package/src/bench/client_flows/config.ts +61 -0
- package/src/bench/client_flows/data_extractor.ts +111 -0
- package/src/bench/utils.ts +22 -76
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +80 -77
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +63 -105
- package/src/e2e_deploy_contract/deploy_test.ts +23 -38
- package/src/e2e_epochs/epochs_test.ts +274 -54
- package/src/e2e_fees/bridging_race.notest.ts +80 -0
- package/src/e2e_fees/fees_test.ts +137 -136
- package/src/e2e_l1_publisher/write_json.ts +76 -0
- package/src/e2e_multi_validator/utils.ts +258 -0
- package/src/e2e_nested_contract/nested_contract_test.ts +27 -18
- package/src/e2e_p2p/inactivity_slash_test.ts +178 -0
- package/src/e2e_p2p/p2p_network.ts +272 -166
- package/src/e2e_p2p/shared.ts +244 -29
- package/src/e2e_token_contract/token_contract_test.ts +43 -39
- package/src/fixtures/dumps/epoch_proof_result.json +1 -1
- package/src/{e2e_prover → fixtures}/e2e_prover_test.ts +101 -145
- package/src/fixtures/fixtures.ts +4 -3
- package/src/fixtures/get_acvm_config.ts +3 -11
- package/src/fixtures/get_bb_config.ts +18 -13
- package/src/fixtures/l1_to_l2_messaging.ts +53 -23
- package/src/fixtures/setup_l1_contracts.ts +6 -7
- package/src/fixtures/setup_p2p_test.ts +112 -38
- package/src/fixtures/snapshot_manager.ts +187 -139
- package/src/fixtures/token_utils.ts +29 -12
- package/src/fixtures/utils.ts +552 -425
- package/src/fixtures/web3signer.ts +63 -0
- package/src/guides/up_quick_start.sh +6 -14
- package/src/quality_of_service/alert_checker.ts +1 -1
- package/src/shared/cross_chain_test_harness.ts +108 -79
- package/src/shared/gas_portal_test_harness.ts +58 -49
- package/src/shared/jest_setup.ts +1 -1
- package/src/shared/submit-transactions.ts +12 -8
- package/src/shared/uniswap_l1_l2.ts +173 -176
- package/src/simulators/lending_simulator.ts +12 -15
- package/src/simulators/token_simulator.ts +21 -13
- package/src/spartan/DEVELOP.md +121 -0
- package/src/spartan/setup_test_wallets.ts +215 -93
- package/src/spartan/utils.ts +458 -130
- package/dest/e2e_prover/e2e_prover_test.d.ts.map +0 -1
- package/dest/sample-dapp/connect.js +0 -12
- package/dest/sample-dapp/contracts.js +0 -10
- package/dest/sample-dapp/deploy.js +0 -35
- package/dest/sample-dapp/index.js +0 -98
- package/src/sample-dapp/connect.mjs +0 -16
- package/src/sample-dapp/contracts.mjs +0 -14
- package/src/sample-dapp/deploy.mjs +0 -40
- package/src/sample-dapp/index.mjs +0 -128
|
@@ -1,17 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
import { BatchCall } from '@aztec/aztec.js/contracts';
|
|
2
2
|
import chunk from 'lodash.chunk';
|
|
3
3
|
export class TokenSimulator {
|
|
4
4
|
token;
|
|
5
5
|
defaultWallet;
|
|
6
|
+
defaultAddress;
|
|
6
7
|
logger;
|
|
7
8
|
accounts;
|
|
8
9
|
balancesPrivate;
|
|
9
10
|
balancePublic;
|
|
10
11
|
totalSupply;
|
|
11
12
|
lookupProvider;
|
|
12
|
-
constructor(token, defaultWallet, logger, accounts){
|
|
13
|
+
constructor(token, defaultWallet, defaultAddress, logger, accounts){
|
|
13
14
|
this.token = token;
|
|
14
15
|
this.defaultWallet = defaultWallet;
|
|
16
|
+
this.defaultAddress = defaultAddress;
|
|
15
17
|
this.logger = logger;
|
|
16
18
|
this.accounts = accounts;
|
|
17
19
|
this.balancesPrivate = new Map();
|
|
@@ -83,12 +85,12 @@ export class TokenSimulator {
|
|
|
83
85
|
async checkPublic() {
|
|
84
86
|
// public calls
|
|
85
87
|
const calls = [
|
|
86
|
-
|
|
88
|
+
this.token.methods.total_supply(),
|
|
89
|
+
...this.accounts.map((address)=>this.token.methods.balance_of_public(address))
|
|
87
90
|
];
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
const results = (await Promise.all(chunk(calls, 4).map((batch)=>new BatchCall(this.defaultWallet, batch).simulate()))).flat();
|
|
91
|
+
const results = (await Promise.all(chunk(calls, 5).map((batch)=>new BatchCall(this.defaultWallet, batch).simulate({
|
|
92
|
+
from: this.defaultAddress
|
|
93
|
+
})))).flat();
|
|
92
94
|
expect(results[0]).toEqual(this.totalSupply);
|
|
93
95
|
// Check that all our balances match
|
|
94
96
|
for(let i = 0; i < this.accounts.length; i++){
|
|
@@ -106,11 +108,10 @@ export class TokenSimulator {
|
|
|
106
108
|
defaultLookups.push(address);
|
|
107
109
|
}
|
|
108
110
|
}
|
|
109
|
-
const defaultCalls =
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
const results = (await Promise.all(chunk(defaultCalls, 4).map((batch)=>new BatchCall(this.defaultWallet, batch).simulate()))).flat();
|
|
111
|
+
const defaultCalls = defaultLookups.map((address)=>this.token.methods.balance_of_private(address));
|
|
112
|
+
const results = (await Promise.all(chunk(defaultCalls, 4).map((batch)=>new BatchCall(this.defaultWallet, batch).simulate({
|
|
113
|
+
from: this.defaultAddress
|
|
114
|
+
})))).flat();
|
|
114
115
|
for(let i = 0; i < defaultLookups.length; i++){
|
|
115
116
|
expect(results[i]).toEqual(this.balanceOfPrivate(defaultLookups[i]));
|
|
116
117
|
}
|
|
@@ -121,7 +122,9 @@ export class TokenSimulator {
|
|
|
121
122
|
const asset = wallet ? this.token.withWallet(wallet) : this.token;
|
|
122
123
|
const actualPrivateBalance = await asset.methods.balance_of_private({
|
|
123
124
|
address
|
|
124
|
-
}).simulate(
|
|
125
|
+
}).simulate({
|
|
126
|
+
from: this.defaultAddress
|
|
127
|
+
});
|
|
125
128
|
expect(actualPrivateBalance).toEqual(this.balanceOfPrivate(address));
|
|
126
129
|
}
|
|
127
130
|
}
|
|
@@ -1,20 +1,33 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
|
+
import { type FeePaymentMethod } from '@aztec/aztec.js/fee';
|
|
3
|
+
import { type AztecNode } from '@aztec/aztec.js/node';
|
|
2
4
|
import type { Logger } from '@aztec/foundation/log';
|
|
3
5
|
import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
import { TestWallet } from '@aztec/test-wallet/server';
|
|
7
|
+
export interface TestAccounts {
|
|
8
|
+
aztecNode: AztecNode;
|
|
9
|
+
wallet: TestWallet;
|
|
10
|
+
accounts: AztecAddress[];
|
|
11
|
+
tokenContract: TokenContract;
|
|
12
|
+
tokenAdminAddress: AztecAddress;
|
|
8
13
|
tokenName: string;
|
|
9
|
-
|
|
14
|
+
recipientAddress: AztecAddress;
|
|
10
15
|
tokenAddress: AztecAddress;
|
|
11
16
|
}
|
|
12
|
-
export declare function
|
|
13
|
-
export declare function
|
|
14
|
-
export declare function
|
|
15
|
-
|
|
17
|
+
export declare function setupTestAccountsWithTokens(nodeUrl: string, mintAmount: bigint, logger: Logger): Promise<TestAccounts>;
|
|
18
|
+
export declare function deploySponsoredTestAccounts(wallet: TestWallet, aztecNode: AztecNode, mintAmount: bigint, logger: Logger, numberOfFundedWallets?: number): Promise<TestAccounts>;
|
|
19
|
+
export declare function deployTestAccountsWithTokens(nodeUrl: string, l1RpcUrls: string[], mnemonicOrPrivateKey: string, mintAmount: bigint, logger: Logger, numberOfFundedWallets?: number): Promise<TestAccounts>;
|
|
20
|
+
export declare function performTransfers({ wallet, testAccounts, rounds, transferAmount, logger, feePaymentMethod, }: {
|
|
21
|
+
wallet: TestWallet;
|
|
22
|
+
testAccounts: TestAccounts;
|
|
16
23
|
rounds: number;
|
|
17
24
|
transferAmount: bigint;
|
|
18
25
|
logger: Logger;
|
|
26
|
+
feePaymentMethod?: FeePaymentMethod;
|
|
19
27
|
}): Promise<void>;
|
|
28
|
+
export declare function createWalletAndAztecNodeClient(nodeUrl: string, proverEnabled: boolean, logger: Logger): Promise<{
|
|
29
|
+
wallet: TestWallet;
|
|
30
|
+
aztecNode: AztecNode;
|
|
31
|
+
cleanup: () => Promise<void>;
|
|
32
|
+
}>;
|
|
20
33
|
//# sourceMappingURL=setup_test_wallets.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup_test_wallets.d.ts","sourceRoot":"","sources":["../../src/spartan/setup_test_wallets.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setup_test_wallets.d.ts","sourceRoot":"","sources":["../../src/spartan/setup_test_wallets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EAAE,KAAK,gBAAgB,EAA6B,MAAM,qBAAqB,CAAC;AAEvF,OAAO,EAAE,KAAK,SAAS,EAAyB,MAAM,sBAAsB,CAAC;AAG7E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,EAAE,UAAU,EAA4D,MAAM,2BAA2B,CAAC;AAMjH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,aAAa,EAAE,aAAa,CAAC;IAC7B,iBAAiB,EAAE,YAAY,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,YAAY,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;CAC5B;AAMD,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC,CAyBvB;AAED,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,qBAAqB,SAAI,GACxB,OAAO,CAAC,YAAY,CAAC,CAuCvB;AAED,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EAAE,EACnB,oBAAoB,EAAE,MAAM,EAC5B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,qBAAqB,SAAI,GACxB,OAAO,CAAC,YAAY,CAAC,CA+CvB;AA6ED,wBAAsB,gBAAgB,CAAC,EACrC,MAAM,EACN,YAAY,EACZ,MAAM,EACN,cAAc,EACd,MAAM,EACN,gBAAgB,GACjB,EAAE;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,iBAqBA;AAED,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CAqBrF"}
|
|
@@ -1,99 +1,208 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { generateSchnorrAccounts } from '@aztec/accounts/testing';
|
|
2
|
+
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
3
|
+
import { L1FeeJuicePortalManager } from '@aztec/aztec.js/ethereum';
|
|
4
|
+
import { FeeJuicePaymentMethodWithClaim } from '@aztec/aztec.js/fee';
|
|
5
|
+
import { SponsoredFeePaymentMethod } from '@aztec/aztec.js/fee';
|
|
6
|
+
import { Fr } from '@aztec/aztec.js/fields';
|
|
7
|
+
import { createAztecNodeClient } from '@aztec/aztec.js/node';
|
|
8
|
+
import { createEthereumChain, createExtendedL1Client } from '@aztec/ethereum';
|
|
9
|
+
import { retryUntil } from '@aztec/foundation/retry';
|
|
5
10
|
import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
11
|
+
import { TestWallet, proveInteraction, registerInitialSandboxAccountsInWallet } from '@aztec/test-wallet/server';
|
|
12
|
+
import { getACVMConfig } from '../fixtures/get_acvm_config.js';
|
|
13
|
+
import { getBBConfig } from '../fixtures/get_bb_config.js';
|
|
14
|
+
import { getSponsoredFPCAddress, registerSponsoredFPC } from '../fixtures/utils.js';
|
|
6
15
|
const TOKEN_NAME = 'USDC';
|
|
7
16
|
const TOKEN_SYMBOL = 'USD';
|
|
8
17
|
const TOKEN_DECIMALS = 18n;
|
|
9
|
-
export async function
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
18
|
+
export async function setupTestAccountsWithTokens(nodeUrl, mintAmount, logger) {
|
|
19
|
+
const ACCOUNT_COUNT = 1; // TODO fix this to allow for 16 wallets again
|
|
20
|
+
const aztecNode = createAztecNodeClient(nodeUrl);
|
|
21
|
+
const wallet = await TestWallet.create(aztecNode);
|
|
22
|
+
const [recipientAccount, ...accounts] = (await registerInitialSandboxAccountsInWallet(wallet)).slice(0, ACCOUNT_COUNT + 1);
|
|
23
|
+
const tokenAdmin = accounts[0];
|
|
24
|
+
const tokenAddress = await deployTokenAndMint(wallet, accounts, tokenAdmin, mintAmount, undefined, logger);
|
|
25
|
+
const tokenContract = await TokenContract.at(tokenAddress, wallet);
|
|
16
26
|
return {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
27
|
+
aztecNode,
|
|
28
|
+
accounts,
|
|
29
|
+
wallet,
|
|
30
|
+
tokenAdminAddress: tokenAdmin,
|
|
20
31
|
tokenName: TOKEN_NAME,
|
|
21
32
|
tokenAddress,
|
|
22
|
-
|
|
33
|
+
tokenContract,
|
|
34
|
+
recipientAddress: recipientAccount
|
|
23
35
|
};
|
|
24
36
|
}
|
|
25
|
-
export async function
|
|
26
|
-
const pxe = await createCompatibleClient(pxeUrl, logger);
|
|
27
|
-
const node = createAztecNodeClient(nodeUrl);
|
|
37
|
+
export async function deploySponsoredTestAccounts(wallet, aztecNode, mintAmount, logger, numberOfFundedWallets = 1) {
|
|
28
38
|
const [recipient, ...funded] = await generateSchnorrAccounts(numberOfFundedWallets + 1);
|
|
29
|
-
const
|
|
30
|
-
const fundedAccounts = await Promise.all(funded.map((a)=>
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
await
|
|
34
|
-
await
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
+
const recipientAccount = await wallet.createSchnorrAccount(recipient.secret, recipient.salt);
|
|
40
|
+
const fundedAccounts = await Promise.all(funded.map((a)=>wallet.createSchnorrAccount(a.secret, a.salt)));
|
|
41
|
+
await registerSponsoredFPC(wallet);
|
|
42
|
+
const paymentMethod = new SponsoredFeePaymentMethod(await getSponsoredFPCAddress());
|
|
43
|
+
const recipientDeployMethod = await recipientAccount.getDeployMethod();
|
|
44
|
+
await recipientDeployMethod.send({
|
|
45
|
+
from: AztecAddress.ZERO,
|
|
46
|
+
fee: {
|
|
47
|
+
paymentMethod
|
|
48
|
+
}
|
|
49
|
+
}).wait({
|
|
50
|
+
timeout: 2400
|
|
51
|
+
});
|
|
52
|
+
await Promise.all(fundedAccounts.map(async (a)=>{
|
|
53
|
+
const deployMethod = await a.getDeployMethod();
|
|
54
|
+
await deployMethod.send({
|
|
55
|
+
from: AztecAddress.ZERO,
|
|
56
|
+
fee: {
|
|
57
|
+
paymentMethod
|
|
58
|
+
}
|
|
59
|
+
}).wait({
|
|
60
|
+
timeout: 2400
|
|
61
|
+
}); // increase timeout on purpose in order to account for two empty epochs
|
|
62
|
+
logger.info(`Account deployed at ${a.address}`);
|
|
63
|
+
}));
|
|
64
|
+
const tokenAdmin = fundedAccounts[0];
|
|
65
|
+
const tokenAddress = await deployTokenAndMint(wallet, fundedAccounts.map((acc)=>acc.address), tokenAdmin.address, mintAmount, new SponsoredFeePaymentMethod(await getSponsoredFPCAddress()), logger);
|
|
66
|
+
const tokenContract = await TokenContract.at(tokenAddress, wallet);
|
|
67
|
+
return {
|
|
68
|
+
aztecNode,
|
|
69
|
+
wallet,
|
|
70
|
+
accounts: fundedAccounts.map((acc)=>acc.address),
|
|
71
|
+
tokenAdminAddress: tokenAdmin.address,
|
|
72
|
+
tokenName: TOKEN_NAME,
|
|
73
|
+
tokenAddress,
|
|
74
|
+
tokenContract,
|
|
75
|
+
recipientAddress: recipientAccount.address
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
export async function deployTestAccountsWithTokens(nodeUrl, l1RpcUrls, mnemonicOrPrivateKey, mintAmount, logger, numberOfFundedWallets = 1) {
|
|
79
|
+
const aztecNode = createAztecNodeClient(nodeUrl);
|
|
80
|
+
const wallet = await TestWallet.create(aztecNode);
|
|
81
|
+
const [recipient, ...funded] = await generateSchnorrAccounts(numberOfFundedWallets + 1);
|
|
82
|
+
const recipientAccount = await wallet.createSchnorrAccount(recipient.secret, recipient.salt);
|
|
83
|
+
const fundedAccounts = await Promise.all(funded.map((a)=>wallet.createSchnorrAccount(a.secret, a.salt)));
|
|
84
|
+
const claims = await Promise.all(fundedAccounts.map((a)=>bridgeL1FeeJuice(l1RpcUrls, mnemonicOrPrivateKey, aztecNode, a.address, undefined, logger)));
|
|
85
|
+
// Progress by 3 L2 blocks so that the l1ToL2Message added above will be available to use on L2.
|
|
86
|
+
await advanceL2Block(aztecNode);
|
|
87
|
+
await advanceL2Block(aztecNode);
|
|
88
|
+
await advanceL2Block(aztecNode);
|
|
89
|
+
await Promise.all(fundedAccounts.map(async (a, i)=>{
|
|
90
|
+
const paymentMethod = new FeeJuicePaymentMethodWithClaim(a.address, claims[i]);
|
|
91
|
+
const deployMethod = await a.getDeployMethod();
|
|
92
|
+
await deployMethod.send({
|
|
93
|
+
from: AztecAddress.ZERO,
|
|
39
94
|
fee: {
|
|
40
95
|
paymentMethod
|
|
41
96
|
}
|
|
42
97
|
}).wait();
|
|
43
|
-
logger.info(`Account deployed at ${a.
|
|
44
|
-
return wallet;
|
|
98
|
+
logger.info(`Account deployed at ${a.address}`);
|
|
45
99
|
}));
|
|
46
|
-
const tokenAdmin =
|
|
47
|
-
const tokenAddress = await deployTokenAndMint(
|
|
48
|
-
const
|
|
100
|
+
const tokenAdmin = fundedAccounts[0];
|
|
101
|
+
const tokenAddress = await deployTokenAndMint(wallet, fundedAccounts.map((acc)=>acc.address), tokenAdmin.address, mintAmount, undefined, logger);
|
|
102
|
+
const tokenContract = await TokenContract.at(tokenAddress, wallet);
|
|
49
103
|
return {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
104
|
+
aztecNode,
|
|
105
|
+
wallet,
|
|
106
|
+
accounts: fundedAccounts.map((acc)=>acc.address),
|
|
107
|
+
tokenAdminAddress: tokenAdmin.address,
|
|
53
108
|
tokenName: TOKEN_NAME,
|
|
54
109
|
tokenAddress,
|
|
55
|
-
|
|
110
|
+
tokenContract,
|
|
111
|
+
recipientAddress: recipientAccount.address
|
|
56
112
|
};
|
|
57
113
|
}
|
|
58
|
-
async function bridgeL1FeeJuice(
|
|
59
|
-
const { l1ChainId } = await
|
|
60
|
-
const chain = createEthereumChain(
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
const { publicClient, walletClient } = createL1Clients(chain.rpcUrls, mnemonicOrPrivateKey, chain.chainInfo);
|
|
64
|
-
const portal = await L1FeeJuicePortalManager.new(pxe, publicClient, walletClient, log);
|
|
114
|
+
async function bridgeL1FeeJuice(l1RpcUrls, mnemonicOrPrivateKey, aztecNode, recipient, amount, log) {
|
|
115
|
+
const { l1ChainId } = await aztecNode.getNodeInfo();
|
|
116
|
+
const chain = createEthereumChain(l1RpcUrls, l1ChainId);
|
|
117
|
+
const l1Client = createExtendedL1Client(chain.rpcUrls, mnemonicOrPrivateKey, chain.chainInfo);
|
|
118
|
+
const portal = await L1FeeJuicePortalManager.new(aztecNode, l1Client, log);
|
|
65
119
|
const claim = await portal.bridgeTokensPublic(recipient, amount, true);
|
|
66
|
-
const isSynced = async ()=>await
|
|
120
|
+
const isSynced = async ()=>await aztecNode.getL1ToL2MessageBlock(Fr.fromHexString(claim.messageHash)) !== undefined;
|
|
67
121
|
await retryUntil(isSynced, `message ${claim.messageHash} sync`, 24, 0.5);
|
|
68
122
|
log.info(`Created a claim for ${amount} L1 fee juice to ${recipient}.`, claim);
|
|
69
123
|
return claim;
|
|
70
124
|
}
|
|
71
|
-
async function advanceL2Block(
|
|
72
|
-
const initialBlockNumber = await
|
|
73
|
-
|
|
74
|
-
|
|
125
|
+
async function advanceL2Block(aztecNode, nodeAdmin) {
|
|
126
|
+
const initialBlockNumber = await aztecNode.getBlockNumber();
|
|
127
|
+
let minTxsPerBlock = undefined;
|
|
128
|
+
if (nodeAdmin) {
|
|
129
|
+
({ minTxsPerBlock } = await nodeAdmin.getConfig());
|
|
130
|
+
await nodeAdmin.setConfig({
|
|
131
|
+
minTxsPerBlock: 0
|
|
132
|
+
}); // Set to 0 to ensure we can advance the block
|
|
133
|
+
}
|
|
134
|
+
await retryUntil(async ()=>await aztecNode.getBlockNumber() >= initialBlockNumber + 1);
|
|
135
|
+
if (nodeAdmin && minTxsPerBlock !== undefined) {
|
|
136
|
+
await nodeAdmin.setConfig({
|
|
137
|
+
minTxsPerBlock
|
|
138
|
+
});
|
|
139
|
+
}
|
|
75
140
|
}
|
|
76
|
-
async function deployTokenAndMint(
|
|
141
|
+
async function deployTokenAndMint(wallet, accounts, admin, mintAmount, paymentMethod, logger) {
|
|
77
142
|
logger.verbose(`Deploying TokenContract...`);
|
|
78
|
-
const tokenContract = await TokenContract.deploy(
|
|
143
|
+
const tokenContract = await TokenContract.deploy(wallet, admin, TOKEN_NAME, TOKEN_SYMBOL, TOKEN_DECIMALS).send({
|
|
144
|
+
from: admin,
|
|
145
|
+
fee: {
|
|
146
|
+
paymentMethod
|
|
147
|
+
}
|
|
148
|
+
}).deployed({
|
|
79
149
|
timeout: 600
|
|
80
150
|
});
|
|
81
151
|
const tokenAddress = tokenContract.address;
|
|
82
|
-
logger.verbose(`Minting ${mintAmount} public assets to the ${
|
|
83
|
-
await Promise.all(
|
|
152
|
+
logger.verbose(`Minting ${mintAmount} public assets to the ${accounts.length} accounts...`);
|
|
153
|
+
await Promise.all(accounts.map(async (acc)=>(await TokenContract.at(tokenAddress, wallet)).methods.mint_to_public(acc, mintAmount).send({
|
|
154
|
+
from: admin,
|
|
155
|
+
fee: {
|
|
156
|
+
paymentMethod
|
|
157
|
+
}
|
|
158
|
+
}).wait({
|
|
84
159
|
timeout: 600
|
|
85
160
|
})));
|
|
86
161
|
logger.verbose(`Minting complete.`);
|
|
87
162
|
return tokenAddress;
|
|
88
163
|
}
|
|
89
|
-
export async function performTransfers({
|
|
90
|
-
const recipient =
|
|
164
|
+
export async function performTransfers({ wallet, testAccounts, rounds, transferAmount, logger, feePaymentMethod }) {
|
|
165
|
+
const recipient = testAccounts.recipientAddress;
|
|
166
|
+
// Default to sponsored fee payment if no fee method is provided
|
|
167
|
+
const defaultFeePaymentMethod = feePaymentMethod || new SponsoredFeePaymentMethod(await getSponsoredFPCAddress());
|
|
91
168
|
for(let i = 0; i < rounds; i++){
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
169
|
+
const txs = testAccounts.accounts.map(async (acc)=>{
|
|
170
|
+
const token = await TokenContract.at(testAccounts.tokenAddress, testAccounts.wallet);
|
|
171
|
+
return proveInteraction(wallet, token.methods.transfer_in_public(acc, recipient, transferAmount, 0), {
|
|
172
|
+
from: acc,
|
|
173
|
+
fee: {
|
|
174
|
+
paymentMethod: defaultFeePaymentMethod
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
const provenTxs = await Promise.all(txs);
|
|
179
|
+
await Promise.all(provenTxs.map((t)=>t.send().wait({
|
|
95
180
|
timeout: 600
|
|
96
181
|
})));
|
|
97
182
|
logger.info(`Completed round ${i + 1} / ${rounds}`);
|
|
98
183
|
}
|
|
99
184
|
}
|
|
185
|
+
export async function createWalletAndAztecNodeClient(nodeUrl, proverEnabled, logger) {
|
|
186
|
+
const aztecNode = createAztecNodeClient(nodeUrl);
|
|
187
|
+
const [bbConfig, acvmConfig] = await Promise.all([
|
|
188
|
+
getBBConfig(logger),
|
|
189
|
+
getACVMConfig(logger)
|
|
190
|
+
]);
|
|
191
|
+
const pxeConfig = {
|
|
192
|
+
dataDirectory: undefined,
|
|
193
|
+
dataStoreMapSizeKb: 1024 * 1024,
|
|
194
|
+
...bbConfig,
|
|
195
|
+
...acvmConfig,
|
|
196
|
+
proverEnabled
|
|
197
|
+
};
|
|
198
|
+
const wallet = await TestWallet.create(aztecNode, pxeConfig);
|
|
199
|
+
return {
|
|
200
|
+
wallet,
|
|
201
|
+
aztecNode,
|
|
202
|
+
async cleanup () {
|
|
203
|
+
await wallet.stop();
|
|
204
|
+
await bbConfig?.cleanup();
|
|
205
|
+
await acvmConfig?.cleanup();
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
}
|