@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.
Files changed (167) hide show
  1. package/dest/bench/client_flows/benchmark.d.ts +3 -2
  2. package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
  3. package/dest/bench/client_flows/benchmark.js +21 -1
  4. package/dest/bench/client_flows/client_flows_benchmark.d.ts +21 -15
  5. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  6. package/dest/bench/client_flows/client_flows_benchmark.js +116 -121
  7. package/dest/bench/client_flows/config.d.ts +1 -1
  8. package/dest/bench/client_flows/data_extractor.d.ts +1 -1
  9. package/dest/bench/client_flows/data_extractor.js +7 -27
  10. package/dest/bench/utils.d.ts +5 -5
  11. package/dest/bench/utils.d.ts.map +1 -1
  12. package/dest/bench/utils.js +18 -11
  13. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +6 -7
  14. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
  15. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +98 -113
  16. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +19 -13
  17. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
  18. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +91 -70
  19. package/dest/e2e_deploy_contract/deploy_test.d.ts +5 -4
  20. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
  21. package/dest/e2e_deploy_contract/deploy_test.js +18 -13
  22. package/dest/e2e_epochs/epochs_test.d.ts +11 -9
  23. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  24. package/dest/e2e_epochs/epochs_test.js +19 -16
  25. package/dest/e2e_fees/bridging_race.notest.d.ts +1 -1
  26. package/dest/e2e_fees/bridging_race.notest.js +4 -6
  27. package/dest/e2e_fees/fees_test.d.ts +20 -16
  28. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  29. package/dest/e2e_fees/fees_test.js +127 -139
  30. package/dest/e2e_l1_publisher/write_json.d.ts +3 -3
  31. package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
  32. package/dest/e2e_l1_publisher/write_json.js +23 -18
  33. package/dest/e2e_multi_validator/utils.d.ts +1 -1
  34. package/dest/e2e_multi_validator/utils.js +1 -1
  35. package/dest/e2e_nested_contract/nested_contract_test.d.ts +6 -9
  36. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
  37. package/dest/e2e_nested_contract/nested_contract_test.js +32 -39
  38. package/dest/e2e_p2p/inactivity_slash_test.d.ts +3 -3
  39. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
  40. package/dest/e2e_p2p/inactivity_slash_test.js +7 -6
  41. package/dest/e2e_p2p/p2p_network.d.ts +225 -18
  42. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  43. package/dest/e2e_p2p/p2p_network.js +117 -110
  44. package/dest/e2e_p2p/shared.d.ts +6 -6
  45. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  46. package/dest/e2e_p2p/shared.js +6 -5
  47. package/dest/e2e_token_contract/token_contract_test.d.ts +16 -9
  48. package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
  49. package/dest/e2e_token_contract/token_contract_test.js +90 -92
  50. package/dest/fixtures/e2e_prover_test.d.ts +12 -18
  51. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  52. package/dest/fixtures/e2e_prover_test.js +98 -109
  53. package/dest/fixtures/fixtures.d.ts +2 -3
  54. package/dest/fixtures/fixtures.d.ts.map +1 -1
  55. package/dest/fixtures/fixtures.js +2 -3
  56. package/dest/fixtures/get_acvm_config.d.ts +1 -1
  57. package/dest/fixtures/get_acvm_config.js +1 -1
  58. package/dest/fixtures/get_bb_config.d.ts +1 -1
  59. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  60. package/dest/fixtures/index.d.ts +1 -1
  61. package/dest/fixtures/l1_to_l2_messaging.d.ts +4 -3
  62. package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
  63. package/dest/fixtures/l1_to_l2_messaging.js +2 -2
  64. package/dest/fixtures/logging.d.ts +1 -1
  65. package/dest/fixtures/setup.d.ts +216 -0
  66. package/dest/fixtures/setup.d.ts.map +1 -0
  67. package/dest/fixtures/setup.js +684 -0
  68. package/dest/fixtures/setup_p2p_test.d.ts +4 -4
  69. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  70. package/dest/fixtures/setup_p2p_test.js +18 -10
  71. package/dest/fixtures/token_utils.d.ts +5 -2
  72. package/dest/fixtures/token_utils.d.ts.map +1 -1
  73. package/dest/fixtures/token_utils.js +7 -4
  74. package/dest/fixtures/utils.d.ts +5 -192
  75. package/dest/fixtures/utils.d.ts.map +1 -1
  76. package/dest/fixtures/utils.js +4 -648
  77. package/dest/fixtures/web3signer.d.ts +1 -1
  78. package/dest/fixtures/web3signer.js +1 -1
  79. package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
  80. package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
  81. package/dest/fixtures/with_telemetry_utils.js +2 -2
  82. package/dest/index.d.ts +1 -1
  83. package/dest/quality_of_service/grafana_client.d.ts +41 -0
  84. package/dest/quality_of_service/grafana_client.d.ts.map +1 -0
  85. package/dest/quality_of_service/{alert_checker.js → grafana_client.js} +1 -1
  86. package/dest/quality_of_service/prometheus_client.d.ts +38 -0
  87. package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
  88. package/dest/quality_of_service/prometheus_client.js +67 -0
  89. package/dest/shared/cross_chain_test_harness.d.ts +5 -3
  90. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  91. package/dest/shared/cross_chain_test_harness.js +3 -3
  92. package/dest/shared/gas_portal_test_harness.d.ts +2 -2
  93. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  94. package/dest/shared/gas_portal_test_harness.js +1 -1
  95. package/dest/shared/index.d.ts +2 -2
  96. package/dest/shared/index.d.ts.map +1 -1
  97. package/dest/shared/jest_setup.d.ts +1 -1
  98. package/dest/shared/submit-transactions.d.ts +1 -1
  99. package/dest/shared/submit-transactions.d.ts.map +1 -1
  100. package/dest/shared/uniswap_l1_l2.d.ts +3 -27
  101. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  102. package/dest/shared/uniswap_l1_l2.js +43 -23
  103. package/dest/simulators/index.d.ts +1 -1
  104. package/dest/simulators/lending_simulator.d.ts +2 -2
  105. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  106. package/dest/simulators/lending_simulator.js +5 -3
  107. package/dest/simulators/token_simulator.d.ts +1 -1
  108. package/dest/simulators/token_simulator.d.ts.map +1 -1
  109. package/dest/spartan/setup_test_wallets.d.ts +8 -5
  110. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  111. package/dest/spartan/setup_test_wallets.js +45 -10
  112. package/dest/spartan/tx_metrics.d.ts +52 -0
  113. package/dest/spartan/tx_metrics.d.ts.map +1 -0
  114. package/dest/spartan/tx_metrics.js +248 -0
  115. package/dest/spartan/utils.d.ts +66 -24
  116. package/dest/spartan/utils.d.ts.map +1 -1
  117. package/dest/spartan/utils.js +326 -133
  118. package/package.json +43 -40
  119. package/src/bench/client_flows/benchmark.ts +24 -2
  120. package/src/bench/client_flows/client_flows_benchmark.ts +157 -162
  121. package/src/bench/client_flows/data_extractor.ts +6 -28
  122. package/src/bench/utils.ts +22 -14
  123. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +107 -142
  124. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +140 -124
  125. package/src/e2e_deploy_contract/deploy_test.ts +22 -15
  126. package/src/e2e_epochs/epochs_test.ts +39 -25
  127. package/src/e2e_fees/bridging_race.notest.ts +4 -7
  128. package/src/e2e_fees/fees_test.ts +180 -215
  129. package/src/e2e_l1_publisher/write_json.ts +26 -20
  130. package/src/e2e_multi_validator/utils.ts +1 -1
  131. package/src/e2e_nested_contract/nested_contract_test.ts +35 -55
  132. package/src/e2e_p2p/inactivity_slash_test.ts +10 -9
  133. package/src/e2e_p2p/p2p_network.ts +175 -180
  134. package/src/e2e_p2p/shared.ts +15 -7
  135. package/src/e2e_token_contract/token_contract_test.ts +105 -118
  136. package/src/fixtures/e2e_prover_test.ts +120 -153
  137. package/src/fixtures/fixtures.ts +2 -5
  138. package/src/fixtures/get_acvm_config.ts +1 -1
  139. package/src/fixtures/l1_to_l2_messaging.ts +4 -2
  140. package/src/fixtures/setup.ts +1010 -0
  141. package/src/fixtures/setup_p2p_test.ts +23 -9
  142. package/src/fixtures/token_utils.ts +4 -4
  143. package/src/fixtures/utils.ts +27 -947
  144. package/src/fixtures/web3signer.ts +1 -1
  145. package/src/fixtures/with_telemetry_utils.ts +2 -2
  146. package/src/guides/up_quick_start.sh +1 -1
  147. package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +1 -1
  148. package/src/quality_of_service/prometheus_client.ts +113 -0
  149. package/src/shared/cross_chain_test_harness.ts +6 -9
  150. package/src/shared/gas_portal_test_harness.ts +2 -2
  151. package/src/shared/index.ts +1 -1
  152. package/src/shared/uniswap_l1_l2.ts +53 -67
  153. package/src/simulators/lending_simulator.ts +6 -4
  154. package/src/spartan/DEVELOP.md +7 -0
  155. package/src/spartan/setup_test_wallets.ts +56 -13
  156. package/src/spartan/tx_metrics.ts +231 -0
  157. package/src/spartan/utils.ts +379 -75
  158. package/dest/fixtures/setup_l1_contracts.d.ts +0 -6
  159. package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
  160. package/dest/fixtures/setup_l1_contracts.js +0 -17
  161. package/dest/fixtures/snapshot_manager.d.ts +0 -95
  162. package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
  163. package/dest/fixtures/snapshot_manager.js +0 -505
  164. package/dest/quality_of_service/alert_checker.d.ts +0 -41
  165. package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
  166. package/src/fixtures/setup_l1_contracts.ts +0 -26
  167. 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 { GSEContract, MultiAdderArtifact, RollupContract, createL1TxUtilsFromViemWallet, deployL1Contract, getL1ContractsConfigEnvVars } from '@aztec/ethereum';
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
- snapshotManager;
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, mockZkPassportVerifier){
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
- this.snapshotManager = createSnapshotManager(`e2e_p2p_network/${testName}`, process.env.E2E_DATA_PATH, {
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, mockZkPassportVerifier }) {
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, mockZkPassportVerifier);
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 snapshot t.setupAccount to create a funded account.');
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
- await this.snapshotManager.snapshot('add-bootstrap-node', async ({ aztecNodeConfig })=>{
121
- const telemetry = getEndToEndTestTelemetryClient(this.metricsPort);
122
- this.bootstrapNode = await createBootstrapNodeFromPrivateKey(BOOTSTRAP_NODE_PRIVATE_KEY, this.bootNodePort, telemetry, aztecNodeConfig);
123
- // Overwrite enr with updated info
124
- this.bootstrapNodeEnr = this.bootstrapNode.getENR().encodeTxt();
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 applyBaseSnapshots() {
149
+ async applyBaseSetup() {
144
150
  await this.addBootstrapNode();
145
- await this.snapshotManager.snapshot('add-validators', async ({ deployL1ContractsValues, cheatCodes })=>{
146
- const rollup = getContract({
147
- address: deployL1ContractsValues.l1ContractAddresses.rollupAddress.toString(),
148
- abi: RollupAbi,
149
- client: deployL1ContractsValues.l1Client
150
- });
151
- this.logger.info(`Adding ${this.numberOfValidators} validators`);
152
- const stakingAsset = getContract({
153
- address: deployL1ContractsValues.l1ContractAddresses.stakingAssetAddress.toString(),
154
- abi: TestERC20Abi,
155
- client: deployL1ContractsValues.l1Client
156
- });
157
- const { address: multiAdderAddress } = await deployL1Contract(deployL1ContractsValues.l1Client, MultiAdderArtifact.contractAbi, MultiAdderArtifact.contractBytecode, [
158
- rollup.address,
159
- deployL1ContractsValues.l1Client.account.address
160
- ]);
161
- const multiAdder = getContract({
162
- address: multiAdderAddress.toString(),
163
- abi: MultiAdderArtifact.contractAbi,
164
- client: deployL1ContractsValues.l1Client
165
- });
166
- const stakeNeeded = await rollup.read.getActivationThreshold() * BigInt(this.numberOfValidators);
167
- await Promise.all([
168
- await stakingAsset.write.mint([
169
- multiAdder.address,
170
- stakeNeeded
171
- ], {})
172
- ].map((txHash)=>deployL1ContractsValues.l1Client.waitForTransactionReceipt({
173
- hash: txHash
174
- })));
175
- const { validators } = this.getValidators();
176
- this.validators = validators;
177
- const gseAddress = deployL1ContractsValues.l1ContractAddresses.gseAddress;
178
- if (!gseAddress) {
179
- throw new Error('GSE contract not deployed');
180
- }
181
- const gseContract = new GSEContract(deployL1ContractsValues.l1Client, gseAddress.toString());
182
- const makeValidatorTuples = async (validator)=>{
183
- const registrationTuple = await gseContract.makeRegistrationTuple(validator.bn254SecretKey.getValue());
184
- return {
185
- attester: validator.attester.toString(),
186
- withdrawer: validator.withdrawer.toString(),
187
- ...registrationTuple
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
- const validatorTuples = await Promise.all(validators.map(makeValidatorTuples));
191
- await deployL1ContractsValues.l1Client.waitForTransactionReceipt({
192
- hash: await multiAdder.write.addValidators([
193
- validatorTuples
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
- await this.snapshotManager.snapshot('setup-account', deployAccounts(1, this.logger), ({ deployedAccounts }, { wallet })=>{
203
- this.deployedAccounts = deployedAccounts;
204
- [{ address: this.defaultAccountAddress }] = deployedAccounts;
205
- this.wallet = wallet;
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
- await this.snapshotManager.snapshot('add-spam-contract', async ()=>{
211
- if (!this.wallet) {
212
- throw new Error('Call snapshot t.setupAccount before deploying account contract');
213
- }
214
- const spamContract = await SpamContract.deploy(this.wallet).send({
215
- from: this.defaultAccountAddress
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);
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
- await this.snapshotManager.snapshot('remove-initial-validator', async ({ deployL1ContractsValues, aztecNode, dateProvider })=>{
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(deployL1ContractsValues.l1Client);
231
- const block = await deployL1ContractsValues.l1Client.getBlock({
232
- blockNumber: receipt.blockNumber
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.ctx = await this.snapshotManager.setup();
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.ctx.initialFundedAccounts.map((a)=>a.address),
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.ctx.deployL1ContractsValues);
258
- this.monitor = new ChainMonitor(rollupContract, this.ctx.dateProvider).start();
259
- this.monitor.on('l1-block', ({ timestamp })=>this.ctx.dateProvider.setTime(Number(timestamp) * 1000));
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.snapshotManager.teardown();
303
+ await teardown(this.context);
297
304
  }
298
305
  async getContracts() {
299
306
  if (!this.ctx.deployL1ContractsValues) {
300
- throw new Error('DeployL1ContractsValues not set');
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
  });
@@ -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=shared.d.ts.map
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":"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"}
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"}
@@ -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 = await TestContract.at(testContractInstance.address, wallet);
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.getLagInEpochs() + 1n;
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.getLagInEpochs() + 1n);
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 SubsystemsContext } from '../fixtures/snapshot_manager.js';
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
- private snapshotManager;
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
- * Adds two state shifts to snapshot manager.
26
- * 1. Add 3 accounts.
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(): Promise<void>;
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
- applyMintSnapshot(): Promise<void>;
40
+ private applyMint;
34
41
  }
35
- //# sourceMappingURL=token_contract_test.d.ts.map
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,EAEL,KAAK,iBAAiB,EAIvB,MAAM,iCAAiC,CAAC;AAEzC,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,CAAC,eAAe,CAAmB;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,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;gBAEnB,QAAQ,EAAE,MAAM;IAO5B;;;;OAIG;IACG,kBAAkB;IAkElB,KAAK;IAIX,QAAQ,GAAI,CAAC,EACX,MAAM,MAAM,EACZ,OAAO,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,CAAC,CAAC,EACjD,UAAS,CAAC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAA2B,KAChG,OAAO,CAAC,IAAI,CAAC,CAAwD;IAElE,QAAQ;IAIR,iBAAiB;CAqCxB"}
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"}