@aztec/end-to-end 0.0.1-commit.5476d83 → 0.0.1-commit.592b9384

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 (205) 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 +14 -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 +123 -136
  7. package/dest/bench/client_flows/data_extractor.js +3 -1
  8. package/dest/bench/utils.d.ts +9 -8
  9. package/dest/bench/utils.d.ts.map +1 -1
  10. package/dest/bench/utils.js +27 -18
  11. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +6 -7
  12. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
  13. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +96 -112
  14. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +19 -13
  15. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
  16. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +91 -71
  17. package/dest/e2e_deploy_contract/deploy_test.d.ts +4 -3
  18. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
  19. package/dest/e2e_deploy_contract/deploy_test.js +18 -13
  20. package/dest/e2e_epochs/epochs_test.d.ts +17 -9
  21. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  22. package/dest/e2e_epochs/epochs_test.js +44 -20
  23. package/dest/e2e_fees/bridging_race.notest.js +4 -6
  24. package/dest/e2e_fees/fees_test.d.ts +20 -16
  25. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  26. package/dest/e2e_fees/fees_test.js +126 -141
  27. package/dest/e2e_l1_publisher/write_json.d.ts +4 -3
  28. package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
  29. package/dest/e2e_l1_publisher/write_json.js +14 -16
  30. package/dest/e2e_multi_validator/utils.js +1 -1
  31. package/dest/e2e_nested_contract/nested_contract_test.d.ts +6 -9
  32. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
  33. package/dest/e2e_nested_contract/nested_contract_test.js +31 -39
  34. package/dest/e2e_p2p/inactivity_slash_test.d.ts +4 -4
  35. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
  36. package/dest/e2e_p2p/inactivity_slash_test.js +6 -9
  37. package/dest/e2e_p2p/p2p_network.d.ts +13 -11
  38. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  39. package/dest/e2e_p2p/p2p_network.js +120 -111
  40. package/dest/e2e_p2p/reqresp/utils.d.ts +22 -0
  41. package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -0
  42. package/dest/e2e_p2p/reqresp/utils.js +153 -0
  43. package/dest/e2e_p2p/shared.d.ts +7 -7
  44. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  45. package/dest/e2e_p2p/shared.js +13 -20
  46. package/dest/e2e_token_contract/token_contract_test.d.ts +16 -9
  47. package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
  48. package/dest/e2e_token_contract/token_contract_test.js +89 -91
  49. package/dest/fixtures/e2e_prover_test.d.ts +10 -18
  50. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  51. package/dest/fixtures/e2e_prover_test.js +91 -103
  52. package/dest/fixtures/fixtures.d.ts +2 -3
  53. package/dest/fixtures/fixtures.d.ts.map +1 -1
  54. package/dest/fixtures/fixtures.js +2 -3
  55. package/dest/fixtures/get_acvm_config.js +1 -1
  56. package/dest/fixtures/ha_setup.d.ts +71 -0
  57. package/dest/fixtures/ha_setup.d.ts.map +1 -0
  58. package/dest/fixtures/ha_setup.js +114 -0
  59. package/dest/fixtures/index.d.ts +2 -1
  60. package/dest/fixtures/index.d.ts.map +1 -1
  61. package/dest/fixtures/index.js +1 -0
  62. package/dest/fixtures/l1_to_l2_messaging.d.ts +4 -3
  63. package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
  64. package/dest/fixtures/l1_to_l2_messaging.js +2 -2
  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 +695 -0
  68. package/dest/fixtures/setup_p2p_test.d.ts +4 -5
  69. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  70. package/dest/fixtures/setup_p2p_test.js +27 -22
  71. package/dest/fixtures/token_utils.d.ts +1 -1
  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 -637
  75. package/dest/fixtures/utils.d.ts.map +1 -1
  76. package/dest/fixtures/utils.js +4 -647
  77. package/dest/fixtures/web3signer.js +1 -1
  78. package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
  79. package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
  80. package/dest/fixtures/with_telemetry_utils.js +2 -2
  81. package/dest/quality_of_service/grafana_client.d.ts +41 -0
  82. package/dest/quality_of_service/grafana_client.d.ts.map +1 -0
  83. package/dest/quality_of_service/{alert_checker.js → grafana_client.js} +1 -1
  84. package/dest/quality_of_service/prometheus_client.d.ts +38 -0
  85. package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
  86. package/dest/quality_of_service/prometheus_client.js +67 -0
  87. package/dest/shared/cross_chain_test_harness.d.ts +18 -6
  88. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  89. package/dest/shared/cross_chain_test_harness.js +14 -14
  90. package/dest/shared/gas_portal_test_harness.d.ts +12 -2
  91. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  92. package/dest/shared/gas_portal_test_harness.js +1 -1
  93. package/dest/shared/index.d.ts +2 -2
  94. package/dest/shared/index.d.ts.map +1 -1
  95. package/dest/shared/submit-transactions.d.ts +3 -3
  96. package/dest/shared/submit-transactions.d.ts.map +1 -1
  97. package/dest/shared/submit-transactions.js +9 -11
  98. package/dest/shared/uniswap_l1_l2.d.ts +3 -27
  99. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  100. package/dest/shared/uniswap_l1_l2.js +55 -35
  101. package/dest/simulators/lending_simulator.d.ts +6 -2
  102. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  103. package/dest/simulators/lending_simulator.js +2 -2
  104. package/dest/spartan/setup_test_wallets.d.ts +4 -3
  105. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  106. package/dest/spartan/setup_test_wallets.js +63 -35
  107. package/dest/spartan/tx_metrics.d.ts +88 -0
  108. package/dest/spartan/tx_metrics.d.ts.map +1 -0
  109. package/dest/spartan/tx_metrics.js +422 -0
  110. package/dest/spartan/utils/bot.d.ts +27 -0
  111. package/dest/spartan/utils/bot.d.ts.map +1 -0
  112. package/dest/spartan/utils/bot.js +141 -0
  113. package/dest/spartan/utils/chaos.d.ts +79 -0
  114. package/dest/spartan/utils/chaos.d.ts.map +1 -0
  115. package/dest/spartan/utils/chaos.js +142 -0
  116. package/dest/spartan/utils/clients.d.ts +39 -0
  117. package/dest/spartan/utils/clients.d.ts.map +1 -0
  118. package/dest/spartan/utils/clients.js +90 -0
  119. package/dest/spartan/utils/config.d.ts +36 -0
  120. package/dest/spartan/utils/config.d.ts.map +1 -0
  121. package/dest/spartan/utils/config.js +20 -0
  122. package/dest/spartan/utils/health.d.ts +63 -0
  123. package/dest/spartan/utils/health.d.ts.map +1 -0
  124. package/dest/spartan/utils/health.js +202 -0
  125. package/dest/spartan/utils/helm.d.ts +15 -0
  126. package/dest/spartan/utils/helm.d.ts.map +1 -0
  127. package/dest/spartan/utils/helm.js +47 -0
  128. package/dest/spartan/utils/index.d.ts +9 -0
  129. package/dest/spartan/utils/index.d.ts.map +1 -0
  130. package/dest/spartan/utils/index.js +18 -0
  131. package/dest/spartan/utils/k8s.d.ts +126 -0
  132. package/dest/spartan/utils/k8s.d.ts.map +1 -0
  133. package/dest/spartan/utils/k8s.js +375 -0
  134. package/dest/spartan/utils/nodes.d.ts +41 -0
  135. package/dest/spartan/utils/nodes.d.ts.map +1 -0
  136. package/dest/spartan/utils/nodes.js +461 -0
  137. package/dest/spartan/utils/scripts.d.ts +16 -0
  138. package/dest/spartan/utils/scripts.d.ts.map +1 -0
  139. package/dest/spartan/utils/scripts.js +66 -0
  140. package/dest/spartan/utils.d.ts +2 -220
  141. package/dest/spartan/utils.d.ts.map +1 -1
  142. package/dest/spartan/utils.js +1 -782
  143. package/package.json +45 -41
  144. package/src/bench/client_flows/benchmark.ts +24 -2
  145. package/src/bench/client_flows/client_flows_benchmark.ts +145 -208
  146. package/src/bench/client_flows/data_extractor.ts +1 -1
  147. package/src/bench/utils.ts +30 -20
  148. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +104 -142
  149. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +140 -125
  150. package/src/e2e_deploy_contract/deploy_test.ts +21 -14
  151. package/src/e2e_epochs/epochs_test.ts +92 -53
  152. package/src/e2e_fees/bridging_race.notest.ts +4 -10
  153. package/src/e2e_fees/fees_test.ts +179 -221
  154. package/src/e2e_l1_publisher/write_json.ts +16 -16
  155. package/src/e2e_multi_validator/utils.ts +1 -1
  156. package/src/e2e_nested_contract/nested_contract_test.ts +33 -56
  157. package/src/e2e_p2p/inactivity_slash_test.ts +9 -12
  158. package/src/e2e_p2p/p2p_network.ts +180 -183
  159. package/src/e2e_p2p/reqresp/utils.ts +207 -0
  160. package/src/e2e_p2p/shared.ts +31 -28
  161. package/src/e2e_token_contract/token_contract_test.ts +103 -118
  162. package/src/fixtures/e2e_prover_test.ts +104 -141
  163. package/src/fixtures/fixtures.ts +2 -5
  164. package/src/fixtures/get_acvm_config.ts +1 -1
  165. package/src/fixtures/ha_setup.ts +184 -0
  166. package/src/fixtures/index.ts +1 -0
  167. package/src/fixtures/l1_to_l2_messaging.ts +4 -2
  168. package/src/fixtures/setup.ts +1017 -0
  169. package/src/fixtures/setup_p2p_test.ts +18 -23
  170. package/src/fixtures/token_utils.ts +6 -5
  171. package/src/fixtures/utils.ts +27 -966
  172. package/src/fixtures/web3signer.ts +1 -1
  173. package/src/fixtures/with_telemetry_utils.ts +2 -2
  174. package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +1 -1
  175. package/src/quality_of_service/prometheus_client.ts +113 -0
  176. package/src/shared/cross_chain_test_harness.ts +19 -36
  177. package/src/shared/gas_portal_test_harness.ts +2 -2
  178. package/src/shared/index.ts +1 -1
  179. package/src/shared/submit-transactions.ts +9 -15
  180. package/src/shared/uniswap_l1_l2.ts +65 -86
  181. package/src/simulators/lending_simulator.ts +3 -3
  182. package/src/spartan/DEVELOP.md +7 -0
  183. package/src/spartan/setup_test_wallets.ts +81 -26
  184. package/src/spartan/tx_metrics.ts +376 -0
  185. package/src/spartan/utils/bot.ts +185 -0
  186. package/src/spartan/utils/chaos.ts +253 -0
  187. package/src/spartan/utils/clients.ts +100 -0
  188. package/src/spartan/utils/config.ts +26 -0
  189. package/src/spartan/utils/health.ts +255 -0
  190. package/src/spartan/utils/helm.ts +84 -0
  191. package/src/spartan/utils/index.ts +64 -0
  192. package/src/spartan/utils/k8s.ts +527 -0
  193. package/src/spartan/utils/nodes.ts +538 -0
  194. package/src/spartan/utils/scripts.ts +63 -0
  195. package/src/spartan/utils.ts +1 -982
  196. package/dest/fixtures/setup_l1_contracts.d.ts +0 -477
  197. package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
  198. package/dest/fixtures/setup_l1_contracts.js +0 -17
  199. package/dest/fixtures/snapshot_manager.d.ts +0 -95
  200. package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
  201. package/dest/fixtures/snapshot_manager.js +0 -505
  202. package/dest/quality_of_service/alert_checker.d.ts +0 -41
  203. package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
  204. package/src/fixtures/setup_l1_contracts.ts +0 -26
  205. package/src/fixtures/snapshot_manager.ts +0 -665
@@ -2,20 +2,19 @@ import type { InitialAccountData } from '@aztec/accounts/testing';
2
2
  import type { AztecNodeConfig, AztecNodeService } from '@aztec/aztec-node';
3
3
  import { AztecAddress, EthAddress } from '@aztec/aztec.js/addresses';
4
4
  import { Fr } from '@aztec/aztec.js/fields';
5
+ import { getL1ContractsConfigEnvVars } from '@aztec/ethereum/config';
5
6
  import {
6
7
  type EmpireSlashingProposerContract,
7
- type ExtendedViemWalletClient,
8
8
  GSEContract,
9
- MultiAdderArtifact,
10
- type Operator,
11
9
  RollupContract,
12
10
  type TallySlashingProposerContract,
13
- type ViemClient,
14
- createL1TxUtilsFromViemWallet,
15
- deployL1Contract,
16
- getL1ContractsConfigEnvVars,
17
- } from '@aztec/ethereum';
11
+ } from '@aztec/ethereum/contracts';
12
+ import type { Operator } from '@aztec/ethereum/deploy-aztec-l1-contracts';
13
+ import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
14
+ import { MultiAdderArtifact } from '@aztec/ethereum/l1-artifacts';
15
+ import { createL1TxUtilsFromViemWallet } from '@aztec/ethereum/l1-tx-utils';
18
16
  import { ChainMonitor } from '@aztec/ethereum/test';
17
+ import type { ExtendedViemWalletClient, ViemClient } from '@aztec/ethereum/types';
19
18
  import { EpochNumber } from '@aztec/foundation/branded-types';
20
19
  import { SecretValue } from '@aztec/foundation/config';
21
20
  import { type Logger, createLogger } from '@aztec/foundation/log';
@@ -35,18 +34,20 @@ import getPort from 'get-port';
35
34
  import { type GetContractReturnType, getAddress, getContract } from 'viem';
36
35
  import { privateKeyToAccount } from 'viem/accounts';
37
36
 
37
+ import {
38
+ type EndToEndContext,
39
+ type SetupOptions,
40
+ deployAccounts,
41
+ getPrivateKeyFromIndex,
42
+ getSponsoredFPCAddress,
43
+ setup,
44
+ teardown,
45
+ } from '../fixtures/setup.js';
38
46
  import {
39
47
  ATTESTER_PRIVATE_KEYS_START_INDEX,
40
48
  createValidatorConfig,
41
49
  generatePrivateKeys,
42
50
  } from '../fixtures/setup_p2p_test.js';
43
- import {
44
- type ISnapshotManager,
45
- type SubsystemsContext,
46
- createSnapshotManager,
47
- deployAccounts,
48
- } from '../fixtures/snapshot_manager.js';
49
- import { type SetupOptions, getPrivateKeyFromIndex, getSponsoredFPCAddress } from '../fixtures/utils.js';
50
51
  import { getEndToEndTestTelemetryClient } from '../fixtures/with_telemetry_utils.js';
51
52
 
52
53
  // Use a fixed bootstrap node private key so that we can re-use the same snapshot and the nodes can find each other
@@ -61,14 +62,14 @@ export const SHORTENED_BLOCK_TIME_CONFIG_NO_PRUNES = {
61
62
  };
62
63
 
63
64
  export class P2PNetworkTest {
64
- private snapshotManager: ISnapshotManager;
65
+ public context!: EndToEndContext;
65
66
  public baseAccountPrivateKey: `0x${string}`;
66
67
  public baseAccount;
67
68
 
68
69
  public logger: Logger;
69
70
  public monitor!: ChainMonitor;
70
71
 
71
- public ctx!: SubsystemsContext;
72
+ public ctx!: EndToEndContext;
72
73
  public attesterPrivateKeys: `0x${string}`[] = [];
73
74
  public attesterPublicKeys: string[] = [];
74
75
  public peerIdPrivateKeys: string[] = [];
@@ -84,6 +85,10 @@ export class P2PNetworkTest {
84
85
 
85
86
  public bootstrapNode?: BootstrapNode;
86
87
 
88
+ // Store setup options for use in setup()
89
+ private setupOptions: SetupOptions;
90
+ private deployL1ContractsArgs: any;
91
+
87
92
  constructor(
88
93
  public readonly testName: string,
89
94
  public bootstrapNodeEnr: string,
@@ -94,7 +99,6 @@ export class P2PNetworkTest {
94
99
  // If set enable metrics collection
95
100
  private metricsPort?: number,
96
101
  startProverNode?: boolean,
97
- mockZkPassportVerifier?: boolean,
98
102
  ) {
99
103
  this.logger = createLogger(`e2e:e2e_p2p:${testName}`);
100
104
 
@@ -109,45 +113,42 @@ export class P2PNetworkTest {
109
113
 
110
114
  const zkPassportParams = ZkPassportProofParams.random();
111
115
 
112
- this.snapshotManager = createSnapshotManager(
113
- `e2e_p2p_network/${testName}`,
114
- process.env.E2E_DATA_PATH,
115
- {
116
- ...initialValidatorConfig,
117
- ethereumSlotDuration: initialValidatorConfig.ethereumSlotDuration ?? l1ContractsConfig.ethereumSlotDuration,
118
- aztecEpochDuration: initialValidatorConfig.aztecEpochDuration ?? l1ContractsConfig.aztecEpochDuration,
119
- aztecSlotDuration: initialValidatorConfig.aztecSlotDuration ?? l1ContractsConfig.aztecSlotDuration,
120
- aztecProofSubmissionEpochs:
121
- initialValidatorConfig.aztecProofSubmissionEpochs ?? l1ContractsConfig.aztecProofSubmissionEpochs,
122
- slashingRoundSizeInEpochs:
123
- initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
124
- slasherFlavor: initialValidatorConfig.slasherFlavor ?? 'tally',
125
- aztecTargetCommitteeSize: numberOfValidators,
126
- salt: 420,
127
- metricsPort: metricsPort,
128
- numberOfInitialFundedAccounts: 2,
129
- startProverNode,
130
- },
131
- {
132
- ...initialValidatorConfig,
133
- aztecEpochDuration: initialValidatorConfig.aztecEpochDuration ?? l1ContractsConfig.aztecEpochDuration,
134
- slashingRoundSizeInEpochs:
135
- initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
136
- slasherFlavor: initialValidatorConfig.slasherFlavor ?? 'tally',
137
-
138
- ethereumSlotDuration: initialValidatorConfig.ethereumSlotDuration ?? l1ContractsConfig.ethereumSlotDuration,
139
- aztecSlotDuration: initialValidatorConfig.aztecSlotDuration ?? l1ContractsConfig.aztecSlotDuration,
140
- aztecProofSubmissionEpochs:
141
- initialValidatorConfig.aztecProofSubmissionEpochs ?? l1ContractsConfig.aztecProofSubmissionEpochs,
142
- aztecTargetCommitteeSize: numberOfValidators,
143
- initialValidators: [],
144
- zkPassportArgs: {
145
- mockZkPassportVerifier,
146
- zkPassportDomain: zkPassportParams.domain,
147
- zkPassportScope: zkPassportParams.scope,
148
- },
116
+ // Store setup options for later use
117
+ this.setupOptions = {
118
+ ...initialValidatorConfig,
119
+ ethereumSlotDuration: initialValidatorConfig.ethereumSlotDuration ?? l1ContractsConfig.ethereumSlotDuration,
120
+ aztecEpochDuration: initialValidatorConfig.aztecEpochDuration ?? l1ContractsConfig.aztecEpochDuration,
121
+ aztecSlotDuration: initialValidatorConfig.aztecSlotDuration ?? l1ContractsConfig.aztecSlotDuration,
122
+ aztecProofSubmissionEpochs:
123
+ initialValidatorConfig.aztecProofSubmissionEpochs ?? l1ContractsConfig.aztecProofSubmissionEpochs,
124
+ slashingRoundSizeInEpochs:
125
+ initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
126
+ slasherFlavor: initialValidatorConfig.slasherFlavor ?? 'tally',
127
+ aztecTargetCommitteeSize: numberOfValidators,
128
+ metricsPort: metricsPort,
129
+ numberOfInitialFundedAccounts: 2,
130
+ startProverNode,
131
+ walletMinFeePadding: 2.0,
132
+ };
133
+
134
+ this.deployL1ContractsArgs = {
135
+ ...initialValidatorConfig,
136
+ aztecEpochDuration: initialValidatorConfig.aztecEpochDuration ?? l1ContractsConfig.aztecEpochDuration,
137
+ slashingRoundSizeInEpochs:
138
+ initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
139
+ slasherFlavor: initialValidatorConfig.slasherFlavor ?? 'tally',
140
+
141
+ ethereumSlotDuration: initialValidatorConfig.ethereumSlotDuration ?? l1ContractsConfig.ethereumSlotDuration,
142
+ aztecSlotDuration: initialValidatorConfig.aztecSlotDuration ?? l1ContractsConfig.aztecSlotDuration,
143
+ aztecProofSubmissionEpochs:
144
+ initialValidatorConfig.aztecProofSubmissionEpochs ?? l1ContractsConfig.aztecProofSubmissionEpochs,
145
+ aztecTargetCommitteeSize: numberOfValidators,
146
+ initialValidators: [],
147
+ zkPassportArgs: {
148
+ zkPassportDomain: zkPassportParams.domain,
149
+ zkPassportScope: zkPassportParams.scope,
149
150
  },
150
- );
151
+ };
151
152
  }
152
153
 
153
154
  static async create({
@@ -158,7 +159,6 @@ export class P2PNetworkTest {
158
159
  metricsPort,
159
160
  initialConfig,
160
161
  startProverNode,
161
- mockZkPassportVerifier,
162
162
  }: {
163
163
  testName: string;
164
164
  numberOfNodes: number;
@@ -167,7 +167,6 @@ export class P2PNetworkTest {
167
167
  metricsPort?: number;
168
168
  initialConfig?: SetupOptions;
169
169
  startProverNode?: boolean;
170
- mockZkPassportVerifier?: boolean;
171
170
  }) {
172
171
  const port = basePort || (await getPort());
173
172
 
@@ -188,29 +187,27 @@ export class P2PNetworkTest {
188
187
  numberOfNodes,
189
188
  metricsPort,
190
189
  startProverNode,
191
- mockZkPassportVerifier,
192
190
  );
193
191
  }
194
192
 
195
193
  get fundedAccount() {
196
194
  if (!this.deployedAccounts[0]) {
197
- throw new Error('Call snapshot t.setupAccount to create a funded account.');
195
+ throw new Error('Call setupAccount to create a funded account.');
198
196
  }
199
197
  return this.deployedAccounts[0];
200
198
  }
201
199
 
202
200
  async addBootstrapNode() {
203
- await this.snapshotManager.snapshot('add-bootstrap-node', async ({ aztecNodeConfig }) => {
204
- const telemetry = getEndToEndTestTelemetryClient(this.metricsPort);
205
- this.bootstrapNode = await createBootstrapNodeFromPrivateKey(
206
- BOOTSTRAP_NODE_PRIVATE_KEY,
207
- this.bootNodePort,
208
- telemetry,
209
- aztecNodeConfig,
210
- );
211
- // Overwrite enr with updated info
212
- this.bootstrapNodeEnr = this.bootstrapNode.getENR().encodeTxt();
213
- });
201
+ this.logger.info('Adding bootstrap node');
202
+ const telemetry = await getEndToEndTestTelemetryClient(this.metricsPort);
203
+ this.bootstrapNode = await createBootstrapNodeFromPrivateKey(
204
+ BOOTSTRAP_NODE_PRIVATE_KEY,
205
+ this.bootNodePort,
206
+ telemetry,
207
+ this.context.config,
208
+ );
209
+ // Overwrite enr with updated info
210
+ this.bootstrapNodeEnr = this.bootstrapNode.getENR().encodeTxt();
214
211
  }
215
212
 
216
213
  getValidators() {
@@ -231,128 +228,114 @@ export class P2PNetworkTest {
231
228
  return { validators };
232
229
  }
233
230
 
234
- async applyBaseSnapshots() {
231
+ async applyBaseSetup() {
235
232
  await this.addBootstrapNode();
236
- await this.snapshotManager.snapshot('add-validators', async ({ deployL1ContractsValues, cheatCodes }) => {
237
- const rollup = getContract({
238
- address: deployL1ContractsValues.l1ContractAddresses.rollupAddress.toString(),
239
- abi: RollupAbi,
240
- client: deployL1ContractsValues.l1Client,
241
- });
242
233
 
243
- this.logger.info(`Adding ${this.numberOfValidators} validators`);
234
+ this.logger.info('Adding validators');
235
+ const rollup = getContract({
236
+ address: this.context.deployL1ContractsValues.l1ContractAddresses.rollupAddress.toString(),
237
+ abi: RollupAbi,
238
+ client: this.context.deployL1ContractsValues.l1Client,
239
+ });
244
240
 
245
- const stakingAsset = getContract({
246
- address: deployL1ContractsValues.l1ContractAddresses.stakingAssetAddress.toString(),
247
- abi: TestERC20Abi,
248
- client: deployL1ContractsValues.l1Client,
249
- });
241
+ this.logger.info(`Adding ${this.numberOfValidators} validators`);
250
242
 
251
- const { address: multiAdderAddress } = await deployL1Contract(
252
- deployL1ContractsValues.l1Client,
253
- MultiAdderArtifact.contractAbi,
254
- MultiAdderArtifact.contractBytecode,
255
- [rollup.address, deployL1ContractsValues.l1Client.account.address],
256
- );
257
-
258
- const multiAdder = getContract({
259
- address: multiAdderAddress.toString(),
260
- abi: MultiAdderArtifact.contractAbi,
261
- client: deployL1ContractsValues.l1Client,
262
- });
243
+ const stakingAsset = getContract({
244
+ address: this.context.deployL1ContractsValues.l1ContractAddresses.stakingAssetAddress.toString(),
245
+ abi: TestERC20Abi,
246
+ client: this.context.deployL1ContractsValues.l1Client,
247
+ });
263
248
 
264
- const stakeNeeded = (await rollup.read.getActivationThreshold()) * BigInt(this.numberOfValidators);
265
- await Promise.all(
266
- [await stakingAsset.write.mint([multiAdder.address, stakeNeeded], {} as any)].map(txHash =>
267
- deployL1ContractsValues.l1Client.waitForTransactionReceipt({ hash: txHash }),
268
- ),
269
- );
270
-
271
- const { validators } = this.getValidators();
272
- this.validators = validators;
273
-
274
- const gseAddress = deployL1ContractsValues.l1ContractAddresses.gseAddress!;
275
- if (!gseAddress) {
276
- throw new Error('GSE contract not deployed');
277
- }
278
-
279
- const gseContract = new GSEContract(deployL1ContractsValues.l1Client, gseAddress.toString());
280
-
281
- const makeValidatorTuples = async (validator: Operator) => {
282
- const registrationTuple = await gseContract.makeRegistrationTuple(validator.bn254SecretKey.getValue());
283
- return {
284
- attester: validator.attester.toString() as `0x${string}`,
285
- withdrawer: validator.withdrawer.toString() as `0x${string}`,
286
- ...registrationTuple,
287
- };
288
- };
289
- const validatorTuples = await Promise.all(validators.map(makeValidatorTuples));
249
+ const { address: multiAdderAddress } = await deployL1Contract(
250
+ this.context.deployL1ContractsValues.l1Client,
251
+ MultiAdderArtifact.contractAbi,
252
+ MultiAdderArtifact.contractBytecode,
253
+ [rollup.address, this.context.deployL1ContractsValues.l1Client.account.address],
254
+ );
290
255
 
291
- await deployL1ContractsValues.l1Client.waitForTransactionReceipt({
292
- hash: await multiAdder.write.addValidators([validatorTuples]),
293
- });
256
+ const multiAdder = getContract({
257
+ address: multiAdderAddress.toString(),
258
+ abi: MultiAdderArtifact.contractAbi,
259
+ client: this.context.deployL1ContractsValues.l1Client,
260
+ });
261
+
262
+ const stakeNeeded = (await rollup.read.getActivationThreshold()) * BigInt(this.numberOfValidators);
263
+ await Promise.all(
264
+ [await stakingAsset.write.mint([multiAdder.address, stakeNeeded], {} as any)].map(txHash =>
265
+ this.context.deployL1ContractsValues.l1Client.waitForTransactionReceipt({ hash: txHash }),
266
+ ),
267
+ );
294
268
 
295
- await cheatCodes.rollup.advanceToEpoch(
296
- EpochNumber.fromBigInt(
297
- BigInt(await cheatCodes.rollup.getEpoch()) + (await rollup.read.getLagInEpochsForValidatorSet()) + 1n,
298
- ),
299
- );
269
+ const { validators } = this.getValidators();
270
+ this.validators = validators;
300
271
 
301
- // Send and await a tx to make sure we mine a block for the warp to correctly progress.
302
- await this._sendDummyTx(deployL1ContractsValues.l1Client);
272
+ const gseAddress = this.context.deployL1ContractsValues.l1ContractAddresses.gseAddress!;
273
+ if (!gseAddress) {
274
+ throw new Error('GSE contract not deployed');
275
+ }
276
+
277
+ const gseContract = new GSEContract(this.context.deployL1ContractsValues.l1Client, gseAddress.toString());
278
+
279
+ const makeValidatorTuples = async (validator: Operator) => {
280
+ const registrationTuple = await gseContract.makeRegistrationTuple(validator.bn254SecretKey.getValue());
281
+ return {
282
+ attester: validator.attester.toString() as `0x${string}`,
283
+ withdrawer: validator.withdrawer.toString() as `0x${string}`,
284
+ ...registrationTuple,
285
+ };
286
+ };
287
+ const validatorTuples = await Promise.all(validators.map(makeValidatorTuples));
288
+
289
+ await this.context.deployL1ContractsValues.l1Client.waitForTransactionReceipt({
290
+ hash: await multiAdder.write.addValidators([validatorTuples]),
303
291
  });
292
+
293
+ await this.context.cheatCodes.rollup.advanceToEpoch(
294
+ EpochNumber.fromBigInt(
295
+ BigInt(await this.context.cheatCodes.rollup.getEpoch()) +
296
+ (await rollup.read.getLagInEpochsForValidatorSet()) +
297
+ 1n,
298
+ ),
299
+ );
300
+
301
+ // Send and await a tx to make sure we mine a block for the warp to correctly progress.
302
+ await this._sendDummyTx(this.context.deployL1ContractsValues.l1Client);
304
303
  }
305
304
 
306
305
  async setupAccount() {
307
- await this.snapshotManager.snapshot(
308
- 'setup-account',
309
- deployAccounts(1, this.logger),
310
- ({ deployedAccounts }, { wallet }) => {
311
- this.deployedAccounts = deployedAccounts;
312
- [{ address: this.defaultAccountAddress }] = deployedAccounts;
313
- this.wallet = wallet;
314
- return Promise.resolve();
315
- },
316
- );
306
+ this.logger.info('Setting up account');
307
+ const { deployedAccounts } = await deployAccounts(
308
+ 1,
309
+ this.logger,
310
+ )({
311
+ wallet: this.context.wallet,
312
+ initialFundedAccounts: this.context.initialFundedAccounts,
313
+ });
314
+ this.deployedAccounts = deployedAccounts;
315
+ [{ address: this.defaultAccountAddress }] = deployedAccounts;
316
+ this.wallet = this.context.wallet;
317
317
  }
318
318
 
319
319
  async deploySpamContract() {
320
- await this.snapshotManager.snapshot(
321
- 'add-spam-contract',
322
- async () => {
323
- if (!this.wallet) {
324
- throw new Error('Call snapshot t.setupAccount before deploying account contract');
325
- }
326
-
327
- const spamContract = await SpamContract.deploy(this.wallet)
328
- .send({ from: this.defaultAccountAddress! })
329
- .deployed();
330
- return { contractAddress: spamContract.address };
331
- },
332
- ({ contractAddress }) => {
333
- if (!this.wallet) {
334
- throw new Error('Call snapshot t.setupAccount before deploying account contract');
335
- }
336
- this.spamContract = SpamContract.at(contractAddress, this.wallet);
337
- return Promise.resolve();
338
- },
339
- );
320
+ this.logger.info('Deploying spam contract');
321
+ if (!this.wallet) {
322
+ throw new Error('Call setupAccount before deploying spam contract');
323
+ }
324
+
325
+ const spamContract = await SpamContract.deploy(this.wallet).send({ from: this.defaultAccountAddress! });
326
+ this.spamContract = spamContract;
340
327
  }
341
328
 
342
329
  async removeInitialNode() {
343
- await this.snapshotManager.snapshot(
344
- 'remove-initial-validator',
345
- async ({ deployL1ContractsValues, aztecNode, dateProvider }) => {
346
- // Send and await a tx to make sure we mine a block for the warp to correctly progress.
347
- const { receipt } = await this._sendDummyTx(deployL1ContractsValues.l1Client);
348
- const block = await deployL1ContractsValues.l1Client.getBlock({
349
- blockNumber: receipt.blockNumber,
350
- });
351
- dateProvider.setTime(Number(block.timestamp) * 1000);
352
-
353
- await aztecNode.stop();
354
- },
355
- );
330
+ this.logger.info('Removing initial node');
331
+ // Send and await a tx to make sure we mine a block for the warp to correctly progress.
332
+ const { receipt } = await this._sendDummyTx(this.context.deployL1ContractsValues.l1Client);
333
+ const block = await this.context.deployL1ContractsValues.l1Client.getBlock({
334
+ blockNumber: receipt.blockNumber,
335
+ });
336
+ this.context.dateProvider!.setTime(Number(block.timestamp) * 1000);
337
+
338
+ await this.context.aztecNodeService!.stop();
356
339
  }
357
340
 
358
341
  async sendDummyTx() {
@@ -368,17 +351,31 @@ export class P2PNetworkTest {
368
351
  }
369
352
 
370
353
  async setup() {
371
- this.ctx = await this.snapshotManager.setup();
354
+ this.logger.info('Setting up subsystems from fresh');
355
+ this.context = await setup(
356
+ 0,
357
+ {
358
+ ...this.setupOptions,
359
+ fundSponsoredFPC: true,
360
+ skipAccountDeployment: true,
361
+ slasherFlavor: this.setupOptions.slasherFlavor ?? this.deployL1ContractsArgs.slasherFlavor ?? 'none',
362
+ aztecTargetCommitteeSize: 0,
363
+ l1ContractsArgs: this.deployL1ContractsArgs,
364
+ },
365
+ // Use checkpointed chain tip for PXE to avoid issues with blocks being dropped due to pruned anchor blocks.
366
+ { syncChainTip: 'checkpointed' },
367
+ );
368
+ this.ctx = this.context;
372
369
 
373
370
  const sponsoredFPCAddress = await getSponsoredFPCAddress();
374
- const initialFundedAccounts = [...this.ctx.initialFundedAccounts.map(a => a.address), sponsoredFPCAddress];
371
+ const initialFundedAccounts = [...this.context.initialFundedAccounts.map(a => a.address), sponsoredFPCAddress];
375
372
 
376
373
  const { prefilledPublicData } = await getGenesisValues(initialFundedAccounts);
377
374
  this.prefilledPublicData = prefilledPublicData;
378
375
 
379
- const rollupContract = RollupContract.getFromL1ContractsValues(this.ctx.deployL1ContractsValues);
380
- this.monitor = new ChainMonitor(rollupContract, this.ctx.dateProvider).start();
381
- this.monitor.on('l1-block', ({ timestamp }) => this.ctx.dateProvider.setTime(Number(timestamp) * 1000));
376
+ const rollupContract = RollupContract.getFromL1ContractsValues(this.context.deployL1ContractsValues);
377
+ this.monitor = new ChainMonitor(rollupContract, this.context.dateProvider!).start();
378
+ this.monitor.on('l1-block', ({ timestamp }) => this.context.dateProvider!.setTime(Number(timestamp) * 1000));
382
379
  }
383
380
 
384
381
  async stopNodes(nodes: AztecNodeService[]) {
@@ -439,7 +436,7 @@ export class P2PNetworkTest {
439
436
  async teardown() {
440
437
  await this.monitor.stop();
441
438
  await tryStop(this.bootstrapNode, this.logger);
442
- await this.snapshotManager.teardown();
439
+ await teardown(this.context);
443
440
  }
444
441
 
445
442
  async getContracts(): Promise<{
@@ -449,7 +446,7 @@ export class P2PNetworkTest {
449
446
  slashFactory: SlashFactoryContract;
450
447
  }> {
451
448
  if (!this.ctx.deployL1ContractsValues) {
452
- throw new Error('DeployL1ContractsValues not set');
449
+ throw new Error('DeployAztecL1ContractsValues not set');
453
450
  }
454
451
 
455
452
  const rollup = new RollupContract(
@@ -458,7 +455,7 @@ export class P2PNetworkTest {
458
455
  );
459
456
 
460
457
  const slasherContract = getContract({
461
- address: getAddress(await rollup.getSlasherAddress()),
458
+ address: getAddress((await rollup.getSlasherAddress()).toString()),
462
459
  abi: SlasherAbi,
463
460
  client: this.ctx.deployL1ContractsValues.l1Client,
464
461
  });