@aztec/end-to-end 0.0.1-commit.e558bd1c → 0.0.1-commit.e57c76e

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 (222) hide show
  1. package/README.md +27 -0
  2. package/dest/bench/client_flows/benchmark.d.ts +15 -1
  3. package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
  4. package/dest/bench/client_flows/benchmark.js +17 -0
  5. package/dest/bench/client_flows/client_flows_benchmark.d.ts +3 -3
  6. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  7. package/dest/bench/client_flows/client_flows_benchmark.js +36 -39
  8. package/dest/bench/client_flows/config.d.ts +2 -2
  9. package/dest/bench/client_flows/config.d.ts.map +1 -1
  10. package/dest/bench/client_flows/config.js +18 -0
  11. package/dest/bench/utils.d.ts +1 -1
  12. package/dest/bench/utils.d.ts.map +1 -1
  13. package/dest/bench/utils.js +8 -3
  14. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +8 -5
  15. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
  16. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +36 -17
  17. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +16 -5
  18. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
  19. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +39 -7
  20. package/dest/e2e_deploy_contract/deploy_test.d.ts +4 -4
  21. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
  22. package/dest/e2e_deploy_contract/deploy_test.js +2 -1
  23. package/dest/e2e_epochs/epochs_test.d.ts +33 -8
  24. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  25. package/dest/e2e_epochs/epochs_test.js +143 -44
  26. package/dest/e2e_fees/fees_test.d.ts +6 -3
  27. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  28. package/dest/e2e_fees/fees_test.js +50 -17
  29. package/dest/e2e_nested_contract/nested_contract_test.d.ts +3 -3
  30. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
  31. package/dest/e2e_nested_contract/nested_contract_test.js +6 -7
  32. package/dest/e2e_p2p/inactivity_slash_test.d.ts +1 -1
  33. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
  34. package/dest/e2e_p2p/inactivity_slash_test.js +4 -3
  35. package/dest/e2e_p2p/p2p_network.d.ts +14 -12
  36. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  37. package/dest/e2e_p2p/p2p_network.js +70 -34
  38. package/dest/e2e_p2p/reqresp/utils.d.ts +3 -3
  39. package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -1
  40. package/dest/e2e_p2p/reqresp/utils.js +67 -14
  41. package/dest/e2e_p2p/shared.d.ts +37 -8
  42. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  43. package/dest/e2e_p2p/shared.js +88 -51
  44. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts +2 -0
  45. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.d.ts.map +1 -0
  46. package/dest/e2e_storage_proof/fixtures/storage_proof_fetcher.js +184 -0
  47. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts +18 -0
  48. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.d.ts.map +1 -0
  49. package/dest/e2e_storage_proof/fixtures/storage_proof_fixture.js +120 -0
  50. package/dest/e2e_token_contract/token_contract_test.d.ts +6 -4
  51. package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
  52. package/dest/e2e_token_contract/token_contract_test.js +23 -11
  53. package/dest/fixtures/authwit_proxy.d.ts +15 -0
  54. package/dest/fixtures/authwit_proxy.d.ts.map +1 -0
  55. package/dest/fixtures/authwit_proxy.js +34 -0
  56. package/dest/fixtures/e2e_prover_test.d.ts +9 -8
  57. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  58. package/dest/fixtures/e2e_prover_test.js +39 -50
  59. package/dest/fixtures/elu_monitor.d.ts +21 -0
  60. package/dest/fixtures/elu_monitor.d.ts.map +1 -0
  61. package/dest/fixtures/elu_monitor.js +102 -0
  62. package/dest/fixtures/fixtures.d.ts +74 -1
  63. package/dest/fixtures/fixtures.d.ts.map +1 -1
  64. package/dest/fixtures/fixtures.js +71 -0
  65. package/dest/fixtures/get_bb_config.d.ts +1 -1
  66. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  67. package/dest/fixtures/get_bb_config.js +5 -5
  68. package/dest/fixtures/ha_setup.d.ts +2 -2
  69. package/dest/fixtures/ha_setup.d.ts.map +1 -1
  70. package/dest/fixtures/ha_setup.js +4 -2
  71. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts +25 -0
  72. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts.map +1 -0
  73. package/dest/fixtures/schnorr_hardcoded_account_contract.js +37 -0
  74. package/dest/fixtures/setup.d.ts +86 -32
  75. package/dest/fixtures/setup.d.ts.map +1 -1
  76. package/dest/fixtures/setup.js +209 -169
  77. package/dest/fixtures/setup_p2p_test.d.ts +14 -7
  78. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  79. package/dest/fixtures/setup_p2p_test.js +18 -15
  80. package/dest/fixtures/token_utils.d.ts +2 -2
  81. package/dest/fixtures/token_utils.d.ts.map +1 -1
  82. package/dest/fixtures/token_utils.js +5 -7
  83. package/dest/fixtures/utils.d.ts +2 -2
  84. package/dest/fixtures/utils.d.ts.map +1 -1
  85. package/dest/fixtures/utils.js +1 -1
  86. package/dest/forward-compatibility/wallet_rpc_client.d.ts +7 -0
  87. package/dest/forward-compatibility/wallet_rpc_client.d.ts.map +1 -0
  88. package/dest/forward-compatibility/wallet_rpc_client.js +15 -0
  89. package/dest/forward-compatibility/wallet_service.d.ts +3 -0
  90. package/dest/forward-compatibility/wallet_service.d.ts.map +1 -0
  91. package/dest/forward-compatibility/wallet_service.js +109 -0
  92. package/dest/install_legacy_contracts.d.cts +10 -0
  93. package/dest/install_legacy_contracts.d.cts.map +1 -0
  94. package/dest/legacy-jest-resolver.d.cts +3 -0
  95. package/dest/legacy-jest-resolver.d.cts.map +1 -0
  96. package/dest/shared/cross_chain_test_harness.d.ts +4 -2
  97. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  98. package/dest/shared/cross_chain_test_harness.js +22 -18
  99. package/dest/shared/gas_portal_test_harness.d.ts +8 -5
  100. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  101. package/dest/shared/gas_portal_test_harness.js +19 -10
  102. package/dest/shared/index.d.ts +2 -1
  103. package/dest/shared/index.d.ts.map +1 -1
  104. package/dest/shared/index.js +1 -0
  105. package/dest/shared/jest_setup.js +41 -1
  106. package/dest/shared/mock_state_view.d.ts +86 -0
  107. package/dest/shared/mock_state_view.d.ts.map +1 -0
  108. package/dest/shared/mock_state_view.js +186 -0
  109. package/dest/shared/submit-transactions.d.ts +2 -2
  110. package/dest/shared/submit-transactions.d.ts.map +1 -1
  111. package/dest/shared/submit-transactions.js +1 -1
  112. package/dest/shared/uniswap_l1_l2.d.ts +1 -1
  113. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  114. package/dest/shared/uniswap_l1_l2.js +56 -41
  115. package/dest/shared/wait_for_l1_to_l2_message.d.ts +13 -0
  116. package/dest/shared/wait_for_l1_to_l2_message.d.ts.map +1 -0
  117. package/dest/shared/wait_for_l1_to_l2_message.js +10 -0
  118. package/dest/simulators/lending_simulator.d.ts +10 -3
  119. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  120. package/dest/simulators/lending_simulator.js +26 -14
  121. package/dest/simulators/token_simulator.d.ts +1 -1
  122. package/dest/simulators/token_simulator.d.ts.map +1 -1
  123. package/dest/simulators/token_simulator.js +3 -24
  124. package/dest/spartan/setup_test_wallets.d.ts +12 -3
  125. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  126. package/dest/spartan/setup_test_wallets.js +108 -41
  127. package/dest/spartan/tx_metrics.d.ts +18 -4
  128. package/dest/spartan/tx_metrics.d.ts.map +1 -1
  129. package/dest/spartan/tx_metrics.js +74 -21
  130. package/dest/spartan/utils/bot.d.ts +3 -2
  131. package/dest/spartan/utils/bot.d.ts.map +1 -1
  132. package/dest/spartan/utils/bot.js +2 -1
  133. package/dest/spartan/utils/config.d.ts +10 -30
  134. package/dest/spartan/utils/config.d.ts.map +1 -1
  135. package/dest/spartan/utils/config.js +3 -1
  136. package/dest/spartan/utils/index.d.ts +4 -2
  137. package/dest/spartan/utils/index.d.ts.map +1 -1
  138. package/dest/spartan/utils/index.js +5 -1
  139. package/dest/spartan/utils/k8s.d.ts +3 -1
  140. package/dest/spartan/utils/k8s.d.ts.map +1 -1
  141. package/dest/spartan/utils/k8s.js +6 -0
  142. package/dest/spartan/utils/nodes.d.ts +4 -5
  143. package/dest/spartan/utils/nodes.d.ts.map +1 -1
  144. package/dest/spartan/utils/nodes.js +11 -11
  145. package/dest/spartan/utils/pod_logs.d.ts +25 -0
  146. package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
  147. package/dest/spartan/utils/pod_logs.js +74 -0
  148. package/dest/test-wallet/test_wallet.d.ts +85 -0
  149. package/dest/test-wallet/test_wallet.d.ts.map +1 -0
  150. package/dest/test-wallet/test_wallet.js +273 -0
  151. package/dest/test-wallet/utils.d.ts +41 -0
  152. package/dest/test-wallet/utils.d.ts.map +1 -0
  153. package/dest/test-wallet/utils.js +66 -0
  154. package/dest/test-wallet/wallet_worker_script.d.ts +2 -0
  155. package/dest/test-wallet/wallet_worker_script.d.ts.map +1 -0
  156. package/dest/test-wallet/wallet_worker_script.js +53 -0
  157. package/dest/test-wallet/worker_wallet.d.ts +53 -0
  158. package/dest/test-wallet/worker_wallet.d.ts.map +1 -0
  159. package/dest/test-wallet/worker_wallet.js +155 -0
  160. package/dest/test-wallet/worker_wallet_schema.d.ts +160 -0
  161. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -0
  162. package/dest/test-wallet/worker_wallet_schema.js +22 -0
  163. package/package.json +49 -45
  164. package/src/bench/client_flows/benchmark.ts +19 -0
  165. package/src/bench/client_flows/client_flows_benchmark.ts +64 -49
  166. package/src/bench/client_flows/config.ts +9 -1
  167. package/src/bench/utils.ts +10 -4
  168. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +52 -25
  169. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +53 -15
  170. package/src/e2e_deploy_contract/deploy_test.ts +6 -5
  171. package/src/e2e_epochs/epochs_test.ts +166 -68
  172. package/src/e2e_fees/bridging_race.notest.ts +1 -1
  173. package/src/e2e_fees/fees_test.ts +57 -32
  174. package/src/e2e_nested_contract/nested_contract_test.ts +10 -6
  175. package/src/e2e_p2p/inactivity_slash_test.ts +8 -7
  176. package/src/e2e_p2p/p2p_network.ts +93 -49
  177. package/src/e2e_p2p/reqresp/utils.ts +84 -17
  178. package/src/e2e_p2p/shared.ts +108 -65
  179. package/src/e2e_storage_proof/fixtures/storage_proof.json +915 -0
  180. package/src/e2e_storage_proof/fixtures/storage_proof_fetcher.ts +190 -0
  181. package/src/e2e_storage_proof/fixtures/storage_proof_fixture.ts +173 -0
  182. package/src/e2e_token_contract/token_contract_test.ts +38 -11
  183. package/src/fixtures/authwit_proxy.ts +54 -0
  184. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  185. package/src/fixtures/e2e_prover_test.ts +49 -56
  186. package/src/fixtures/elu_monitor.ts +126 -0
  187. package/src/fixtures/fixtures.ts +93 -0
  188. package/src/fixtures/get_bb_config.ts +7 -6
  189. package/src/fixtures/ha_setup.ts +7 -3
  190. package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
  191. package/src/fixtures/setup.ts +272 -233
  192. package/src/fixtures/setup_p2p_test.ts +21 -25
  193. package/src/fixtures/token_utils.ts +3 -3
  194. package/src/fixtures/utils.ts +2 -0
  195. package/src/forward-compatibility/wallet_rpc_client.ts +14 -0
  196. package/src/forward-compatibility/wallet_service.ts +104 -0
  197. package/src/guides/up_quick_start.sh +3 -5
  198. package/src/install_legacy_contracts.cjs +75 -0
  199. package/src/legacy-jest-resolver.cjs +112 -0
  200. package/src/shared/cross_chain_test_harness.ts +27 -13
  201. package/src/shared/gas_portal_test_harness.ts +21 -11
  202. package/src/shared/index.ts +1 -0
  203. package/src/shared/jest_setup.ts +51 -1
  204. package/src/shared/mock_state_view.ts +188 -0
  205. package/src/shared/submit-transactions.ts +3 -2
  206. package/src/shared/uniswap_l1_l2.ts +104 -53
  207. package/src/shared/wait_for_l1_to_l2_message.ts +23 -0
  208. package/src/simulators/lending_simulator.ts +32 -14
  209. package/src/simulators/token_simulator.ts +6 -30
  210. package/src/spartan/setup_test_wallets.ts +146 -35
  211. package/src/spartan/tx_metrics.ts +82 -24
  212. package/src/spartan/utils/bot.ts +4 -1
  213. package/src/spartan/utils/config.ts +2 -0
  214. package/src/spartan/utils/index.ts +7 -0
  215. package/src/spartan/utils/k8s.ts +8 -0
  216. package/src/spartan/utils/nodes.ts +17 -12
  217. package/src/spartan/utils/pod_logs.ts +99 -0
  218. package/src/test-wallet/test_wallet.ts +376 -0
  219. package/src/test-wallet/utils.ts +108 -0
  220. package/src/test-wallet/wallet_worker_script.ts +63 -0
  221. package/src/test-wallet/worker_wallet.ts +218 -0
  222. package/src/test-wallet/worker_wallet_schema.ts +13 -0
@@ -1,7 +1,7 @@
1
1
  import type { AztecAddress } from '@aztec/aztec.js/addresses';
2
2
  import { type Logger, createLogger } from '@aztec/aztec.js/log';
3
3
  import type { AztecNode } from '@aztec/aztec.js/node';
4
- import { CheatCodes } from '@aztec/aztec/testing';
4
+ import { CheatCodes, getTokenAllowedSetupFunctions } from '@aztec/aztec/testing';
5
5
  import { createExtendedL1Client } from '@aztec/ethereum/client';
6
6
  import { RollupContract } from '@aztec/ethereum/contracts';
7
7
  import type { DeployAztecL1ContractsArgs } from '@aztec/ethereum/deploy-aztec-l1-contracts';
@@ -20,15 +20,15 @@ import { ProtocolContractAddress } from '@aztec/protocol-contracts';
20
20
  import { getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
21
21
  import { GasSettings } from '@aztec/stdlib/gas';
22
22
  import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
23
- import { TestWallet } from '@aztec/test-wallet/server';
24
23
 
25
24
  import { getContract } from 'viem';
26
25
 
27
- import { MNEMONIC } from '../fixtures/fixtures.js';
26
+ import { MNEMONIC, getPaddedMaxFeesPerGas } from '../fixtures/fixtures.js';
28
27
  import {
29
28
  type EndToEndContext,
30
29
  type SetupOptions,
31
30
  deployAccounts,
31
+ ensureAuthRegistryPublished,
32
32
  publicDeployAccounts,
33
33
  setup,
34
34
  teardown,
@@ -36,6 +36,7 @@ import {
36
36
  import { mintTokensToPrivate } from '../fixtures/token_utils.js';
37
37
  import { type BalancesFn, getBalancesFn, setupSponsoredFPC } from '../fixtures/utils.js';
38
38
  import { FeeJuicePortalTestingHarnessFactory, type GasBridgingTestHarness } from '../shared/gas_portal_test_harness.js';
39
+ import { TestWallet } from '../test-wallet/test_wallet.js';
39
40
 
40
41
  /**
41
42
  * Test fixture for testing fees. Provides the following setup steps:
@@ -84,6 +85,8 @@ export class FeesTest {
84
85
  public getBananaPublicBalanceFn!: BalancesFn;
85
86
  public getBananaPrivateBalanceFn!: BalancesFn;
86
87
  public getProverFee!: (blockNumber: BlockNumber) => Promise<bigint>;
88
+ public getCommittedProverFee!: (blockNumber: BlockNumber) => Promise<bigint>;
89
+ public getCommittedBurn!: (blockNumber: BlockNumber) => Promise<bigint>;
87
90
 
88
91
  public readonly ALICE_INITIAL_BANANAS = BigInt(1e22);
89
92
  public readonly SUBSCRIPTION_AMOUNT = BigInt(1e19);
@@ -102,18 +105,22 @@ export class FeesTest {
102
105
  this.logger = createLogger(`e2e:e2e_fees:${testName}`);
103
106
  }
104
107
 
105
- async setup() {
108
+ async setup(opts: Partial<SetupOptions> = {}) {
106
109
  this.logger.verbose('Setting up fresh context...');
110
+ // Token allowlist entries are test-only: FPC-based fee payment with custom tokens won't work on mainnet alpha.
111
+ const tokenAllowList = await getTokenAllowedSetupFunctions();
107
112
  this.context = await setup(0, {
108
113
  startProverNode: true,
109
114
  ...this.setupOptions,
115
+ ...opts,
110
116
  fundSponsoredFPC: true,
111
117
  skipAccountDeployment: true,
112
118
  l1ContractsArgs: { ...this.setupOptions },
119
+ txPublicSetupAllowListExtend: [...(this.setupOptions.txPublicSetupAllowListExtend ?? []), ...tokenAllowList],
113
120
  });
114
121
 
115
122
  this.rollupContract = RollupContract.getFromConfig(this.context.config);
116
- this.chainMonitor = new ChainMonitor(this.rollupContract, this.context.dateProvider!, this.logger, 200).start();
123
+ this.chainMonitor = new ChainMonitor(this.rollupContract, this.context.dateProvider, this.logger, 200).start();
117
124
 
118
125
  await this.applyBaseSetup();
119
126
 
@@ -126,12 +133,12 @@ export class FeesTest {
126
133
  }
127
134
 
128
135
  setIsMarkingAsProven(b: boolean) {
129
- this.context.watcher!.setIsMarkingAsProven(b);
136
+ this.context.watcher.setIsMarkingAsProven(b);
130
137
  }
131
138
 
132
139
  async catchUpProvenChain() {
133
140
  const bn = await this.aztecNode.getBlockNumber();
134
- while ((await this.aztecNode.getProvenBlockNumber()) < bn) {
141
+ while ((await this.aztecNode.getBlockNumber('proven')) < bn) {
135
142
  await sleep(1000);
136
143
  }
137
144
  }
@@ -157,25 +164,31 @@ export class FeesTest {
157
164
 
158
165
  /** Alice mints bananaCoin tokens privately to the target address and redeems them. */
159
166
  async mintPrivateBananas(amount: bigint, address: AztecAddress) {
160
- const balanceBefore = await this.bananaCoin.methods
167
+ const { result: balanceBefore } = await this.bananaCoin.methods
161
168
  .balance_of_private(address)
162
- .simulate({ from: this.aliceAddress });
169
+ .simulate({ from: address });
163
170
 
164
171
  await mintTokensToPrivate(this.bananaCoin, this.aliceAddress, address, amount);
165
172
 
166
- const balanceAfter = await this.bananaCoin.methods
173
+ const { result: balanceAfter } = await this.bananaCoin.methods
167
174
  .balance_of_private(address)
168
- .simulate({ from: this.aliceAddress });
175
+ .simulate({ from: address });
169
176
  expect(balanceAfter).toEqual(balanceBefore + amount);
170
177
  }
171
178
 
172
179
  public async applyBaseSetup() {
173
180
  await this.applyInitialAccounts();
181
+ await this.applyEnsureAuthRegistryPublished();
174
182
  await this.applyPublicDeployAccounts();
175
183
  await this.applySetupFeeJuice();
176
184
  await this.applyDeployBananaToken();
177
185
  }
178
186
 
187
+ async applyEnsureAuthRegistryPublished() {
188
+ this.logger.info('Ensuring AuthRegistry published');
189
+ await ensureAuthRegistryPublished(this.wallet, this.aliceAddress);
190
+ }
191
+
179
192
  async applyInitialAccounts() {
180
193
  this.logger.info('Applying initial accounts setup');
181
194
 
@@ -188,9 +201,11 @@ export class FeesTest {
188
201
  });
189
202
 
190
203
  this.wallet = this.context.wallet;
191
- this.aztecNode = this.context.aztecNodeService!;
192
- this.aztecNodeAdmin = this.context.aztecNodeService!;
193
- this.gasSettings = GasSettings.default({ maxFeesPerGas: (await this.aztecNode.getCurrentMinFees()).mul(2) });
204
+ this.aztecNode = this.context.aztecNodeService;
205
+ this.aztecNodeAdmin = this.context.aztecNodeService;
206
+ this.gasSettings = GasSettings.fallback({
207
+ maxFeesPerGas: await getPaddedMaxFeesPerGas(this.aztecNode),
208
+ });
194
209
  this.cheatCodes = this.context.cheatCodes;
195
210
  this.accounts = deployedAccounts.map(a => a.address);
196
211
  this.accounts.forEach((a, i) => this.logger.verbose(`Account ${i} address: ${a}`));
@@ -213,16 +228,11 @@ export class FeesTest {
213
228
 
214
229
  this.feeJuiceContract = FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.wallet);
215
230
 
216
- this.getGasBalanceFn = getBalancesFn(
217
- '⛽',
218
- this.feeJuiceContract.methods.balance_of_public,
219
- this.aliceAddress,
220
- this.logger,
221
- );
231
+ this.getGasBalanceFn = getBalancesFn('⛽', this.feeJuiceContract.methods.balance_of_public, this.logger);
222
232
 
223
233
  this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
224
- aztecNode: this.context.aztecNodeService!,
225
- aztecNodeAdmin: this.context.aztecNodeService!,
234
+ aztecNode: this.context.aztecNodeService,
235
+ aztecNodeAdmin: this.context.aztecNodeService,
226
236
  l1Client: this.context.deployL1ContractsValues.l1Client,
227
237
  wallet: this.wallet,
228
238
  logger: this.logger,
@@ -232,22 +242,16 @@ export class FeesTest {
232
242
  async applyDeployBananaToken() {
233
243
  this.logger.info('Applying deploy banana token setup');
234
244
 
235
- const bananaCoin = await BananaCoin.deploy(this.wallet, this.aliceAddress, 'BC', 'BC', 18n).send({
245
+ const { contract: bananaCoin } = await BananaCoin.deploy(this.wallet, this.aliceAddress, 'BC', 'BC', 18n).send({
236
246
  from: this.aliceAddress,
237
247
  });
238
248
  this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
239
249
 
240
250
  this.bananaCoin = bananaCoin;
241
- this.getBananaPublicBalanceFn = getBalancesFn(
242
- '🍌.public',
243
- this.bananaCoin.methods.balance_of_public,
244
- this.aliceAddress,
245
- this.logger,
246
- );
251
+ this.getBananaPublicBalanceFn = getBalancesFn('🍌.public', this.bananaCoin.methods.balance_of_public, this.logger);
247
252
  this.getBananaPrivateBalanceFn = getBalancesFn(
248
253
  '🍌.private',
249
254
  this.bananaCoin.methods.balance_of_private,
250
- this.aliceAddress,
251
255
  this.logger,
252
256
  );
253
257
  }
@@ -259,7 +263,7 @@ export class FeesTest {
259
263
  expect((await this.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
260
264
 
261
265
  const bananaCoin = this.bananaCoin;
262
- const bananaFPC = await FPCContract.deploy(this.wallet, bananaCoin.address, this.fpcAdmin).send({
266
+ const { contract: bananaFPC } = await FPCContract.deploy(this.wallet, bananaCoin.address, this.fpcAdmin).send({
263
267
  from: this.aliceAddress,
264
268
  });
265
269
 
@@ -290,7 +294,7 @@ export class FeesTest {
290
294
 
291
295
  // @todo @lherskind As we deal with #13601
292
296
  // Right now the value is from `FeeLib.sol`
293
- const L1_GAS_PER_EPOCH_VERIFIED = 1000000n;
297
+ const L1_GAS_PER_EPOCH_VERIFIED = 3600000n;
294
298
 
295
299
  // We round up
296
300
  const mulDiv = (a: bigint, b: bigint, c: bigint) => (a * b) / c + ((a * b) % c > 0n ? 1n : 0n);
@@ -308,6 +312,27 @@ export class FeesTest {
308
312
  const mana = block!.header.totalManaUsed.toBigInt();
309
313
  return mulDiv(mana * proverCost, 10n ** 12n, price);
310
314
  };
315
+
316
+ /**
317
+ * Reads the prover fee that the rollup actually committed for the block's checkpoint, which is what
318
+ * RewardLib uses to pay prover rewards. Unlike `getProverFee`, this does not re-derive the value
319
+ * from current L1 fees or current eth-per-fee-asset price, so it is robust to pipelined fee-asset-price
320
+ * drift between propose-time and reward-payout-time.
321
+ */
322
+ this.getCommittedProverFee = async (blockNumber: BlockNumber) => {
323
+ const block = await this.aztecNode.getBlock(blockNumber);
324
+ const feeHeader = await this.rollupContract.getFeeHeader(BigInt(block!.checkpointNumber));
325
+ return feeHeader.manaUsed * feeHeader.proverCost;
326
+ };
327
+
328
+ // RewardLib computes sequencerFee = checkpointFee - burn - proverFee where burn = manaUsed * congestionCost.
329
+ // The fixture's typical case keeps congestionCost at zero, but reading it explicitly avoids latent bugs
330
+ // when test load changes excess mana.
331
+ this.getCommittedBurn = async (blockNumber: BlockNumber) => {
332
+ const block = await this.aztecNode.getBlock(blockNumber);
333
+ const feeHeader = await this.rollupContract.getFeeHeader(BigInt(block!.checkpointNumber));
334
+ return feeHeader.manaUsed * feeHeader.congestionCost;
335
+ };
311
336
  }
312
337
 
313
338
  public async applySponsoredFPCSetup() {
@@ -7,6 +7,7 @@ import { ParentContract } from '@aztec/noir-test-contracts.js/Parent';
7
7
 
8
8
  import {
9
9
  type EndToEndContext,
10
+ type SetupOptions,
10
11
  deployAccounts,
11
12
  publicDeployAccounts,
12
13
  setup,
@@ -44,15 +45,16 @@ export class NestedContractTest {
44
45
  });
45
46
  this.wallet = this.context.wallet;
46
47
  [{ address: this.defaultAccountAddress }] = deployedAccounts;
47
- this.aztecNode = this.context.aztecNodeService!;
48
+ this.aztecNode = this.context.aztecNodeService;
48
49
 
49
50
  this.logger.info('Public deploy accounts');
50
51
  await publicDeployAccounts(this.wallet, [this.defaultAccountAddress]);
51
52
  }
52
53
 
53
- async setup() {
54
+ async setup(opts: Partial<SetupOptions> = {}) {
54
55
  this.logger.info('Setting up fresh subsystems');
55
56
  this.context = await setup(0, {
57
+ ...opts,
56
58
  fundSponsoredFPC: true,
57
59
  skipAccountDeployment: true,
58
60
  });
@@ -65,9 +67,11 @@ export class NestedContractTest {
65
67
 
66
68
  async applyManual() {
67
69
  this.logger.info('Deploying parent and child contracts');
68
- const parentContract = await ParentContract.deploy(this.wallet).send({ from: this.defaultAccountAddress });
69
- const childContract = await ChildContract.deploy(this.wallet).send({ from: this.defaultAccountAddress });
70
- this.parentContract = parentContract;
71
- this.childContract = childContract;
70
+ ({ contract: this.parentContract } = await ParentContract.deploy(this.wallet).send({
71
+ from: this.defaultAccountAddress,
72
+ }));
73
+ ({ contract: this.childContract } = await ChildContract.deploy(this.wallet).send({
74
+ from: this.defaultAccountAddress,
75
+ }));
72
76
  }
73
77
  }
@@ -58,6 +58,8 @@ export class P2PInactivityTest {
58
58
  basePort: BOOT_NODE_UDP_PORT,
59
59
  startProverNode: true,
60
60
  initialConfig: {
61
+ inboxLag: 2,
62
+ anvilSlotsInAnEpoch: 4,
61
63
  proverNodeConfig: { proverNodeEpochProvingDelayMs: AZTEC_SLOT_DURATION * 1000 },
62
64
  aztecTargetCommitteeSize: COMMITTEE_SIZE,
63
65
  aztecSlotDuration: AZTEC_SLOT_DURATION,
@@ -66,7 +68,6 @@ export class P2PInactivityTest {
66
68
  listenAddress: '127.0.0.1',
67
69
  minTxsPerBlock: 0,
68
70
  aztecEpochDuration: EPOCH_DURATION,
69
- validatorReexecute: false,
70
71
  sentinelEnabled: true,
71
72
  slashingQuorum: SLASHING_QUORUM,
72
73
  slashingRoundSizeInEpochs: SLASHING_ROUND_SIZE_IN_EPOCHS,
@@ -98,17 +99,17 @@ export class P2PInactivityTest {
98
99
  this.rollup = rollup;
99
100
 
100
101
  if (!this.keepInitialNode) {
101
- await this.test.ctx.aztecNodeService!.stop();
102
+ await this.test.ctx.aztecNodeService.stop();
102
103
  }
103
104
 
104
105
  // Create all active nodes
105
106
  this.activeNodes = await createNodes(
106
107
  this.test.ctx.aztecNodeConfig,
107
- this.test.ctx.dateProvider!,
108
+ this.test.ctx.dateProvider,
108
109
  this.test.bootstrapNodeEnr,
109
110
  NUM_NODES - this.inactiveNodeCount - Number(this.keepInitialNode),
110
111
  BOOT_NODE_UDP_PORT,
111
- this.test.prefilledPublicData,
112
+ this.test.genesis,
112
113
  this.dataDir,
113
114
  undefined,
114
115
  Number(this.keepInitialNode),
@@ -118,18 +119,18 @@ export class P2PInactivityTest {
118
119
  const inactiveConfig = { ...this.test.ctx.aztecNodeConfig, dontStartSequencer: true };
119
120
  this.inactiveNodes = await createNodes(
120
121
  inactiveConfig,
121
- this.test.ctx.dateProvider!,
122
+ this.test.ctx.dateProvider,
122
123
  this.test.bootstrapNodeEnr,
123
124
  this.inactiveNodeCount,
124
125
  BOOT_NODE_UDP_PORT,
125
- this.test.prefilledPublicData,
126
+ this.test.genesis,
126
127
  this.dataDir,
127
128
  undefined,
128
129
  NUM_NODES - this.inactiveNodeCount,
129
130
  );
130
131
 
131
132
  this.nodes = [
132
- ...(this.keepInitialNode ? [this.test.ctx.aztecNodeService!] : []),
133
+ ...(this.keepInitialNode ? [this.test.ctx.aztecNodeService] : []),
133
134
  ...this.activeNodes,
134
135
  ...this.inactiveNodes,
135
136
  ];
@@ -1,18 +1,14 @@
1
- import type { InitialAccountData } from '@aztec/accounts/testing';
1
+ import { type InitialAccountData, generateSchnorrAccounts } from '@aztec/accounts/testing';
2
2
  import type { AztecNodeConfig, AztecNodeService } from '@aztec/aztec-node';
3
+ import { getAccountContractAddress } from '@aztec/aztec.js/account';
3
4
  import { AztecAddress, EthAddress } from '@aztec/aztec.js/addresses';
4
5
  import { Fr } from '@aztec/aztec.js/fields';
5
6
  import { getL1ContractsConfigEnvVars } from '@aztec/ethereum/config';
6
- import {
7
- type EmpireSlashingProposerContract,
8
- GSEContract,
9
- RollupContract,
10
- type TallySlashingProposerContract,
11
- } from '@aztec/ethereum/contracts';
7
+ import { GSEContract, RollupContract, type SlashingProposerContract } from '@aztec/ethereum/contracts';
12
8
  import type { Operator } from '@aztec/ethereum/deploy-aztec-l1-contracts';
13
9
  import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
14
10
  import { MultiAdderArtifact } from '@aztec/ethereum/l1-artifacts';
15
- import { createL1TxUtilsFromViemWallet } from '@aztec/ethereum/l1-tx-utils';
11
+ import { createL1TxUtils } from '@aztec/ethereum/l1-tx-utils';
16
12
  import { ChainMonitor } from '@aztec/ethereum/test';
17
13
  import type { ExtendedViemWalletClient, ViemClient } from '@aztec/ethereum/types';
18
14
  import { EpochNumber } from '@aztec/foundation/branded-types';
@@ -24,20 +20,22 @@ import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
24
20
  import type { BootstrapNode } from '@aztec/p2p/bootstrap';
25
21
  import { createBootstrapNodeFromPrivateKey, getBootstrapNodeEnr } from '@aztec/p2p/test-helpers';
26
22
  import { tryStop } from '@aztec/stdlib/interfaces/server';
27
- import { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
28
- import type { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
23
+ import { TopicType } from '@aztec/stdlib/p2p';
24
+ import type { GenesisData } from '@aztec/stdlib/world-state';
29
25
  import { ZkPassportProofParams } from '@aztec/stdlib/zkpassport';
30
- import type { TestWallet } from '@aztec/test-wallet/server';
31
26
  import { getGenesisValues } from '@aztec/world-state/testing';
32
27
 
33
28
  import getPort from 'get-port';
34
29
  import { type GetContractReturnType, getAddress, getContract } from 'viem';
35
30
  import { privateKeyToAccount } from 'viem/accounts';
36
31
 
32
+ import {
33
+ SCHNORR_HARDCODED_PRIVATE_KEY,
34
+ SchnorrHardcodedKeyAccountContract,
35
+ } from '../fixtures/schnorr_hardcoded_account_contract.js';
37
36
  import {
38
37
  type EndToEndContext,
39
38
  type SetupOptions,
40
- deployAccounts,
41
39
  getPrivateKeyFromIndex,
42
40
  getSponsoredFPCAddress,
43
41
  setup,
@@ -49,6 +47,7 @@ import {
49
47
  generatePrivateKeys,
50
48
  } from '../fixtures/setup_p2p_test.js';
51
49
  import { getEndToEndTestTelemetryClient } from '../fixtures/with_telemetry_utils.js';
50
+ import type { TestWallet } from '../test-wallet/test_wallet.js';
52
51
 
53
52
  // Use a fixed bootstrap node private key so that we can re-use the same snapshot and the nodes can find each other
54
53
  const BOOTSTRAP_NODE_PRIVATE_KEY = '080212208f988fc0899e4a73a5aee4d271a5f20670603a756ad8d84f2c94263a6427c591';
@@ -58,7 +57,7 @@ export const WAIT_FOR_TX_TIMEOUT = l1ContractsConfig.aztecSlotDuration * 3;
58
57
  export const SHORTENED_BLOCK_TIME_CONFIG_NO_PRUNES = {
59
58
  aztecSlotDuration: 12,
60
59
  ethereumSlotDuration: 4,
61
- aztecProofSubmissionWindow: 640,
60
+ aztecProofSubmissionEpochs: 640,
62
61
  };
63
62
 
64
63
  export class P2PNetworkTest {
@@ -75,8 +74,8 @@ export class P2PNetworkTest {
75
74
  public peerIdPrivateKeys: string[] = [];
76
75
  public validators: Operator[] = [];
77
76
 
78
- public deployedAccounts: InitialAccountData[] = [];
79
- public prefilledPublicData: PublicDataTreeLeaf[] = [];
77
+ public hardcodedAccountData!: InitialAccountData;
78
+ public genesis: GenesisData | undefined;
80
79
 
81
80
  // The re-execution test needs a wallet and a spam contract
82
81
  public wallet?: TestWallet;
@@ -123,12 +122,11 @@ export class P2PNetworkTest {
123
122
  initialValidatorConfig.aztecProofSubmissionEpochs ?? l1ContractsConfig.aztecProofSubmissionEpochs,
124
123
  slashingRoundSizeInEpochs:
125
124
  initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
126
- slasherFlavor: initialValidatorConfig.slasherFlavor ?? 'tally',
125
+ slasherEnabled: initialValidatorConfig.slasherEnabled ?? true,
127
126
  aztecTargetCommitteeSize: numberOfValidators,
128
127
  metricsPort: metricsPort,
129
128
  numberOfInitialFundedAccounts: 2,
130
129
  startProverNode,
131
- walletMinFeePadding: 2.0,
132
130
  };
133
131
 
134
132
  this.deployL1ContractsArgs = {
@@ -136,7 +134,7 @@ export class P2PNetworkTest {
136
134
  aztecEpochDuration: initialValidatorConfig.aztecEpochDuration ?? l1ContractsConfig.aztecEpochDuration,
137
135
  slashingRoundSizeInEpochs:
138
136
  initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
139
- slasherFlavor: initialValidatorConfig.slasherFlavor ?? 'tally',
137
+ slasherEnabled: initialValidatorConfig.slasherEnabled ?? true,
140
138
 
141
139
  ethereumSlotDuration: initialValidatorConfig.ethereumSlotDuration ?? l1ContractsConfig.ethereumSlotDuration,
142
140
  aztecSlotDuration: initialValidatorConfig.aztecSlotDuration ?? l1ContractsConfig.aztecSlotDuration,
@@ -191,10 +189,10 @@ export class P2PNetworkTest {
191
189
  }
192
190
 
193
191
  get fundedAccount() {
194
- if (!this.deployedAccounts[0]) {
195
- throw new Error('Call setupAccount to create a funded account.');
192
+ if (!this.hardcodedAccountData) {
193
+ throw new Error('Call setup to initialize the hardcoded account.');
196
194
  }
197
- return this.deployedAccounts[0];
195
+ return this.hardcodedAccountData;
198
196
  }
199
197
 
200
198
  async addBootstrapNode() {
@@ -302,17 +300,22 @@ export class P2PNetworkTest {
302
300
  await this._sendDummyTx(this.context.deployL1ContractsValues.l1Client);
303
301
  }
304
302
 
303
+ /** Points the wallet to a P2P-enabled node so transactions can propagate through the network. */
304
+ setupWalletOnNode(node: AztecNodeService) {
305
+ this.logger.info('Pointing wallet to a P2P-enabled node');
306
+ this.context.wallet.updateNode(node);
307
+ }
308
+
309
+ /** Registers the hardcoded account in PXE without on-chain deployment. No sequencer needed. */
305
310
  async setupAccount() {
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,
311
+ this.logger.info('Registering hardcoded account (no deployment)');
312
+ const contract = new SchnorrHardcodedKeyAccountContract();
313
+ const accountManager = await (this.context.wallet as TestWallet).createAccount({
314
+ secret: this.hardcodedAccountData.secret,
315
+ salt: this.hardcodedAccountData.salt,
316
+ contract,
313
317
  });
314
- this.deployedAccounts = deployedAccounts;
315
- [{ address: this.defaultAccountAddress }] = deployedAccounts;
318
+ this.defaultAccountAddress = accountManager.address;
316
319
  this.wallet = this.context.wallet;
317
320
  }
318
321
 
@@ -322,8 +325,9 @@ export class P2PNetworkTest {
322
325
  throw new Error('Call setupAccount before deploying spam contract');
323
326
  }
324
327
 
325
- const spamContract = await SpamContract.deploy(this.wallet).send({ from: this.defaultAccountAddress! });
326
- this.spamContract = spamContract;
328
+ ({ contract: this.spamContract } = await SpamContract.deploy(this.wallet).send({
329
+ from: this.defaultAccountAddress!,
330
+ }));
327
331
  }
328
332
 
329
333
  async removeInitialNode() {
@@ -333,9 +337,9 @@ export class P2PNetworkTest {
333
337
  const block = await this.context.deployL1ContractsValues.l1Client.getBlock({
334
338
  blockNumber: receipt.blockNumber,
335
339
  });
336
- this.context.dateProvider!.setTime(Number(block.timestamp) * 1000);
340
+ this.context.dateProvider.setTime(Number(block.timestamp) * 1000);
337
341
 
338
- await this.context.aztecNodeService!.stop();
342
+ await this.context.aztecNodeService.stop();
339
343
  }
340
344
 
341
345
  async sendDummyTx() {
@@ -343,7 +347,7 @@ export class P2PNetworkTest {
343
347
  }
344
348
 
345
349
  private async _sendDummyTx(l1Client: ExtendedViemWalletClient) {
346
- const l1TxUtils = createL1TxUtilsFromViemWallet(l1Client);
350
+ const l1TxUtils = createL1TxUtils(l1Client);
347
351
  return await l1TxUtils.sendAndMonitorTransaction({
348
352
  to: l1Client.account!.address,
349
353
  value: 1n,
@@ -352,13 +356,30 @@ export class P2PNetworkTest {
352
356
 
353
357
  async setup() {
354
358
  this.logger.info('Setting up subsystems from fresh');
359
+
360
+ // Pre-compute hardcoded account data so it gets funded in genesis.
361
+ const contract = new SchnorrHardcodedKeyAccountContract();
362
+ const secret = Fr.random();
363
+ const salt = Fr.random();
364
+ this.hardcodedAccountData = {
365
+ secret,
366
+ salt,
367
+ signingKey: SCHNORR_HARDCODED_PRIVATE_KEY,
368
+ address: await getAccountContractAddress(contract, secret, salt),
369
+ };
370
+
371
+ // Generate regular Schnorr accounts for tests that need deployable accounts (e.g. add_rollup).
372
+ const regularAccounts = await generateSchnorrAccounts(this.setupOptions.numberOfInitialFundedAccounts ?? 2);
373
+
355
374
  this.context = await setup(
356
375
  0,
357
376
  {
358
377
  ...this.setupOptions,
359
378
  fundSponsoredFPC: true,
360
379
  skipAccountDeployment: true,
361
- slasherFlavor: this.setupOptions.slasherFlavor ?? this.deployL1ContractsArgs.slasherFlavor ?? 'none',
380
+ skipInitialSequencer: true,
381
+ initialFundedAccounts: [...regularAccounts, this.hardcodedAccountData],
382
+ slasherEnabled: this.setupOptions.slasherEnabled ?? this.deployL1ContractsArgs.slasherEnabled ?? false,
362
383
  aztecTargetCommitteeSize: 0,
363
384
  l1ContractsArgs: this.deployL1ContractsArgs,
364
385
  },
@@ -370,12 +391,17 @@ export class P2PNetworkTest {
370
391
  const sponsoredFPCAddress = await getSponsoredFPCAddress();
371
392
  const initialFundedAccounts = [...this.context.initialFundedAccounts.map(a => a.address), sponsoredFPCAddress];
372
393
 
373
- const { prefilledPublicData } = await getGenesisValues(initialFundedAccounts);
374
- this.prefilledPublicData = prefilledPublicData;
394
+ const { genesis } = await getGenesisValues(
395
+ initialFundedAccounts,
396
+ undefined,
397
+ undefined,
398
+ this.context.genesis!.genesisTimestamp,
399
+ );
400
+ this.genesis = genesis;
375
401
 
376
402
  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));
403
+ this.monitor = new ChainMonitor(rollupContract, this.context.dateProvider).start();
404
+ this.monitor.on('l1-block', ({ timestamp }) => this.context.dateProvider.setTime(Number(timestamp) * 1000));
379
405
  }
380
406
 
381
407
  async stopNodes(nodes: AztecNodeService[]) {
@@ -406,6 +432,7 @@ export class P2PNetworkTest {
406
432
  expectedNodeCount?: number,
407
433
  timeoutSeconds = 30,
408
434
  checkIntervalSeconds = 0.1,
435
+ topics: TopicType[] = [TopicType.tx],
409
436
  ) {
410
437
  const nodeCount = expectedNodeCount ?? nodes.length;
411
438
  const minPeerCount = nodeCount - 1;
@@ -431,6 +458,29 @@ export class P2PNetworkTest {
431
458
  );
432
459
 
433
460
  this.logger.warn('All nodes connected to P2P mesh');
461
+
462
+ // Wait for GossipSub mesh to form for all specified topics.
463
+ // We only require at least 1 mesh peer per node because GossipSub
464
+ // stops grafting once it reaches Dlo peers and won't fill the mesh to all available peers.
465
+ for (const topic of topics) {
466
+ this.logger.warn(`Waiting for GossipSub mesh to form for ${topic} topic...`);
467
+ await Promise.all(
468
+ nodes.map(async (node, index) => {
469
+ const p2p = node.getP2P();
470
+ await retryUntil(
471
+ async () => {
472
+ const meshPeers = await p2p.getGossipMeshPeerCount(topic);
473
+ this.logger.debug(`Node ${index} has ${meshPeers} gossip mesh peers for ${topic} topic`);
474
+ return meshPeers >= 1 ? true : undefined;
475
+ },
476
+ `Node ${index} to have gossip mesh peers for ${topic} topic`,
477
+ timeoutSeconds,
478
+ checkIntervalSeconds,
479
+ );
480
+ }),
481
+ );
482
+ this.logger.warn(`All nodes have gossip mesh peers for ${topic} topic`);
483
+ }
434
484
  }
435
485
 
436
486
  async teardown() {
@@ -442,8 +492,7 @@ export class P2PNetworkTest {
442
492
  async getContracts(): Promise<{
443
493
  rollup: RollupContract;
444
494
  slasherContract: GetContractReturnType<typeof SlasherAbi, ViemClient>;
445
- slashingProposer: EmpireSlashingProposerContract | TallySlashingProposerContract | undefined;
446
- slashFactory: SlashFactoryContract;
495
+ slashingProposer: SlashingProposerContract | undefined;
447
496
  }> {
448
497
  if (!this.ctx.deployL1ContractsValues) {
449
498
  throw new Error('DeployAztecL1ContractsValues not set');
@@ -460,14 +509,9 @@ export class P2PNetworkTest {
460
509
  client: this.ctx.deployL1ContractsValues.l1Client,
461
510
  });
462
511
 
463
- // Get the actual slashing proposer from rollup (which handles both empire and tally)
512
+ // Get the actual slashing proposer from rollup
464
513
  const slashingProposer = await rollup.getSlashingProposer();
465
514
 
466
- const slashFactory = new SlashFactoryContract(
467
- this.ctx.deployL1ContractsValues.l1Client,
468
- getAddress(this.ctx.deployL1ContractsValues.l1ContractAddresses.slashFactoryAddress!.toString()),
469
- );
470
-
471
- return { rollup, slasherContract, slashingProposer, slashFactory };
515
+ return { rollup, slasherContract, slashingProposer };
472
516
  }
473
517
  }