@aztec/end-to-end 0.0.1-commit.b655e406 → 0.0.1-commit.d1f2d6c
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/bench/client_flows/benchmark.d.ts +3 -2
- package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/benchmark.js +21 -1
- package/dest/bench/client_flows/client_flows_benchmark.d.ts +21 -15
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +129 -119
- package/dest/bench/client_flows/config.d.ts +1 -1
- package/dest/bench/client_flows/data_extractor.d.ts +1 -1
- package/dest/bench/client_flows/data_extractor.js +7 -27
- package/dest/bench/utils.d.ts +8 -7
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +27 -18
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +6 -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 +96 -112
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +19 -13
- 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 +91 -70
- package/dest/e2e_deploy_contract/deploy_test.d.ts +5 -4
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
- package/dest/e2e_deploy_contract/deploy_test.js +18 -13
- package/dest/e2e_epochs/epochs_test.d.ts +11 -9
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +22 -16
- package/dest/e2e_fees/bridging_race.notest.d.ts +1 -1
- package/dest/e2e_fees/bridging_race.notest.js +5 -7
- package/dest/e2e_fees/fees_test.d.ts +20 -16
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +127 -139
- package/dest/e2e_l1_publisher/write_json.d.ts +2 -2
- package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
- package/dest/e2e_l1_publisher/write_json.js +23 -18
- package/dest/e2e_multi_validator/utils.d.ts +1 -1
- package/dest/e2e_multi_validator/utils.js +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.d.ts +6 -9
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +31 -38
- package/dest/e2e_p2p/inactivity_slash_test.d.ts +3 -3
- package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
- package/dest/e2e_p2p/inactivity_slash_test.js +7 -6
- package/dest/e2e_p2p/p2p_network.d.ts +225 -18
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +119 -109
- package/dest/e2e_p2p/shared.d.ts +11 -11
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +13 -19
- package/dest/e2e_token_contract/token_contract_test.d.ts +16 -9
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +89 -91
- package/dest/fixtures/e2e_prover_test.d.ts +12 -18
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +100 -108
- package/dest/fixtures/fixtures.d.ts +2 -3
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +2 -3
- package/dest/fixtures/get_acvm_config.d.ts +1 -1
- package/dest/fixtures/get_acvm_config.js +1 -1
- package/dest/fixtures/get_bb_config.d.ts +1 -1
- package/dest/fixtures/get_bb_config.d.ts.map +1 -1
- package/dest/fixtures/index.d.ts +1 -1
- package/dest/fixtures/l1_to_l2_messaging.d.ts +4 -3
- package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
- package/dest/fixtures/l1_to_l2_messaging.js +2 -2
- package/dest/fixtures/logging.d.ts +1 -1
- package/dest/fixtures/setup.d.ts +216 -0
- package/dest/fixtures/setup.d.ts.map +1 -0
- package/dest/fixtures/setup.js +684 -0
- package/dest/fixtures/setup_p2p_test.d.ts +4 -4
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +18 -10
- package/dest/fixtures/token_utils.d.ts +5 -2
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +13 -7
- package/dest/fixtures/utils.d.ts +5 -192
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +4 -648
- package/dest/fixtures/web3signer.d.ts +1 -1
- package/dest/fixtures/web3signer.js +1 -1
- package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
- package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
- package/dest/fixtures/with_telemetry_utils.js +2 -2
- package/dest/index.d.ts +1 -1
- package/dest/quality_of_service/grafana_client.d.ts +41 -0
- package/dest/quality_of_service/grafana_client.d.ts.map +1 -0
- package/dest/quality_of_service/{alert_checker.js → grafana_client.js} +1 -1
- package/dest/quality_of_service/prometheus_client.d.ts +38 -0
- package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
- package/dest/quality_of_service/prometheus_client.js +67 -0
- package/dest/shared/cross_chain_test_harness.d.ts +7 -6
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +14 -14
- package/dest/shared/gas_portal_test_harness.d.ts +2 -2
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.js +2 -2
- package/dest/shared/index.d.ts +2 -2
- package/dest/shared/index.d.ts.map +1 -1
- package/dest/shared/jest_setup.d.ts +1 -1
- package/dest/shared/submit-transactions.d.ts +3 -3
- package/dest/shared/submit-transactions.d.ts.map +1 -1
- package/dest/shared/submit-transactions.js +9 -11
- package/dest/shared/uniswap_l1_l2.d.ts +3 -27
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +55 -35
- package/dest/simulators/index.d.ts +1 -1
- package/dest/simulators/lending_simulator.d.ts +2 -2
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +6 -4
- package/dest/simulators/token_simulator.d.ts +1 -1
- package/dest/simulators/token_simulator.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.d.ts +8 -5
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +85 -23
- package/dest/spartan/tx_metrics.d.ts +54 -0
- package/dest/spartan/tx_metrics.d.ts.map +1 -0
- package/dest/spartan/tx_metrics.js +272 -0
- package/dest/spartan/utils/bot.d.ts +27 -0
- package/dest/spartan/utils/bot.d.ts.map +1 -0
- package/dest/spartan/utils/bot.js +141 -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 +36 -0
- package/dest/spartan/utils/config.d.ts.map +1 -0
- package/dest/spartan/utils/config.js +20 -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 +9 -0
- package/dest/spartan/utils/index.d.ts.map +1 -0
- package/dest/spartan/utils/index.js +18 -0
- package/dest/spartan/utils/k8s.d.ts +98 -0
- package/dest/spartan/utils/k8s.d.ts.map +1 -0
- package/dest/spartan/utils/k8s.js +257 -0
- package/dest/spartan/utils/nodes.d.ts +31 -0
- package/dest/spartan/utils/nodes.d.ts.map +1 -0
- package/dest/spartan/utils/nodes.js +290 -0
- package/dest/spartan/utils/scripts.d.ts +16 -0
- package/dest/spartan/utils/scripts.d.ts.map +1 -0
- package/dest/spartan/utils/scripts.js +66 -0
- package/dest/spartan/utils.d.ts +2 -218
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +1 -749
- package/package.json +43 -40
- package/src/bench/client_flows/benchmark.ts +24 -2
- package/src/bench/client_flows/client_flows_benchmark.ts +152 -170
- package/src/bench/client_flows/data_extractor.ts +6 -28
- package/src/bench/utils.ts +30 -20
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +104 -142
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +140 -124
- package/src/e2e_deploy_contract/deploy_test.ts +22 -15
- package/src/e2e_epochs/epochs_test.ts +67 -48
- package/src/e2e_fees/bridging_race.notest.ts +5 -11
- package/src/e2e_fees/fees_test.ts +180 -219
- package/src/e2e_l1_publisher/write_json.ts +25 -19
- package/src/e2e_multi_validator/utils.ts +1 -1
- package/src/e2e_nested_contract/nested_contract_test.ts +33 -55
- package/src/e2e_p2p/inactivity_slash_test.ts +10 -9
- package/src/e2e_p2p/p2p_network.ts +180 -180
- package/src/e2e_p2p/shared.ts +25 -27
- package/src/e2e_token_contract/token_contract_test.ts +103 -118
- package/src/fixtures/e2e_prover_test.ts +111 -149
- package/src/fixtures/fixtures.ts +2 -5
- package/src/fixtures/get_acvm_config.ts +1 -1
- package/src/fixtures/l1_to_l2_messaging.ts +4 -2
- package/src/fixtures/setup.ts +1006 -0
- package/src/fixtures/setup_p2p_test.ts +23 -9
- package/src/fixtures/token_utils.ts +8 -7
- package/src/fixtures/utils.ts +27 -947
- package/src/fixtures/web3signer.ts +1 -1
- package/src/fixtures/with_telemetry_utils.ts +2 -2
- package/src/guides/up_quick_start.sh +1 -1
- package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +1 -1
- package/src/quality_of_service/prometheus_client.ts +113 -0
- package/src/shared/cross_chain_test_harness.ts +19 -36
- package/src/shared/gas_portal_test_harness.ts +3 -3
- package/src/shared/index.ts +1 -1
- package/src/shared/submit-transactions.ts +9 -15
- package/src/shared/uniswap_l1_l2.ts +65 -86
- package/src/simulators/lending_simulator.ts +7 -5
- package/src/spartan/DEVELOP.md +7 -0
- package/src/spartan/setup_test_wallets.ts +119 -28
- package/src/spartan/tx_metrics.ts +250 -0
- package/src/spartan/utils/bot.ts +185 -0
- package/src/spartan/utils/chaos.ts +253 -0
- package/src/spartan/utils/clients.ts +100 -0
- package/src/spartan/utils/config.ts +26 -0
- package/src/spartan/utils/health.ts +255 -0
- package/src/spartan/utils/helm.ts +84 -0
- package/src/spartan/utils/index.ts +62 -0
- package/src/spartan/utils/k8s.ts +375 -0
- package/src/spartan/utils/nodes.ts +323 -0
- package/src/spartan/utils/scripts.ts +63 -0
- package/src/spartan/utils.ts +1 -942
- package/dest/fixtures/setup_l1_contracts.d.ts +0 -6
- package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
- package/dest/fixtures/setup_l1_contracts.js +0 -17
- package/dest/fixtures/snapshot_manager.d.ts +0 -95
- package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
- package/dest/fixtures/snapshot_manager.js +0 -505
- package/dest/quality_of_service/alert_checker.d.ts +0 -41
- package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
- package/src/fixtures/setup_l1_contracts.ts +0 -26
- package/src/fixtures/snapshot_manager.ts +0 -665
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fees_test.d.ts","sourceRoot":"","sources":["../../src/e2e_fees/fees_test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"fees_test.d.ts","sourceRoot":"","sources":["../../src/e2e_fees/fees_test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createLogger } from '@aztec/aztec.js/log';
|
|
2
|
-
import {
|
|
2
|
+
import { createExtendedL1Client } from '@aztec/ethereum/client';
|
|
3
|
+
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
3
4
|
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
4
5
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
6
|
import { sleep } from '@aztec/foundation/sleep';
|
|
@@ -13,13 +14,12 @@ import { getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
|
|
|
13
14
|
import { GasSettings } from '@aztec/stdlib/gas';
|
|
14
15
|
import { getContract } from 'viem';
|
|
15
16
|
import { MNEMONIC } from '../fixtures/fixtures.js';
|
|
16
|
-
import {
|
|
17
|
+
import { deployAccounts, publicDeployAccounts, setup, teardown } from '../fixtures/setup.js';
|
|
17
18
|
import { mintTokensToPrivate } from '../fixtures/token_utils.js';
|
|
18
|
-
import {
|
|
19
|
+
import { getBalancesFn, setupSponsoredFPC } from '../fixtures/utils.js';
|
|
19
20
|
import { FeeJuicePortalTestingHarnessFactory } from '../shared/gas_portal_test_harness.js';
|
|
20
|
-
const { E2E_DATA_PATH: dataPath } = process.env;
|
|
21
21
|
/**
|
|
22
|
-
* Test fixture for testing fees. Provides the following
|
|
22
|
+
* Test fixture for testing fees. Provides the following setup steps:
|
|
23
23
|
* InitialAccounts: Initializes 3 Schnorr account contracts.
|
|
24
24
|
* PublicDeployAccounts: Deploys the accounts publicly.
|
|
25
25
|
* DeployFeeJuice: Deploys the Fee Juice contract.
|
|
@@ -29,10 +29,12 @@ const { E2E_DATA_PATH: dataPath } = process.env;
|
|
|
29
29
|
* SetupSubscription: Deploys a counter contract and a subscription contract, and mints Fee Juice to the subscription contract.
|
|
30
30
|
*/ export class FeesTest {
|
|
31
31
|
numberOfAccounts;
|
|
32
|
-
|
|
32
|
+
setupOptions;
|
|
33
33
|
accounts;
|
|
34
|
+
context;
|
|
34
35
|
logger;
|
|
35
36
|
aztecNode;
|
|
37
|
+
aztecNodeAdmin;
|
|
36
38
|
cheatCodes;
|
|
37
39
|
wallet;
|
|
38
40
|
aliceAddress;
|
|
@@ -49,7 +51,6 @@ const { E2E_DATA_PATH: dataPath } = process.env;
|
|
|
49
51
|
counterContract;
|
|
50
52
|
subscriptionContract;
|
|
51
53
|
feeJuiceBridgeTestHarness;
|
|
52
|
-
context;
|
|
53
54
|
chainMonitor;
|
|
54
55
|
getCoinbaseBalance;
|
|
55
56
|
getCoinbaseSequencerRewards;
|
|
@@ -62,6 +63,7 @@ const { E2E_DATA_PATH: dataPath } = process.env;
|
|
|
62
63
|
APP_SPONSORED_TX_GAS_LIMIT;
|
|
63
64
|
constructor(testName, numberOfAccounts = 3, setupOptions = {}){
|
|
64
65
|
this.numberOfAccounts = numberOfAccounts;
|
|
66
|
+
this.setupOptions = setupOptions;
|
|
65
67
|
this.accounts = [];
|
|
66
68
|
this.ALICE_INITIAL_BANANAS = BigInt(1e22);
|
|
67
69
|
this.SUBSCRIPTION_AMOUNT = BigInt(1e19);
|
|
@@ -72,22 +74,26 @@ const { E2E_DATA_PATH: dataPath } = process.env;
|
|
|
72
74
|
setupOptions.coinbase ??= EthAddress.random();
|
|
73
75
|
this.coinbase = setupOptions.coinbase;
|
|
74
76
|
this.logger = createLogger(`e2e:e2e_fees:${testName}`);
|
|
75
|
-
this.snapshotManager = createSnapshotManager(`e2e_fees/${testName}-${numberOfAccounts}`, dataPath, {
|
|
76
|
-
startProverNode: true,
|
|
77
|
-
...setupOptions
|
|
78
|
-
}, {
|
|
79
|
-
...setupOptions
|
|
80
|
-
});
|
|
81
77
|
}
|
|
82
78
|
async setup() {
|
|
83
|
-
|
|
84
|
-
this.
|
|
85
|
-
|
|
79
|
+
this.logger.verbose('Setting up fresh context...');
|
|
80
|
+
this.context = await setup(0, {
|
|
81
|
+
startProverNode: true,
|
|
82
|
+
...this.setupOptions,
|
|
83
|
+
fundSponsoredFPC: true,
|
|
84
|
+
skipAccountDeployment: true,
|
|
85
|
+
l1ContractsArgs: {
|
|
86
|
+
...this.setupOptions
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
this.rollupContract = RollupContract.getFromConfig(this.context.config);
|
|
90
|
+
this.chainMonitor = new ChainMonitor(this.rollupContract, this.context.dateProvider, this.logger, 200).start();
|
|
91
|
+
await this.applyBaseSetup();
|
|
86
92
|
return this;
|
|
87
93
|
}
|
|
88
94
|
async teardown() {
|
|
89
95
|
await this.chainMonitor.stop();
|
|
90
|
-
await this.
|
|
96
|
+
await teardown(this.context);
|
|
91
97
|
}
|
|
92
98
|
setIsMarkingAsProven(b) {
|
|
93
99
|
this.context.watcher.setIsMarkingAsProven(b);
|
|
@@ -99,9 +105,9 @@ const { E2E_DATA_PATH: dataPath } = process.env;
|
|
|
99
105
|
}
|
|
100
106
|
}
|
|
101
107
|
async getBlockRewards() {
|
|
102
|
-
const blockReward = await this.rollupContract.
|
|
108
|
+
const blockReward = await this.rollupContract.getCheckpointReward();
|
|
103
109
|
const rewardConfig = await this.rollupContract.getRewardConfig();
|
|
104
|
-
const balance = await this.feeJuiceBridgeTestHarness.getL1FeeJuiceBalance(
|
|
110
|
+
const balance = await this.feeJuiceBridgeTestHarness.getL1FeeJuiceBalance(rewardConfig.rewardDistributor);
|
|
105
111
|
const toDistribute = balance > blockReward ? blockReward : balance;
|
|
106
112
|
const sequencerBlockRewards = toDistribute * BigInt(rewardConfig.sequencerBps) / 10000n;
|
|
107
113
|
const proverBlockRewards = toDistribute - sequencerBlockRewards;
|
|
@@ -115,7 +121,7 @@ const { E2E_DATA_PATH: dataPath } = process.env;
|
|
|
115
121
|
const { claimSecret: secret, messageLeafIndex: index } = claim;
|
|
116
122
|
await this.feeJuiceContract.methods.claim(recipient, claim.claimAmount, secret, index).send({
|
|
117
123
|
from: minter
|
|
118
|
-
})
|
|
124
|
+
});
|
|
119
125
|
}
|
|
120
126
|
/** Alice mints bananaCoin tokens privately to the target address and redeems them. */ async mintPrivateBananas(amount, address) {
|
|
121
127
|
const balanceBefore = await this.bananaCoin.methods.balance_of_private(address).simulate({
|
|
@@ -127,134 +133,116 @@ const { E2E_DATA_PATH: dataPath } = process.env;
|
|
|
127
133
|
});
|
|
128
134
|
expect(balanceAfter).toEqual(balanceBefore + amount);
|
|
129
135
|
}
|
|
130
|
-
async
|
|
131
|
-
await this.
|
|
132
|
-
await this.
|
|
133
|
-
await this.
|
|
134
|
-
await this.
|
|
135
|
-
}
|
|
136
|
-
async
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
this.
|
|
140
|
-
this.
|
|
141
|
-
maxFeesPerGas: (await this.aztecNode.getCurrentBaseFees()).mul(2)
|
|
142
|
-
});
|
|
143
|
-
this.cheatCodes = cheatCodes;
|
|
144
|
-
this.accounts = deployedAccounts.map((a)=>a.address);
|
|
145
|
-
this.accounts.forEach((a, i)=>this.logger.verbose(`Account ${i} address: ${a}`));
|
|
146
|
-
[this.aliceAddress, this.bobAddress, this.sequencerAddress] = this.accounts.slice(0, 3);
|
|
147
|
-
// We set Alice as the FPC admin to avoid the need for deployment of another account.
|
|
148
|
-
this.fpcAdmin = this.aliceAddress;
|
|
149
|
-
const canonicalFeeJuice = await getCanonicalFeeJuice();
|
|
150
|
-
this.feeJuiceContract = await FeeJuiceContract.at(canonicalFeeJuice.address, this.wallet);
|
|
136
|
+
async applyBaseSetup() {
|
|
137
|
+
await this.applyInitialAccounts();
|
|
138
|
+
await this.applyPublicDeployAccounts();
|
|
139
|
+
await this.applySetupFeeJuice();
|
|
140
|
+
await this.applyDeployBananaToken();
|
|
141
|
+
}
|
|
142
|
+
async applyInitialAccounts() {
|
|
143
|
+
this.logger.info('Applying initial accounts setup');
|
|
144
|
+
const { deployedAccounts } = await deployAccounts(this.numberOfAccounts, this.logger)({
|
|
145
|
+
wallet: this.context.wallet,
|
|
146
|
+
initialFundedAccounts: this.context.initialFundedAccounts
|
|
151
147
|
});
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
await this.snapshotManager.snapshot('setup_fee_juice', async ()=>{}, async (_data, context)=>{
|
|
158
|
-
this.context = context;
|
|
159
|
-
this.feeJuiceContract = await FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.wallet);
|
|
160
|
-
this.getGasBalanceFn = getBalancesFn('⛽', this.feeJuiceContract.methods.balance_of_public, this.aliceAddress, this.logger);
|
|
161
|
-
this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
|
|
162
|
-
aztecNode: context.aztecNode,
|
|
163
|
-
aztecNodeAdmin: context.aztecNode,
|
|
164
|
-
l1Client: context.deployL1ContractsValues.l1Client,
|
|
165
|
-
wallet: this.wallet,
|
|
166
|
-
logger: this.logger
|
|
167
|
-
});
|
|
148
|
+
this.wallet = this.context.wallet;
|
|
149
|
+
this.aztecNode = this.context.aztecNodeService;
|
|
150
|
+
this.aztecNodeAdmin = this.context.aztecNodeService;
|
|
151
|
+
this.gasSettings = GasSettings.default({
|
|
152
|
+
maxFeesPerGas: (await this.aztecNode.getCurrentMinFees()).mul(2)
|
|
168
153
|
});
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
154
|
+
this.cheatCodes = this.context.cheatCodes;
|
|
155
|
+
this.accounts = deployedAccounts.map((a)=>a.address);
|
|
156
|
+
this.accounts.forEach((a, i)=>this.logger.verbose(`Account ${i} address: ${a}`));
|
|
157
|
+
[this.aliceAddress, this.bobAddress, this.sequencerAddress] = this.accounts.slice(0, 3);
|
|
158
|
+
// We set Alice as the FPC admin to avoid the need for deployment of another account.
|
|
159
|
+
this.fpcAdmin = this.aliceAddress;
|
|
160
|
+
const canonicalFeeJuice = await getCanonicalFeeJuice();
|
|
161
|
+
this.feeJuiceContract = FeeJuiceContract.at(canonicalFeeJuice.address, this.wallet);
|
|
162
|
+
}
|
|
163
|
+
async applyPublicDeployAccounts() {
|
|
164
|
+
this.logger.info('Applying public deploy accounts setup');
|
|
165
|
+
await publicDeployAccounts(this.wallet, this.accounts);
|
|
166
|
+
}
|
|
167
|
+
async applySetupFeeJuice() {
|
|
168
|
+
this.logger.info('Applying fee juice setup');
|
|
169
|
+
this.feeJuiceContract = FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.wallet);
|
|
170
|
+
this.getGasBalanceFn = getBalancesFn('⛽', this.feeJuiceContract.methods.balance_of_public, this.aliceAddress, this.logger);
|
|
171
|
+
this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
|
|
172
|
+
aztecNode: this.context.aztecNodeService,
|
|
173
|
+
aztecNodeAdmin: this.context.aztecNodeService,
|
|
174
|
+
l1Client: this.context.deployL1ContractsValues.l1Client,
|
|
175
|
+
wallet: this.wallet,
|
|
176
|
+
logger: this.logger
|
|
184
177
|
});
|
|
185
178
|
}
|
|
186
|
-
async
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
const bananaCoin = this.bananaCoin;
|
|
191
|
-
const bananaFPC = await FPCContract.deploy(this.wallet, bananaCoin.address, this.fpcAdmin).send({
|
|
192
|
-
from: this.aliceAddress
|
|
193
|
-
}).deployed();
|
|
194
|
-
this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
|
|
195
|
-
await this.feeJuiceBridgeTestHarness.bridgeFromL1ToL2(bananaFPC.address, this.aliceAddress);
|
|
196
|
-
return {
|
|
197
|
-
bananaFPCAddress: bananaFPC.address,
|
|
198
|
-
feeJuiceAddress: feeJuiceContract.address,
|
|
199
|
-
l1FeeJuiceAddress: this.feeJuiceBridgeTestHarness.l1FeeJuiceAddress,
|
|
200
|
-
rollupAddress: context.deployL1ContractsValues.l1ContractAddresses.rollupAddress
|
|
201
|
-
};
|
|
202
|
-
}, async (data, context)=>{
|
|
203
|
-
const bananaFPC = await FPCContract.at(data.bananaFPCAddress, this.wallet);
|
|
204
|
-
this.bananaFPC = bananaFPC;
|
|
205
|
-
this.getCoinbaseBalance = async ()=>{
|
|
206
|
-
const l1Client = createExtendedL1Client(context.aztecNodeConfig.l1RpcUrls, MNEMONIC);
|
|
207
|
-
const gasL1 = getContract({
|
|
208
|
-
address: data.l1FeeJuiceAddress.toString(),
|
|
209
|
-
abi: TestERC20Abi,
|
|
210
|
-
client: l1Client
|
|
211
|
-
});
|
|
212
|
-
return await gasL1.read.balanceOf([
|
|
213
|
-
this.coinbase.toString()
|
|
214
|
-
]);
|
|
215
|
-
};
|
|
216
|
-
this.getCoinbaseSequencerRewards = async ()=>{
|
|
217
|
-
return await this.rollupContract.getSequencerRewards(this.coinbase);
|
|
218
|
-
};
|
|
219
|
-
this.getProverFee = async (blockNumber)=>{
|
|
220
|
-
const block = await this.aztecNode.getBlock(blockNumber);
|
|
221
|
-
// @todo @lherskind As we deal with #13601
|
|
222
|
-
// Right now the value is from `FeeLib.sol`
|
|
223
|
-
const L1_GAS_PER_EPOCH_VERIFIED = 1000000n;
|
|
224
|
-
// We round up
|
|
225
|
-
const mulDiv = (a, b, c)=>a * b / c + (a * b % c > 0n ? 1n : 0n);
|
|
226
|
-
const { baseFee } = await this.rollupContract.getL1FeesAt(block.header.globalVariables.timestamp);
|
|
227
|
-
const proverCost = mulDiv(mulDiv(L1_GAS_PER_EPOCH_VERIFIED, baseFee, await this.rollupContract.getEpochDuration()), 1n, await this.rollupContract.getManaTarget()) + await this.rollupContract.getProvingCostPerMana();
|
|
228
|
-
const price = await this.rollupContract.getFeeAssetPerEth();
|
|
229
|
-
const mana = block.header.totalManaUsed.toBigInt();
|
|
230
|
-
return mulDiv(mana * proverCost, price, 10n ** 9n);
|
|
231
|
-
};
|
|
179
|
+
async applyDeployBananaToken() {
|
|
180
|
+
this.logger.info('Applying deploy banana token setup');
|
|
181
|
+
const bananaCoin = await BananaCoin.deploy(this.wallet, this.aliceAddress, 'BC', 'BC', 18n).send({
|
|
182
|
+
from: this.aliceAddress
|
|
232
183
|
});
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
184
|
+
this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
|
|
185
|
+
this.bananaCoin = bananaCoin;
|
|
186
|
+
this.getBananaPublicBalanceFn = getBalancesFn('🍌.public', this.bananaCoin.methods.balance_of_public, this.aliceAddress, this.logger);
|
|
187
|
+
this.getBananaPrivateBalanceFn = getBalancesFn('🍌.private', this.bananaCoin.methods.balance_of_private, this.aliceAddress, this.logger);
|
|
188
|
+
}
|
|
189
|
+
async applyFPCSetup() {
|
|
190
|
+
this.logger.info('Applying FPC setup');
|
|
191
|
+
const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
|
|
192
|
+
expect((await this.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
|
|
193
|
+
const bananaCoin = this.bananaCoin;
|
|
194
|
+
const bananaFPC = await FPCContract.deploy(this.wallet, bananaCoin.address, this.fpcAdmin).send({
|
|
195
|
+
from: this.aliceAddress
|
|
245
196
|
});
|
|
197
|
+
this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
|
|
198
|
+
await this.feeJuiceBridgeTestHarness.bridgeFromL1ToL2(bananaFPC.address, this.aliceAddress);
|
|
199
|
+
this.bananaFPC = bananaFPC;
|
|
200
|
+
const l1FeeJuiceAddress = this.feeJuiceBridgeTestHarness.l1FeeJuiceAddress;
|
|
201
|
+
this.getCoinbaseBalance = async ()=>{
|
|
202
|
+
const l1Client = createExtendedL1Client(this.context.config.l1RpcUrls, MNEMONIC);
|
|
203
|
+
const gasL1 = getContract({
|
|
204
|
+
address: l1FeeJuiceAddress.toString(),
|
|
205
|
+
abi: TestERC20Abi,
|
|
206
|
+
client: l1Client
|
|
207
|
+
});
|
|
208
|
+
return await gasL1.read.balanceOf([
|
|
209
|
+
this.coinbase.toString()
|
|
210
|
+
]);
|
|
211
|
+
};
|
|
212
|
+
this.getCoinbaseSequencerRewards = async ()=>{
|
|
213
|
+
return await this.rollupContract.getSequencerRewards(this.coinbase);
|
|
214
|
+
};
|
|
215
|
+
this.getProverFee = async (blockNumber)=>{
|
|
216
|
+
const block = await this.aztecNode.getBlock(blockNumber);
|
|
217
|
+
// @todo @lherskind As we deal with #13601
|
|
218
|
+
// Right now the value is from `FeeLib.sol`
|
|
219
|
+
const L1_GAS_PER_EPOCH_VERIFIED = 1000000n;
|
|
220
|
+
// We round up
|
|
221
|
+
const mulDiv = (a, b, c)=>a * b / c + (a * b % c > 0n ? 1n : 0n);
|
|
222
|
+
const { baseFee } = await this.rollupContract.getL1FeesAt(block.header.globalVariables.timestamp);
|
|
223
|
+
const proverCost = mulDiv(mulDiv(L1_GAS_PER_EPOCH_VERIFIED, baseFee, BigInt(await this.rollupContract.getEpochDuration())), 1n, await this.rollupContract.getManaTarget()) + await this.rollupContract.getProvingCostPerMana();
|
|
224
|
+
const price = await this.rollupContract.getEthPerFeeAsset();
|
|
225
|
+
const mana = block.header.totalManaUsed.toBigInt();
|
|
226
|
+
return mulDiv(mana * proverCost, 10n ** 12n, price);
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
async applySponsoredFPCSetup() {
|
|
230
|
+
this.logger.info('Applying sponsored FPC setup');
|
|
231
|
+
const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
|
|
232
|
+
expect((await this.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
|
|
233
|
+
const sponsoredFPCInstance = await setupSponsoredFPC(this.wallet);
|
|
234
|
+
this.logger.info(`SponsoredFPC at ${sponsoredFPCInstance.address}`);
|
|
235
|
+
this.sponsoredFPC = SponsoredFPCContract.at(sponsoredFPCInstance.address, this.wallet);
|
|
246
236
|
}
|
|
247
237
|
async applyFundAliceWithBananas() {
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
}, ()=>Promise.resolve());
|
|
238
|
+
this.logger.info('Applying fund Alice with bananas setup');
|
|
239
|
+
await this.mintPrivateBananas(this.ALICE_INITIAL_BANANAS, this.aliceAddress);
|
|
240
|
+
await this.bananaCoin.methods.mint_to_public(this.aliceAddress, this.ALICE_INITIAL_BANANAS).send({
|
|
241
|
+
from: this.aliceAddress
|
|
242
|
+
});
|
|
254
243
|
}
|
|
255
244
|
async applyFundAliceWithPrivateBananas() {
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
}, ()=>Promise.resolve());
|
|
245
|
+
this.logger.info('Applying fund Alice with private bananas setup');
|
|
246
|
+
await this.mintPrivateBananas(this.ALICE_INITIAL_BANANAS, this.aliceAddress);
|
|
259
247
|
}
|
|
260
248
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
2
|
-
import type { L2Block } from '@aztec/aztec.js/block';
|
|
3
2
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
4
3
|
import { BatchedBlob, Blob } from '@aztec/blob-lib';
|
|
4
|
+
import { L2Block } from '@aztec/stdlib/block';
|
|
5
5
|
/**
|
|
6
6
|
* Creates a json object that can be used to test the solidity contract.
|
|
7
7
|
* The json object must be put into
|
|
8
8
|
*/
|
|
9
9
|
export declare function writeJson(fileName: string, block: L2Block, l1ToL2Content: Fr[], blobs: Blob[], batchedBlob: BatchedBlob, recipientAddress: AztecAddress, deployerAddress: `0x${string}`): Promise<void>;
|
|
10
|
-
//# sourceMappingURL=
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVfanNvbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2UyZV9sMV9wdWJsaXNoZXIvd3JpdGVfanNvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUE2RCxNQUFNLGlCQUFpQixDQUFDO0FBRS9HLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQU85Qzs7O0dBR0c7QUFDSCx3QkFBc0IsU0FBUyxDQUM3QixRQUFRLEVBQUUsTUFBTSxFQUNoQixLQUFLLEVBQUUsT0FBTyxFQUNkLGFBQWEsRUFBRSxFQUFFLEVBQUUsRUFDbkIsS0FBSyxFQUFFLElBQUksRUFBRSxFQUNiLFdBQVcsRUFBRSxXQUFXLEVBQ3hCLGdCQUFnQixFQUFFLFlBQVksRUFDOUIsZUFBZSxFQUFFLEtBQUssTUFBTSxFQUFFLEdBQzdCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0EwRGYifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write_json.d.ts","sourceRoot":"","sources":["../../src/e2e_l1_publisher/write_json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"write_json.d.ts","sourceRoot":"","sources":["../../src/e2e_l1_publisher/write_json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,IAAI,EAA6D,MAAM,iBAAiB,CAAC;AAE/G,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAO9C;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,EAAE,EAAE,EACnB,KAAK,EAAE,IAAI,EAAE,EACb,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,YAAY,EAC9B,eAAe,EAAE,KAAK,MAAM,EAAE,GAC7B,OAAO,CAAC,IAAI,CAAC,CA0Df"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { getPrefixedEthBlobCommitments } from '@aztec/blob-lib';
|
|
1
|
+
import { getEthBlobEvaluationInputs, getPrefixedEthBlobCommitments } from '@aztec/blob-lib';
|
|
2
|
+
import { CheckpointHeader } from '@aztec/stdlib/rollup';
|
|
2
3
|
import { writeFile } from 'fs/promises';
|
|
3
4
|
const AZTEC_GENERATE_TEST_DATA = !!process.env.AZTEC_GENERATE_TEST_DATA;
|
|
4
5
|
/**
|
|
@@ -14,6 +15,11 @@ const AZTEC_GENERATE_TEST_DATA = !!process.env.AZTEC_GENERATE_TEST_DATA;
|
|
|
14
15
|
const buffer = Buffer.isBuffer(value) ? value : value.toBuffer();
|
|
15
16
|
return `0x${buffer.toString('hex').padStart(size, '0')}`;
|
|
16
17
|
};
|
|
18
|
+
// Create a checkpoint header for this block
|
|
19
|
+
const checkpointHeader = CheckpointHeader.random({
|
|
20
|
+
slotNumber: block.slot,
|
|
21
|
+
timestamp: block.timestamp
|
|
22
|
+
});
|
|
17
23
|
const jsonObject = {
|
|
18
24
|
populate: {
|
|
19
25
|
l1ToL2Content: l1ToL2Content.map((value)=>asHex(value)),
|
|
@@ -23,32 +29,31 @@ const AZTEC_GENERATE_TEST_DATA = !!process.env.AZTEC_GENERATE_TEST_DATA;
|
|
|
23
29
|
messages: {
|
|
24
30
|
l2ToL1Messages: block.body.txEffects.flatMap((txEffect)=>txEffect.l2ToL1Msgs).map((value)=>asHex(value))
|
|
25
31
|
},
|
|
26
|
-
|
|
32
|
+
checkpoint: {
|
|
27
33
|
// The json formatting in forge is a bit brittle, so we convert Fr to a number in the few values below.
|
|
28
34
|
// This should not be a problem for testing as long as the values are not larger than u32.
|
|
29
35
|
archive: asHex(block.archive.root),
|
|
30
36
|
blobCommitments: getPrefixedEthBlobCommitments(blobs),
|
|
31
|
-
batchedBlobInputs:
|
|
32
|
-
|
|
37
|
+
batchedBlobInputs: getEthBlobEvaluationInputs(batchedBlob),
|
|
38
|
+
checkpointNumber: block.number,
|
|
33
39
|
body: `0x${block.body.toBuffer().toString('hex')}`,
|
|
34
40
|
header: {
|
|
35
|
-
lastArchiveRoot: asHex(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
feeRecipient: asHex(block.header.globalVariables.feeRecipient),
|
|
41
|
+
lastArchiveRoot: asHex(checkpointHeader.lastArchiveRoot),
|
|
42
|
+
blockHeadersHash: asHex(checkpointHeader.blockHeadersHash),
|
|
43
|
+
blobsHash: asHex(checkpointHeader.blobsHash),
|
|
44
|
+
inHash: asHex(checkpointHeader.inHash),
|
|
45
|
+
outHash: asHex(checkpointHeader.epochOutHash),
|
|
46
|
+
slotNumber: Number(checkpointHeader.slotNumber),
|
|
47
|
+
timestamp: Number(checkpointHeader.timestamp),
|
|
48
|
+
coinbase: asHex(checkpointHeader.coinbase, 40),
|
|
49
|
+
feeRecipient: asHex(checkpointHeader.feeRecipient),
|
|
45
50
|
gasFees: {
|
|
46
|
-
feePerDaGas: Number(
|
|
47
|
-
feePerL2Gas: Number(
|
|
51
|
+
feePerDaGas: Number(checkpointHeader.gasFees.feePerDaGas),
|
|
52
|
+
feePerL2Gas: Number(checkpointHeader.gasFees.feePerL2Gas)
|
|
48
53
|
},
|
|
49
|
-
totalManaUsed:
|
|
54
|
+
totalManaUsed: checkpointHeader.totalManaUsed.toNumber()
|
|
50
55
|
},
|
|
51
|
-
headerHash: asHex(
|
|
56
|
+
headerHash: asHex(checkpointHeader.hash()),
|
|
52
57
|
numTxs: block.body.txEffects.length
|
|
53
58
|
}
|
|
54
59
|
};
|
|
@@ -9,4 +9,4 @@ export declare function createKeyFile4(fileName: string, validator1Address: EthA
|
|
|
9
9
|
export declare function createKeyFile5(fileName: string, proverAddress: EthAddress, remoteSignerUrl: string): Promise<void>;
|
|
10
10
|
export declare function createKeyFile6(fileName: string, mnemonic: string, validator1Index: number, coinbase: EthAddress, feeRecipient: AztecAddress): Promise<void>;
|
|
11
11
|
export declare function addressForPrivateKey(privateKey: EthPrivateKey): EthAddress;
|
|
12
|
-
//# sourceMappingURL=
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfbXVsdGlfdmFsaWRhdG9yL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFXMUQsd0JBQWdCLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxzR0EwRXBHO0FBR0Qsd0JBQXNCLGNBQWMsQ0FDbEMsUUFBUSxFQUFFLE1BQU0sRUFDaEIsUUFBUSxFQUFFLE1BQU0sRUFDaEIsY0FBYyxFQUFFLE1BQU0sRUFDdEIsYUFBYSxFQUFFLGFBQWEsRUFDNUIsYUFBYSxFQUFFLGFBQWEsRUFDNUIsUUFBUSxFQUFFLFVBQVUsRUFDcEIsWUFBWSxFQUFFLFlBQVksaUJBbUIzQjtBQUVELHdCQUFzQixjQUFjLENBQ2xDLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLFlBQVksRUFBRSxhQUFhLEVBQzNCLGlCQUFpQixFQUFFLE1BQU0sRUFDekIsZUFBZSxFQUFFLE1BQU0sRUFDdkIsUUFBUSxFQUFFLFVBQVUsRUFDcEIsWUFBWSxFQUFFLFlBQVksaUJBbUIzQjtBQUVELHdCQUFzQixjQUFjLENBQ2xDLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLGdCQUFnQixFQUFFLFVBQVUsRUFDNUIsYUFBYSxFQUFFLGFBQWEsRUFDNUIsYUFBYSxFQUFFLGFBQWEsRUFDNUIsUUFBUSxFQUFFLFVBQVUsRUFDcEIsZUFBZSxFQUFFLE1BQU0sRUFDdkIsWUFBWSxFQUFFLFlBQVksaUJBaUIzQjtBQUVELHdCQUFzQixjQUFjLENBQ2xDLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLGlCQUFpQixFQUFFLFVBQVUsRUFDN0IsaUJBQWlCLEVBQUUsVUFBVSxFQUM3QixlQUFlLEVBQUUsTUFBTSxFQUN2QixhQUFhLEVBQUUsYUFBYSxFQUM1QixRQUFRLEVBQUUsTUFBTSxFQUNoQixhQUFhLEVBQUUsYUFBYSxFQUM1QixTQUFTLEVBQUUsVUFBVSxFQUNyQixTQUFTLEVBQUUsVUFBVSxFQUNyQixlQUFlLEVBQUUsTUFBTSxFQUN2QixhQUFhLEVBQUUsWUFBWSxFQUMzQixhQUFhLEVBQUUsWUFBWSxpQkE0QjVCO0FBRUQsd0JBQXNCLGNBQWMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBY3hHO0FBRUQsd0JBQXNCLGNBQWMsQ0FDbEMsUUFBUSxFQUFFLE1BQU0sRUFDaEIsUUFBUSxFQUFFLE1BQU0sRUFDaEIsZUFBZSxFQUFFLE1BQU0sRUFDdkIsUUFBUSxFQUFFLFVBQVUsRUFDcEIsWUFBWSxFQUFFLFlBQVksaUJBa0IzQjtBQUVELHdCQUFnQixvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsYUFBYSxHQUFHLFVBQVUsQ0FFMUUifQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getAddressFromPrivateKey } from '@aztec/ethereum';
|
|
1
|
+
import { getAddressFromPrivateKey } from '@aztec/ethereum/account';
|
|
2
2
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
3
|
import { writeFile } from 'fs/promises';
|
|
4
4
|
import { createServer } from 'http';
|
|
@@ -4,10 +4,10 @@ import type { AztecNode } from '@aztec/aztec.js/node';
|
|
|
4
4
|
import type { Wallet } from '@aztec/aztec.js/wallet';
|
|
5
5
|
import { ChildContract } from '@aztec/noir-test-contracts.js/Child';
|
|
6
6
|
import { ParentContract } from '@aztec/noir-test-contracts.js/Parent';
|
|
7
|
-
import { type
|
|
7
|
+
import { type EndToEndContext } from '../fixtures/setup.js';
|
|
8
8
|
export declare class NestedContractTest {
|
|
9
9
|
private numberOfAccounts;
|
|
10
|
-
|
|
10
|
+
context: EndToEndContext;
|
|
11
11
|
logger: Logger;
|
|
12
12
|
wallet: Wallet;
|
|
13
13
|
defaultAccountAddress: AztecAddress;
|
|
@@ -16,14 +16,11 @@ export declare class NestedContractTest {
|
|
|
16
16
|
childContract: ChildContract;
|
|
17
17
|
constructor(testName: string, numberOfAccounts?: number);
|
|
18
18
|
/**
|
|
19
|
-
*
|
|
20
|
-
* 1. Add 3 accounts.
|
|
21
|
-
* 2. Publicly deploy accounts
|
|
19
|
+
* Applies base setup by deploying accounts and publicly deploying them.
|
|
22
20
|
*/
|
|
23
|
-
|
|
21
|
+
applyBaseSetup(): Promise<void>;
|
|
24
22
|
setup(): Promise<void>;
|
|
25
23
|
teardown(): Promise<void>;
|
|
26
|
-
|
|
27
|
-
applyManualSnapshots(): Promise<void>;
|
|
24
|
+
applyManual(): Promise<void>;
|
|
28
25
|
}
|
|
29
|
-
//# sourceMappingURL=
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVzdGVkX2NvbnRyYWN0X3Rlc3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfbmVzdGVkX2NvbnRyYWN0L25lc3RlZF9jb250cmFjdF90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV0RSxPQUFPLEVBQ0wsS0FBSyxlQUFlLEVBS3JCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIscUJBQWEsa0JBQWtCO0lBWTNCLE9BQU8sQ0FBQyxnQkFBZ0I7SUFYMUIsT0FBTyxFQUFHLGVBQWUsQ0FBQztJQUMxQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsTUFBTSxFQUFHLE1BQU0sQ0FBQztJQUNoQixxQkFBcUIsRUFBRyxZQUFZLENBQUM7SUFDckMsU0FBUyxFQUFHLFNBQVMsQ0FBQztJQUV0QixjQUFjLEVBQUcsY0FBYyxDQUFDO0lBQ2hDLGFBQWEsRUFBRyxhQUFhLENBQUM7SUFFOUIsWUFDRSxRQUFRLEVBQUUsTUFBTSxFQUNSLGdCQUFnQixTQUFJLEVBRzdCO0lBRUQ7O09BRUc7SUFDRyxjQUFjLGtCQWVuQjtJQUVLLEtBQUssa0JBT1Y7SUFFSyxRQUFRLGtCQUViO0lBRUssV0FBVyxrQkFNaEI7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nested_contract_test.d.ts","sourceRoot":"","sources":["../../src/e2e_nested_contract/nested_contract_test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEtE,OAAO,
|
|
1
|
+
{"version":3,"file":"nested_contract_test.d.ts","sourceRoot":"","sources":["../../src/e2e_nested_contract/nested_contract_test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEtE,OAAO,EACL,KAAK,eAAe,EAKrB,MAAM,sBAAsB,CAAC;AAE9B,qBAAa,kBAAkB;IAY3B,OAAO,CAAC,gBAAgB;IAX1B,OAAO,EAAG,eAAe,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAG,MAAM,CAAC;IAChB,qBAAqB,EAAG,YAAY,CAAC;IACrC,SAAS,EAAG,SAAS,CAAC;IAEtB,cAAc,EAAG,cAAc,CAAC;IAChC,aAAa,EAAG,aAAa,CAAC;IAE9B,YACE,QAAQ,EAAE,MAAM,EACR,gBAAgB,SAAI,EAG7B;IAED;;OAEG;IACG,cAAc,kBAenB;IAEK,KAAK,kBAOV;IAEK,QAAQ,kBAEb;IAEK,WAAW,kBAMhB;CACF"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { createLogger } from '@aztec/aztec.js/log';
|
|
2
2
|
import { ChildContract } from '@aztec/noir-test-contracts.js/Child';
|
|
3
3
|
import { ParentContract } from '@aztec/noir-test-contracts.js/Parent';
|
|
4
|
-
import {
|
|
5
|
-
const { E2E_DATA_PATH: dataPath } = process.env;
|
|
4
|
+
import { deployAccounts, publicDeployAccounts, setup, teardown as teardownSubsystems } from '../fixtures/setup.js';
|
|
6
5
|
export class NestedContractTest {
|
|
7
6
|
numberOfAccounts;
|
|
8
|
-
|
|
7
|
+
context;
|
|
9
8
|
logger;
|
|
10
9
|
wallet;
|
|
11
10
|
defaultAccountAddress;
|
|
@@ -14,50 +13,44 @@ export class NestedContractTest {
|
|
|
14
13
|
childContract;
|
|
15
14
|
constructor(testName, numberOfAccounts = 1){
|
|
16
15
|
this.numberOfAccounts = numberOfAccounts;
|
|
17
|
-
this.snapshot = (name, apply, restore = ()=>Promise.resolve())=>this.snapshotManager.snapshot(name, apply, restore);
|
|
18
16
|
this.logger = createLogger(`e2e:e2e_nested_contract:${testName}`);
|
|
19
|
-
this.snapshotManager = createSnapshotManager(`e2e_nested_contract/${testName}-${numberOfAccounts}`, dataPath);
|
|
20
17
|
}
|
|
21
18
|
/**
|
|
22
|
-
*
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
this.
|
|
28
|
-
[{ address: this.defaultAccountAddress }] = deployedAccounts;
|
|
29
|
-
this.aztecNode = aztecNode;
|
|
30
|
-
return Promise.resolve();
|
|
31
|
-
});
|
|
32
|
-
await this.snapshotManager.snapshot('public_deploy', async ()=>{}, async ()=>{
|
|
33
|
-
this.logger.verbose(`Public deploy accounts...`);
|
|
34
|
-
await publicDeployAccounts(this.wallet, [
|
|
35
|
-
this.defaultAccountAddress
|
|
36
|
-
]);
|
|
19
|
+
* Applies base setup by deploying accounts and publicly deploying them.
|
|
20
|
+
*/ async applyBaseSetup() {
|
|
21
|
+
this.logger.info('Deploying accounts');
|
|
22
|
+
const { deployedAccounts } = await deployAccounts(this.numberOfAccounts, this.logger)({
|
|
23
|
+
wallet: this.context.wallet,
|
|
24
|
+
initialFundedAccounts: this.context.initialFundedAccounts
|
|
37
25
|
});
|
|
26
|
+
this.wallet = this.context.wallet;
|
|
27
|
+
[{ address: this.defaultAccountAddress }] = deployedAccounts;
|
|
28
|
+
this.aztecNode = this.context.aztecNodeService;
|
|
29
|
+
this.logger.info('Public deploy accounts');
|
|
30
|
+
await publicDeployAccounts(this.wallet, [
|
|
31
|
+
this.defaultAccountAddress
|
|
32
|
+
]);
|
|
38
33
|
}
|
|
39
34
|
async setup() {
|
|
40
|
-
|
|
35
|
+
this.logger.info('Setting up fresh subsystems');
|
|
36
|
+
this.context = await setup(0, {
|
|
37
|
+
fundSponsoredFPC: true,
|
|
38
|
+
skipAccountDeployment: true
|
|
39
|
+
});
|
|
40
|
+
await this.applyBaseSetup();
|
|
41
41
|
}
|
|
42
42
|
async teardown() {
|
|
43
|
-
await this.
|
|
43
|
+
await teardownSubsystems(this.context);
|
|
44
44
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
await this.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
from: this.defaultAccountAddress
|
|
53
|
-
}).deployed();
|
|
54
|
-
return {
|
|
55
|
-
parentContractAddress: parentContract.address,
|
|
56
|
-
childContractAddress: childContract.address
|
|
57
|
-
};
|
|
58
|
-
}, async ({ parentContractAddress, childContractAddress })=>{
|
|
59
|
-
this.parentContract = await ParentContract.at(parentContractAddress, this.wallet);
|
|
60
|
-
this.childContract = await ChildContract.at(childContractAddress, this.wallet);
|
|
45
|
+
async applyManual() {
|
|
46
|
+
this.logger.info('Deploying parent and child contracts');
|
|
47
|
+
const parentContract = await ParentContract.deploy(this.wallet).send({
|
|
48
|
+
from: this.defaultAccountAddress
|
|
49
|
+
});
|
|
50
|
+
const childContract = await ChildContract.deploy(this.wallet).send({
|
|
51
|
+
from: this.defaultAccountAddress
|
|
61
52
|
});
|
|
53
|
+
this.parentContract = parentContract;
|
|
54
|
+
this.childContract = childContract;
|
|
62
55
|
}
|
|
63
56
|
}
|