@aztec/end-to-end 0.0.1-commit.b655e406 → 0.0.1-commit.c31f2472
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 +17 -9
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +48 -23
- 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 +4 -3
- package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
- package/dest/e2e_l1_publisher/write_json.js +18 -19
- 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 +121 -110
- 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 +15 -21
- 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 +101 -109
- 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 +218 -0
- package/dest/fixtures/setup.d.ts.map +1 -0
- package/dest/fixtures/setup.js +695 -0
- package/dest/fixtures/setup_p2p_test.d.ts +6 -7
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +41 -28
- 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 +88 -0
- package/dest/spartan/tx_metrics.d.ts.map +1 -0
- package/dest/spartan/tx_metrics.js +422 -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 +96 -56
- 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 +20 -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 +181 -180
- package/src/e2e_p2p/shared.ts +35 -29
- package/src/e2e_token_contract/token_contract_test.ts +103 -118
- package/src/fixtures/e2e_prover_test.ts +112 -150
- 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 +1017 -0
- package/src/fixtures/setup_p2p_test.ts +38 -29
- 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 +376 -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,7 +1,12 @@
|
|
|
1
1
|
import { EthAddress } from '@aztec/aztec.js/addresses';
|
|
2
2
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
3
|
-
import {
|
|
3
|
+
import { getL1ContractsConfigEnvVars } from '@aztec/ethereum/config';
|
|
4
|
+
import { GSEContract, RollupContract } from '@aztec/ethereum/contracts';
|
|
5
|
+
import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
|
|
6
|
+
import { MultiAdderArtifact } from '@aztec/ethereum/l1-artifacts';
|
|
7
|
+
import { createL1TxUtilsFromViemWallet } from '@aztec/ethereum/l1-tx-utils';
|
|
4
8
|
import { ChainMonitor } from '@aztec/ethereum/test';
|
|
9
|
+
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
5
10
|
import { SecretValue } from '@aztec/foundation/config';
|
|
6
11
|
import { createLogger } from '@aztec/foundation/log';
|
|
7
12
|
import { retryUntil } from '@aztec/foundation/retry';
|
|
@@ -15,9 +20,8 @@ import { getGenesisValues } from '@aztec/world-state/testing';
|
|
|
15
20
|
import getPort from 'get-port';
|
|
16
21
|
import { getAddress, getContract } from 'viem';
|
|
17
22
|
import { privateKeyToAccount } from 'viem/accounts';
|
|
23
|
+
import { deployAccounts, getPrivateKeyFromIndex, getSponsoredFPCAddress, setup, teardown } from '../fixtures/setup.js';
|
|
18
24
|
import { ATTESTER_PRIVATE_KEYS_START_INDEX, createValidatorConfig, generatePrivateKeys } from '../fixtures/setup_p2p_test.js';
|
|
19
|
-
import { createSnapshotManager, deployAccounts } from '../fixtures/snapshot_manager.js';
|
|
20
|
-
import { getPrivateKeyFromIndex, getSponsoredFPCAddress } from '../fixtures/utils.js';
|
|
21
25
|
import { getEndToEndTestTelemetryClient } from '../fixtures/with_telemetry_utils.js';
|
|
22
26
|
// Use a fixed bootstrap node private key so that we can re-use the same snapshot and the nodes can find each other
|
|
23
27
|
const BOOTSTRAP_NODE_PRIVATE_KEY = '080212208f988fc0899e4a73a5aee4d271a5f20670603a756ad8d84f2c94263a6427c591';
|
|
@@ -35,7 +39,7 @@ export class P2PNetworkTest {
|
|
|
35
39
|
numberOfValidators;
|
|
36
40
|
numberOfNodes;
|
|
37
41
|
metricsPort;
|
|
38
|
-
|
|
42
|
+
context;
|
|
39
43
|
baseAccountPrivateKey;
|
|
40
44
|
baseAccount;
|
|
41
45
|
logger;
|
|
@@ -52,8 +56,11 @@ export class P2PNetworkTest {
|
|
|
52
56
|
defaultAccountAddress;
|
|
53
57
|
spamContract;
|
|
54
58
|
bootstrapNode;
|
|
59
|
+
// Store setup options for use in setup()
|
|
60
|
+
setupOptions;
|
|
61
|
+
deployL1ContractsArgs;
|
|
55
62
|
constructor(testName, bootstrapNodeEnr, bootNodePort, numberOfValidators, initialValidatorConfig, numberOfNodes = 0, // If set enable metrics collection
|
|
56
|
-
metricsPort, startProverNode
|
|
63
|
+
metricsPort, startProverNode){
|
|
57
64
|
this.testName = testName;
|
|
58
65
|
this.bootstrapNodeEnr = bootstrapNodeEnr;
|
|
59
66
|
this.bootNodePort = bootNodePort;
|
|
@@ -73,7 +80,8 @@ export class P2PNetworkTest {
|
|
|
73
80
|
this.attesterPrivateKeys = generatePrivateKeys(ATTESTER_PRIVATE_KEYS_START_INDEX + numberOfNodes, numberOfValidators);
|
|
74
81
|
this.attesterPublicKeys = this.attesterPrivateKeys.map((privateKey)=>privateKeyToAccount(privateKey).address);
|
|
75
82
|
const zkPassportParams = ZkPassportProofParams.random();
|
|
76
|
-
|
|
83
|
+
// Store setup options for later use
|
|
84
|
+
this.setupOptions = {
|
|
77
85
|
...initialValidatorConfig,
|
|
78
86
|
ethereumSlotDuration: initialValidatorConfig.ethereumSlotDuration ?? l1ContractsConfig.ethereumSlotDuration,
|
|
79
87
|
aztecEpochDuration: initialValidatorConfig.aztecEpochDuration ?? l1ContractsConfig.aztecEpochDuration,
|
|
@@ -82,11 +90,12 @@ export class P2PNetworkTest {
|
|
|
82
90
|
slashingRoundSizeInEpochs: initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
|
|
83
91
|
slasherFlavor: initialValidatorConfig.slasherFlavor ?? 'tally',
|
|
84
92
|
aztecTargetCommitteeSize: numberOfValidators,
|
|
85
|
-
salt: 420,
|
|
86
93
|
metricsPort: metricsPort,
|
|
87
94
|
numberOfInitialFundedAccounts: 2,
|
|
88
|
-
startProverNode
|
|
89
|
-
|
|
95
|
+
startProverNode,
|
|
96
|
+
walletMinFeePadding: 2.0
|
|
97
|
+
};
|
|
98
|
+
this.deployL1ContractsArgs = {
|
|
90
99
|
...initialValidatorConfig,
|
|
91
100
|
aztecEpochDuration: initialValidatorConfig.aztecEpochDuration ?? l1ContractsConfig.aztecEpochDuration,
|
|
92
101
|
slashingRoundSizeInEpochs: initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
|
|
@@ -97,32 +106,30 @@ export class P2PNetworkTest {
|
|
|
97
106
|
aztecTargetCommitteeSize: numberOfValidators,
|
|
98
107
|
initialValidators: [],
|
|
99
108
|
zkPassportArgs: {
|
|
100
|
-
mockZkPassportVerifier,
|
|
101
109
|
zkPassportDomain: zkPassportParams.domain,
|
|
102
110
|
zkPassportScope: zkPassportParams.scope
|
|
103
111
|
}
|
|
104
|
-
}
|
|
112
|
+
};
|
|
105
113
|
}
|
|
106
|
-
static async create({ testName, numberOfNodes, numberOfValidators, basePort, metricsPort, initialConfig, startProverNode
|
|
114
|
+
static async create({ testName, numberOfNodes, numberOfValidators, basePort, metricsPort, initialConfig, startProverNode }) {
|
|
107
115
|
const port = basePort || await getPort();
|
|
108
116
|
const bootstrapNodeENR = await getBootstrapNodeEnr(BOOTSTRAP_NODE_PRIVATE_KEY, port);
|
|
109
117
|
const bootstrapNodeEnr = bootstrapNodeENR.encodeTxt();
|
|
110
118
|
const initialValidatorConfig = await createValidatorConfig(initialConfig ?? {}, bootstrapNodeEnr);
|
|
111
|
-
return new P2PNetworkTest(testName, bootstrapNodeEnr, port, numberOfValidators, initialValidatorConfig, numberOfNodes, metricsPort, startProverNode
|
|
119
|
+
return new P2PNetworkTest(testName, bootstrapNodeEnr, port, numberOfValidators, initialValidatorConfig, numberOfNodes, metricsPort, startProverNode);
|
|
112
120
|
}
|
|
113
121
|
get fundedAccount() {
|
|
114
122
|
if (!this.deployedAccounts[0]) {
|
|
115
|
-
throw new Error('Call
|
|
123
|
+
throw new Error('Call setupAccount to create a funded account.');
|
|
116
124
|
}
|
|
117
125
|
return this.deployedAccounts[0];
|
|
118
126
|
}
|
|
119
127
|
async addBootstrapNode() {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
});
|
|
128
|
+
this.logger.info('Adding bootstrap node');
|
|
129
|
+
const telemetry = await getEndToEndTestTelemetryClient(this.metricsPort);
|
|
130
|
+
this.bootstrapNode = await createBootstrapNodeFromPrivateKey(BOOTSTRAP_NODE_PRIVATE_KEY, this.bootNodePort, telemetry, this.context.config);
|
|
131
|
+
// Overwrite enr with updated info
|
|
132
|
+
this.bootstrapNodeEnr = this.bootstrapNode.getENR().encodeTxt();
|
|
126
133
|
}
|
|
127
134
|
getValidators() {
|
|
128
135
|
const validators = [];
|
|
@@ -140,100 +147,92 @@ export class P2PNetworkTest {
|
|
|
140
147
|
validators
|
|
141
148
|
};
|
|
142
149
|
}
|
|
143
|
-
async
|
|
150
|
+
async applyBaseSetup() {
|
|
144
151
|
await this.addBootstrapNode();
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
};
|
|
152
|
+
this.logger.info('Adding validators');
|
|
153
|
+
const rollup = getContract({
|
|
154
|
+
address: this.context.deployL1ContractsValues.l1ContractAddresses.rollupAddress.toString(),
|
|
155
|
+
abi: RollupAbi,
|
|
156
|
+
client: this.context.deployL1ContractsValues.l1Client
|
|
157
|
+
});
|
|
158
|
+
this.logger.info(`Adding ${this.numberOfValidators} validators`);
|
|
159
|
+
const stakingAsset = getContract({
|
|
160
|
+
address: this.context.deployL1ContractsValues.l1ContractAddresses.stakingAssetAddress.toString(),
|
|
161
|
+
abi: TestERC20Abi,
|
|
162
|
+
client: this.context.deployL1ContractsValues.l1Client
|
|
163
|
+
});
|
|
164
|
+
const { address: multiAdderAddress } = await deployL1Contract(this.context.deployL1ContractsValues.l1Client, MultiAdderArtifact.contractAbi, MultiAdderArtifact.contractBytecode, [
|
|
165
|
+
rollup.address,
|
|
166
|
+
this.context.deployL1ContractsValues.l1Client.account.address
|
|
167
|
+
]);
|
|
168
|
+
const multiAdder = getContract({
|
|
169
|
+
address: multiAdderAddress.toString(),
|
|
170
|
+
abi: MultiAdderArtifact.contractAbi,
|
|
171
|
+
client: this.context.deployL1ContractsValues.l1Client
|
|
172
|
+
});
|
|
173
|
+
const stakeNeeded = await rollup.read.getActivationThreshold() * BigInt(this.numberOfValidators);
|
|
174
|
+
await Promise.all([
|
|
175
|
+
await stakingAsset.write.mint([
|
|
176
|
+
multiAdder.address,
|
|
177
|
+
stakeNeeded
|
|
178
|
+
], {})
|
|
179
|
+
].map((txHash)=>this.context.deployL1ContractsValues.l1Client.waitForTransactionReceipt({
|
|
180
|
+
hash: txHash
|
|
181
|
+
})));
|
|
182
|
+
const { validators } = this.getValidators();
|
|
183
|
+
this.validators = validators;
|
|
184
|
+
const gseAddress = this.context.deployL1ContractsValues.l1ContractAddresses.gseAddress;
|
|
185
|
+
if (!gseAddress) {
|
|
186
|
+
throw new Error('GSE contract not deployed');
|
|
187
|
+
}
|
|
188
|
+
const gseContract = new GSEContract(this.context.deployL1ContractsValues.l1Client, gseAddress.toString());
|
|
189
|
+
const makeValidatorTuples = async (validator)=>{
|
|
190
|
+
const registrationTuple = await gseContract.makeRegistrationTuple(validator.bn254SecretKey.getValue());
|
|
191
|
+
return {
|
|
192
|
+
attester: validator.attester.toString(),
|
|
193
|
+
withdrawer: validator.withdrawer.toString(),
|
|
194
|
+
...registrationTuple
|
|
189
195
|
};
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
await cheatCodes.rollup.advanceToEpoch(await cheatCodes.rollup.getEpoch() + await rollup.read.getLagInEpochs() + 1n);
|
|
197
|
-
// Send and await a tx to make sure we mine a block for the warp to correctly progress.
|
|
198
|
-
await this._sendDummyTx(deployL1ContractsValues.l1Client);
|
|
196
|
+
};
|
|
197
|
+
const validatorTuples = await Promise.all(validators.map(makeValidatorTuples));
|
|
198
|
+
await this.context.deployL1ContractsValues.l1Client.waitForTransactionReceipt({
|
|
199
|
+
hash: await multiAdder.write.addValidators([
|
|
200
|
+
validatorTuples
|
|
201
|
+
])
|
|
199
202
|
});
|
|
203
|
+
await this.context.cheatCodes.rollup.advanceToEpoch(EpochNumber.fromBigInt(BigInt(await this.context.cheatCodes.rollup.getEpoch()) + await rollup.read.getLagInEpochsForValidatorSet() + 1n));
|
|
204
|
+
// Send and await a tx to make sure we mine a block for the warp to correctly progress.
|
|
205
|
+
await this._sendDummyTx(this.context.deployL1ContractsValues.l1Client);
|
|
200
206
|
}
|
|
201
207
|
async setupAccount() {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
this.
|
|
206
|
-
return Promise.resolve();
|
|
208
|
+
this.logger.info('Setting up account');
|
|
209
|
+
const { deployedAccounts } = await deployAccounts(1, this.logger)({
|
|
210
|
+
wallet: this.context.wallet,
|
|
211
|
+
initialFundedAccounts: this.context.initialFundedAccounts
|
|
207
212
|
});
|
|
213
|
+
this.deployedAccounts = deployedAccounts;
|
|
214
|
+
[{ address: this.defaultAccountAddress }] = deployedAccounts;
|
|
215
|
+
this.wallet = this.context.wallet;
|
|
208
216
|
}
|
|
209
217
|
async deploySpamContract() {
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
}).deployed();
|
|
217
|
-
return {
|
|
218
|
-
contractAddress: spamContract.address
|
|
219
|
-
};
|
|
220
|
-
}, async ({ contractAddress })=>{
|
|
221
|
-
if (!this.wallet) {
|
|
222
|
-
throw new Error('Call snapshot t.setupAccount before deploying account contract');
|
|
223
|
-
}
|
|
224
|
-
this.spamContract = await SpamContract.at(contractAddress, this.wallet);
|
|
218
|
+
this.logger.info('Deploying spam contract');
|
|
219
|
+
if (!this.wallet) {
|
|
220
|
+
throw new Error('Call setupAccount before deploying spam contract');
|
|
221
|
+
}
|
|
222
|
+
const spamContract = await SpamContract.deploy(this.wallet).send({
|
|
223
|
+
from: this.defaultAccountAddress
|
|
225
224
|
});
|
|
225
|
+
this.spamContract = spamContract;
|
|
226
226
|
}
|
|
227
227
|
async removeInitialNode() {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
});
|
|
234
|
-
dateProvider.setTime(Number(block.timestamp) * 1000);
|
|
235
|
-
await aztecNode.stop();
|
|
228
|
+
this.logger.info('Removing initial node');
|
|
229
|
+
// Send and await a tx to make sure we mine a block for the warp to correctly progress.
|
|
230
|
+
const { receipt } = await this._sendDummyTx(this.context.deployL1ContractsValues.l1Client);
|
|
231
|
+
const block = await this.context.deployL1ContractsValues.l1Client.getBlock({
|
|
232
|
+
blockNumber: receipt.blockNumber
|
|
236
233
|
});
|
|
234
|
+
this.context.dateProvider.setTime(Number(block.timestamp) * 1000);
|
|
235
|
+
await this.context.aztecNodeService.stop();
|
|
237
236
|
}
|
|
238
237
|
async sendDummyTx() {
|
|
239
238
|
return await this._sendDummyTx(this.ctx.deployL1ContractsValues.l1Client);
|
|
@@ -246,17 +245,29 @@ export class P2PNetworkTest {
|
|
|
246
245
|
});
|
|
247
246
|
}
|
|
248
247
|
async setup() {
|
|
249
|
-
this.
|
|
248
|
+
this.logger.info('Setting up subsystems from fresh');
|
|
249
|
+
this.context = await setup(0, {
|
|
250
|
+
...this.setupOptions,
|
|
251
|
+
fundSponsoredFPC: true,
|
|
252
|
+
skipAccountDeployment: true,
|
|
253
|
+
slasherFlavor: this.setupOptions.slasherFlavor ?? this.deployL1ContractsArgs.slasherFlavor ?? 'none',
|
|
254
|
+
aztecTargetCommitteeSize: 0,
|
|
255
|
+
l1ContractsArgs: this.deployL1ContractsArgs
|
|
256
|
+
}, // Use checkpointed chain tip for PXE to avoid issues with blocks being dropped due to pruned anchor blocks.
|
|
257
|
+
{
|
|
258
|
+
syncChainTip: 'checkpointed'
|
|
259
|
+
});
|
|
260
|
+
this.ctx = this.context;
|
|
250
261
|
const sponsoredFPCAddress = await getSponsoredFPCAddress();
|
|
251
262
|
const initialFundedAccounts = [
|
|
252
|
-
...this.
|
|
263
|
+
...this.context.initialFundedAccounts.map((a)=>a.address),
|
|
253
264
|
sponsoredFPCAddress
|
|
254
265
|
];
|
|
255
266
|
const { prefilledPublicData } = await getGenesisValues(initialFundedAccounts);
|
|
256
267
|
this.prefilledPublicData = prefilledPublicData;
|
|
257
|
-
const rollupContract = RollupContract.getFromL1ContractsValues(this.
|
|
258
|
-
this.monitor = new ChainMonitor(rollupContract, this.
|
|
259
|
-
this.monitor.on('l1-block', ({ timestamp })=>this.
|
|
268
|
+
const rollupContract = RollupContract.getFromL1ContractsValues(this.context.deployL1ContractsValues);
|
|
269
|
+
this.monitor = new ChainMonitor(rollupContract, this.context.dateProvider).start();
|
|
270
|
+
this.monitor.on('l1-block', ({ timestamp })=>this.context.dateProvider.setTime(Number(timestamp) * 1000));
|
|
260
271
|
}
|
|
261
272
|
async stopNodes(nodes) {
|
|
262
273
|
this.logger.info('Stopping nodes');
|
|
@@ -293,15 +304,15 @@ export class P2PNetworkTest {
|
|
|
293
304
|
async teardown() {
|
|
294
305
|
await this.monitor.stop();
|
|
295
306
|
await tryStop(this.bootstrapNode, this.logger);
|
|
296
|
-
await this.
|
|
307
|
+
await teardown(this.context);
|
|
297
308
|
}
|
|
298
309
|
async getContracts() {
|
|
299
310
|
if (!this.ctx.deployL1ContractsValues) {
|
|
300
|
-
throw new Error('
|
|
311
|
+
throw new Error('DeployAztecL1ContractsValues not set');
|
|
301
312
|
}
|
|
302
313
|
const rollup = new RollupContract(this.ctx.deployL1ContractsValues.l1Client, this.ctx.deployL1ContractsValues.l1ContractAddresses.rollupAddress);
|
|
303
314
|
const slasherContract = getContract({
|
|
304
|
-
address: getAddress(await rollup.getSlasherAddress()),
|
|
315
|
+
address: getAddress((await rollup.getSlasherAddress()).toString()),
|
|
305
316
|
abi: SlasherAbi,
|
|
306
317
|
client: this.ctx.deployL1ContractsValues.l1Client
|
|
307
318
|
});
|
package/dest/e2e_p2p/shared.d.ts
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import type { InitialAccountData } from '@aztec/accounts/testing';
|
|
2
2
|
import type { AztecNodeService } from '@aztec/aztec-node';
|
|
3
3
|
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
4
|
-
import { type SentTx } from '@aztec/aztec.js/contracts';
|
|
5
4
|
import type { Logger } from '@aztec/aztec.js/log';
|
|
6
|
-
import {
|
|
5
|
+
import { TxHash } from '@aztec/aztec.js/tx';
|
|
7
6
|
import type { RollupCheatCodes } from '@aztec/aztec/testing';
|
|
8
|
-
import type { EmpireSlashingProposerContract, RollupContract, TallySlashingProposerContract } from '@aztec/ethereum';
|
|
7
|
+
import type { EmpireSlashingProposerContract, RollupContract, TallySlashingProposerContract } from '@aztec/ethereum/contracts';
|
|
9
8
|
import type { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
10
9
|
import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
11
10
|
import type { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
|
|
11
|
+
import { type ProvenTx } from '@aztec/test-wallet/server';
|
|
12
12
|
export declare const submitComplexTxsTo: (logger: Logger, from: AztecAddress, spamContract: SpamContract, numTxs: number, opts?: {
|
|
13
|
-
callPublic?: boolean;
|
|
14
|
-
}) => Promise<
|
|
15
|
-
export declare const submitTransactions: (logger: Logger, node: AztecNodeService, numTxs: number, fundedAccount: InitialAccountData) => Promise<
|
|
16
|
-
export declare function prepareTransactions(logger: Logger, node: AztecNodeService, numTxs: number, fundedAccount: InitialAccountData): Promise<
|
|
13
|
+
callPublic?: boolean | undefined;
|
|
14
|
+
}) => Promise<TxHash[]>;
|
|
15
|
+
export declare const submitTransactions: (logger: Logger, node: AztecNodeService, numTxs: number, fundedAccount: InitialAccountData) => Promise<TxHash[]>;
|
|
16
|
+
export declare function prepareTransactions(logger: Logger, node: AztecNodeService, numTxs: number, fundedAccount: InitialAccountData): Promise<ProvenTx[]>;
|
|
17
17
|
export declare function awaitProposalExecution(slashingProposer: EmpireSlashingProposerContract | TallySlashingProposerContract, timeoutSeconds: number, logger: Logger): Promise<bigint>;
|
|
18
|
-
export declare function awaitCommitteeExists({ rollup, logger
|
|
18
|
+
export declare function awaitCommitteeExists({ rollup, logger }: {
|
|
19
19
|
rollup: RollupContract;
|
|
20
20
|
logger: Logger;
|
|
21
21
|
}): Promise<readonly `0x${string}`[]>;
|
|
22
|
-
export declare function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSize, epochDuration, waitUntilOffenseCount, timeoutSeconds
|
|
22
|
+
export declare function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSize, epochDuration, waitUntilOffenseCount, timeoutSeconds }: {
|
|
23
23
|
nodeAdmin: AztecNodeAdmin;
|
|
24
24
|
logger: Logger;
|
|
25
25
|
slashingRoundSize: number;
|
|
@@ -31,7 +31,7 @@ export declare function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundS
|
|
|
31
31
|
* Await the committee to be slashed out of the validator set.
|
|
32
32
|
* Currently assumes that the committee is the same size as the validator set.
|
|
33
33
|
*/
|
|
34
|
-
export declare function awaitCommitteeKicked({ rollup, cheatCodes, committee, slashFactory, slashingProposer, slashingRoundSize, aztecSlotDuration, aztecEpochDuration, logger, offenseEpoch
|
|
34
|
+
export declare function awaitCommitteeKicked({ rollup, cheatCodes, committee, slashFactory, slashingProposer, slashingRoundSize, aztecSlotDuration, aztecEpochDuration, logger, offenseEpoch }: {
|
|
35
35
|
rollup: RollupContract;
|
|
36
36
|
cheatCodes: RollupCheatCodes;
|
|
37
37
|
committee: readonly `0x${string}`[];
|
|
@@ -43,4 +43,4 @@ export declare function awaitCommitteeKicked({ rollup, cheatCodes, committee, sl
|
|
|
43
43
|
logger: Logger;
|
|
44
44
|
offenseEpoch: number;
|
|
45
45
|
}): Promise<void>;
|
|
46
|
-
//# sourceMappingURL=
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZTJlX3AycC9zaGFyZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd6RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEtBQUssRUFDViw4QkFBOEIsRUFDOUIsY0FBYyxFQUNkLDZCQUE2QixFQUM5QixNQUFNLDJCQUEyQixDQUFDO0FBTW5DLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBSXZFLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkUsT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFnQyxNQUFNLDJCQUEyQixDQUFDO0FBS3hGLGVBQU8sTUFBTSxrQkFBa0I7O3VCQWtCOUIsQ0FBQztBQUdGLGVBQU8sTUFBTSxrQkFBa0Isa0hBZTlCLENBQUM7QUFFRix3QkFBc0IsbUJBQW1CLENBQ3ZDLE1BQU0sRUFBRSxNQUFNLEVBQ2QsSUFBSSxFQUFFLGdCQUFnQixFQUN0QixNQUFNLEVBQUUsTUFBTSxFQUNkLGFBQWEsRUFBRSxrQkFBa0IsR0FDaEMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBd0JyQjtBQUVELHdCQUFnQixzQkFBc0IsQ0FDcEMsZ0JBQWdCLEVBQUUsOEJBQThCLEdBQUcsNkJBQTZCLEVBQ2hGLGNBQWMsRUFBRSxNQUFNLEVBQ3RCLE1BQU0sRUFBRSxNQUFNLEdBQ2IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQTBCakI7QUFFRCx3QkFBc0Isb0JBQW9CLENBQUMsRUFDekMsTUFBTSxFQUNOLE1BQU0sRUFDUCxFQUFFO0lBQ0QsTUFBTSxFQUFFLGNBQWMsQ0FBQztJQUN2QixNQUFNLEVBQUUsTUFBTSxDQUFDO0NBQ2hCLEdBQUcsT0FBTyxDQUFDLFNBQVMsS0FBSyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBWXBDO0FBRUQsd0JBQXNCLG9CQUFvQixDQUFDLEVBQ3pDLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixxQkFBcUIsRUFDckIsY0FBb0IsRUFDckIsRUFBRTtJQUNELFNBQVMsRUFBRSxjQUFjLENBQUM7SUFDMUIsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLGlCQUFpQixFQUFFLE1BQU0sQ0FBQztJQUMxQixhQUFhLEVBQUUsTUFBTSxDQUFDO0lBQ3RCLHFCQUFxQixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQy9CLGNBQWMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUN6QiwrQ0FrQkE7QUFFRDs7O0dBR0c7QUFDSCx3QkFBc0Isb0JBQW9CLENBQUMsRUFDekMsTUFBTSxFQUNOLFVBQVUsRUFDVixTQUFTLEVBQ1QsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixNQUFNLEVBQ04sWUFBWSxFQUNiLEVBQUU7SUFDRCxNQUFNLEVBQUUsY0FBYyxDQUFDO0lBQ3ZCLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQztJQUM3QixTQUFTLEVBQUUsU0FBUyxLQUFLLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFDcEMsWUFBWSxFQUFFLG9CQUFvQixDQUFDO0lBQ25DLGdCQUFnQixFQUFFLDhCQUE4QixHQUFHLDZCQUE2QixHQUFHLFNBQVMsQ0FBQztJQUM3RixpQkFBaUIsRUFBRSxNQUFNLENBQUM7SUFDMUIsaUJBQWlCLEVBQUUsTUFBTSxDQUFDO0lBQzFCLGtCQUFrQixFQUFFLE1BQU0sQ0FBQztJQUMzQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsWUFBWSxFQUFFLE1BQU0sQ0FBQztDQUN0QixpQkE2RUEifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EACV,8BAA8B,EAC9B,cAAc,EACd,6BAA6B,EAC9B,MAAM,2BAA2B,CAAC;AAMnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAIvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,KAAK,QAAQ,EAAgC,MAAM,2BAA2B,CAAC;AAKxF,eAAO,MAAM,kBAAkB;;uBAkB9B,CAAC;AAGF,eAAO,MAAM,kBAAkB,kHAe9B,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,kBAAkB,GAChC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAwBrB;AAED,wBAAgB,sBAAsB,CACpC,gBAAgB,EAAE,8BAA8B,GAAG,6BAA6B,EAChF,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CA0BjB;AAED,wBAAsB,oBAAoB,CAAC,EACzC,MAAM,EACN,MAAM,EACP,EAAE;IACD,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,SAAS,KAAK,MAAM,EAAE,EAAE,CAAC,CAYpC;AAED,wBAAsB,oBAAoB,CAAC,EACzC,MAAM,EACN,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,cAAoB,EACrB,EAAE;IACD,SAAS,EAAE,cAAc,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,+CAkBA;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,EACzC,MAAM,EACN,UAAU,EACV,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,EACN,YAAY,EACb,EAAE;IACD,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,SAAS,EAAE,SAAS,KAAK,MAAM,EAAE,EAAE,CAAC;IACpC,YAAY,EAAE,oBAAoB,CAAC;IACnC,gBAAgB,EAAE,8BAA8B,GAAG,6BAA6B,GAAG,SAAS,CAAC;IAC7F,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB,iBA6EA"}
|
package/dest/e2e_p2p/shared.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
|
|
1
|
+
import { NO_WAIT, getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
|
|
2
2
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
3
|
-
import {
|
|
3
|
+
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
4
4
|
import { timesAsync, unique } from '@aztec/foundation/collection';
|
|
5
5
|
import { retryUntil } from '@aztec/foundation/retry';
|
|
6
6
|
import { pluralize } from '@aztec/foundation/string';
|
|
@@ -15,18 +15,13 @@ export const submitComplexTxsTo = async (logger, from, spamContract, numTxs, opt
|
|
|
15
15
|
const seed = 1234n;
|
|
16
16
|
const spamCount = 15;
|
|
17
17
|
for(let i = 0; i < numTxs; i++){
|
|
18
|
-
const
|
|
19
|
-
|
|
18
|
+
const method = spamContract.methods.spam(seed + BigInt(i * spamCount), spamCount, !!opts.callPublic);
|
|
19
|
+
const txHash = await method.send({
|
|
20
|
+
from,
|
|
21
|
+
wait: NO_WAIT
|
|
20
22
|
});
|
|
21
|
-
const txHash = await tx.getTxHash();
|
|
22
23
|
logger.info(`Tx sent with hash ${txHash.toString()}`);
|
|
23
|
-
|
|
24
|
-
expect(receipt).toEqual(expect.objectContaining({
|
|
25
|
-
status: TxStatus.PENDING,
|
|
26
|
-
error: ''
|
|
27
|
-
}));
|
|
28
|
-
logger.info(`Receipt received for ${txHash.toString()}`);
|
|
29
|
-
txs.push(tx);
|
|
24
|
+
txs.push(txHash);
|
|
30
25
|
}
|
|
31
26
|
return txs;
|
|
32
27
|
};
|
|
@@ -38,7 +33,7 @@ export const submitTransactions = async (logger, node, numTxs, fundedAccount)=>{
|
|
|
38
33
|
...getPXEConfig(),
|
|
39
34
|
proverEnabled: false
|
|
40
35
|
}, {
|
|
41
|
-
|
|
36
|
+
loggerActorLabel: 'pxe-tx'
|
|
42
37
|
});
|
|
43
38
|
const fundedAccountManager = await wallet.createSchnorrAccount(fundedAccount.secret, fundedAccount.salt);
|
|
44
39
|
return submitTxsTo(wallet, fundedAccountManager.address, numTxs, logger);
|
|
@@ -50,20 +45,19 @@ export async function prepareTransactions(logger, node, numTxs, fundedAccount) {
|
|
|
50
45
|
...getPXEConfig(),
|
|
51
46
|
proverEnabled: false
|
|
52
47
|
}, {
|
|
53
|
-
|
|
48
|
+
loggerActorLabel: 'pxe-tx'
|
|
54
49
|
});
|
|
55
50
|
const fundedAccountManager = await wallet.createSchnorrAccount(fundedAccount.secret, fundedAccount.salt);
|
|
56
51
|
const testContractInstance = await getContractInstanceFromInstantiationParams(TestContractArtifact, {
|
|
57
52
|
salt: Fr.random()
|
|
58
53
|
});
|
|
59
54
|
await wallet.registerContract(testContractInstance, TestContractArtifact);
|
|
60
|
-
const contract =
|
|
55
|
+
const contract = TestContract.at(testContractInstance.address, wallet);
|
|
61
56
|
return timesAsync(numTxs, async ()=>{
|
|
62
57
|
const tx = await proveInteraction(wallet, contract.methods.emit_nullifier(Fr.random()), {
|
|
63
58
|
from: fundedAccountManager.address
|
|
64
59
|
});
|
|
65
|
-
|
|
66
|
-
logger.info(`Tx prepared with hash ${txHash}`);
|
|
60
|
+
logger.info(`Tx prepared with hash ${tx.getTxHash()}`);
|
|
67
61
|
return tx;
|
|
68
62
|
});
|
|
69
63
|
}
|
|
@@ -100,7 +94,7 @@ export async function awaitCommitteeExists({ rollup, logger }) {
|
|
|
100
94
|
committee = await rollup.getCurrentEpochCommittee();
|
|
101
95
|
return committee && committee.length > 0;
|
|
102
96
|
}, 'non-empty committee', 60);
|
|
103
|
-
return committee;
|
|
97
|
+
return committee.map((c)=>c.toString());
|
|
104
98
|
}
|
|
105
99
|
export async function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSize, epochDuration, waitUntilOffenseCount, timeoutSeconds = 120 }) {
|
|
106
100
|
const targetOffenseCount = waitUntilOffenseCount ?? 1;
|
|
@@ -129,7 +123,7 @@ export async function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSiz
|
|
|
129
123
|
await cheatCodes.debugRollup();
|
|
130
124
|
if (slashingProposer.type === 'empire') {
|
|
131
125
|
// Await for the slash payload to be created if empire (no payload is created on tally until execution time)
|
|
132
|
-
const targetEpoch = await cheatCodes.getEpoch() + await rollup.
|
|
126
|
+
const targetEpoch = EpochNumber(await cheatCodes.getEpoch() + await rollup.getLagInEpochsForValidatorSet() + 1);
|
|
133
127
|
logger.info(`Advancing to epoch ${targetEpoch} so we start slashing`);
|
|
134
128
|
await cheatCodes.advanceToEpoch(targetEpoch);
|
|
135
129
|
const slashPayloadEvents = await retryUntil(async ()=>{
|
|
@@ -147,7 +141,7 @@ export async function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSiz
|
|
|
147
141
|
const firstEpochInOffenseRound = offenseEpoch - offenseEpoch % slashingRoundSizeInEpochs;
|
|
148
142
|
const targetEpoch = firstEpochInOffenseRound + slashingOffsetInEpochs;
|
|
149
143
|
logger.info(`Advancing to epoch ${targetEpoch} so we start slashing`);
|
|
150
|
-
await cheatCodes.advanceToEpoch(targetEpoch, {
|
|
144
|
+
await cheatCodes.advanceToEpoch(EpochNumber(targetEpoch), {
|
|
151
145
|
offset: -aztecSlotDuration / 2
|
|
152
146
|
});
|
|
153
147
|
}
|
|
@@ -172,7 +166,7 @@ export async function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSiz
|
|
|
172
166
|
}
|
|
173
167
|
logger.info(`Advancing to check current committee`);
|
|
174
168
|
await cheatCodes.debugRollup();
|
|
175
|
-
await cheatCodes.advanceToEpoch(await cheatCodes.getEpoch() + await rollup.
|
|
169
|
+
await cheatCodes.advanceToEpoch(EpochNumber(await cheatCodes.getEpoch() + await rollup.getLagInEpochsForValidatorSet() + 1));
|
|
176
170
|
await cheatCodes.debugRollup();
|
|
177
171
|
const committeeNextEpoch = await rollup.getCurrentEpochCommittee();
|
|
178
172
|
// The committee should be undefined, since the validator set is empty
|
|
@@ -4,14 +4,15 @@ import type { AztecNode } from '@aztec/aztec.js/node';
|
|
|
4
4
|
import { TokenContract } from '@aztec/noir-contracts.js/Token';
|
|
5
5
|
import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
|
|
6
6
|
import type { TestWallet } from '@aztec/test-wallet/server';
|
|
7
|
-
import { type
|
|
7
|
+
import { type EndToEndContext } from '../fixtures/setup.js';
|
|
8
8
|
import { TokenSimulator } from '../simulators/token_simulator.js';
|
|
9
9
|
export declare class TokenContractTest {
|
|
10
10
|
static TOKEN_NAME: string;
|
|
11
11
|
static TOKEN_SYMBOL: string;
|
|
12
12
|
static TOKEN_DECIMALS: bigint;
|
|
13
|
-
|
|
13
|
+
context: EndToEndContext;
|
|
14
14
|
logger: Logger;
|
|
15
|
+
metricsPort?: number;
|
|
15
16
|
asset: TokenContract;
|
|
16
17
|
tokenSim: TokenSimulator;
|
|
17
18
|
node: AztecNode;
|
|
@@ -20,16 +21,22 @@ export declare class TokenContractTest {
|
|
|
20
21
|
adminAddress: AztecAddress;
|
|
21
22
|
account1Address: AztecAddress;
|
|
22
23
|
account2Address: AztecAddress;
|
|
24
|
+
private shouldApplyBaseSetup;
|
|
25
|
+
private shouldApplyMint;
|
|
23
26
|
constructor(testName: string);
|
|
24
27
|
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* 2. Publicly deploy accounts, deploy token contract and a "bad account".
|
|
28
|
+
* Registers that base setup should be applied during setup().
|
|
29
|
+
* Call this before setup() to deploy 3 accounts, publicly deploy accounts, token contract and a "bad account".
|
|
28
30
|
*/
|
|
29
|
-
applyBaseSnapshots():
|
|
31
|
+
applyBaseSnapshots(): void;
|
|
32
|
+
/**
|
|
33
|
+
* Registers that mint should be applied during setup().
|
|
34
|
+
* Call this before setup() to mint tokens to the admin account.
|
|
35
|
+
*/
|
|
36
|
+
applyMintSnapshot(): void;
|
|
37
|
+
private applyBaseSetup;
|
|
30
38
|
setup(): Promise<void>;
|
|
31
|
-
snapshot: <T>(name: string, apply: (context: SubsystemsContext) => Promise<T>, restore?: (snapshotData: T, context: SubsystemsContext) => Promise<void>) => Promise<void>;
|
|
32
39
|
teardown(): Promise<void>;
|
|
33
|
-
|
|
40
|
+
private applyMint;
|
|
34
41
|
}
|
|
35
|
-
//# sourceMappingURL=
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5fY29udHJhY3RfdGVzdC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2UyZV90b2tlbl9jb250cmFjdC90b2tlbl9jb250cmFjdF90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3RGLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSTVELE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBeUQsTUFBTSxzQkFBc0IsQ0FBQztBQUVuSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFJbEUscUJBQWEsaUJBQWlCO0lBQzVCLE1BQU0sQ0FBQyxVQUFVLFNBQVU7SUFDM0IsTUFBTSxDQUFDLFlBQVksU0FBUztJQUM1QixNQUFNLENBQUMsY0FBYyxTQUFPO0lBQzVCLE9BQU8sRUFBRyxlQUFlLENBQUM7SUFDMUIsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNyQixLQUFLLEVBQUcsYUFBYSxDQUFDO0lBQ3RCLFFBQVEsRUFBRyxjQUFjLENBQUM7SUFDMUIsSUFBSSxFQUFHLFNBQVMsQ0FBQztJQUVqQixVQUFVLEVBQUcsc0JBQXNCLENBQUM7SUFDcEMsTUFBTSxFQUFHLFVBQVUsQ0FBQztJQUNwQixZQUFZLEVBQUcsWUFBWSxDQUFDO0lBQzVCLGVBQWUsRUFBRyxZQUFZLENBQUM7SUFDL0IsZUFBZSxFQUFHLFlBQVksQ0FBQztJQUUvQixPQUFPLENBQUMsb0JBQW9CLENBQVM7SUFDckMsT0FBTyxDQUFDLGVBQWUsQ0FBUztJQUVoQyxZQUFZLFFBQVEsRUFBRSxNQUFNLEVBRzNCO0lBRUQ7OztPQUdHO0lBQ0gsa0JBQWtCLFNBRWpCO0lBRUQ7OztPQUdHO0lBQ0gsaUJBQWlCLFNBRWhCO1lBS2EsY0FBYztJQTZDdEIsS0FBSyxrQkFjVjtJQUVLLFFBQVEsa0JBRWI7WUFFYSxTQUFTO0NBMkJ4QiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token_contract_test.d.ts","sourceRoot":"","sources":["../../src/e2e_token_contract/token_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,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAI5D,OAAO,
|
|
1
|
+
{"version":3,"file":"token_contract_test.d.ts","sourceRoot":"","sources":["../../src/e2e_token_contract/token_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,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAI5D,OAAO,EAAE,KAAK,eAAe,EAAyD,MAAM,sBAAsB,CAAC;AAEnH,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAIlE,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,UAAU,SAAU;IAC3B,MAAM,CAAC,YAAY,SAAS;IAC5B,MAAM,CAAC,cAAc,SAAO;IAC5B,OAAO,EAAG,eAAe,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAG,aAAa,CAAC;IACtB,QAAQ,EAAG,cAAc,CAAC;IAC1B,IAAI,EAAG,SAAS,CAAC;IAEjB,UAAU,EAAG,sBAAsB,CAAC;IACpC,MAAM,EAAG,UAAU,CAAC;IACpB,YAAY,EAAG,YAAY,CAAC;IAC5B,eAAe,EAAG,YAAY,CAAC;IAC/B,eAAe,EAAG,YAAY,CAAC;IAE/B,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,eAAe,CAAS;IAEhC,YAAY,QAAQ,EAAE,MAAM,EAG3B;IAED;;;OAGG;IACH,kBAAkB,SAEjB;IAED;;;OAGG;IACH,iBAAiB,SAEhB;YAKa,cAAc;IA6CtB,KAAK,kBAcV;IAEK,QAAQ,kBAEb;YAEa,SAAS;CA2BxB"}
|