@aztec/end-to-end 0.0.1-commit.24de95ac → 0.0.1-commit.3469e52
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 +116 -121
- 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 +5 -5
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +18 -11
- 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 +98 -113
- 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 +19 -16
- package/dest/e2e_fees/bridging_race.notest.d.ts +1 -1
- package/dest/e2e_fees/bridging_race.notest.js +4 -6
- 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 +3 -3
- 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 +32 -39
- 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 +117 -110
- package/dest/e2e_p2p/shared.d.ts +6 -6
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +6 -5
- 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 +90 -92
- 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 +98 -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 +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 +7 -4
- 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 +5 -3
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +3 -3
- 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 +1 -1
- 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 +1 -1
- package/dest/shared/submit-transactions.d.ts.map +1 -1
- 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 +43 -23
- 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 +5 -3
- 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 +45 -10
- package/dest/spartan/tx_metrics.d.ts +52 -0
- package/dest/spartan/tx_metrics.d.ts.map +1 -0
- package/dest/spartan/tx_metrics.js +248 -0
- package/dest/spartan/utils.d.ts +66 -24
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +326 -133
- package/package.json +43 -40
- package/src/bench/client_flows/benchmark.ts +24 -2
- package/src/bench/client_flows/client_flows_benchmark.ts +157 -162
- package/src/bench/client_flows/data_extractor.ts +6 -28
- package/src/bench/utils.ts +22 -14
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +107 -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 +39 -25
- package/src/e2e_fees/bridging_race.notest.ts +4 -7
- package/src/e2e_fees/fees_test.ts +180 -215
- package/src/e2e_l1_publisher/write_json.ts +26 -20
- package/src/e2e_multi_validator/utils.ts +1 -1
- package/src/e2e_nested_contract/nested_contract_test.ts +35 -55
- package/src/e2e_p2p/inactivity_slash_test.ts +10 -9
- package/src/e2e_p2p/p2p_network.ts +175 -180
- package/src/e2e_p2p/shared.ts +15 -7
- package/src/e2e_token_contract/token_contract_test.ts +105 -118
- package/src/fixtures/e2e_prover_test.ts +120 -153
- 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 +1010 -0
- package/src/fixtures/setup_p2p_test.ts +23 -9
- package/src/fixtures/token_utils.ts +4 -4
- 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 +6 -9
- package/src/shared/gas_portal_test_harness.ts +2 -2
- package/src/shared/index.ts +1 -1
- package/src/shared/uniswap_l1_l2.ts +53 -67
- package/src/simulators/lending_simulator.ts +6 -4
- package/src/spartan/DEVELOP.md +7 -0
- package/src/spartan/setup_test_wallets.ts +56 -13
- package/src/spartan/tx_metrics.ts +231 -0
- package/src/spartan/utils.ts +379 -75
- 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,11 @@ 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
95
|
startProverNode
|
|
89
|
-
}
|
|
96
|
+
};
|
|
97
|
+
this.deployL1ContractsArgs = {
|
|
90
98
|
...initialValidatorConfig,
|
|
91
99
|
aztecEpochDuration: initialValidatorConfig.aztecEpochDuration ?? l1ContractsConfig.aztecEpochDuration,
|
|
92
100
|
slashingRoundSizeInEpochs: initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
|
|
@@ -97,32 +105,30 @@ export class P2PNetworkTest {
|
|
|
97
105
|
aztecTargetCommitteeSize: numberOfValidators,
|
|
98
106
|
initialValidators: [],
|
|
99
107
|
zkPassportArgs: {
|
|
100
|
-
mockZkPassportVerifier,
|
|
101
108
|
zkPassportDomain: zkPassportParams.domain,
|
|
102
109
|
zkPassportScope: zkPassportParams.scope
|
|
103
110
|
}
|
|
104
|
-
}
|
|
111
|
+
};
|
|
105
112
|
}
|
|
106
|
-
static async create({ testName, numberOfNodes, numberOfValidators, basePort, metricsPort, initialConfig, startProverNode
|
|
113
|
+
static async create({ testName, numberOfNodes, numberOfValidators, basePort, metricsPort, initialConfig, startProverNode }) {
|
|
107
114
|
const port = basePort || await getPort();
|
|
108
115
|
const bootstrapNodeENR = await getBootstrapNodeEnr(BOOTSTRAP_NODE_PRIVATE_KEY, port);
|
|
109
116
|
const bootstrapNodeEnr = bootstrapNodeENR.encodeTxt();
|
|
110
117
|
const initialValidatorConfig = await createValidatorConfig(initialConfig ?? {}, bootstrapNodeEnr);
|
|
111
|
-
return new P2PNetworkTest(testName, bootstrapNodeEnr, port, numberOfValidators, initialValidatorConfig, numberOfNodes, metricsPort, startProverNode
|
|
118
|
+
return new P2PNetworkTest(testName, bootstrapNodeEnr, port, numberOfValidators, initialValidatorConfig, numberOfNodes, metricsPort, startProverNode);
|
|
112
119
|
}
|
|
113
120
|
get fundedAccount() {
|
|
114
121
|
if (!this.deployedAccounts[0]) {
|
|
115
|
-
throw new Error('Call
|
|
122
|
+
throw new Error('Call setupAccount to create a funded account.');
|
|
116
123
|
}
|
|
117
124
|
return this.deployedAccounts[0];
|
|
118
125
|
}
|
|
119
126
|
async addBootstrapNode() {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
});
|
|
127
|
+
this.logger.info('Adding bootstrap node');
|
|
128
|
+
const telemetry = await getEndToEndTestTelemetryClient(this.metricsPort);
|
|
129
|
+
this.bootstrapNode = await createBootstrapNodeFromPrivateKey(BOOTSTRAP_NODE_PRIVATE_KEY, this.bootNodePort, telemetry, this.context.config);
|
|
130
|
+
// Overwrite enr with updated info
|
|
131
|
+
this.bootstrapNodeEnr = this.bootstrapNode.getENR().encodeTxt();
|
|
126
132
|
}
|
|
127
133
|
getValidators() {
|
|
128
134
|
const validators = [];
|
|
@@ -140,100 +146,92 @@ export class P2PNetworkTest {
|
|
|
140
146
|
validators
|
|
141
147
|
};
|
|
142
148
|
}
|
|
143
|
-
async
|
|
149
|
+
async applyBaseSetup() {
|
|
144
150
|
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
|
-
};
|
|
151
|
+
this.logger.info('Adding validators');
|
|
152
|
+
const rollup = getContract({
|
|
153
|
+
address: this.context.deployL1ContractsValues.l1ContractAddresses.rollupAddress.toString(),
|
|
154
|
+
abi: RollupAbi,
|
|
155
|
+
client: this.context.deployL1ContractsValues.l1Client
|
|
156
|
+
});
|
|
157
|
+
this.logger.info(`Adding ${this.numberOfValidators} validators`);
|
|
158
|
+
const stakingAsset = getContract({
|
|
159
|
+
address: this.context.deployL1ContractsValues.l1ContractAddresses.stakingAssetAddress.toString(),
|
|
160
|
+
abi: TestERC20Abi,
|
|
161
|
+
client: this.context.deployL1ContractsValues.l1Client
|
|
162
|
+
});
|
|
163
|
+
const { address: multiAdderAddress } = await deployL1Contract(this.context.deployL1ContractsValues.l1Client, MultiAdderArtifact.contractAbi, MultiAdderArtifact.contractBytecode, [
|
|
164
|
+
rollup.address,
|
|
165
|
+
this.context.deployL1ContractsValues.l1Client.account.address
|
|
166
|
+
]);
|
|
167
|
+
const multiAdder = getContract({
|
|
168
|
+
address: multiAdderAddress.toString(),
|
|
169
|
+
abi: MultiAdderArtifact.contractAbi,
|
|
170
|
+
client: this.context.deployL1ContractsValues.l1Client
|
|
171
|
+
});
|
|
172
|
+
const stakeNeeded = await rollup.read.getActivationThreshold() * BigInt(this.numberOfValidators);
|
|
173
|
+
await Promise.all([
|
|
174
|
+
await stakingAsset.write.mint([
|
|
175
|
+
multiAdder.address,
|
|
176
|
+
stakeNeeded
|
|
177
|
+
], {})
|
|
178
|
+
].map((txHash)=>this.context.deployL1ContractsValues.l1Client.waitForTransactionReceipt({
|
|
179
|
+
hash: txHash
|
|
180
|
+
})));
|
|
181
|
+
const { validators } = this.getValidators();
|
|
182
|
+
this.validators = validators;
|
|
183
|
+
const gseAddress = this.context.deployL1ContractsValues.l1ContractAddresses.gseAddress;
|
|
184
|
+
if (!gseAddress) {
|
|
185
|
+
throw new Error('GSE contract not deployed');
|
|
186
|
+
}
|
|
187
|
+
const gseContract = new GSEContract(this.context.deployL1ContractsValues.l1Client, gseAddress.toString());
|
|
188
|
+
const makeValidatorTuples = async (validator)=>{
|
|
189
|
+
const registrationTuple = await gseContract.makeRegistrationTuple(validator.bn254SecretKey.getValue());
|
|
190
|
+
return {
|
|
191
|
+
attester: validator.attester.toString(),
|
|
192
|
+
withdrawer: validator.withdrawer.toString(),
|
|
193
|
+
...registrationTuple
|
|
189
194
|
};
|
|
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);
|
|
195
|
+
};
|
|
196
|
+
const validatorTuples = await Promise.all(validators.map(makeValidatorTuples));
|
|
197
|
+
await this.context.deployL1ContractsValues.l1Client.waitForTransactionReceipt({
|
|
198
|
+
hash: await multiAdder.write.addValidators([
|
|
199
|
+
validatorTuples
|
|
200
|
+
])
|
|
199
201
|
});
|
|
202
|
+
await this.context.cheatCodes.rollup.advanceToEpoch(EpochNumber.fromBigInt(BigInt(await this.context.cheatCodes.rollup.getEpoch()) + await rollup.read.getLagInEpochsForValidatorSet() + 1n));
|
|
203
|
+
// Send and await a tx to make sure we mine a block for the warp to correctly progress.
|
|
204
|
+
await this._sendDummyTx(this.context.deployL1ContractsValues.l1Client);
|
|
200
205
|
}
|
|
201
206
|
async setupAccount() {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
this.
|
|
206
|
-
return Promise.resolve();
|
|
207
|
+
this.logger.info('Setting up account');
|
|
208
|
+
const { deployedAccounts } = await deployAccounts(1, this.logger)({
|
|
209
|
+
wallet: this.context.wallet,
|
|
210
|
+
initialFundedAccounts: this.context.initialFundedAccounts
|
|
207
211
|
});
|
|
212
|
+
this.deployedAccounts = deployedAccounts;
|
|
213
|
+
[{ address: this.defaultAccountAddress }] = deployedAccounts;
|
|
214
|
+
this.wallet = this.context.wallet;
|
|
208
215
|
}
|
|
209
216
|
async deploySpamContract() {
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
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);
|
|
225
|
-
});
|
|
217
|
+
this.logger.info('Deploying spam contract');
|
|
218
|
+
if (!this.wallet) {
|
|
219
|
+
throw new Error('Call setupAccount before deploying spam contract');
|
|
220
|
+
}
|
|
221
|
+
const spamContract = await SpamContract.deploy(this.wallet).send({
|
|
222
|
+
from: this.defaultAccountAddress
|
|
223
|
+
}).deployed();
|
|
224
|
+
this.spamContract = spamContract;
|
|
226
225
|
}
|
|
227
226
|
async removeInitialNode() {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
});
|
|
234
|
-
dateProvider.setTime(Number(block.timestamp) * 1000);
|
|
235
|
-
await aztecNode.stop();
|
|
227
|
+
this.logger.info('Removing initial node');
|
|
228
|
+
// Send and await a tx to make sure we mine a block for the warp to correctly progress.
|
|
229
|
+
const { receipt } = await this._sendDummyTx(this.context.deployL1ContractsValues.l1Client);
|
|
230
|
+
const block = await this.context.deployL1ContractsValues.l1Client.getBlock({
|
|
231
|
+
blockNumber: receipt.blockNumber
|
|
236
232
|
});
|
|
233
|
+
this.context.dateProvider.setTime(Number(block.timestamp) * 1000);
|
|
234
|
+
await this.context.aztecNodeService.stop();
|
|
237
235
|
}
|
|
238
236
|
async sendDummyTx() {
|
|
239
237
|
return await this._sendDummyTx(this.ctx.deployL1ContractsValues.l1Client);
|
|
@@ -246,17 +244,26 @@ export class P2PNetworkTest {
|
|
|
246
244
|
});
|
|
247
245
|
}
|
|
248
246
|
async setup() {
|
|
249
|
-
this.
|
|
247
|
+
this.logger.info('Setting up subsystems from fresh');
|
|
248
|
+
this.context = await setup(0, {
|
|
249
|
+
...this.setupOptions,
|
|
250
|
+
fundSponsoredFPC: true,
|
|
251
|
+
skipAccountDeployment: true,
|
|
252
|
+
slasherFlavor: this.setupOptions.slasherFlavor ?? this.deployL1ContractsArgs.slasherFlavor ?? 'none',
|
|
253
|
+
aztecTargetCommitteeSize: 0,
|
|
254
|
+
l1ContractsArgs: this.deployL1ContractsArgs
|
|
255
|
+
});
|
|
256
|
+
this.ctx = this.context;
|
|
250
257
|
const sponsoredFPCAddress = await getSponsoredFPCAddress();
|
|
251
258
|
const initialFundedAccounts = [
|
|
252
|
-
...this.
|
|
259
|
+
...this.context.initialFundedAccounts.map((a)=>a.address),
|
|
253
260
|
sponsoredFPCAddress
|
|
254
261
|
];
|
|
255
262
|
const { prefilledPublicData } = await getGenesisValues(initialFundedAccounts);
|
|
256
263
|
this.prefilledPublicData = prefilledPublicData;
|
|
257
|
-
const rollupContract = RollupContract.getFromL1ContractsValues(this.
|
|
258
|
-
this.monitor = new ChainMonitor(rollupContract, this.
|
|
259
|
-
this.monitor.on('l1-block', ({ timestamp })=>this.
|
|
264
|
+
const rollupContract = RollupContract.getFromL1ContractsValues(this.context.deployL1ContractsValues);
|
|
265
|
+
this.monitor = new ChainMonitor(rollupContract, this.context.dateProvider).start();
|
|
266
|
+
this.monitor.on('l1-block', ({ timestamp })=>this.context.dateProvider.setTime(Number(timestamp) * 1000));
|
|
260
267
|
}
|
|
261
268
|
async stopNodes(nodes) {
|
|
262
269
|
this.logger.info('Stopping nodes');
|
|
@@ -293,15 +300,15 @@ export class P2PNetworkTest {
|
|
|
293
300
|
async teardown() {
|
|
294
301
|
await this.monitor.stop();
|
|
295
302
|
await tryStop(this.bootstrapNode, this.logger);
|
|
296
|
-
await this.
|
|
303
|
+
await teardown(this.context);
|
|
297
304
|
}
|
|
298
305
|
async getContracts() {
|
|
299
306
|
if (!this.ctx.deployL1ContractsValues) {
|
|
300
|
-
throw new Error('
|
|
307
|
+
throw new Error('DeployAztecL1ContractsValues not set');
|
|
301
308
|
}
|
|
302
309
|
const rollup = new RollupContract(this.ctx.deployL1ContractsValues.l1Client, this.ctx.deployL1ContractsValues.l1ContractAddresses.rollupAddress);
|
|
303
310
|
const slasherContract = getContract({
|
|
304
|
-
address: getAddress(await rollup.getSlasherAddress()),
|
|
311
|
+
address: getAddress((await rollup.getSlasherAddress()).toString()),
|
|
305
312
|
abi: SlasherAbi,
|
|
306
313
|
client: this.ctx.deployL1ContractsValues.l1Client
|
|
307
314
|
});
|
package/dest/e2e_p2p/shared.d.ts
CHANGED
|
@@ -5,21 +5,21 @@ import { type SentTx } from '@aztec/aztec.js/contracts';
|
|
|
5
5
|
import type { Logger } from '@aztec/aztec.js/log';
|
|
6
6
|
import { Tx } from '@aztec/aztec.js/tx';
|
|
7
7
|
import type { RollupCheatCodes } from '@aztec/aztec/testing';
|
|
8
|
-
import type { EmpireSlashingProposerContract, RollupContract, TallySlashingProposerContract } from '@aztec/ethereum';
|
|
8
|
+
import type { EmpireSlashingProposerContract, RollupContract, TallySlashingProposerContract } from '@aztec/ethereum/contracts';
|
|
9
9
|
import type { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
|
|
10
10
|
import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
11
11
|
import type { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
|
|
12
12
|
export declare const submitComplexTxsTo: (logger: Logger, from: AztecAddress, spamContract: SpamContract, numTxs: number, opts?: {
|
|
13
|
-
callPublic?: boolean;
|
|
13
|
+
callPublic?: boolean | undefined;
|
|
14
14
|
}) => Promise<SentTx[]>;
|
|
15
15
|
export declare const submitTransactions: (logger: Logger, node: AztecNodeService, numTxs: number, fundedAccount: InitialAccountData) => Promise<SentTx[]>;
|
|
16
16
|
export declare function prepareTransactions(logger: Logger, node: AztecNodeService, numTxs: number, fundedAccount: InitialAccountData): Promise<Tx[]>;
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZTJlX3AycC9zaGFyZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQThDLE1BQU0sMkJBQTJCLENBQUM7QUFFcEcsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLEVBQUUsRUFBWSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxLQUFLLEVBQ1YsOEJBQThCLEVBQzlCLGNBQWMsRUFDZCw2QkFBNkIsRUFDOUIsTUFBTSwyQkFBMkIsQ0FBQztBQU1uQyxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUl2RSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBTXZFLGVBQU8sTUFBTSxrQkFBa0I7O3VCQTJCOUIsQ0FBQztBQUdGLGVBQU8sTUFBTSxrQkFBa0Isa0hBVzlCLENBQUM7QUFFRix3QkFBc0IsbUJBQW1CLENBQ3ZDLE1BQU0sRUFBRSxNQUFNLEVBQ2QsSUFBSSxFQUFFLGdCQUFnQixFQUN0QixNQUFNLEVBQUUsTUFBTSxFQUNkLGFBQWEsRUFBRSxrQkFBa0IsR0FDaEMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBcUJmO0FBRUQsd0JBQWdCLHNCQUFzQixDQUNwQyxnQkFBZ0IsRUFBRSw4QkFBOEIsR0FBRyw2QkFBNkIsRUFDaEYsY0FBYyxFQUFFLE1BQU0sRUFDdEIsTUFBTSxFQUFFLE1BQU0sR0FDYixPQUFPLENBQUMsTUFBTSxDQUFDLENBMEJqQjtBQUVELHdCQUFzQixvQkFBb0IsQ0FBQyxFQUN6QyxNQUFNLEVBQ04sTUFBTSxFQUNQLEVBQUU7SUFDRCxNQUFNLEVBQUUsY0FBYyxDQUFDO0lBQ3ZCLE1BQU0sRUFBRSxNQUFNLENBQUM7Q0FDaEIsR0FBRyxPQUFPLENBQUMsU0FBUyxLQUFLLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FZcEM7QUFFRCx3QkFBc0Isb0JBQW9CLENBQUMsRUFDekMsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsYUFBYSxFQUNiLHFCQUFxQixFQUNyQixjQUFvQixFQUNyQixFQUFFO0lBQ0QsU0FBUyxFQUFFLGNBQWMsQ0FBQztJQUMxQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsaUJBQWlCLEVBQUUsTUFBTSxDQUFDO0lBQzFCLGFBQWEsRUFBRSxNQUFNLENBQUM7SUFDdEIscUJBQXFCLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDL0IsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ3pCLCtDQWtCQTtBQUVEOzs7R0FHRztBQUNILHdCQUFzQixvQkFBb0IsQ0FBQyxFQUN6QyxNQUFNLEVBQ04sVUFBVSxFQUNWLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLE1BQU0sRUFDTixZQUFZLEVBQ2IsRUFBRTtJQUNELE1BQU0sRUFBRSxjQUFjLENBQUM7SUFDdkIsVUFBVSxFQUFFLGdCQUFnQixDQUFDO0lBQzdCLFNBQVMsRUFBRSxTQUFTLEtBQUssTUFBTSxFQUFFLEVBQUUsQ0FBQztJQUNwQyxZQUFZLEVBQUUsb0JBQW9CLENBQUM7SUFDbkMsZ0JBQWdCLEVBQUUsOEJBQThCLEdBQUcsNkJBQTZCLEdBQUcsU0FBUyxDQUFDO0lBQzdGLGlCQUFpQixFQUFFLE1BQU0sQ0FBQztJQUMxQixpQkFBaUIsRUFBRSxNQUFNLENBQUM7SUFDMUIsa0JBQWtCLEVBQUUsTUFBTSxDQUFDO0lBQzNCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDZixZQUFZLEVBQUUsTUFBTSxDQUFDO0NBQ3RCLGlCQTZFQSJ9
|
|
@@ -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;AACzD,OAAO,EAAE,KAAK,MAAM,EAA8C,MAAM,2BAA2B,CAAC;AAEpG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,EAAE,EAAY,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,
|
|
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;AACzD,OAAO,EAAE,KAAK,MAAM,EAA8C,MAAM,2BAA2B,CAAC;AAEpG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,EAAE,EAAY,MAAM,oBAAoB,CAAC;AAClD,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;AAMvE,eAAO,MAAM,kBAAkB;;uBA2B9B,CAAC;AAGF,eAAO,MAAM,kBAAkB,kHAW9B,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,kBAAkB,GAChC,OAAO,CAAC,EAAE,EAAE,CAAC,CAqBf;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,7 @@
|
|
|
1
1
|
import { getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
|
|
2
2
|
import { Fr } from '@aztec/aztec.js/fields';
|
|
3
3
|
import { TxStatus } from '@aztec/aztec.js/tx';
|
|
4
|
+
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
4
5
|
import { timesAsync, unique } from '@aztec/foundation/collection';
|
|
5
6
|
import { retryUntil } from '@aztec/foundation/retry';
|
|
6
7
|
import { pluralize } from '@aztec/foundation/string';
|
|
@@ -57,7 +58,7 @@ export async function prepareTransactions(logger, node, numTxs, fundedAccount) {
|
|
|
57
58
|
salt: Fr.random()
|
|
58
59
|
});
|
|
59
60
|
await wallet.registerContract(testContractInstance, TestContractArtifact);
|
|
60
|
-
const contract =
|
|
61
|
+
const contract = TestContract.at(testContractInstance.address, wallet);
|
|
61
62
|
return timesAsync(numTxs, async ()=>{
|
|
62
63
|
const tx = await proveInteraction(wallet, contract.methods.emit_nullifier(Fr.random()), {
|
|
63
64
|
from: fundedAccountManager.address
|
|
@@ -100,7 +101,7 @@ export async function awaitCommitteeExists({ rollup, logger }) {
|
|
|
100
101
|
committee = await rollup.getCurrentEpochCommittee();
|
|
101
102
|
return committee && committee.length > 0;
|
|
102
103
|
}, 'non-empty committee', 60);
|
|
103
|
-
return committee;
|
|
104
|
+
return committee.map((c)=>c.toString());
|
|
104
105
|
}
|
|
105
106
|
export async function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSize, epochDuration, waitUntilOffenseCount, timeoutSeconds = 120 }) {
|
|
106
107
|
const targetOffenseCount = waitUntilOffenseCount ?? 1;
|
|
@@ -129,7 +130,7 @@ export async function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSiz
|
|
|
129
130
|
await cheatCodes.debugRollup();
|
|
130
131
|
if (slashingProposer.type === 'empire') {
|
|
131
132
|
// 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.
|
|
133
|
+
const targetEpoch = EpochNumber(await cheatCodes.getEpoch() + await rollup.getLagInEpochsForValidatorSet() + 1);
|
|
133
134
|
logger.info(`Advancing to epoch ${targetEpoch} so we start slashing`);
|
|
134
135
|
await cheatCodes.advanceToEpoch(targetEpoch);
|
|
135
136
|
const slashPayloadEvents = await retryUntil(async ()=>{
|
|
@@ -147,7 +148,7 @@ export async function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSiz
|
|
|
147
148
|
const firstEpochInOffenseRound = offenseEpoch - offenseEpoch % slashingRoundSizeInEpochs;
|
|
148
149
|
const targetEpoch = firstEpochInOffenseRound + slashingOffsetInEpochs;
|
|
149
150
|
logger.info(`Advancing to epoch ${targetEpoch} so we start slashing`);
|
|
150
|
-
await cheatCodes.advanceToEpoch(targetEpoch, {
|
|
151
|
+
await cheatCodes.advanceToEpoch(EpochNumber(targetEpoch), {
|
|
151
152
|
offset: -aztecSlotDuration / 2
|
|
152
153
|
});
|
|
153
154
|
}
|
|
@@ -172,7 +173,7 @@ export async function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSiz
|
|
|
172
173
|
}
|
|
173
174
|
logger.info(`Advancing to check current committee`);
|
|
174
175
|
await cheatCodes.debugRollup();
|
|
175
|
-
await cheatCodes.advanceToEpoch(await cheatCodes.getEpoch() + await rollup.
|
|
176
|
+
await cheatCodes.advanceToEpoch(EpochNumber(await cheatCodes.getEpoch() + await rollup.getLagInEpochsForValidatorSet() + 1));
|
|
176
177
|
await cheatCodes.debugRollup();
|
|
177
178
|
const committeeNextEpoch = await rollup.getCurrentEpochCommittee();
|
|
178
179
|
// 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5fY29udHJhY3RfdGVzdC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2UyZV90b2tlbl9jb250cmFjdC90b2tlbl9jb250cmFjdF90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3RGLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSTVELE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBeUQsTUFBTSxzQkFBc0IsQ0FBQztBQUVuSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFJbEUscUJBQWEsaUJBQWlCO0lBQzVCLE1BQU0sQ0FBQyxVQUFVLFNBQVU7SUFDM0IsTUFBTSxDQUFDLFlBQVksU0FBUztJQUM1QixNQUFNLENBQUMsY0FBYyxTQUFPO0lBQzVCLE9BQU8sRUFBRyxlQUFlLENBQUM7SUFDMUIsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNyQixLQUFLLEVBQUcsYUFBYSxDQUFDO0lBQ3RCLFFBQVEsRUFBRyxjQUFjLENBQUM7SUFDMUIsSUFBSSxFQUFHLFNBQVMsQ0FBQztJQUVqQixVQUFVLEVBQUcsc0JBQXNCLENBQUM7SUFDcEMsTUFBTSxFQUFHLFVBQVUsQ0FBQztJQUNwQixZQUFZLEVBQUcsWUFBWSxDQUFDO0lBQzVCLGVBQWUsRUFBRyxZQUFZLENBQUM7SUFDL0IsZUFBZSxFQUFHLFlBQVksQ0FBQztJQUUvQixPQUFPLENBQUMsb0JBQW9CLENBQVM7SUFDckMsT0FBTyxDQUFDLGVBQWUsQ0FBUztJQUVoQyxZQUFZLFFBQVEsRUFBRSxNQUFNLEVBRzNCO0lBRUQ7OztPQUdHO0lBQ0gsa0JBQWtCLFNBRWpCO0lBRUQ7OztPQUdHO0lBQ0gsaUJBQWlCLFNBRWhCO1lBS2EsY0FBYztJQStDdEIsS0FBSyxrQkFjVjtJQUVLLFFBQVEsa0JBRWI7WUFFYSxTQUFTO0NBMkJ4QiJ9
|
|
@@ -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;IA+CtB,KAAK,kBAcV;IAEK,QAAQ,kBAEb;YAEa,SAAS;CA2BxB"}
|