@aztec/end-to-end 0.0.0-test.1 → 0.0.1-fake-ceab37513c
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 +60 -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 +69 -0
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -0
- package/dest/bench/client_flows/client_flows_benchmark.js +315 -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 -27
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +27 -43
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +15 -7
- 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 +66 -38
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +10 -18
- 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 +34 -53
- package/dest/e2e_deploy_contract/deploy_test.d.ts +4 -2
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
- package/dest/e2e_deploy_contract/deploy_test.js +9 -6
- package/dest/e2e_epochs/epochs_test.d.ts +56 -17
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +222 -42
- 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 +60 -0
- package/dest/e2e_fees/fees_test.d.ts +16 -5
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +87 -88
- package/dest/e2e_l1_publisher/write_json.d.ts +8 -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 +5 -5
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +19 -14
- 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 +132 -0
- package/dest/e2e_p2p/p2p_network.d.ts +56 -21
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +154 -125
- package/dest/e2e_p2p/shared.d.ts +41 -3
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +146 -6
- package/dest/e2e_token_contract/token_contract_test.d.ts +10 -5
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +51 -24
- package/dest/{e2e_prover → fixtures}/e2e_prover_test.d.ts +7 -4
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -0
- package/dest/{e2e_prover → fixtures}/e2e_prover_test.js +67 -62
- 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.map +1 -1
- package/dest/fixtures/get_acvm_config.js +2 -14
- package/dest/fixtures/get_bb_config.d.ts.map +1 -1
- package/dest/fixtures/get_bb_config.js +8 -15
- 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 +3 -3
- package/dest/fixtures/setup_p2p_test.d.ts +14 -6
- 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 +8 -3
- package/dest/fixtures/snapshot_manager.d.ts.map +1 -1
- package/dest/fixtures/snapshot_manager.js +120 -104
- package/dest/fixtures/token_utils.d.ts +4 -3
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +24 -7
- package/dest/fixtures/utils.d.ts +65 -22
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +439 -318
- package/dest/fixtures/web3signer.d.ts +5 -0
- package/dest/fixtures/web3signer.d.ts.map +1 -0
- package/dest/fixtures/web3signer.js +42 -0
- package/dest/shared/cross_chain_test_harness.d.ts +28 -18
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +97 -41
- package/dest/shared/gas_portal_test_harness.d.ts +23 -18
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.js +43 -25
- package/dest/shared/submit-transactions.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.d.ts +5 -6
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +136 -90
- package/dest/simulators/lending_simulator.d.ts +5 -6
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +11 -15
- package/dest/simulators/token_simulator.d.ts +2 -1
- 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 +8 -1
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +108 -22
- package/dest/spartan/utils.d.ts +60 -307
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +200 -115
- package/package.json +60 -56
- package/src/bench/client_flows/benchmark.ts +341 -0
- package/src/bench/client_flows/client_flows_benchmark.ts +422 -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 +26 -52
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +60 -40
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +47 -75
- package/src/e2e_deploy_contract/deploy_test.ts +11 -8
- package/src/e2e_epochs/epochs_test.ts +276 -54
- package/src/e2e_fees/bridging_race.notest.ts +75 -0
- package/src/e2e_fees/fees_test.ts +121 -108
- package/src/e2e_l1_publisher/write_json.ts +74 -0
- package/src/e2e_multi_validator/utils.ts +258 -0
- package/src/e2e_nested_contract/nested_contract_test.ts +22 -14
- package/src/e2e_p2p/inactivity_slash_test.ts +174 -0
- package/src/e2e_p2p/p2p_network.ts +212 -144
- package/src/e2e_p2p/shared.ts +234 -14
- package/src/e2e_token_contract/token_contract_test.ts +42 -38
- package/src/fixtures/dumps/epoch_proof_result.json +1 -1
- package/src/{e2e_prover → fixtures}/e2e_prover_test.ts +62 -69
- package/src/fixtures/fixtures.ts +4 -3
- package/src/fixtures/get_acvm_config.ts +2 -10
- package/src/fixtures/get_bb_config.ts +15 -11
- package/src/fixtures/l1_to_l2_messaging.ts +53 -23
- package/src/fixtures/setup_l1_contracts.ts +5 -6
- package/src/fixtures/setup_p2p_test.ts +112 -30
- package/src/fixtures/snapshot_manager.ts +150 -102
- package/src/fixtures/token_utils.ts +33 -8
- package/src/fixtures/utils.ts +530 -352
- package/src/fixtures/web3signer.ts +46 -0
- package/src/guides/up_quick_start.sh +4 -4
- package/src/shared/cross_chain_test_harness.ts +92 -52
- package/src/shared/gas_portal_test_harness.ts +47 -31
- package/src/shared/uniswap_l1_l2.ts +127 -124
- package/src/simulators/lending_simulator.ts +11 -15
- package/src/simulators/token_simulator.ts +17 -12
- package/src/spartan/DEVELOP.md +116 -0
- package/src/spartan/setup_test_wallets.ts +144 -29
- package/src/spartan/utils.ts +194 -116
- 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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lending_simulator.d.ts","sourceRoot":"","sources":["../../src/simulators/lending_simulator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"lending_simulator.d.ts","sourceRoot":"","sources":["../../src/simulators/lending_simulator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;GAEG;AACH,qBAAa,cAAc;IACzB,yCAAyC;IACzC,SAAgB,OAAO,EAAE,YAAY,CAAC;IACtC,2CAA2C;IAC3C,SAAgB,MAAM,EAAE,EAAE,CAAC;gBAEf,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE;IAK7C;;;OAGG;IACI,GAAG;CAGX;AAgCD;;GAEG;AACH,qBAAa,gBAAgB;IAYzB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,oBAAoB;IAC5B,0BAA0B;IACnB,MAAM,EAAE,cAAc;IAC7B,2BAA2B;IACpB,eAAe,EAAE,eAAe;IACvC,wDAAwD;IACjD,eAAe,EAAE,cAAc;IACtC,uDAAuD;IAChD,UAAU,EAAE,cAAc;IAtBnC,gCAAgC;IACzB,WAAW,EAAE,MAAM,CAAM;IAChC,oCAAoC;IAC7B,IAAI,EAAE,MAAM,CAAK;IAExB,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,aAAa,CAAc;gBAGzB,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,MAAM,EACZ,oBAAoB,EAAE,MAAM;IACpC,0BAA0B;IACnB,MAAM,EAAE,cAAc;IAC7B,2BAA2B;IACpB,eAAe,EAAE,eAAe;IACvC,wDAAwD;IACjD,eAAe,EAAE,cAAc;IACtC,uDAAuD;IAChD,UAAU,EAAE,cAAc;IAG7B,OAAO;IAMP,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,gBAAgB;IAmBjE,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM;IAKjE,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM;IAKhE,OAAO,CAAC,OAAO;IAKf,QAAQ,CAAC,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM;IAM3D,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM;IASzD,YAAY,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM;IAK/D,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM;IAK9D,OAAO,CAAC,KAAK;IAQb,yBAAyB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,UAAQ;IASzE,KAAK;CA0BZ"}
|
|
@@ -76,23 +76,15 @@ const computeMultiplier = (rate, dt)=>{
|
|
|
76
76
|
}
|
|
77
77
|
async prepare() {
|
|
78
78
|
this.accumulator = BASE;
|
|
79
|
-
const slot = await this.rollup.
|
|
80
|
-
|
|
81
|
-
]);
|
|
82
|
-
this.time = Number(await this.rollup.read.getTimestampForSlot([
|
|
83
|
-
slot
|
|
84
|
-
]));
|
|
79
|
+
const slot = await this.rollup.getSlotAt(BigInt(await this.cc.eth.timestamp()) + BigInt(this.ethereumSlotDuration));
|
|
80
|
+
this.time = Number(await this.rollup.getTimestampForSlot(slot));
|
|
85
81
|
}
|
|
86
82
|
async progressSlots(diff, dateProvider) {
|
|
87
83
|
if (diff <= 1) {
|
|
88
84
|
return;
|
|
89
85
|
}
|
|
90
|
-
const slot = await this.rollup.
|
|
91
|
-
|
|
92
|
-
]);
|
|
93
|
-
const ts = Number(await this.rollup.read.getTimestampForSlot([
|
|
94
|
-
slot + BigInt(diff)
|
|
95
|
-
]));
|
|
86
|
+
const slot = await this.rollup.getSlotAt(BigInt(await this.cc.eth.timestamp()));
|
|
87
|
+
const ts = Number(await this.rollup.getTimestampForSlot(slot + BigInt(diff)));
|
|
96
88
|
const timeDiff = ts - this.time;
|
|
97
89
|
this.time = ts;
|
|
98
90
|
// Mine ethereum blocks such that the next block will be in a new slot
|
|
@@ -100,7 +92,7 @@ const computeMultiplier = (rate, dt)=>{
|
|
|
100
92
|
if (dateProvider) {
|
|
101
93
|
dateProvider.setTime(this.time * 1000);
|
|
102
94
|
}
|
|
103
|
-
await this.cc.rollup.markAsProven(await this.rollup.
|
|
95
|
+
await this.cc.rollup.markAsProven(await this.rollup.getBlockNumber());
|
|
104
96
|
this.accumulator = muldivDown(this.accumulator, computeMultiplier(this.rate, BigInt(timeDiff)), BASE);
|
|
105
97
|
}
|
|
106
98
|
depositPrivate(from, onBehalfOf, amount) {
|
|
@@ -157,7 +149,9 @@ const computeMultiplier = (rate, dt)=>{
|
|
|
157
149
|
const totalCollateral = Object.values(this.collateral).reduce((a, b)=>new Fr(a.value + b.value), Fr.ZERO);
|
|
158
150
|
expect(totalCollateral).toEqual(new Fr(this.collateralAsset.balanceOfPublic(this.lendingContract.address)));
|
|
159
151
|
expect(this.borrowed).toEqual(this.stableCoin.totalSupply - this.mintedOutside);
|
|
160
|
-
const asset = await this.lendingContract.methods.get_asset(0).simulate(
|
|
152
|
+
const asset = await this.lendingContract.methods.get_asset(0).simulate({
|
|
153
|
+
from: this.account.address
|
|
154
|
+
});
|
|
161
155
|
const interestAccumulator = asset['interest_accumulator'];
|
|
162
156
|
expect(interestAccumulator).toEqual(this.accumulator);
|
|
163
157
|
expect(asset['last_updated_ts']).toEqual(BigInt(this.time));
|
|
@@ -165,7 +159,9 @@ const computeMultiplier = (rate, dt)=>{
|
|
|
165
159
|
this.account.address,
|
|
166
160
|
AztecAddress.fromField(await this.account.key())
|
|
167
161
|
]){
|
|
168
|
-
const privatePos = await this.lendingContract.methods.get_position(key).simulate(
|
|
162
|
+
const privatePos = await this.lendingContract.methods.get_position(key).simulate({
|
|
163
|
+
from: key
|
|
164
|
+
});
|
|
169
165
|
expect(new Fr(privatePos['collateral'])).toEqual(this.collateral[key.toString()] ?? Fr.ZERO);
|
|
170
166
|
expect(new Fr(privatePos['static_debt'])).toEqual(this.staticDebt[key.toString()] ?? Fr.ZERO);
|
|
171
167
|
expect(privatePos['debt']).toEqual(muldivUp((this.staticDebt[key.toString()] ?? Fr.ZERO).value, this.accumulator, BASE));
|
|
@@ -3,13 +3,14 @@ import type { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
|
3
3
|
export declare class TokenSimulator {
|
|
4
4
|
protected token: TokenContract;
|
|
5
5
|
protected defaultWallet: Wallet;
|
|
6
|
+
protected defaultAddress: AztecAddress;
|
|
6
7
|
protected logger: Logger;
|
|
7
8
|
protected accounts: AztecAddress[];
|
|
8
9
|
private balancesPrivate;
|
|
9
10
|
private balancePublic;
|
|
10
11
|
totalSupply: bigint;
|
|
11
12
|
private lookupProvider;
|
|
12
|
-
constructor(token: TokenContract, defaultWallet: Wallet, logger: Logger, accounts: AztecAddress[]);
|
|
13
|
+
constructor(token: TokenContract, defaultWallet: Wallet, defaultAddress: AztecAddress, logger: Logger, accounts: AztecAddress[]);
|
|
13
14
|
addAccount(account: AztecAddress): void;
|
|
14
15
|
setLookupProvider(account: AztecAddress, wallet: Wallet): void;
|
|
15
16
|
mintPrivate(to: AztecAddress, amount: bigint): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token_simulator.d.ts","sourceRoot":"","sources":["../../src/simulators/token_simulator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"token_simulator.d.ts","sourceRoot":"","sources":["../../src/simulators/token_simulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAa,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAIpE,qBAAa,cAAc;IAQvB,SAAS,CAAC,KAAK,EAAE,aAAa;IAC9B,SAAS,CAAC,aAAa,EAAE,MAAM;IAC/B,SAAS,CAAC,cAAc,EAAE,YAAY;IACtC,SAAS,CAAC,MAAM,EAAE,MAAM;IACxB,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE;IAXpC,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,aAAa,CAAkC;IAChD,WAAW,EAAE,MAAM,CAAM;IAEhC,OAAO,CAAC,cAAc,CAAkC;gBAG5C,KAAK,EAAE,aAAa,EACpB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,YAAY,EAC5B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,YAAY,EAAE;IAG7B,UAAU,CAAC,OAAO,EAAE,YAAY;IAIhC,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM;IAIvD,WAAW,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM;IAK5C,UAAU,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM;IAM3C,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM;IASnE,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM;IASpE,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM;IAQtE,gBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM;IAQrE,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM;IAQ9C,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM;IAQ7C,eAAe,CAAC,OAAO,EAAE,YAAY;IAIrC,gBAAgB,CAAC,OAAO,EAAE,YAAY;IAIvC,WAAW;IAoBX,YAAY;IAsCL,KAAK;CAInB"}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
import { BatchCall } from '@aztec/aztec.js';
|
|
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, 4).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
|
}
|
|
@@ -5,16 +5,23 @@ export interface TestWallets {
|
|
|
5
5
|
pxe: PXE;
|
|
6
6
|
wallets: AccountWalletWithSecretKey[];
|
|
7
7
|
tokenAdminWallet: TokenContract;
|
|
8
|
+
tokenAdminAddress: AztecAddress;
|
|
8
9
|
tokenName: string;
|
|
9
10
|
recipientWallet: AccountWalletWithSecretKey;
|
|
11
|
+
recipientAddress: AztecAddress;
|
|
10
12
|
tokenAddress: AztecAddress;
|
|
11
13
|
}
|
|
12
14
|
export declare function setupTestWalletsWithTokens(pxeUrl: string, mintAmount: bigint, logger: Logger): Promise<TestWallets>;
|
|
13
|
-
export declare function
|
|
15
|
+
export declare function deploySponsoredTestWallets(pxe: PXE, mintAmount: bigint, logger: Logger, numberOfFundedWallets?: number): Promise<TestWallets>;
|
|
16
|
+
export declare function deployTestWalletWithTokens(pxeUrl: string, nodeUrl: string, l1RpcUrls: string[], mnemonicOrPrivateKey: string, mintAmount: bigint, logger: Logger, numberOfFundedWallets?: number): Promise<TestWallets>;
|
|
14
17
|
export declare function performTransfers({ testWallets, rounds, transferAmount, logger, }: {
|
|
15
18
|
testWallets: TestWallets;
|
|
16
19
|
rounds: number;
|
|
17
20
|
transferAmount: bigint;
|
|
18
21
|
logger: Logger;
|
|
19
22
|
}): Promise<void>;
|
|
23
|
+
export declare function startCompatiblePXE(nodeUrl: string, proverEnabled: boolean, logger: Logger): Promise<{
|
|
24
|
+
pxe: PXE;
|
|
25
|
+
cleanup: () => Promise<void>;
|
|
26
|
+
}>;
|
|
20
27
|
//# 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":"AAEA,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"setup_test_wallets.d.ts","sourceRoot":"","sources":["../../src/spartan/setup_test_wallets.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,YAAY,EAMjB,KAAK,GAAG,EAKT,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAQ/D,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,GAAG,CAAC;IACT,OAAO,EAAE,0BAA0B,EAAE,CAAC;IACtC,gBAAgB,EAAE,aAAa,CAAC;IAChC,iBAAiB,EAAE,YAAY,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,0BAA0B,CAAC;IAC5C,gBAAgB,EAAE,YAAY,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;CAC5B;AAMD,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC,CAqBtB;AAED,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,qBAAqB,SAAI,GACxB,OAAO,CAAC,WAAW,CAAC,CA0CtB;AAED,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,MAAM,EACd,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,WAAW,CAAC,CA8CtB;AA6ED,wBAAsB,gBAAgB,CAAC,EACrC,WAAW,EACX,MAAM,EACN,cAAc,EACd,MAAM,GACP,EAAE;IACD,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,iBAeA;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,GAAG,EAAE,GAAG,CAAC;IAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CAmBrD"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { getSchnorrAccount, getSchnorrWalletWithSecretKey } from '@aztec/accounts/schnorr';
|
|
2
2
|
import { generateSchnorrAccounts, getDeployedTestAccountsWallets } from '@aztec/accounts/testing';
|
|
3
|
-
import { FeeJuicePaymentMethodWithClaim, Fr, L1FeeJuicePortalManager, createAztecNodeClient, createCompatibleClient, retryUntil } from '@aztec/aztec.js';
|
|
4
|
-
import { createEthereumChain,
|
|
3
|
+
import { FeeJuicePaymentMethodWithClaim, Fr, L1FeeJuicePortalManager, SponsoredFeePaymentMethod, createAztecNodeClient, createCompatibleClient, retryUntil } from '@aztec/aztec.js';
|
|
4
|
+
import { createEthereumChain, createExtendedL1Client } from '@aztec/ethereum';
|
|
5
5
|
import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
6
|
+
import { createPXEService } from '@aztec/pxe/server';
|
|
7
|
+
import { getACVMConfig } from '../fixtures/get_acvm_config.js';
|
|
8
|
+
import { getBBConfig } from '../fixtures/get_bb_config.js';
|
|
9
|
+
import { getSponsoredFPCAddress, registerSponsoredFPC } from '../fixtures/utils.js';
|
|
6
10
|
const TOKEN_NAME = 'USDC';
|
|
7
11
|
const TOKEN_SYMBOL = 'USD';
|
|
8
12
|
const TOKEN_DECIMALS = 18n;
|
|
@@ -11,25 +15,60 @@ export async function setupTestWalletsWithTokens(pxeUrl, mintAmount, logger) {
|
|
|
11
15
|
const pxe = await createCompatibleClient(pxeUrl, logger);
|
|
12
16
|
const [recipientWallet, ...wallets] = (await getDeployedTestAccountsWallets(pxe)).slice(0, WALLET_COUNT + 1);
|
|
13
17
|
const tokenAdmin = wallets[0];
|
|
14
|
-
const tokenAddress = await deployTokenAndMint(wallets, tokenAdmin.getAddress(), mintAmount, logger);
|
|
18
|
+
const tokenAddress = await deployTokenAndMint(wallets, tokenAdmin.getAddress(), mintAmount, undefined, logger);
|
|
15
19
|
const tokenAdminWallet = await TokenContract.at(tokenAddress, tokenAdmin);
|
|
16
20
|
return {
|
|
17
21
|
pxe,
|
|
18
22
|
wallets,
|
|
19
23
|
tokenAdminWallet,
|
|
24
|
+
tokenAdminAddress: tokenAdmin.getAddress(),
|
|
20
25
|
tokenName: TOKEN_NAME,
|
|
21
26
|
tokenAddress,
|
|
27
|
+
recipientAddress: recipientWallet.getAddress(),
|
|
22
28
|
recipientWallet
|
|
23
29
|
};
|
|
24
30
|
}
|
|
25
|
-
export async function
|
|
31
|
+
export async function deploySponsoredTestWallets(pxe, mintAmount, logger, numberOfFundedWallets = 1) {
|
|
32
|
+
const [recipient, ...funded] = await generateSchnorrAccounts(numberOfFundedWallets + 1);
|
|
33
|
+
const recipientWallet = await getSchnorrWalletWithSecretKey(pxe, recipient.secret, recipient.signingKey, recipient.salt);
|
|
34
|
+
const fundedAccounts = await Promise.all(funded.map((a)=>getSchnorrAccount(pxe, a.secret, a.signingKey, a.salt)));
|
|
35
|
+
await registerSponsoredFPC(pxe);
|
|
36
|
+
const wallets = await Promise.all(fundedAccounts.map(async (a)=>{
|
|
37
|
+
const wallet = await a.getWallet();
|
|
38
|
+
const paymentMethod = new SponsoredFeePaymentMethod(await getSponsoredFPCAddress());
|
|
39
|
+
await a.deploy({
|
|
40
|
+
fee: {
|
|
41
|
+
paymentMethod
|
|
42
|
+
}
|
|
43
|
+
}).wait({
|
|
44
|
+
timeout: 2400
|
|
45
|
+
}); // increase timeout on purpose in order to account for two empty epochs
|
|
46
|
+
logger.info(`Account deployed at ${a.getAddress()}`);
|
|
47
|
+
return wallet;
|
|
48
|
+
}));
|
|
49
|
+
const tokenAdmin = wallets[0];
|
|
50
|
+
const tokenAddress = await deployTokenAndMint(wallets, tokenAdmin.getAddress(), mintAmount, new SponsoredFeePaymentMethod(await getSponsoredFPCAddress()), logger);
|
|
51
|
+
const tokenAdminWallet = await TokenContract.at(tokenAddress, tokenAdmin);
|
|
52
|
+
return {
|
|
53
|
+
pxe,
|
|
54
|
+
wallets,
|
|
55
|
+
tokenAdminAddress: tokenAdmin.getAddress(),
|
|
56
|
+
tokenAdminWallet,
|
|
57
|
+
tokenName: TOKEN_NAME,
|
|
58
|
+
tokenAddress,
|
|
59
|
+
recipientWallet,
|
|
60
|
+
recipientAddress: recipientWallet.getAddress()
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export async function deployTestWalletWithTokens(pxeUrl, nodeUrl, l1RpcUrls, mnemonicOrPrivateKey, mintAmount, logger, numberOfFundedWallets = 1) {
|
|
26
64
|
const pxe = await createCompatibleClient(pxeUrl, logger);
|
|
27
65
|
const node = createAztecNodeClient(nodeUrl);
|
|
28
66
|
const [recipient, ...funded] = await generateSchnorrAccounts(numberOfFundedWallets + 1);
|
|
29
67
|
const recipientWallet = await getSchnorrWalletWithSecretKey(pxe, recipient.secret, recipient.signingKey, recipient.salt);
|
|
30
68
|
const fundedAccounts = await Promise.all(funded.map((a)=>getSchnorrAccount(pxe, a.secret, a.signingKey, a.salt)));
|
|
31
|
-
const claims = await Promise.all(fundedAccounts.map((a)=>bridgeL1FeeJuice(
|
|
32
|
-
// Progress by
|
|
69
|
+
const claims = await Promise.all(fundedAccounts.map((a)=>bridgeL1FeeJuice(l1RpcUrls, mnemonicOrPrivateKey, pxe, a.getAddress(), undefined, logger)));
|
|
70
|
+
// Progress by 3 L2 blocks so that the l1ToL2Message added above will be available to use on L2.
|
|
71
|
+
await advanceL2Block(node);
|
|
33
72
|
await advanceL2Block(node);
|
|
34
73
|
await advanceL2Block(node);
|
|
35
74
|
const wallets = await Promise.all(fundedAccounts.map(async (a, i)=>{
|
|
@@ -44,43 +83,66 @@ export async function deployTestWalletWithTokens(pxeUrl, nodeUrl, l1RpcUrl, mnem
|
|
|
44
83
|
return wallet;
|
|
45
84
|
}));
|
|
46
85
|
const tokenAdmin = wallets[0];
|
|
47
|
-
const tokenAddress = await deployTokenAndMint(wallets, tokenAdmin.getAddress(), mintAmount, logger);
|
|
86
|
+
const tokenAddress = await deployTokenAndMint(wallets, tokenAdmin.getAddress(), mintAmount, undefined, logger);
|
|
48
87
|
const tokenAdminWallet = await TokenContract.at(tokenAddress, tokenAdmin);
|
|
49
88
|
return {
|
|
50
89
|
pxe,
|
|
51
90
|
wallets,
|
|
91
|
+
tokenAdminAddress: tokenAdmin.getAddress(),
|
|
52
92
|
tokenAdminWallet,
|
|
53
93
|
tokenName: TOKEN_NAME,
|
|
54
94
|
tokenAddress,
|
|
55
|
-
recipientWallet
|
|
95
|
+
recipientWallet,
|
|
96
|
+
recipientAddress: recipientWallet.getAddress()
|
|
56
97
|
};
|
|
57
98
|
}
|
|
58
|
-
async function bridgeL1FeeJuice(
|
|
99
|
+
async function bridgeL1FeeJuice(l1RpcUrls, mnemonicOrPrivateKey, pxe, recipient, amount, log) {
|
|
59
100
|
const { l1ChainId } = await pxe.getNodeInfo();
|
|
60
|
-
const chain = createEthereumChain(
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
const
|
|
64
|
-
const portal = await L1FeeJuicePortalManager.new(pxe, publicClient, walletClient, log);
|
|
101
|
+
const chain = createEthereumChain(l1RpcUrls, l1ChainId);
|
|
102
|
+
const l1Client = createExtendedL1Client(chain.rpcUrls, mnemonicOrPrivateKey, chain.chainInfo);
|
|
103
|
+
// docs:start:bridge_fee_juice
|
|
104
|
+
const portal = await L1FeeJuicePortalManager.new(pxe, l1Client, log);
|
|
65
105
|
const claim = await portal.bridgeTokensPublic(recipient, amount, true);
|
|
106
|
+
// docs:end:bridge_fee_juice
|
|
66
107
|
const isSynced = async ()=>await pxe.isL1ToL2MessageSynced(Fr.fromHexString(claim.messageHash));
|
|
67
108
|
await retryUntil(isSynced, `message ${claim.messageHash} sync`, 24, 0.5);
|
|
68
109
|
log.info(`Created a claim for ${amount} L1 fee juice to ${recipient}.`, claim);
|
|
69
110
|
return claim;
|
|
70
111
|
}
|
|
71
|
-
async function advanceL2Block(node) {
|
|
112
|
+
async function advanceL2Block(node, nodeAdmin) {
|
|
72
113
|
const initialBlockNumber = await node.getBlockNumber();
|
|
73
|
-
|
|
114
|
+
let minTxsPerBlock = undefined;
|
|
115
|
+
if (nodeAdmin) {
|
|
116
|
+
({ minTxsPerBlock } = await nodeAdmin.getConfig());
|
|
117
|
+
await nodeAdmin.setConfig({
|
|
118
|
+
minTxsPerBlock: 0
|
|
119
|
+
}); // Set to 0 to ensure we can advance the block
|
|
120
|
+
}
|
|
74
121
|
await retryUntil(async ()=>await node.getBlockNumber() >= initialBlockNumber + 1);
|
|
122
|
+
if (nodeAdmin && minTxsPerBlock !== undefined) {
|
|
123
|
+
await nodeAdmin.setConfig({
|
|
124
|
+
minTxsPerBlock
|
|
125
|
+
});
|
|
126
|
+
}
|
|
75
127
|
}
|
|
76
|
-
async function deployTokenAndMint(wallets, admin, mintAmount, logger) {
|
|
128
|
+
async function deployTokenAndMint(wallets, admin, mintAmount, paymentMethod, logger) {
|
|
77
129
|
logger.verbose(`Deploying TokenContract...`);
|
|
78
|
-
const tokenContract = await TokenContract.deploy(wallets[0], admin, TOKEN_NAME, TOKEN_SYMBOL, TOKEN_DECIMALS).send(
|
|
130
|
+
const tokenContract = await TokenContract.deploy(wallets[0], admin, TOKEN_NAME, TOKEN_SYMBOL, TOKEN_DECIMALS).send({
|
|
131
|
+
from: admin,
|
|
132
|
+
fee: {
|
|
133
|
+
paymentMethod
|
|
134
|
+
}
|
|
135
|
+
}).deployed({
|
|
79
136
|
timeout: 600
|
|
80
137
|
});
|
|
81
138
|
const tokenAddress = tokenContract.address;
|
|
82
139
|
logger.verbose(`Minting ${mintAmount} public assets to the ${wallets.length} wallets...`);
|
|
83
|
-
await Promise.all(wallets.map(async (w)=>(await TokenContract.at(tokenAddress, w)).methods.mint_to_public(w.getAddress(), mintAmount).send(
|
|
140
|
+
await Promise.all(wallets.map(async (w)=>(await TokenContract.at(tokenAddress, w)).methods.mint_to_public(w.getAddress(), mintAmount).send({
|
|
141
|
+
from: admin,
|
|
142
|
+
fee: {
|
|
143
|
+
paymentMethod
|
|
144
|
+
}
|
|
145
|
+
}).wait({
|
|
84
146
|
timeout: 600
|
|
85
147
|
})));
|
|
86
148
|
logger.verbose(`Minting complete.`);
|
|
@@ -89,11 +151,35 @@ async function deployTokenAndMint(wallets, admin, mintAmount, logger) {
|
|
|
89
151
|
export async function performTransfers({ testWallets, rounds, transferAmount, logger }) {
|
|
90
152
|
const recipient = testWallets.recipientWallet.getAddress();
|
|
91
153
|
for(let i = 0; i < rounds; i++){
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
154
|
+
const txs = testWallets.wallets.map(async (w)=>(await TokenContract.at(testWallets.tokenAddress, w)).methods.transfer_in_public(w.getAddress(), recipient, transferAmount, 0).prove({
|
|
155
|
+
from: w.getAddress()
|
|
156
|
+
}));
|
|
157
|
+
const provenTxs = await Promise.all(txs);
|
|
158
|
+
await Promise.all(provenTxs.map((t)=>t.send().wait({
|
|
95
159
|
timeout: 600
|
|
96
160
|
})));
|
|
97
161
|
logger.info(`Completed round ${i + 1} / ${rounds}`);
|
|
98
162
|
}
|
|
99
163
|
}
|
|
164
|
+
export async function startCompatiblePXE(nodeUrl, proverEnabled, logger) {
|
|
165
|
+
const node = createAztecNodeClient(nodeUrl);
|
|
166
|
+
const [bbConfig, acvmConfig] = await Promise.all([
|
|
167
|
+
getBBConfig(logger),
|
|
168
|
+
getACVMConfig(logger)
|
|
169
|
+
]);
|
|
170
|
+
const pxe = await createPXEService(node, {
|
|
171
|
+
dataDirectory: undefined,
|
|
172
|
+
dataStoreMapSizeKb: 1024 * 1024,
|
|
173
|
+
...bbConfig,
|
|
174
|
+
...acvmConfig,
|
|
175
|
+
proverEnabled
|
|
176
|
+
});
|
|
177
|
+
return {
|
|
178
|
+
pxe,
|
|
179
|
+
async cleanup () {
|
|
180
|
+
await pxe.stop();
|
|
181
|
+
await bbConfig?.cleanup();
|
|
182
|
+
await acvmConfig?.cleanup();
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
}
|