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

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 +17 -9
  23. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  24. package/dest/e2e_epochs/epochs_test.js +48 -23
  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 +4 -3
  31. package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
  32. package/dest/e2e_l1_publisher/write_json.js +18 -19
  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 +15 -21
  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 +101 -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 +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 +6 -7
  69. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  70. package/dest/fixtures/setup_p2p_test.js +41 -28
  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 +88 -0
  114. package/dest/spartan/tx_metrics.d.ts.map +1 -0
  115. package/dest/spartan/tx_metrics.js +422 -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 +96 -56
  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 +20 -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 +35 -29
  166. package/src/e2e_token_contract/token_contract_test.ts +103 -118
  167. package/src/fixtures/e2e_prover_test.ts +112 -150
  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 +38 -29
  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 +376 -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
@@ -6,18 +6,23 @@ import type { Logger } from '@aztec/aztec.js/log';
6
6
  import { MerkleTreeId } from '@aztec/aztec.js/trees';
7
7
  import type { Wallet } from '@aztec/aztec.js/wallet';
8
8
  import { EpochCache } from '@aztec/epoch-cache';
9
- import { DefaultL1ContractsConfig, type ExtendedViemWalletClient, createExtendedL1Client } from '@aztec/ethereum';
9
+ import { createExtendedL1Client } from '@aztec/ethereum/client';
10
+ import { DefaultL1ContractsConfig } from '@aztec/ethereum/config';
10
11
  import { RollupContract } from '@aztec/ethereum/contracts';
11
12
  import { ChainMonitor, DelayedTxUtils, type Delayer, waitUntilL1Timestamp, withDelayer } from '@aztec/ethereum/test';
13
+ import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
14
+ import { BlockNumber, CheckpointNumber, EpochNumber } from '@aztec/foundation/branded-types';
12
15
  import { SecretValue } from '@aztec/foundation/config';
13
- import { randomBytes } from '@aztec/foundation/crypto';
14
- import { withLogNameSuffix } from '@aztec/foundation/log';
16
+ import { randomBytes } from '@aztec/foundation/crypto/random';
17
+ import { withLoggerBindings } from '@aztec/foundation/log/server';
15
18
  import { retryUntil } from '@aztec/foundation/retry';
16
19
  import { sleep } from '@aztec/foundation/sleep';
17
20
  import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
21
+ import { TestContract } from '@aztec/noir-test-contracts.js/Test';
18
22
  import { getMockPubSubP2PServiceFactory } from '@aztec/p2p/test-helpers';
19
23
  import { ProverNode, type ProverNodeConfig, ProverNodePublisher } from '@aztec/prover-node';
20
24
  import type { TestProverNode } from '@aztec/prover-node/test';
25
+ import type { PXEConfig } from '@aztec/pxe/config';
21
26
  import {
22
27
  type SequencerClient,
23
28
  type SequencerEvents,
@@ -25,7 +30,7 @@ import {
25
30
  SequencerState,
26
31
  } from '@aztec/sequencer-client';
27
32
  import type { TestSequencerClient } from '@aztec/sequencer-client/test';
28
- import { EthAddress, type L2BlockNumber } from '@aztec/stdlib/block';
33
+ import { type BlockParameter, EthAddress } from '@aztec/stdlib/block';
29
34
  import { type L1RollupConstants, getProofSubmissionDeadlineTimestamp } from '@aztec/stdlib/epoch-helpers';
30
35
  import { tryStop } from '@aztec/stdlib/interfaces/server';
31
36
 
@@ -46,7 +51,11 @@ export const WORLD_STATE_BLOCK_CHECK_INTERVAL = 50;
46
51
  export const ARCHIVER_POLL_INTERVAL = 50;
47
52
  export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
48
53
 
49
- export type EpochsTestOpts = Partial<SetupOptions> & { numberOfAccounts?: number };
54
+ export type EpochsTestOpts = Partial<SetupOptions> & {
55
+ numberOfAccounts?: number;
56
+ pxeOpts?: Partial<PXEConfig>;
57
+ aztecSlotDurationInL1Slots?: number;
58
+ };
50
59
 
51
60
  export type TrackedSequencerEvent = {
52
61
  [K in keyof SequencerEvents]: Parameters<SequencerEvents[K]>[0] & {
@@ -91,46 +100,63 @@ export class EpochsTestContext {
91
100
  ? parseInt(process.env.L1_BLOCK_TIME)
92
101
  : DEFAULT_L1_BLOCK_TIME;
93
102
  const ethereumSlotDuration = opts.ethereumSlotDuration ?? envEthereumSlotDuration;
94
- const aztecSlotDuration = opts.aztecSlotDuration ?? ethereumSlotDuration * 2;
103
+ const aztecSlotDuration = opts.aztecSlotDuration ?? (opts.aztecSlotDurationInL1Slots ?? 2) * ethereumSlotDuration;
95
104
  const aztecEpochDuration = opts.aztecEpochDuration ?? 6;
96
105
  const aztecProofSubmissionEpochs = opts.aztecProofSubmissionEpochs ?? 1;
97
- return { ethereumSlotDuration, aztecSlotDuration, aztecEpochDuration, aztecProofSubmissionEpochs };
106
+ const l1PublishingTime = opts.l1PublishingTime ?? 1;
107
+ return {
108
+ l1PublishingTime,
109
+ ethereumSlotDuration,
110
+ aztecSlotDuration,
111
+ aztecEpochDuration,
112
+ aztecProofSubmissionEpochs,
113
+ };
98
114
  }
99
115
 
100
116
  public async setup(opts: EpochsTestOpts = {}) {
101
- const { ethereumSlotDuration, aztecSlotDuration, aztecEpochDuration, aztecProofSubmissionEpochs } =
102
- EpochsTestContext.getSlotDurations(opts);
117
+ const {
118
+ ethereumSlotDuration,
119
+ aztecSlotDuration,
120
+ aztecEpochDuration,
121
+ aztecProofSubmissionEpochs,
122
+ l1PublishingTime,
123
+ } = EpochsTestContext.getSlotDurations(opts);
103
124
 
104
125
  this.L1_BLOCK_TIME_IN_S = ethereumSlotDuration;
105
126
  this.L2_SLOT_DURATION_IN_S = aztecSlotDuration;
106
127
 
107
128
  // Set up system without any account nor protocol contracts
108
129
  // and with faster block times and shorter epochs.
109
- const context = await setup(opts.numberOfAccounts ?? 0, {
110
- automineL1Setup: true,
111
- checkIntervalMs: 50,
112
- archiverPollingIntervalMS: ARCHIVER_POLL_INTERVAL,
113
- worldStateBlockCheckIntervalMS: WORLD_STATE_BLOCK_CHECK_INTERVAL,
114
- skipProtocolContracts: true,
115
- salt: 1,
116
- aztecEpochDuration,
117
- aztecSlotDuration,
118
- ethereumSlotDuration,
119
- aztecProofSubmissionEpochs,
120
- aztecTargetCommitteeSize: opts.initialValidators?.length ?? 0,
121
- minTxsPerBlock: 0,
122
- realProofs: false,
123
- startProverNode: true,
124
- proverTestDelayMs: opts.proverTestDelayMs ?? 0,
125
- // We use numeric incremental prover ids for simplicity, but we can switch to
126
- // using the prover's eth address if the proverId is used for something in the rollup contract
127
- // Use numeric EthAddress for deterministic prover id
128
- proverId: EthAddress.fromNumber(1),
129
- worldStateBlockHistory: WORLD_STATE_BLOCK_HISTORY,
130
- exitDelaySeconds: DefaultL1ContractsConfig.exitDelaySeconds,
131
- slasherFlavor: 'none',
132
- ...opts,
133
- });
130
+ const context = await setup(
131
+ opts.numberOfAccounts ?? 0,
132
+ {
133
+ automineL1Setup: true,
134
+ checkIntervalMs: 50,
135
+ archiverPollingIntervalMS: ARCHIVER_POLL_INTERVAL,
136
+ worldStateBlockCheckIntervalMS: WORLD_STATE_BLOCK_CHECK_INTERVAL,
137
+ aztecEpochDuration,
138
+ aztecSlotDuration,
139
+ ethereumSlotDuration,
140
+ aztecProofSubmissionEpochs,
141
+ aztecTargetCommitteeSize: opts.initialValidators?.length ?? 0,
142
+ minTxsPerBlock: 0,
143
+ realProofs: false,
144
+ startProverNode: true,
145
+ proverTestDelayMs: opts.proverTestDelayMs ?? 0,
146
+ // We use numeric incremental prover ids for simplicity, but we can switch to
147
+ // using the prover's eth address if the proverId is used for something in the rollup contract
148
+ // Use numeric EthAddress for deterministic prover id
149
+ proverId: EthAddress.fromNumber(1),
150
+ worldStateBlockHistory: WORLD_STATE_BLOCK_HISTORY,
151
+ exitDelaySeconds: DefaultL1ContractsConfig.exitDelaySeconds,
152
+ slasherFlavor: 'none',
153
+ l1PublishingTime,
154
+ ...opts,
155
+ },
156
+ // Use checkpointed chain tip for PXE by default to avoid issues with blocks being dropped due to pruned anchor blocks.
157
+ // Can be overridden via opts.pxeOpts.
158
+ { syncChainTip: 'checkpointed', ...opts.pxeOpts },
159
+ );
134
160
 
135
161
  this.context = context;
136
162
  this.proverNodes = context.proverNode ? [context.proverNode] : [];
@@ -185,19 +211,19 @@ export class EpochsTestContext {
185
211
  public async createProverNode(opts: { dontStart?: boolean } & Partial<ProverNodeConfig> = {}) {
186
212
  this.logger.warn('Creating and syncing a simulated prover node...');
187
213
  const proverNodePrivateKey = this.getNextPrivateKey();
188
- const suffix = (this.proverNodes.length + 1).toString();
189
- const proverNode = await withLogNameSuffix(suffix, () =>
214
+ const proverIndex = this.proverNodes.length + 1;
215
+ const proverNode = await withLoggerBindings({ actor: `prover-${proverIndex}` }, () =>
190
216
  createAndSyncProverNode(
191
217
  proverNodePrivateKey,
192
218
  { ...this.context.config },
193
219
  {
194
220
  dataDirectory: join(this.context.config.dataDirectory!, randomBytes(8).toString('hex')),
195
- proverId: EthAddress.fromNumber(parseInt(suffix, 10)),
221
+ proverId: EthAddress.fromNumber(proverIndex),
196
222
  dontStart: opts.dontStart,
197
223
  ...opts,
198
224
  },
199
225
  this.context.aztecNode,
200
- undefined,
226
+ this.context.prefilledPublicData ?? [],
201
227
  { dateProvider: this.context.dateProvider },
202
228
  ),
203
229
  );
@@ -221,12 +247,13 @@ export class EpochsTestContext {
221
247
  private async createNode(
222
248
  opts: Partial<AztecNodeConfig> & { txDelayerMaxInclusionTimeIntoSlot?: number; dontStartSequencer?: boolean } = {},
223
249
  ) {
224
- const suffix = (this.nodes.length + 1).toString();
250
+ const nodeIndex = this.nodes.length + 1;
251
+ const actorPrefix = opts.disableValidator ? 'node' : 'validator';
225
252
  const { mockGossipSubNetwork } = this.context;
226
253
  const resolvedConfig = { ...this.context.config, ...opts };
227
254
  const p2pEnabled = resolvedConfig.p2pEnabled || mockGossipSubNetwork !== undefined;
228
255
  const p2pIp = resolvedConfig.p2pIp ?? (p2pEnabled ? '127.0.0.1' : undefined);
229
- const node = await withLogNameSuffix(suffix, () =>
256
+ const node = await withLoggerBindings({ actor: `${actorPrefix}-${nodeIndex}` }, () =>
230
257
  AztecNodeService.createAndSync(
231
258
  {
232
259
  ...resolvedConfig,
@@ -279,7 +306,7 @@ export class EpochsTestContext {
279
306
 
280
307
  /** Waits until the epoch begins (ie until the immediately previous L1 block is mined). */
281
308
  public async waitUntilEpochStarts(epoch: number) {
282
- const [start] = getTimestampRangeForEpoch(BigInt(epoch), this.constants);
309
+ const [start] = getTimestampRangeForEpoch(EpochNumber(epoch), this.constants);
283
310
  this.logger.info(`Waiting until L1 timestamp ${start} is reached as the start of epoch ${epoch}`);
284
311
  await waitUntilL1Timestamp(
285
312
  this.l1Client,
@@ -290,30 +317,30 @@ export class EpochsTestContext {
290
317
  return start;
291
318
  }
292
319
 
293
- /** Waits until the given L2 block number is mined. */
294
- public async waitUntilL2BlockNumber(target: number, timeout = 60) {
320
+ /** Waits until the given checkpoint number is mined. */
321
+ public async waitUntilCheckpointNumber(target: CheckpointNumber, timeout = 120) {
295
322
  await retryUntil(
296
- () => Promise.resolve(target <= this.monitor.l2BlockNumber),
297
- `Wait until L2 block ${target}`,
323
+ () => Promise.resolve(target <= this.monitor.checkpointNumber),
324
+ `Wait until checkpoint ${target}`,
298
325
  timeout,
299
326
  0.1,
300
327
  );
301
328
  }
302
329
 
303
- /** Waits until the given L2 block number is marked as proven. */
304
- public async waitUntilProvenL2BlockNumber(t: number, timeout = 60) {
330
+ /** Waits until the given checkpoint number is marked as proven. */
331
+ public async waitUntilProvenCheckpointNumber(target: CheckpointNumber, timeout = 120) {
305
332
  await retryUntil(
306
- () => Promise.resolve(t <= this.monitor.l2ProvenBlockNumber),
307
- `Wait proven L2 block ${t}`,
333
+ () => Promise.resolve(target <= this.monitor.provenCheckpointNumber),
334
+ `Wait proven checkpoint ${target}`,
308
335
  timeout,
309
336
  0.1,
310
337
  );
311
- return this.monitor.l2ProvenBlockNumber;
338
+ return this.monitor.provenCheckpointNumber;
312
339
  }
313
340
 
314
341
  /** Waits until the last slot of the proof submission window for a given epoch. */
315
342
  public async waitUntilLastSlotOfProofSubmissionWindow(epochNumber: number | bigint) {
316
- const deadline = getProofSubmissionDeadlineTimestamp(BigInt(epochNumber), this.constants);
343
+ const deadline = getProofSubmissionDeadlineTimestamp(EpochNumber.fromBigInt(BigInt(epochNumber)), this.constants);
317
344
  const oneSlotBefore = deadline - BigInt(this.constants.slotDuration);
318
345
  const date = new Date(Number(oneSlotBefore) * 1000);
319
346
  this.logger.info(`Waiting until last slot of submission window for epoch ${epochNumber} at ${date}`, {
@@ -323,7 +350,7 @@ export class EpochsTestContext {
323
350
  }
324
351
 
325
352
  /** Waits for the aztec node to sync to the target block number. */
326
- public async waitForNodeToSync(blockNumber: number, type: 'proven' | 'finalized' | 'historic') {
353
+ public async waitForNodeToSync(blockNumber: BlockNumber, type: 'proven' | 'finalized' | 'historic') {
327
354
  const waitTime = ARCHIVER_POLL_INTERVAL + WORLD_STATE_BLOCK_CHECK_INTERVAL;
328
355
  let synched = false;
329
356
  while (!synched) {
@@ -334,7 +361,7 @@ export class EpochsTestContext {
334
361
  ]);
335
362
  this.logger.info(`Wait for node synch ${blockNumber} ${type}`, { blockNumber, type, syncState, tips });
336
363
  if (type === 'proven') {
337
- synched = tips.proven.number >= blockNumber && syncState.latestBlockNumber >= blockNumber;
364
+ synched = tips.proven.block.number >= blockNumber && syncState.latestBlockNumber >= blockNumber;
338
365
  } else if (type === 'finalized') {
339
366
  synched = syncState.finalizedBlockNumber >= blockNumber;
340
367
  } else {
@@ -356,6 +383,19 @@ export class EpochsTestContext {
356
383
  return SpamContract.at(instance.address, wallet);
357
384
  }
358
385
 
386
+ /** Registers the TestContract on the given wallet. */
387
+ public async registerTestContract(wallet: Wallet, salt = Fr.ZERO) {
388
+ const instance = await getContractInstanceFromInstantiationParams(TestContract.artifact, {
389
+ constructorArgs: [],
390
+ constructorArtifact: undefined,
391
+ salt,
392
+ publicKeys: undefined,
393
+ deployer: undefined,
394
+ });
395
+ await wallet.registerContract(instance, TestContract.artifact);
396
+ return TestContract.at(instance.address, wallet);
397
+ }
398
+
359
399
  /** Creates an L1 client using a fresh account with funds from anvil, with a tx delayer already set up. */
360
400
  public async createL1Client() {
361
401
  const { client, delayer } = withDelayer(
@@ -372,7 +412,7 @@ export class EpochsTestContext {
372
412
  }
373
413
 
374
414
  /** Verifies whether the given block number is found on the aztec node. */
375
- public async verifyHistoricBlock(blockNumber: L2BlockNumber, expectedSuccess: boolean) {
415
+ public async verifyHistoricBlock(blockNumber: BlockParameter, expectedSuccess: boolean) {
376
416
  // We use `findLeavesIndexes` here, but could use any function that queries the world-state
377
417
  // at a particular block, so we know whether that historic block is available or has been
378
418
  // pruned. Note that `getBlock` would not work here, since it only hits the archiver.
@@ -390,11 +430,11 @@ export class EpochsTestContext {
390
430
  const stateChanges: TrackedSequencerEvent[] = [];
391
431
  const failEvents: TrackedSequencerEvent[] = [];
392
432
 
393
- // Note we do not include the 'tx-count-check-failed' event here, since it is fine if we dont build
433
+ // Note we do not include the 'block-tx-count-check-failed' event here, since it is fine if we dont build
394
434
  // due to lack of txs available.
395
435
  const failEventsKeys: (keyof SequencerEvents)[] = [
396
436
  'block-build-failed',
397
- 'block-publish-failed',
437
+ 'checkpoint-publish-failed',
398
438
  'proposer-rollup-check-failed',
399
439
  ];
400
440
 
@@ -1,7 +1,7 @@
1
1
  import { SchnorrAccountContract } from '@aztec/accounts/schnorr';
2
2
  import { Fr } from '@aztec/aztec.js/fields';
3
3
  import type { Logger } from '@aztec/aztec.js/log';
4
- import { Fq } from '@aztec/foundation/fields';
4
+ import { Fq } from '@aztec/foundation/curves/bn254';
5
5
  import { sleep } from '@aztec/foundation/sleep';
6
6
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
7
7
  import type { TestWallet } from '@aztec/test-wallet/server';
@@ -26,11 +26,8 @@ describe('e2e_fees bridging_race', () => {
26
26
  });
27
27
 
28
28
  beforeAll(async () => {
29
- await t.applyInitialAccountsSnapshot();
30
- await t.applyPublicDeployAccountsSnapshot();
31
- await t.applySetupFeeJuiceSnapshot();
32
-
33
- ({ wallet, logger } = await t.setup());
29
+ await t.setup();
30
+ ({ wallet, logger } = t);
34
31
  });
35
32
 
36
33
  afterAll(async () => {
@@ -60,7 +57,7 @@ describe('e2e_fees bridging_race', () => {
60
57
  const origApprove = l1TokenManager.approve.bind(l1TokenManager);
61
58
  l1TokenManager.approve = async (amount: bigint, address: Hex, addressName = '') => {
62
59
  await origApprove(amount, address, addressName);
63
- const sleepTime = (Number(t.chainMonitor.l2BlockTimestamp) + AZTEC_SLOT_DURATION) * 1000 - Date.now() - 500;
60
+ const sleepTime = (Number(t.chainMonitor.checkpointTimestamp) + AZTEC_SLOT_DURATION) * 1000 - Date.now() - 500;
64
61
  logger.info(`Sleeping for ${sleepTime}ms until near end of L2 slot before sending L1 fee juice to L2 inbox`);
65
62
  await sleep(sleepTime);
66
63
  };
@@ -70,10 +67,7 @@ describe('e2e_fees bridging_race', () => {
70
67
  // Yes, we need to REFACTOR it at some point
71
68
  const claim = await t.feeJuiceBridgeTestHarness.prepareTokensOnL1(bobsAddress);
72
69
  const { claimSecret: secret, messageLeafIndex: index } = claim;
73
- await t.feeJuiceContract.methods
74
- .claim(bobsAddress, claim.claimAmount, secret, index)
75
- .send({ from: bobsAddress })
76
- .wait();
70
+ await t.feeJuiceContract.methods.claim(bobsAddress, claim.claimAmount, secret, index).send({ from: bobsAddress });
77
71
  const [balance] = await t.getGasBalanceFn(bobsAddress);
78
72
  expect(balance).toEqual(claim.claimAmount);
79
73
  });