@aztec/end-to-end 0.0.1-commit.b655e406 → 0.0.1-commit.bf2612ae

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 (209) 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 +129 -119
  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 +8 -7
  11. package/dest/bench/utils.d.ts.map +1 -1
  12. package/dest/bench/utils.js +27 -18
  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 +96 -112
  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 +22 -16
  25. package/dest/e2e_fees/bridging_race.notest.d.ts +1 -1
  26. package/dest/e2e_fees/bridging_race.notest.js +5 -7
  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 +2 -2
  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 +31 -38
  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 +121 -110
  44. package/dest/e2e_p2p/shared.d.ts +11 -11
  45. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  46. package/dest/e2e_p2p/shared.js +13 -19
  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 +89 -91
  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 +100 -108
  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 +218 -0
  66. package/dest/fixtures/setup.d.ts.map +1 -0
  67. package/dest/fixtures/setup.js +690 -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 +13 -7
  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 +7 -6
  90. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  91. package/dest/shared/cross_chain_test_harness.js +14 -14
  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 +2 -2
  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 +3 -3
  99. package/dest/shared/submit-transactions.d.ts.map +1 -1
  100. package/dest/shared/submit-transactions.js +9 -11
  101. package/dest/shared/uniswap_l1_l2.d.ts +3 -27
  102. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  103. package/dest/shared/uniswap_l1_l2.js +55 -35
  104. package/dest/simulators/index.d.ts +1 -1
  105. package/dest/simulators/lending_simulator.d.ts +2 -2
  106. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  107. package/dest/simulators/lending_simulator.js +6 -4
  108. package/dest/simulators/token_simulator.d.ts +1 -1
  109. package/dest/simulators/token_simulator.d.ts.map +1 -1
  110. package/dest/spartan/setup_test_wallets.d.ts +8 -5
  111. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  112. package/dest/spartan/setup_test_wallets.js +85 -23
  113. package/dest/spartan/tx_metrics.d.ts +54 -0
  114. package/dest/spartan/tx_metrics.d.ts.map +1 -0
  115. package/dest/spartan/tx_metrics.js +272 -0
  116. package/dest/spartan/utils/bot.d.ts +27 -0
  117. package/dest/spartan/utils/bot.d.ts.map +1 -0
  118. package/dest/spartan/utils/bot.js +141 -0
  119. package/dest/spartan/utils/chaos.d.ts +79 -0
  120. package/dest/spartan/utils/chaos.d.ts.map +1 -0
  121. package/dest/spartan/utils/chaos.js +142 -0
  122. package/dest/spartan/utils/clients.d.ts +39 -0
  123. package/dest/spartan/utils/clients.d.ts.map +1 -0
  124. package/dest/spartan/utils/clients.js +90 -0
  125. package/dest/spartan/utils/config.d.ts +36 -0
  126. package/dest/spartan/utils/config.d.ts.map +1 -0
  127. package/dest/spartan/utils/config.js +20 -0
  128. package/dest/spartan/utils/health.d.ts +63 -0
  129. package/dest/spartan/utils/health.d.ts.map +1 -0
  130. package/dest/spartan/utils/health.js +202 -0
  131. package/dest/spartan/utils/helm.d.ts +15 -0
  132. package/dest/spartan/utils/helm.d.ts.map +1 -0
  133. package/dest/spartan/utils/helm.js +47 -0
  134. package/dest/spartan/utils/index.d.ts +9 -0
  135. package/dest/spartan/utils/index.d.ts.map +1 -0
  136. package/dest/spartan/utils/index.js +18 -0
  137. package/dest/spartan/utils/k8s.d.ts +98 -0
  138. package/dest/spartan/utils/k8s.d.ts.map +1 -0
  139. package/dest/spartan/utils/k8s.js +257 -0
  140. package/dest/spartan/utils/nodes.d.ts +31 -0
  141. package/dest/spartan/utils/nodes.d.ts.map +1 -0
  142. package/dest/spartan/utils/nodes.js +290 -0
  143. package/dest/spartan/utils/scripts.d.ts +16 -0
  144. package/dest/spartan/utils/scripts.d.ts.map +1 -0
  145. package/dest/spartan/utils/scripts.js +66 -0
  146. package/dest/spartan/utils.d.ts +2 -218
  147. package/dest/spartan/utils.d.ts.map +1 -1
  148. package/dest/spartan/utils.js +1 -749
  149. package/package.json +43 -40
  150. package/src/bench/client_flows/benchmark.ts +24 -2
  151. package/src/bench/client_flows/client_flows_benchmark.ts +152 -170
  152. package/src/bench/client_flows/data_extractor.ts +6 -28
  153. package/src/bench/utils.ts +30 -20
  154. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +104 -142
  155. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +140 -124
  156. package/src/e2e_deploy_contract/deploy_test.ts +22 -15
  157. package/src/e2e_epochs/epochs_test.ts +67 -48
  158. package/src/e2e_fees/bridging_race.notest.ts +5 -11
  159. package/src/e2e_fees/fees_test.ts +180 -219
  160. package/src/e2e_l1_publisher/write_json.ts +25 -19
  161. package/src/e2e_multi_validator/utils.ts +1 -1
  162. package/src/e2e_nested_contract/nested_contract_test.ts +33 -55
  163. package/src/e2e_p2p/inactivity_slash_test.ts +10 -9
  164. package/src/e2e_p2p/p2p_network.ts +181 -180
  165. package/src/e2e_p2p/shared.ts +25 -27
  166. package/src/e2e_token_contract/token_contract_test.ts +103 -118
  167. package/src/fixtures/e2e_prover_test.ts +111 -149
  168. package/src/fixtures/fixtures.ts +2 -5
  169. package/src/fixtures/get_acvm_config.ts +1 -1
  170. package/src/fixtures/l1_to_l2_messaging.ts +4 -2
  171. package/src/fixtures/setup.ts +1017 -0
  172. package/src/fixtures/setup_p2p_test.ts +23 -9
  173. package/src/fixtures/token_utils.ts +8 -7
  174. package/src/fixtures/utils.ts +27 -947
  175. package/src/fixtures/web3signer.ts +1 -1
  176. package/src/fixtures/with_telemetry_utils.ts +2 -2
  177. package/src/guides/up_quick_start.sh +1 -1
  178. package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +1 -1
  179. package/src/quality_of_service/prometheus_client.ts +113 -0
  180. package/src/shared/cross_chain_test_harness.ts +19 -36
  181. package/src/shared/gas_portal_test_harness.ts +3 -3
  182. package/src/shared/index.ts +1 -1
  183. package/src/shared/submit-transactions.ts +9 -15
  184. package/src/shared/uniswap_l1_l2.ts +65 -86
  185. package/src/simulators/lending_simulator.ts +7 -5
  186. package/src/spartan/DEVELOP.md +7 -0
  187. package/src/spartan/setup_test_wallets.ts +119 -28
  188. package/src/spartan/tx_metrics.ts +250 -0
  189. package/src/spartan/utils/bot.ts +185 -0
  190. package/src/spartan/utils/chaos.ts +253 -0
  191. package/src/spartan/utils/clients.ts +100 -0
  192. package/src/spartan/utils/config.ts +26 -0
  193. package/src/spartan/utils/health.ts +255 -0
  194. package/src/spartan/utils/helm.ts +84 -0
  195. package/src/spartan/utils/index.ts +62 -0
  196. package/src/spartan/utils/k8s.ts +375 -0
  197. package/src/spartan/utils/nodes.ts +323 -0
  198. package/src/spartan/utils/scripts.ts +63 -0
  199. package/src/spartan/utils.ts +1 -942
  200. package/dest/fixtures/setup_l1_contracts.d.ts +0 -6
  201. package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
  202. package/dest/fixtures/setup_l1_contracts.js +0 -17
  203. package/dest/fixtures/snapshot_manager.d.ts +0 -95
  204. package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
  205. package/dest/fixtures/snapshot_manager.js +0 -505
  206. package/dest/quality_of_service/alert_checker.d.ts +0 -41
  207. package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
  208. package/src/fixtures/setup_l1_contracts.ts +0 -26
  209. 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,12 @@ export class P2PNetworkTest {
82
90
  slashingRoundSizeInEpochs: initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
83
91
  slasherFlavor: initialValidatorConfig.slasherFlavor ?? 'tally',
84
92
  aztecTargetCommitteeSize: numberOfValidators,
85
- salt: 420,
86
93
  metricsPort: metricsPort,
87
94
  numberOfInitialFundedAccounts: 2,
88
- startProverNode
89
- }, {
95
+ startProverNode,
96
+ walletMinFeePadding: 2.0
97
+ };
98
+ this.deployL1ContractsArgs = {
90
99
  ...initialValidatorConfig,
91
100
  aztecEpochDuration: initialValidatorConfig.aztecEpochDuration ?? l1ContractsConfig.aztecEpochDuration,
92
101
  slashingRoundSizeInEpochs: initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
@@ -97,32 +106,30 @@ export class P2PNetworkTest {
97
106
  aztecTargetCommitteeSize: numberOfValidators,
98
107
  initialValidators: [],
99
108
  zkPassportArgs: {
100
- mockZkPassportVerifier,
101
109
  zkPassportDomain: zkPassportParams.domain,
102
110
  zkPassportScope: zkPassportParams.scope
103
111
  }
104
- });
112
+ };
105
113
  }
106
- static async create({ testName, numberOfNodes, numberOfValidators, basePort, metricsPort, initialConfig, startProverNode, mockZkPassportVerifier }) {
114
+ static async create({ testName, numberOfNodes, numberOfValidators, basePort, metricsPort, initialConfig, startProverNode }) {
107
115
  const port = basePort || await getPort();
108
116
  const bootstrapNodeENR = await getBootstrapNodeEnr(BOOTSTRAP_NODE_PRIVATE_KEY, port);
109
117
  const bootstrapNodeEnr = bootstrapNodeENR.encodeTxt();
110
118
  const initialValidatorConfig = await createValidatorConfig(initialConfig ?? {}, bootstrapNodeEnr);
111
- return new P2PNetworkTest(testName, bootstrapNodeEnr, port, numberOfValidators, initialValidatorConfig, numberOfNodes, metricsPort, startProverNode, mockZkPassportVerifier);
119
+ return new P2PNetworkTest(testName, bootstrapNodeEnr, port, numberOfValidators, initialValidatorConfig, numberOfNodes, metricsPort, startProverNode);
112
120
  }
113
121
  get fundedAccount() {
114
122
  if (!this.deployedAccounts[0]) {
115
- throw new Error('Call snapshot t.setupAccount to create a funded account.');
123
+ throw new Error('Call setupAccount to create a funded account.');
116
124
  }
117
125
  return this.deployedAccounts[0];
118
126
  }
119
127
  async addBootstrapNode() {
120
- 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
- });
128
+ this.logger.info('Adding bootstrap node');
129
+ const telemetry = await getEndToEndTestTelemetryClient(this.metricsPort);
130
+ this.bootstrapNode = await createBootstrapNodeFromPrivateKey(BOOTSTRAP_NODE_PRIVATE_KEY, this.bootNodePort, telemetry, this.context.config);
131
+ // Overwrite enr with updated info
132
+ this.bootstrapNodeEnr = this.bootstrapNode.getENR().encodeTxt();
126
133
  }
127
134
  getValidators() {
128
135
  const validators = [];
@@ -140,100 +147,92 @@ export class P2PNetworkTest {
140
147
  validators
141
148
  };
142
149
  }
143
- async applyBaseSnapshots() {
150
+ async applyBaseSetup() {
144
151
  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
- };
152
+ this.logger.info('Adding validators');
153
+ const rollup = getContract({
154
+ address: this.context.deployL1ContractsValues.l1ContractAddresses.rollupAddress.toString(),
155
+ abi: RollupAbi,
156
+ client: this.context.deployL1ContractsValues.l1Client
157
+ });
158
+ this.logger.info(`Adding ${this.numberOfValidators} validators`);
159
+ const stakingAsset = getContract({
160
+ address: this.context.deployL1ContractsValues.l1ContractAddresses.stakingAssetAddress.toString(),
161
+ abi: TestERC20Abi,
162
+ client: this.context.deployL1ContractsValues.l1Client
163
+ });
164
+ const { address: multiAdderAddress } = await deployL1Contract(this.context.deployL1ContractsValues.l1Client, MultiAdderArtifact.contractAbi, MultiAdderArtifact.contractBytecode, [
165
+ rollup.address,
166
+ this.context.deployL1ContractsValues.l1Client.account.address
167
+ ]);
168
+ const multiAdder = getContract({
169
+ address: multiAdderAddress.toString(),
170
+ abi: MultiAdderArtifact.contractAbi,
171
+ client: this.context.deployL1ContractsValues.l1Client
172
+ });
173
+ const stakeNeeded = await rollup.read.getActivationThreshold() * BigInt(this.numberOfValidators);
174
+ await Promise.all([
175
+ await stakingAsset.write.mint([
176
+ multiAdder.address,
177
+ stakeNeeded
178
+ ], {})
179
+ ].map((txHash)=>this.context.deployL1ContractsValues.l1Client.waitForTransactionReceipt({
180
+ hash: txHash
181
+ })));
182
+ const { validators } = this.getValidators();
183
+ this.validators = validators;
184
+ const gseAddress = this.context.deployL1ContractsValues.l1ContractAddresses.gseAddress;
185
+ if (!gseAddress) {
186
+ throw new Error('GSE contract not deployed');
187
+ }
188
+ const gseContract = new GSEContract(this.context.deployL1ContractsValues.l1Client, gseAddress.toString());
189
+ const makeValidatorTuples = async (validator)=>{
190
+ const registrationTuple = await gseContract.makeRegistrationTuple(validator.bn254SecretKey.getValue());
191
+ return {
192
+ attester: validator.attester.toString(),
193
+ withdrawer: validator.withdrawer.toString(),
194
+ ...registrationTuple
189
195
  };
190
- 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);
196
+ };
197
+ const validatorTuples = await Promise.all(validators.map(makeValidatorTuples));
198
+ await this.context.deployL1ContractsValues.l1Client.waitForTransactionReceipt({
199
+ hash: await multiAdder.write.addValidators([
200
+ validatorTuples
201
+ ])
199
202
  });
203
+ await this.context.cheatCodes.rollup.advanceToEpoch(EpochNumber.fromBigInt(BigInt(await this.context.cheatCodes.rollup.getEpoch()) + await rollup.read.getLagInEpochsForValidatorSet() + 1n));
204
+ // Send and await a tx to make sure we mine a block for the warp to correctly progress.
205
+ await this._sendDummyTx(this.context.deployL1ContractsValues.l1Client);
200
206
  }
201
207
  async setupAccount() {
202
- 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();
208
+ this.logger.info('Setting up account');
209
+ const { deployedAccounts } = await deployAccounts(1, this.logger)({
210
+ wallet: this.context.wallet,
211
+ initialFundedAccounts: this.context.initialFundedAccounts
207
212
  });
213
+ this.deployedAccounts = deployedAccounts;
214
+ [{ address: this.defaultAccountAddress }] = deployedAccounts;
215
+ this.wallet = this.context.wallet;
208
216
  }
209
217
  async deploySpamContract() {
210
- 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);
218
+ this.logger.info('Deploying spam contract');
219
+ if (!this.wallet) {
220
+ throw new Error('Call setupAccount before deploying spam contract');
221
+ }
222
+ const spamContract = await SpamContract.deploy(this.wallet).send({
223
+ from: this.defaultAccountAddress
225
224
  });
225
+ this.spamContract = spamContract;
226
226
  }
227
227
  async removeInitialNode() {
228
- 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();
228
+ this.logger.info('Removing initial node');
229
+ // Send and await a tx to make sure we mine a block for the warp to correctly progress.
230
+ const { receipt } = await this._sendDummyTx(this.context.deployL1ContractsValues.l1Client);
231
+ const block = await this.context.deployL1ContractsValues.l1Client.getBlock({
232
+ blockNumber: receipt.blockNumber
236
233
  });
234
+ this.context.dateProvider.setTime(Number(block.timestamp) * 1000);
235
+ await this.context.aztecNodeService.stop();
237
236
  }
238
237
  async sendDummyTx() {
239
238
  return await this._sendDummyTx(this.ctx.deployL1ContractsValues.l1Client);
@@ -246,17 +245,29 @@ export class P2PNetworkTest {
246
245
  });
247
246
  }
248
247
  async setup() {
249
- this.ctx = await this.snapshotManager.setup();
248
+ this.logger.info('Setting up subsystems from fresh');
249
+ this.context = await setup(0, {
250
+ ...this.setupOptions,
251
+ fundSponsoredFPC: true,
252
+ skipAccountDeployment: true,
253
+ slasherFlavor: this.setupOptions.slasherFlavor ?? this.deployL1ContractsArgs.slasherFlavor ?? 'none',
254
+ aztecTargetCommitteeSize: 0,
255
+ l1ContractsArgs: this.deployL1ContractsArgs
256
+ }, // Use checkpointed chain tip for PXE to avoid issues with blocks being dropped due to pruned anchor blocks.
257
+ {
258
+ syncChainTip: 'checkpointed'
259
+ });
260
+ this.ctx = this.context;
250
261
  const sponsoredFPCAddress = await getSponsoredFPCAddress();
251
262
  const initialFundedAccounts = [
252
- ...this.ctx.initialFundedAccounts.map((a)=>a.address),
263
+ ...this.context.initialFundedAccounts.map((a)=>a.address),
253
264
  sponsoredFPCAddress
254
265
  ];
255
266
  const { prefilledPublicData } = await getGenesisValues(initialFundedAccounts);
256
267
  this.prefilledPublicData = prefilledPublicData;
257
- const rollupContract = RollupContract.getFromL1ContractsValues(this.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));
268
+ const rollupContract = RollupContract.getFromL1ContractsValues(this.context.deployL1ContractsValues);
269
+ this.monitor = new ChainMonitor(rollupContract, this.context.dateProvider).start();
270
+ this.monitor.on('l1-block', ({ timestamp })=>this.context.dateProvider.setTime(Number(timestamp) * 1000));
260
271
  }
261
272
  async stopNodes(nodes) {
262
273
  this.logger.info('Stopping nodes');
@@ -293,15 +304,15 @@ export class P2PNetworkTest {
293
304
  async teardown() {
294
305
  await this.monitor.stop();
295
306
  await tryStop(this.bootstrapNode, this.logger);
296
- await this.snapshotManager.teardown();
307
+ await teardown(this.context);
297
308
  }
298
309
  async getContracts() {
299
310
  if (!this.ctx.deployL1ContractsValues) {
300
- throw new Error('DeployL1ContractsValues not set');
311
+ throw new Error('DeployAztecL1ContractsValues not set');
301
312
  }
302
313
  const rollup = new RollupContract(this.ctx.deployL1ContractsValues.l1Client, this.ctx.deployL1ContractsValues.l1ContractAddresses.rollupAddress);
303
314
  const slasherContract = getContract({
304
- address: getAddress(await rollup.getSlasherAddress()),
315
+ address: getAddress((await rollup.getSlasherAddress()).toString()),
305
316
  abi: SlasherAbi,
306
317
  client: this.ctx.deployL1ContractsValues.l1Client
307
318
  });
@@ -1,25 +1,25 @@
1
1
  import type { InitialAccountData } from '@aztec/accounts/testing';
2
2
  import type { AztecNodeService } from '@aztec/aztec-node';
3
3
  import { AztecAddress } from '@aztec/aztec.js/addresses';
4
- import { type SentTx } from '@aztec/aztec.js/contracts';
5
4
  import type { Logger } from '@aztec/aztec.js/log';
6
- import { Tx } from '@aztec/aztec.js/tx';
5
+ import { TxHash } from '@aztec/aztec.js/tx';
7
6
  import type { RollupCheatCodes } from '@aztec/aztec/testing';
8
- import type { EmpireSlashingProposerContract, RollupContract, TallySlashingProposerContract } from '@aztec/ethereum';
7
+ import type { EmpireSlashingProposerContract, RollupContract, TallySlashingProposerContract } from '@aztec/ethereum/contracts';
9
8
  import type { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
10
9
  import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
11
10
  import type { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
11
+ import { type ProvenTx } from '@aztec/test-wallet/server';
12
12
  export declare const submitComplexTxsTo: (logger: Logger, from: AztecAddress, spamContract: SpamContract, numTxs: number, opts?: {
13
- callPublic?: boolean;
14
- }) => Promise<SentTx[]>;
15
- export declare const submitTransactions: (logger: Logger, node: AztecNodeService, numTxs: number, fundedAccount: InitialAccountData) => Promise<SentTx[]>;
16
- export declare function prepareTransactions(logger: Logger, node: AztecNodeService, numTxs: number, fundedAccount: InitialAccountData): Promise<Tx[]>;
13
+ callPublic?: boolean | undefined;
14
+ }) => Promise<TxHash[]>;
15
+ export declare const submitTransactions: (logger: Logger, node: AztecNodeService, numTxs: number, fundedAccount: InitialAccountData) => Promise<TxHash[]>;
16
+ export declare function prepareTransactions(logger: Logger, node: AztecNodeService, numTxs: number, fundedAccount: InitialAccountData): Promise<ProvenTx[]>;
17
17
  export declare function awaitProposalExecution(slashingProposer: EmpireSlashingProposerContract | TallySlashingProposerContract, timeoutSeconds: number, logger: Logger): Promise<bigint>;
18
- export declare function awaitCommitteeExists({ rollup, logger, }: {
18
+ export declare function awaitCommitteeExists({ rollup, logger }: {
19
19
  rollup: RollupContract;
20
20
  logger: Logger;
21
21
  }): Promise<readonly `0x${string}`[]>;
22
- export declare function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSize, epochDuration, waitUntilOffenseCount, timeoutSeconds, }: {
22
+ export declare function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSize, epochDuration, waitUntilOffenseCount, timeoutSeconds }: {
23
23
  nodeAdmin: AztecNodeAdmin;
24
24
  logger: Logger;
25
25
  slashingRoundSize: number;
@@ -31,7 +31,7 @@ export declare function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundS
31
31
  * Await the committee to be slashed out of the validator set.
32
32
  * Currently assumes that the committee is the same size as the validator set.
33
33
  */
34
- export declare function awaitCommitteeKicked({ rollup, cheatCodes, committee, slashFactory, slashingProposer, slashingRoundSize, aztecSlotDuration, aztecEpochDuration, logger, offenseEpoch, }: {
34
+ export declare function awaitCommitteeKicked({ rollup, cheatCodes, committee, slashFactory, slashingProposer, slashingRoundSize, aztecSlotDuration, aztecEpochDuration, logger, offenseEpoch }: {
35
35
  rollup: RollupContract;
36
36
  cheatCodes: RollupCheatCodes;
37
37
  committee: readonly `0x${string}`[];
@@ -43,4 +43,4 @@ export declare function awaitCommitteeKicked({ rollup, cheatCodes, committee, sl
43
43
  logger: Logger;
44
44
  offenseEpoch: number;
45
45
  }): Promise<void>;
46
- //# sourceMappingURL=shared.d.ts.map
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZTJlX3AycC9zaGFyZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd6RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEtBQUssRUFDViw4QkFBOEIsRUFDOUIsY0FBYyxFQUNkLDZCQUE2QixFQUM5QixNQUFNLDJCQUEyQixDQUFDO0FBTW5DLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBSXZFLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RFLE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkUsT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFnQyxNQUFNLDJCQUEyQixDQUFDO0FBS3hGLGVBQU8sTUFBTSxrQkFBa0I7O3VCQWtCOUIsQ0FBQztBQUdGLGVBQU8sTUFBTSxrQkFBa0Isa0hBVzlCLENBQUM7QUFFRix3QkFBc0IsbUJBQW1CLENBQ3ZDLE1BQU0sRUFBRSxNQUFNLEVBQ2QsSUFBSSxFQUFFLGdCQUFnQixFQUN0QixNQUFNLEVBQUUsTUFBTSxFQUNkLGFBQWEsRUFBRSxrQkFBa0IsR0FDaEMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBb0JyQjtBQUVELHdCQUFnQixzQkFBc0IsQ0FDcEMsZ0JBQWdCLEVBQUUsOEJBQThCLEdBQUcsNkJBQTZCLEVBQ2hGLGNBQWMsRUFBRSxNQUFNLEVBQ3RCLE1BQU0sRUFBRSxNQUFNLEdBQ2IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQTBCakI7QUFFRCx3QkFBc0Isb0JBQW9CLENBQUMsRUFDekMsTUFBTSxFQUNOLE1BQU0sRUFDUCxFQUFFO0lBQ0QsTUFBTSxFQUFFLGNBQWMsQ0FBQztJQUN2QixNQUFNLEVBQUUsTUFBTSxDQUFDO0NBQ2hCLEdBQUcsT0FBTyxDQUFDLFNBQVMsS0FBSyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBWXBDO0FBRUQsd0JBQXNCLG9CQUFvQixDQUFDLEVBQ3pDLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixxQkFBcUIsRUFDckIsY0FBb0IsRUFDckIsRUFBRTtJQUNELFNBQVMsRUFBRSxjQUFjLENBQUM7SUFDMUIsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLGlCQUFpQixFQUFFLE1BQU0sQ0FBQztJQUMxQixhQUFhLEVBQUUsTUFBTSxDQUFDO0lBQ3RCLHFCQUFxQixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQy9CLGNBQWMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUN6QiwrQ0FrQkE7QUFFRDs7O0dBR0c7QUFDSCx3QkFBc0Isb0JBQW9CLENBQUMsRUFDekMsTUFBTSxFQUNOLFVBQVUsRUFDVixTQUFTLEVBQ1QsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQixNQUFNLEVBQ04sWUFBWSxFQUNiLEVBQUU7SUFDRCxNQUFNLEVBQUUsY0FBYyxDQUFDO0lBQ3ZCLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQztJQUM3QixTQUFTLEVBQUUsU0FBUyxLQUFLLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFDcEMsWUFBWSxFQUFFLG9CQUFvQixDQUFDO0lBQ25DLGdCQUFnQixFQUFFLDhCQUE4QixHQUFHLDZCQUE2QixHQUFHLFNBQVMsQ0FBQztJQUM3RixpQkFBaUIsRUFBRSxNQUFNLENBQUM7SUFDMUIsaUJBQWlCLEVBQUUsTUFBTSxDQUFDO0lBQzFCLGtCQUFrQixFQUFFLE1BQU0sQ0FBQztJQUMzQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsWUFBWSxFQUFFLE1BQU0sQ0FBQztDQUN0QixpQkE2RUEifQ==
@@ -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,EAAE,8BAA8B,EAAE,cAAc,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,CAAC;AAIrH,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,GAC7B,QAAQ,MAAM,EACd,MAAM,YAAY,EAClB,cAAc,YAAY,EAC1B,QAAQ,MAAM,EACd,OAAM;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,sBAsBpC,CAAC;AAGF,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,MAAM,EACd,MAAM,gBAAgB,EACtB,QAAQ,MAAM,EACd,eAAe,kBAAkB,KAChC,OAAO,CAAC,MAAM,EAAE,CAMlB,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,GACP,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,GACrB,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,GACb,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,iBA2EA"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EACV,8BAA8B,EAC9B,cAAc,EACd,6BAA6B,EAC9B,MAAM,2BAA2B,CAAC;AAMnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAIvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,KAAK,QAAQ,EAAgC,MAAM,2BAA2B,CAAC;AAKxF,eAAO,MAAM,kBAAkB;;uBAkB9B,CAAC;AAGF,eAAO,MAAM,kBAAkB,kHAW9B,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,kBAAkB,GAChC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAoBrB;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,6 @@
1
- import { getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
1
+ import { NO_WAIT, getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
2
2
  import { Fr } from '@aztec/aztec.js/fields';
3
- import { TxStatus } from '@aztec/aztec.js/tx';
3
+ import { EpochNumber } from '@aztec/foundation/branded-types';
4
4
  import { timesAsync, unique } from '@aztec/foundation/collection';
5
5
  import { retryUntil } from '@aztec/foundation/retry';
6
6
  import { pluralize } from '@aztec/foundation/string';
@@ -15,18 +15,13 @@ export const submitComplexTxsTo = async (logger, from, spamContract, numTxs, opt
15
15
  const seed = 1234n;
16
16
  const spamCount = 15;
17
17
  for(let i = 0; i < numTxs; i++){
18
- const tx = spamContract.methods.spam(seed + BigInt(i * spamCount), spamCount, !!opts.callPublic).send({
19
- from
18
+ const method = spamContract.methods.spam(seed + BigInt(i * spamCount), spamCount, !!opts.callPublic);
19
+ const txHash = await method.send({
20
+ from,
21
+ wait: NO_WAIT
20
22
  });
21
- const txHash = await tx.getTxHash();
22
23
  logger.info(`Tx sent with hash ${txHash.toString()}`);
23
- const receipt = await tx.getReceipt();
24
- expect(receipt).toEqual(expect.objectContaining({
25
- status: TxStatus.PENDING,
26
- error: ''
27
- }));
28
- logger.info(`Receipt received for ${txHash.toString()}`);
29
- txs.push(tx);
24
+ txs.push(txHash);
30
25
  }
31
26
  return txs;
32
27
  };
@@ -57,13 +52,12 @@ export async function prepareTransactions(logger, node, numTxs, fundedAccount) {
57
52
  salt: Fr.random()
58
53
  });
59
54
  await wallet.registerContract(testContractInstance, TestContractArtifact);
60
- const contract = await TestContract.at(testContractInstance.address, wallet);
55
+ const contract = TestContract.at(testContractInstance.address, wallet);
61
56
  return timesAsync(numTxs, async ()=>{
62
57
  const tx = await proveInteraction(wallet, contract.methods.emit_nullifier(Fr.random()), {
63
58
  from: fundedAccountManager.address
64
59
  });
65
- const txHash = tx.getTxHash();
66
- logger.info(`Tx prepared with hash ${txHash}`);
60
+ logger.info(`Tx prepared with hash ${tx.getTxHash()}`);
67
61
  return tx;
68
62
  });
69
63
  }
@@ -100,7 +94,7 @@ export async function awaitCommitteeExists({ rollup, logger }) {
100
94
  committee = await rollup.getCurrentEpochCommittee();
101
95
  return committee && committee.length > 0;
102
96
  }, 'non-empty committee', 60);
103
- return committee;
97
+ return committee.map((c)=>c.toString());
104
98
  }
105
99
  export async function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSize, epochDuration, waitUntilOffenseCount, timeoutSeconds = 120 }) {
106
100
  const targetOffenseCount = waitUntilOffenseCount ?? 1;
@@ -129,7 +123,7 @@ export async function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSiz
129
123
  await cheatCodes.debugRollup();
130
124
  if (slashingProposer.type === 'empire') {
131
125
  // Await for the slash payload to be created if empire (no payload is created on tally until execution time)
132
- const targetEpoch = await cheatCodes.getEpoch() + await rollup.getLagInEpochs() + 1n;
126
+ const targetEpoch = EpochNumber(await cheatCodes.getEpoch() + await rollup.getLagInEpochsForValidatorSet() + 1);
133
127
  logger.info(`Advancing to epoch ${targetEpoch} so we start slashing`);
134
128
  await cheatCodes.advanceToEpoch(targetEpoch);
135
129
  const slashPayloadEvents = await retryUntil(async ()=>{
@@ -147,7 +141,7 @@ export async function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSiz
147
141
  const firstEpochInOffenseRound = offenseEpoch - offenseEpoch % slashingRoundSizeInEpochs;
148
142
  const targetEpoch = firstEpochInOffenseRound + slashingOffsetInEpochs;
149
143
  logger.info(`Advancing to epoch ${targetEpoch} so we start slashing`);
150
- await cheatCodes.advanceToEpoch(targetEpoch, {
144
+ await cheatCodes.advanceToEpoch(EpochNumber(targetEpoch), {
151
145
  offset: -aztecSlotDuration / 2
152
146
  });
153
147
  }
@@ -172,7 +166,7 @@ export async function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSiz
172
166
  }
173
167
  logger.info(`Advancing to check current committee`);
174
168
  await cheatCodes.debugRollup();
175
- await cheatCodes.advanceToEpoch(await cheatCodes.getEpoch() + await rollup.getLagInEpochs() + 1n);
169
+ await cheatCodes.advanceToEpoch(EpochNumber(await cheatCodes.getEpoch() + await rollup.getLagInEpochsForValidatorSet() + 1));
176
170
  await cheatCodes.debugRollup();
177
171
  const committeeNextEpoch = await rollup.getCurrentEpochCommittee();
178
172
  // The committee should be undefined, since the validator set is empty
@@ -4,14 +4,15 @@ import type { AztecNode } from '@aztec/aztec.js/node';
4
4
  import { TokenContract } from '@aztec/noir-contracts.js/Token';
5
5
  import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
6
6
  import type { TestWallet } from '@aztec/test-wallet/server';
7
- import { type 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5fY29udHJhY3RfdGVzdC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2UyZV90b2tlbl9jb250cmFjdC90b2tlbl9jb250cmFjdF90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3RGLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSTVELE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBeUQsTUFBTSxzQkFBc0IsQ0FBQztBQUVuSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFJbEUscUJBQWEsaUJBQWlCO0lBQzVCLE1BQU0sQ0FBQyxVQUFVLFNBQVU7SUFDM0IsTUFBTSxDQUFDLFlBQVksU0FBUztJQUM1QixNQUFNLENBQUMsY0FBYyxTQUFPO0lBQzVCLE9BQU8sRUFBRyxlQUFlLENBQUM7SUFDMUIsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNyQixLQUFLLEVBQUcsYUFBYSxDQUFDO0lBQ3RCLFFBQVEsRUFBRyxjQUFjLENBQUM7SUFDMUIsSUFBSSxFQUFHLFNBQVMsQ0FBQztJQUVqQixVQUFVLEVBQUcsc0JBQXNCLENBQUM7SUFDcEMsTUFBTSxFQUFHLFVBQVUsQ0FBQztJQUNwQixZQUFZLEVBQUcsWUFBWSxDQUFDO0lBQzVCLGVBQWUsRUFBRyxZQUFZLENBQUM7SUFDL0IsZUFBZSxFQUFHLFlBQVksQ0FBQztJQUUvQixPQUFPLENBQUMsb0JBQW9CLENBQVM7SUFDckMsT0FBTyxDQUFDLGVBQWUsQ0FBUztJQUVoQyxZQUFZLFFBQVEsRUFBRSxNQUFNLEVBRzNCO0lBRUQ7OztPQUdHO0lBQ0gsa0JBQWtCLFNBRWpCO0lBRUQ7OztPQUdHO0lBQ0gsaUJBQWlCLFNBRWhCO1lBS2EsY0FBYztJQTZDdEIsS0FBSyxrQkFjVjtJQUVLLFFBQVEsa0JBRWI7WUFFYSxTQUFTO0NBMkJ4QiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"token_contract_test.d.ts","sourceRoot":"","sources":["../../src/e2e_token_contract/token_contract_test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAI5D,OAAO,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;IA6CtB,KAAK,kBAcV;IAEK,QAAQ,kBAEb;YAEa,SAAS;CA2BxB"}