@aztec/end-to-end 4.0.0-nightly.20260113 → 4.0.0-nightly.20260115
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/client_flows_benchmark.d.ts +12 -13
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
- package/dest/bench/client_flows/client_flows_benchmark.js +104 -134
- package/dest/bench/utils.d.ts +1 -1
- 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 +6 -7
- 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 +65 -62
- package/dest/e2e_deploy_contract/deploy_test.d.ts +4 -3
- 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.js +1 -1
- package/dest/e2e_fees/bridging_race.notest.js +2 -4
- package/dest/e2e_fees/fees_test.d.ts +13 -13
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +122 -140
- package/dest/e2e_l1_publisher/write_json.d.ts +1 -1
- package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
- package/dest/e2e_l1_publisher/write_json.js +1 -0
- 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 -40
- 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 +3 -3
- package/dest/e2e_p2p/p2p_network.d.ts +7 -6
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +106 -103
- 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 +8 -14
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
- package/dest/fixtures/e2e_prover_test.js +82 -93
- package/dest/fixtures/setup.d.ts +216 -0
- package/dest/fixtures/setup.d.ts.map +1 -0
- package/dest/fixtures/setup.js +683 -0
- package/dest/fixtures/utils.d.ts +5 -191
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +4 -615
- 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 +12 -1
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.d.ts +11 -1
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.d.ts +5 -1
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/spartan/tx_metrics.d.ts +4 -1
- package/dest/spartan/tx_metrics.d.ts.map +1 -1
- package/dest/spartan/tx_metrics.js +21 -1
- package/dest/spartan/utils.d.ts +5 -1
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +25 -8
- package/package.json +39 -39
- package/src/bench/client_flows/client_flows_benchmark.ts +142 -195
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +107 -142
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +99 -106
- package/src/e2e_deploy_contract/deploy_test.ts +21 -14
- package/src/e2e_epochs/epochs_test.ts +1 -1
- package/src/e2e_fees/bridging_race.notest.ts +2 -5
- package/src/e2e_fees/fees_test.ts +171 -213
- package/src/e2e_l1_publisher/write_json.ts +1 -0
- package/src/e2e_nested_contract/nested_contract_test.ts +35 -56
- package/src/e2e_p2p/inactivity_slash_test.ts +5 -5
- package/src/e2e_p2p/p2p_network.ts +165 -167
- package/src/e2e_token_contract/token_contract_test.ts +105 -118
- package/src/fixtures/e2e_prover_test.ts +107 -136
- package/src/fixtures/setup.ts +1009 -0
- package/src/fixtures/utils.ts +27 -901
- package/src/quality_of_service/prometheus_client.ts +113 -0
- package/src/spartan/tx_metrics.ts +21 -1
- package/src/spartan/utils.ts +26 -8
- package/dest/fixtures/snapshot_manager.d.ts +0 -93
- package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
- package/dest/fixtures/snapshot_manager.js +0 -488
- package/src/fixtures/snapshot_manager.ts +0 -646
|
@@ -34,18 +34,20 @@ import getPort from 'get-port';
|
|
|
34
34
|
import { type GetContractReturnType, getAddress, getContract } from 'viem';
|
|
35
35
|
import { privateKeyToAccount } from 'viem/accounts';
|
|
36
36
|
|
|
37
|
+
import {
|
|
38
|
+
type EndToEndContext,
|
|
39
|
+
type SetupOptions,
|
|
40
|
+
deployAccounts,
|
|
41
|
+
getPrivateKeyFromIndex,
|
|
42
|
+
getSponsoredFPCAddress,
|
|
43
|
+
setup,
|
|
44
|
+
teardown,
|
|
45
|
+
} from '../fixtures/setup.js';
|
|
37
46
|
import {
|
|
38
47
|
ATTESTER_PRIVATE_KEYS_START_INDEX,
|
|
39
48
|
createValidatorConfig,
|
|
40
49
|
generatePrivateKeys,
|
|
41
50
|
} from '../fixtures/setup_p2p_test.js';
|
|
42
|
-
import {
|
|
43
|
-
type ISnapshotManager,
|
|
44
|
-
type SubsystemsContext,
|
|
45
|
-
createSnapshotManager,
|
|
46
|
-
deployAccounts,
|
|
47
|
-
} from '../fixtures/snapshot_manager.js';
|
|
48
|
-
import { type SetupOptions, getPrivateKeyFromIndex, getSponsoredFPCAddress } from '../fixtures/utils.js';
|
|
49
51
|
import { getEndToEndTestTelemetryClient } from '../fixtures/with_telemetry_utils.js';
|
|
50
52
|
|
|
51
53
|
// Use a fixed bootstrap node private key so that we can re-use the same snapshot and the nodes can find each other
|
|
@@ -60,14 +62,14 @@ export const SHORTENED_BLOCK_TIME_CONFIG_NO_PRUNES = {
|
|
|
60
62
|
};
|
|
61
63
|
|
|
62
64
|
export class P2PNetworkTest {
|
|
63
|
-
|
|
65
|
+
public context!: EndToEndContext;
|
|
64
66
|
public baseAccountPrivateKey: `0x${string}`;
|
|
65
67
|
public baseAccount;
|
|
66
68
|
|
|
67
69
|
public logger: Logger;
|
|
68
70
|
public monitor!: ChainMonitor;
|
|
69
71
|
|
|
70
|
-
public ctx!:
|
|
72
|
+
public ctx!: EndToEndContext;
|
|
71
73
|
public attesterPrivateKeys: `0x${string}`[] = [];
|
|
72
74
|
public attesterPublicKeys: string[] = [];
|
|
73
75
|
public peerIdPrivateKeys: string[] = [];
|
|
@@ -83,6 +85,10 @@ export class P2PNetworkTest {
|
|
|
83
85
|
|
|
84
86
|
public bootstrapNode?: BootstrapNode;
|
|
85
87
|
|
|
88
|
+
// Store setup options for use in setup()
|
|
89
|
+
private setupOptions: SetupOptions;
|
|
90
|
+
private deployL1ContractsArgs: any;
|
|
91
|
+
|
|
86
92
|
constructor(
|
|
87
93
|
public readonly testName: string,
|
|
88
94
|
public bootstrapNodeEnr: string,
|
|
@@ -107,43 +113,41 @@ export class P2PNetworkTest {
|
|
|
107
113
|
|
|
108
114
|
const zkPassportParams = ZkPassportProofParams.random();
|
|
109
115
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
slashingRoundSizeInEpochs
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
aztecProofSubmissionEpochs
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
zkPassportScope: zkPassportParams.scope,
|
|
144
|
-
},
|
|
116
|
+
// Store setup options for later use
|
|
117
|
+
this.setupOptions = {
|
|
118
|
+
...initialValidatorConfig,
|
|
119
|
+
ethereumSlotDuration: initialValidatorConfig.ethereumSlotDuration ?? l1ContractsConfig.ethereumSlotDuration,
|
|
120
|
+
aztecEpochDuration: initialValidatorConfig.aztecEpochDuration ?? l1ContractsConfig.aztecEpochDuration,
|
|
121
|
+
aztecSlotDuration: initialValidatorConfig.aztecSlotDuration ?? l1ContractsConfig.aztecSlotDuration,
|
|
122
|
+
aztecProofSubmissionEpochs:
|
|
123
|
+
initialValidatorConfig.aztecProofSubmissionEpochs ?? l1ContractsConfig.aztecProofSubmissionEpochs,
|
|
124
|
+
slashingRoundSizeInEpochs:
|
|
125
|
+
initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
|
|
126
|
+
slasherFlavor: initialValidatorConfig.slasherFlavor ?? 'tally',
|
|
127
|
+
aztecTargetCommitteeSize: numberOfValidators,
|
|
128
|
+
metricsPort: metricsPort,
|
|
129
|
+
numberOfInitialFundedAccounts: 2,
|
|
130
|
+
startProverNode,
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
this.deployL1ContractsArgs = {
|
|
134
|
+
...initialValidatorConfig,
|
|
135
|
+
aztecEpochDuration: initialValidatorConfig.aztecEpochDuration ?? l1ContractsConfig.aztecEpochDuration,
|
|
136
|
+
slashingRoundSizeInEpochs:
|
|
137
|
+
initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
|
|
138
|
+
slasherFlavor: initialValidatorConfig.slasherFlavor ?? 'tally',
|
|
139
|
+
|
|
140
|
+
ethereumSlotDuration: initialValidatorConfig.ethereumSlotDuration ?? l1ContractsConfig.ethereumSlotDuration,
|
|
141
|
+
aztecSlotDuration: initialValidatorConfig.aztecSlotDuration ?? l1ContractsConfig.aztecSlotDuration,
|
|
142
|
+
aztecProofSubmissionEpochs:
|
|
143
|
+
initialValidatorConfig.aztecProofSubmissionEpochs ?? l1ContractsConfig.aztecProofSubmissionEpochs,
|
|
144
|
+
aztecTargetCommitteeSize: numberOfValidators,
|
|
145
|
+
initialValidators: [],
|
|
146
|
+
zkPassportArgs: {
|
|
147
|
+
zkPassportDomain: zkPassportParams.domain,
|
|
148
|
+
zkPassportScope: zkPassportParams.scope,
|
|
145
149
|
},
|
|
146
|
-
|
|
150
|
+
};
|
|
147
151
|
}
|
|
148
152
|
|
|
149
153
|
static async create({
|
|
@@ -187,23 +191,22 @@ export class P2PNetworkTest {
|
|
|
187
191
|
|
|
188
192
|
get fundedAccount() {
|
|
189
193
|
if (!this.deployedAccounts[0]) {
|
|
190
|
-
throw new Error('Call
|
|
194
|
+
throw new Error('Call setupAccount to create a funded account.');
|
|
191
195
|
}
|
|
192
196
|
return this.deployedAccounts[0];
|
|
193
197
|
}
|
|
194
198
|
|
|
195
199
|
async addBootstrapNode() {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
});
|
|
200
|
+
this.logger.info('Adding bootstrap node');
|
|
201
|
+
const telemetry = await getEndToEndTestTelemetryClient(this.metricsPort);
|
|
202
|
+
this.bootstrapNode = await createBootstrapNodeFromPrivateKey(
|
|
203
|
+
BOOTSTRAP_NODE_PRIVATE_KEY,
|
|
204
|
+
this.bootNodePort,
|
|
205
|
+
telemetry,
|
|
206
|
+
this.context.config,
|
|
207
|
+
);
|
|
208
|
+
// Overwrite enr with updated info
|
|
209
|
+
this.bootstrapNodeEnr = this.bootstrapNode.getENR().encodeTxt();
|
|
207
210
|
}
|
|
208
211
|
|
|
209
212
|
getValidators() {
|
|
@@ -224,128 +227,114 @@ export class P2PNetworkTest {
|
|
|
224
227
|
return { validators };
|
|
225
228
|
}
|
|
226
229
|
|
|
227
|
-
async
|
|
230
|
+
async applyBaseSetup() {
|
|
228
231
|
await this.addBootstrapNode();
|
|
229
|
-
await this.snapshotManager.snapshot('add-validators', async ({ deployL1ContractsValues, cheatCodes }) => {
|
|
230
|
-
const rollup = getContract({
|
|
231
|
-
address: deployL1ContractsValues.l1ContractAddresses.rollupAddress.toString(),
|
|
232
|
-
abi: RollupAbi,
|
|
233
|
-
client: deployL1ContractsValues.l1Client,
|
|
234
|
-
});
|
|
235
232
|
|
|
236
|
-
|
|
233
|
+
this.logger.info('Adding validators');
|
|
234
|
+
const rollup = getContract({
|
|
235
|
+
address: this.context.deployL1ContractsValues.l1ContractAddresses.rollupAddress.toString(),
|
|
236
|
+
abi: RollupAbi,
|
|
237
|
+
client: this.context.deployL1ContractsValues.l1Client,
|
|
238
|
+
});
|
|
237
239
|
|
|
238
|
-
|
|
239
|
-
address: deployL1ContractsValues.l1ContractAddresses.stakingAssetAddress.toString(),
|
|
240
|
-
abi: TestERC20Abi,
|
|
241
|
-
client: deployL1ContractsValues.l1Client,
|
|
242
|
-
});
|
|
240
|
+
this.logger.info(`Adding ${this.numberOfValidators} validators`);
|
|
243
241
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
);
|
|
250
|
-
|
|
251
|
-
const multiAdder = getContract({
|
|
252
|
-
address: multiAdderAddress.toString(),
|
|
253
|
-
abi: MultiAdderArtifact.contractAbi,
|
|
254
|
-
client: deployL1ContractsValues.l1Client,
|
|
255
|
-
});
|
|
242
|
+
const stakingAsset = getContract({
|
|
243
|
+
address: this.context.deployL1ContractsValues.l1ContractAddresses.stakingAssetAddress.toString(),
|
|
244
|
+
abi: TestERC20Abi,
|
|
245
|
+
client: this.context.deployL1ContractsValues.l1Client,
|
|
246
|
+
});
|
|
256
247
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
const { validators } = this.getValidators();
|
|
265
|
-
this.validators = validators;
|
|
266
|
-
|
|
267
|
-
const gseAddress = deployL1ContractsValues.l1ContractAddresses.gseAddress!;
|
|
268
|
-
if (!gseAddress) {
|
|
269
|
-
throw new Error('GSE contract not deployed');
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
const gseContract = new GSEContract(deployL1ContractsValues.l1Client, gseAddress.toString());
|
|
273
|
-
|
|
274
|
-
const makeValidatorTuples = async (validator: Operator) => {
|
|
275
|
-
const registrationTuple = await gseContract.makeRegistrationTuple(validator.bn254SecretKey.getValue());
|
|
276
|
-
return {
|
|
277
|
-
attester: validator.attester.toString() as `0x${string}`,
|
|
278
|
-
withdrawer: validator.withdrawer.toString() as `0x${string}`,
|
|
279
|
-
...registrationTuple,
|
|
280
|
-
};
|
|
281
|
-
};
|
|
282
|
-
const validatorTuples = await Promise.all(validators.map(makeValidatorTuples));
|
|
248
|
+
const { address: multiAdderAddress } = await deployL1Contract(
|
|
249
|
+
this.context.deployL1ContractsValues.l1Client,
|
|
250
|
+
MultiAdderArtifact.contractAbi,
|
|
251
|
+
MultiAdderArtifact.contractBytecode,
|
|
252
|
+
[rollup.address, this.context.deployL1ContractsValues.l1Client.account.address],
|
|
253
|
+
);
|
|
283
254
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
255
|
+
const multiAdder = getContract({
|
|
256
|
+
address: multiAdderAddress.toString(),
|
|
257
|
+
abi: MultiAdderArtifact.contractAbi,
|
|
258
|
+
client: this.context.deployL1ContractsValues.l1Client,
|
|
259
|
+
});
|
|
260
|
+
|
|
261
|
+
const stakeNeeded = (await rollup.read.getActivationThreshold()) * BigInt(this.numberOfValidators);
|
|
262
|
+
await Promise.all(
|
|
263
|
+
[await stakingAsset.write.mint([multiAdder.address, stakeNeeded], {} as any)].map(txHash =>
|
|
264
|
+
this.context.deployL1ContractsValues.l1Client.waitForTransactionReceipt({ hash: txHash }),
|
|
265
|
+
),
|
|
266
|
+
);
|
|
287
267
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
BigInt(await cheatCodes.rollup.getEpoch()) + (await rollup.read.getLagInEpochsForValidatorSet()) + 1n,
|
|
291
|
-
),
|
|
292
|
-
);
|
|
268
|
+
const { validators } = this.getValidators();
|
|
269
|
+
this.validators = validators;
|
|
293
270
|
|
|
294
|
-
|
|
295
|
-
|
|
271
|
+
const gseAddress = this.context.deployL1ContractsValues.l1ContractAddresses.gseAddress!;
|
|
272
|
+
if (!gseAddress) {
|
|
273
|
+
throw new Error('GSE contract not deployed');
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
const gseContract = new GSEContract(this.context.deployL1ContractsValues.l1Client, gseAddress.toString());
|
|
277
|
+
|
|
278
|
+
const makeValidatorTuples = async (validator: Operator) => {
|
|
279
|
+
const registrationTuple = await gseContract.makeRegistrationTuple(validator.bn254SecretKey.getValue());
|
|
280
|
+
return {
|
|
281
|
+
attester: validator.attester.toString() as `0x${string}`,
|
|
282
|
+
withdrawer: validator.withdrawer.toString() as `0x${string}`,
|
|
283
|
+
...registrationTuple,
|
|
284
|
+
};
|
|
285
|
+
};
|
|
286
|
+
const validatorTuples = await Promise.all(validators.map(makeValidatorTuples));
|
|
287
|
+
|
|
288
|
+
await this.context.deployL1ContractsValues.l1Client.waitForTransactionReceipt({
|
|
289
|
+
hash: await multiAdder.write.addValidators([validatorTuples]),
|
|
296
290
|
});
|
|
291
|
+
|
|
292
|
+
await this.context.cheatCodes.rollup.advanceToEpoch(
|
|
293
|
+
EpochNumber.fromBigInt(
|
|
294
|
+
BigInt(await this.context.cheatCodes.rollup.getEpoch()) +
|
|
295
|
+
(await rollup.read.getLagInEpochsForValidatorSet()) +
|
|
296
|
+
1n,
|
|
297
|
+
),
|
|
298
|
+
);
|
|
299
|
+
|
|
300
|
+
// Send and await a tx to make sure we mine a block for the warp to correctly progress.
|
|
301
|
+
await this._sendDummyTx(this.context.deployL1ContractsValues.l1Client);
|
|
297
302
|
}
|
|
298
303
|
|
|
299
304
|
async setupAccount() {
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
305
|
+
this.logger.info('Setting up account');
|
|
306
|
+
const { deployedAccounts } = await deployAccounts(
|
|
307
|
+
1,
|
|
308
|
+
this.logger,
|
|
309
|
+
)({
|
|
310
|
+
wallet: this.context.wallet,
|
|
311
|
+
initialFundedAccounts: this.context.initialFundedAccounts,
|
|
312
|
+
});
|
|
313
|
+
this.deployedAccounts = deployedAccounts;
|
|
314
|
+
[{ address: this.defaultAccountAddress }] = deployedAccounts;
|
|
315
|
+
this.wallet = this.context.wallet;
|
|
310
316
|
}
|
|
311
317
|
|
|
312
318
|
async deploySpamContract() {
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
const spamContract = await SpamContract.deploy(this.wallet)
|
|
321
|
-
.send({ from: this.defaultAccountAddress! })
|
|
322
|
-
.deployed();
|
|
323
|
-
return { contractAddress: spamContract.address };
|
|
324
|
-
},
|
|
325
|
-
({ contractAddress }) => {
|
|
326
|
-
if (!this.wallet) {
|
|
327
|
-
throw new Error('Call snapshot t.setupAccount before deploying account contract');
|
|
328
|
-
}
|
|
329
|
-
this.spamContract = SpamContract.at(contractAddress, this.wallet);
|
|
330
|
-
return Promise.resolve();
|
|
331
|
-
},
|
|
332
|
-
);
|
|
319
|
+
this.logger.info('Deploying spam contract');
|
|
320
|
+
if (!this.wallet) {
|
|
321
|
+
throw new Error('Call setupAccount before deploying spam contract');
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
const spamContract = await SpamContract.deploy(this.wallet).send({ from: this.defaultAccountAddress! }).deployed();
|
|
325
|
+
this.spamContract = spamContract;
|
|
333
326
|
}
|
|
334
327
|
|
|
335
328
|
async removeInitialNode() {
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
await aztecNode.stop();
|
|
347
|
-
},
|
|
348
|
-
);
|
|
329
|
+
this.logger.info('Removing initial node');
|
|
330
|
+
// Send and await a tx to make sure we mine a block for the warp to correctly progress.
|
|
331
|
+
const { receipt } = await this._sendDummyTx(this.context.deployL1ContractsValues.l1Client);
|
|
332
|
+
const block = await this.context.deployL1ContractsValues.l1Client.getBlock({
|
|
333
|
+
blockNumber: receipt.blockNumber,
|
|
334
|
+
});
|
|
335
|
+
this.context.dateProvider!.setTime(Number(block.timestamp) * 1000);
|
|
336
|
+
|
|
337
|
+
await this.context.aztecNodeService!.stop();
|
|
349
338
|
}
|
|
350
339
|
|
|
351
340
|
async sendDummyTx() {
|
|
@@ -361,17 +350,26 @@ export class P2PNetworkTest {
|
|
|
361
350
|
}
|
|
362
351
|
|
|
363
352
|
async setup() {
|
|
364
|
-
this.
|
|
353
|
+
this.logger.info('Setting up subsystems from fresh');
|
|
354
|
+
this.context = await setup(0, {
|
|
355
|
+
...this.setupOptions,
|
|
356
|
+
fundSponsoredFPC: true,
|
|
357
|
+
skipAccountDeployment: true,
|
|
358
|
+
slasherFlavor: this.setupOptions.slasherFlavor ?? this.deployL1ContractsArgs.slasherFlavor ?? 'none',
|
|
359
|
+
aztecTargetCommitteeSize: 0,
|
|
360
|
+
l1ContractsArgs: this.deployL1ContractsArgs,
|
|
361
|
+
});
|
|
362
|
+
this.ctx = this.context;
|
|
365
363
|
|
|
366
364
|
const sponsoredFPCAddress = await getSponsoredFPCAddress();
|
|
367
|
-
const initialFundedAccounts = [...this.
|
|
365
|
+
const initialFundedAccounts = [...this.context.initialFundedAccounts.map(a => a.address), sponsoredFPCAddress];
|
|
368
366
|
|
|
369
367
|
const { prefilledPublicData } = await getGenesisValues(initialFundedAccounts);
|
|
370
368
|
this.prefilledPublicData = prefilledPublicData;
|
|
371
369
|
|
|
372
|
-
const rollupContract = RollupContract.getFromL1ContractsValues(this.
|
|
373
|
-
this.monitor = new ChainMonitor(rollupContract, this.
|
|
374
|
-
this.monitor.on('l1-block', ({ timestamp }) => this.
|
|
370
|
+
const rollupContract = RollupContract.getFromL1ContractsValues(this.context.deployL1ContractsValues);
|
|
371
|
+
this.monitor = new ChainMonitor(rollupContract, this.context.dateProvider!).start();
|
|
372
|
+
this.monitor.on('l1-block', ({ timestamp }) => this.context.dateProvider!.setTime(Number(timestamp) * 1000));
|
|
375
373
|
}
|
|
376
374
|
|
|
377
375
|
async stopNodes(nodes: AztecNodeService[]) {
|
|
@@ -432,7 +430,7 @@ export class P2PNetworkTest {
|
|
|
432
430
|
async teardown() {
|
|
433
431
|
await this.monitor.stop();
|
|
434
432
|
await tryStop(this.bootstrapNode, this.logger);
|
|
435
|
-
await this.
|
|
433
|
+
await teardown(this.context);
|
|
436
434
|
}
|
|
437
435
|
|
|
438
436
|
async getContracts(): Promise<{
|