@aztec/end-to-end 0.0.1-commit.3f296a7d2 → 0.0.1-commit.3f5453c7b

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 (62) hide show
  1. package/README.md +27 -0
  2. package/dest/bench/client_flows/client_flows_benchmark.d.ts +1 -1
  3. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  4. package/dest/bench/client_flows/client_flows_benchmark.js +11 -26
  5. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +3 -2
  6. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
  7. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +1 -1
  8. package/dest/e2e_epochs/epochs_test.js +3 -3
  9. package/dest/e2e_fees/fees_test.js +1 -1
  10. package/dest/e2e_p2p/inactivity_slash_test.js +3 -3
  11. package/dest/e2e_p2p/p2p_network.d.ts +5 -7
  12. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  13. package/dest/e2e_p2p/p2p_network.js +14 -13
  14. package/dest/e2e_p2p/reqresp/utils.js +1 -1
  15. package/dest/e2e_p2p/shared.d.ts +5 -7
  16. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  17. package/dest/e2e_p2p/shared.js +16 -42
  18. package/dest/fixtures/authwit_proxy.d.ts +1 -1
  19. package/dest/fixtures/authwit_proxy.d.ts.map +1 -1
  20. package/dest/fixtures/authwit_proxy.js +4 -0
  21. package/dest/fixtures/e2e_prover_test.d.ts +1 -1
  22. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  23. package/dest/fixtures/e2e_prover_test.js +4 -7
  24. package/dest/fixtures/setup.d.ts +11 -8
  25. package/dest/fixtures/setup.d.ts.map +1 -1
  26. package/dest/fixtures/setup.js +11 -9
  27. package/dest/fixtures/setup_p2p_test.d.ts +6 -6
  28. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  29. package/dest/fixtures/setup_p2p_test.js +8 -8
  30. package/dest/fixtures/token_utils.d.ts +1 -1
  31. package/dest/fixtures/token_utils.d.ts.map +1 -1
  32. package/dest/fixtures/token_utils.js +2 -5
  33. package/dest/legacy-jest-resolver.d.cts +3 -0
  34. package/dest/legacy-jest-resolver.d.cts.map +1 -0
  35. package/dest/spartan/setup_test_wallets.d.ts +1 -1
  36. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  37. package/dest/spartan/setup_test_wallets.js +58 -40
  38. package/dest/test-wallet/test_wallet.d.ts +16 -8
  39. package/dest/test-wallet/test_wallet.d.ts.map +1 -1
  40. package/dest/test-wallet/test_wallet.js +82 -46
  41. package/dest/test-wallet/worker_wallet.d.ts +4 -4
  42. package/dest/test-wallet/worker_wallet.d.ts.map +1 -1
  43. package/dest/test-wallet/worker_wallet_schema.d.ts +7 -2
  44. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -1
  45. package/package.json +40 -39
  46. package/src/bench/client_flows/client_flows_benchmark.ts +29 -21
  47. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +3 -6
  48. package/src/e2e_epochs/epochs_test.ts +3 -3
  49. package/src/e2e_fees/fees_test.ts +1 -1
  50. package/src/e2e_p2p/inactivity_slash_test.ts +3 -3
  51. package/src/e2e_p2p/p2p_network.ts +22 -27
  52. package/src/e2e_p2p/reqresp/utils.ts +1 -1
  53. package/src/e2e_p2p/shared.ts +16 -57
  54. package/src/fixtures/authwit_proxy.ts +4 -0
  55. package/src/fixtures/e2e_prover_test.ts +7 -6
  56. package/src/fixtures/setup.ts +21 -17
  57. package/src/fixtures/setup_p2p_test.ts +9 -9
  58. package/src/fixtures/token_utils.ts +1 -4
  59. package/src/legacy-jest-resolver.cjs +135 -0
  60. package/src/spartan/setup_test_wallets.ts +59 -36
  61. package/src/test-wallet/test_wallet.ts +100 -50
  62. package/src/test-wallet/worker_wallet.ts +3 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/end-to-end",
3
- "version": "0.0.1-commit.3f296a7d2",
3
+ "version": "0.0.1-commit.3f5453c7b",
4
4
  "type": "module",
5
5
  "exports": "./dest/index.js",
6
6
  "inherits": [
@@ -26,44 +26,44 @@
26
26
  "formatting": "run -T prettier --check ./src && run -T eslint ./src"
27
27
  },
28
28
  "dependencies": {
29
- "@aztec/accounts": "0.0.1-commit.3f296a7d2",
30
- "@aztec/archiver": "0.0.1-commit.3f296a7d2",
31
- "@aztec/aztec": "0.0.1-commit.3f296a7d2",
32
- "@aztec/aztec-node": "0.0.1-commit.3f296a7d2",
33
- "@aztec/aztec.js": "0.0.1-commit.3f296a7d2",
34
- "@aztec/bb-prover": "0.0.1-commit.3f296a7d2",
35
- "@aztec/bb.js": "0.0.1-commit.3f296a7d2",
36
- "@aztec/blob-client": "0.0.1-commit.3f296a7d2",
37
- "@aztec/blob-lib": "0.0.1-commit.3f296a7d2",
38
- "@aztec/bot": "0.0.1-commit.3f296a7d2",
39
- "@aztec/cli": "0.0.1-commit.3f296a7d2",
40
- "@aztec/constants": "0.0.1-commit.3f296a7d2",
41
- "@aztec/entrypoints": "0.0.1-commit.3f296a7d2",
42
- "@aztec/epoch-cache": "0.0.1-commit.3f296a7d2",
43
- "@aztec/ethereum": "0.0.1-commit.3f296a7d2",
44
- "@aztec/foundation": "0.0.1-commit.3f296a7d2",
45
- "@aztec/kv-store": "0.0.1-commit.3f296a7d2",
46
- "@aztec/l1-artifacts": "0.0.1-commit.3f296a7d2",
47
- "@aztec/node-keystore": "0.0.1-commit.3f296a7d2",
48
- "@aztec/noir-contracts.js": "0.0.1-commit.3f296a7d2",
49
- "@aztec/noir-noirc_abi": "0.0.1-commit.3f296a7d2",
50
- "@aztec/noir-protocol-circuits-types": "0.0.1-commit.3f296a7d2",
51
- "@aztec/noir-test-contracts.js": "0.0.1-commit.3f296a7d2",
52
- "@aztec/p2p": "0.0.1-commit.3f296a7d2",
53
- "@aztec/protocol-contracts": "0.0.1-commit.3f296a7d2",
54
- "@aztec/prover-client": "0.0.1-commit.3f296a7d2",
55
- "@aztec/prover-node": "0.0.1-commit.3f296a7d2",
56
- "@aztec/pxe": "0.0.1-commit.3f296a7d2",
57
- "@aztec/sequencer-client": "0.0.1-commit.3f296a7d2",
58
- "@aztec/simulator": "0.0.1-commit.3f296a7d2",
59
- "@aztec/slasher": "0.0.1-commit.3f296a7d2",
60
- "@aztec/stdlib": "0.0.1-commit.3f296a7d2",
61
- "@aztec/telemetry-client": "0.0.1-commit.3f296a7d2",
62
- "@aztec/validator-client": "0.0.1-commit.3f296a7d2",
63
- "@aztec/validator-ha-signer": "0.0.1-commit.3f296a7d2",
64
- "@aztec/wallet-sdk": "0.0.1-commit.3f296a7d2",
65
- "@aztec/wallets": "0.0.1-commit.3f296a7d2",
66
- "@aztec/world-state": "0.0.1-commit.3f296a7d2",
29
+ "@aztec/accounts": "0.0.1-commit.3f5453c7b",
30
+ "@aztec/archiver": "0.0.1-commit.3f5453c7b",
31
+ "@aztec/aztec": "0.0.1-commit.3f5453c7b",
32
+ "@aztec/aztec-node": "0.0.1-commit.3f5453c7b",
33
+ "@aztec/aztec.js": "0.0.1-commit.3f5453c7b",
34
+ "@aztec/bb-prover": "0.0.1-commit.3f5453c7b",
35
+ "@aztec/bb.js": "0.0.1-commit.3f5453c7b",
36
+ "@aztec/blob-client": "0.0.1-commit.3f5453c7b",
37
+ "@aztec/blob-lib": "0.0.1-commit.3f5453c7b",
38
+ "@aztec/bot": "0.0.1-commit.3f5453c7b",
39
+ "@aztec/cli": "0.0.1-commit.3f5453c7b",
40
+ "@aztec/constants": "0.0.1-commit.3f5453c7b",
41
+ "@aztec/entrypoints": "0.0.1-commit.3f5453c7b",
42
+ "@aztec/epoch-cache": "0.0.1-commit.3f5453c7b",
43
+ "@aztec/ethereum": "0.0.1-commit.3f5453c7b",
44
+ "@aztec/foundation": "0.0.1-commit.3f5453c7b",
45
+ "@aztec/kv-store": "0.0.1-commit.3f5453c7b",
46
+ "@aztec/l1-artifacts": "0.0.1-commit.3f5453c7b",
47
+ "@aztec/node-keystore": "0.0.1-commit.3f5453c7b",
48
+ "@aztec/noir-contracts.js": "0.0.1-commit.3f5453c7b",
49
+ "@aztec/noir-noirc_abi": "0.0.1-commit.3f5453c7b",
50
+ "@aztec/noir-protocol-circuits-types": "0.0.1-commit.3f5453c7b",
51
+ "@aztec/noir-test-contracts.js": "0.0.1-commit.3f5453c7b",
52
+ "@aztec/p2p": "0.0.1-commit.3f5453c7b",
53
+ "@aztec/protocol-contracts": "0.0.1-commit.3f5453c7b",
54
+ "@aztec/prover-client": "0.0.1-commit.3f5453c7b",
55
+ "@aztec/prover-node": "0.0.1-commit.3f5453c7b",
56
+ "@aztec/pxe": "0.0.1-commit.3f5453c7b",
57
+ "@aztec/sequencer-client": "0.0.1-commit.3f5453c7b",
58
+ "@aztec/simulator": "0.0.1-commit.3f5453c7b",
59
+ "@aztec/slasher": "0.0.1-commit.3f5453c7b",
60
+ "@aztec/stdlib": "0.0.1-commit.3f5453c7b",
61
+ "@aztec/telemetry-client": "0.0.1-commit.3f5453c7b",
62
+ "@aztec/validator-client": "0.0.1-commit.3f5453c7b",
63
+ "@aztec/validator-ha-signer": "0.0.1-commit.3f5453c7b",
64
+ "@aztec/wallet-sdk": "0.0.1-commit.3f5453c7b",
65
+ "@aztec/wallets": "0.0.1-commit.3f5453c7b",
66
+ "@aztec/world-state": "0.0.1-commit.3f5453c7b",
67
67
  "@iarna/toml": "^2.2.5",
68
68
  "@jest/globals": "^30.0.0",
69
69
  "@noble/curves": "=1.0.0",
@@ -159,6 +159,7 @@
159
159
  "moduleNameMapper": {
160
160
  "^(\\.{1,2}/.*)\\.[cm]?js$": "$1"
161
161
  },
162
+ "resolver": "<rootDir>/legacy-jest-resolver.cjs",
162
163
  "testRegex": "./src/.*\\.test\\.(js|mjs|ts)$",
163
164
  "rootDir": "./src",
164
165
  "testTimeout": 120000,
@@ -250,11 +250,14 @@ export class ClientFlowsBenchmark {
250
250
 
251
251
  async applyDeployBananaToken() {
252
252
  this.logger.info('Applying banana token deployment');
253
- const {
254
- receipt: { contract: bananaCoin, instance: bananaCoinInstance },
255
- } = await BananaCoin.deploy(this.adminWallet, this.adminAddress, 'BC', 'BC', 18n).send({
253
+ const { contract: bananaCoin, instance: bananaCoinInstance } = await BananaCoin.deploy(
254
+ this.adminWallet,
255
+ this.adminAddress,
256
+ 'BC',
257
+ 'BC',
258
+ 18n,
259
+ ).send({
256
260
  from: this.adminAddress,
257
- wait: { returnReceipt: true },
258
261
  });
259
262
  this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
260
263
  this.bananaCoin = bananaCoin;
@@ -263,11 +266,14 @@ export class ClientFlowsBenchmark {
263
266
 
264
267
  async applyDeployCandyBarToken() {
265
268
  this.logger.info('Applying candy bar token deployment');
266
- const {
267
- receipt: { contract: candyBarCoin, instance: candyBarCoinInstance },
268
- } = await TokenContract.deploy(this.adminWallet, this.adminAddress, 'CBC', 'CBC', 18n).send({
269
+ const { contract: candyBarCoin, instance: candyBarCoinInstance } = await TokenContract.deploy(
270
+ this.adminWallet,
271
+ this.adminAddress,
272
+ 'CBC',
273
+ 'CBC',
274
+ 18n,
275
+ ).send({
269
276
  from: this.adminAddress,
270
- wait: { returnReceipt: true },
271
277
  });
272
278
  this.logger.info(`CandyBarCoin deployed at ${candyBarCoin.address}`);
273
279
  this.candyBarCoin = candyBarCoin;
@@ -280,11 +286,12 @@ export class ClientFlowsBenchmark {
280
286
  expect((await this.context.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
281
287
 
282
288
  const bananaCoin = this.bananaCoin;
283
- const {
284
- receipt: { contract: bananaFPC, instance: bananaFPCInstance },
285
- } = await FPCContract.deploy(this.adminWallet, bananaCoin.address, this.adminAddress).send({
289
+ const { contract: bananaFPC, instance: bananaFPCInstance } = await FPCContract.deploy(
290
+ this.adminWallet,
291
+ bananaCoin.address,
292
+ this.adminAddress,
293
+ ).send({
286
294
  from: this.adminAddress,
287
- wait: { returnReceipt: true },
288
295
  });
289
296
 
290
297
  this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
@@ -348,20 +355,21 @@ export class ClientFlowsBenchmark {
348
355
 
349
356
  public async applyDeployAmm() {
350
357
  this.logger.info('Applying AMM deployment');
351
- const {
352
- receipt: { contract: liquidityToken, instance: liquidityTokenInstance },
353
- } = await TokenContract.deploy(this.adminWallet, this.adminAddress, 'LPT', 'LPT', 18n).send({
358
+ const { contract: liquidityToken, instance: liquidityTokenInstance } = await TokenContract.deploy(
359
+ this.adminWallet,
360
+ this.adminAddress,
361
+ 'LPT',
362
+ 'LPT',
363
+ 18n,
364
+ ).send({
354
365
  from: this.adminAddress,
355
- wait: { returnReceipt: true },
356
366
  });
357
- const {
358
- receipt: { contract: amm, instance: ammInstance },
359
- } = await AMMContract.deploy(
367
+ const { contract: amm, instance: ammInstance } = await AMMContract.deploy(
360
368
  this.adminWallet,
361
369
  this.bananaCoin.address,
362
370
  this.candyBarCoin.address,
363
371
  liquidityToken.address,
364
- ).send({ from: this.adminAddress, wait: { returnReceipt: true } });
372
+ ).send({ from: this.adminAddress });
365
373
  this.logger.info(`AMM deployed at ${amm.address}`);
366
374
  await liquidityToken.methods.set_minter(amm.address, true).send({ from: this.adminAddress });
367
375
  this.liquidityToken = liquidityToken;
@@ -379,7 +387,7 @@ export class ClientFlowsBenchmark {
379
387
  // The private fee paying method assembled on the app side requires knowledge of the maximum
380
388
  // fee the user is willing to pay
381
389
  const maxFeesPerGas = (await this.aztecNode.getCurrentMinFees()).mul(1.5);
382
- const gasSettings = GasSettings.default({ maxFeesPerGas });
390
+ const gasSettings = GasSettings.fallback({ maxFeesPerGas });
383
391
  return new PrivateFeePaymentMethod(this.bananaFPC.address, sender, wallet, gasSettings);
384
392
  }
385
393
 
@@ -10,6 +10,7 @@ import { TokenBlacklistContract } from '@aztec/noir-contracts.js/TokenBlacklist'
10
10
  import { GenericProxyContract } from '@aztec/noir-test-contracts.js/GenericProxy';
11
11
  import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
12
12
  import type { SequencerClient } from '@aztec/sequencer-client';
13
+ import type { AztecNodeDebug } from '@aztec/stdlib/interfaces/client';
13
14
 
14
15
  import { jest } from '@jest/globals';
15
16
 
@@ -57,7 +58,7 @@ export class BlacklistTokenContractTest {
57
58
  authwitProxy!: GenericProxyContract;
58
59
  cheatCodes!: CheatCodes;
59
60
  sequencer!: SequencerClient;
60
- aztecNode!: AztecNode;
61
+ aztecNode!: AztecNode & AztecNodeDebug;
61
62
 
62
63
  adminAddress!: AztecAddress;
63
64
  otherAddress!: AztecAddress;
@@ -68,11 +69,7 @@ export class BlacklistTokenContractTest {
68
69
  }
69
70
 
70
71
  async crossTimestampOfChange() {
71
- await this.cheatCodes.warpL2TimeAtLeastBy(
72
- this.sequencer,
73
- this.aztecNode,
74
- BlacklistTokenContractTest.CHANGE_ROLES_DELAY,
75
- );
72
+ await this.cheatCodes.warpL2TimeAtLeastBy(this.aztecNode, BlacklistTokenContractTest.CHANGE_ROLES_DELAY);
76
73
  }
77
74
 
78
75
  /**
@@ -145,7 +145,7 @@ export class EpochsTestContext {
145
145
  proverId: EthAddress.fromNumber(1),
146
146
  worldStateCheckpointHistory: WORLD_STATE_CHECKPOINT_HISTORY,
147
147
  exitDelaySeconds: DefaultL1ContractsConfig.exitDelaySeconds,
148
- slasherFlavor: 'none',
148
+ slasherEnabled: false,
149
149
  l1PublishingTime,
150
150
  ...opts,
151
151
  },
@@ -223,7 +223,7 @@ export class EpochsTestContext {
223
223
  },
224
224
  },
225
225
  {
226
- prefilledPublicData: this.context.prefilledPublicData ?? [],
226
+ genesis: this.context.genesis,
227
227
  dontStart: opts.dontStart,
228
228
  },
229
229
  ),
@@ -278,7 +278,7 @@ export class EpochsTestContext {
278
278
  slashingProtectionDb: opts.slashingProtectionDb,
279
279
  },
280
280
  {
281
- prefilledPublicData: this.context.prefilledPublicData,
281
+ genesis: this.context.genesis,
282
282
  ...opts,
283
283
  },
284
284
  ),
@@ -193,7 +193,7 @@ export class FeesTest {
193
193
  this.wallet = this.context.wallet;
194
194
  this.aztecNode = this.context.aztecNodeService;
195
195
  this.aztecNodeAdmin = this.context.aztecNodeService;
196
- this.gasSettings = GasSettings.default({ maxFeesPerGas: (await this.aztecNode.getCurrentMinFees()).mul(2) });
196
+ this.gasSettings = GasSettings.fallback({ maxFeesPerGas: (await this.aztecNode.getCurrentMinFees()).mul(2) });
197
197
  this.cheatCodes = this.context.cheatCodes;
198
198
  this.accounts = deployedAccounts.map(a => a.address);
199
199
  this.accounts.forEach((a, i) => this.logger.verbose(`Account ${i} address: ${a}`));
@@ -58,6 +58,7 @@ export class P2PInactivityTest {
58
58
  basePort: BOOT_NODE_UDP_PORT,
59
59
  startProverNode: true,
60
60
  initialConfig: {
61
+ anvilSlotsInAnEpoch: 4,
61
62
  proverNodeConfig: { proverNodeEpochProvingDelayMs: AZTEC_SLOT_DURATION * 1000 },
62
63
  aztecTargetCommitteeSize: COMMITTEE_SIZE,
63
64
  aztecSlotDuration: AZTEC_SLOT_DURATION,
@@ -66,7 +67,6 @@ export class P2PInactivityTest {
66
67
  listenAddress: '127.0.0.1',
67
68
  minTxsPerBlock: 0,
68
69
  aztecEpochDuration: EPOCH_DURATION,
69
- validatorReexecute: false,
70
70
  sentinelEnabled: true,
71
71
  slashingQuorum: SLASHING_QUORUM,
72
72
  slashingRoundSizeInEpochs: SLASHING_ROUND_SIZE_IN_EPOCHS,
@@ -108,7 +108,7 @@ export class P2PInactivityTest {
108
108
  this.test.bootstrapNodeEnr,
109
109
  NUM_NODES - this.inactiveNodeCount - Number(this.keepInitialNode),
110
110
  BOOT_NODE_UDP_PORT,
111
- this.test.prefilledPublicData,
111
+ this.test.genesis,
112
112
  this.dataDir,
113
113
  undefined,
114
114
  Number(this.keepInitialNode),
@@ -122,7 +122,7 @@ export class P2PInactivityTest {
122
122
  this.test.bootstrapNodeEnr,
123
123
  this.inactiveNodeCount,
124
124
  BOOT_NODE_UDP_PORT,
125
- this.test.prefilledPublicData,
125
+ this.test.genesis,
126
126
  this.dataDir,
127
127
  undefined,
128
128
  NUM_NODES - this.inactiveNodeCount,
@@ -3,12 +3,7 @@ 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
5
  import { getL1ContractsConfigEnvVars } from '@aztec/ethereum/config';
6
- import {
7
- type EmpireSlashingProposerContract,
8
- GSEContract,
9
- RollupContract,
10
- type TallySlashingProposerContract,
11
- } from '@aztec/ethereum/contracts';
6
+ import { GSEContract, RollupContract, type SlashingProposerContract } from '@aztec/ethereum/contracts';
12
7
  import type { Operator } from '@aztec/ethereum/deploy-aztec-l1-contracts';
13
8
  import { deployL1Contract } from '@aztec/ethereum/deploy-l1-contract';
14
9
  import { MultiAdderArtifact } from '@aztec/ethereum/l1-artifacts';
@@ -24,9 +19,9 @@ import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
24
19
  import type { BootstrapNode } from '@aztec/p2p/bootstrap';
25
20
  import { createBootstrapNodeFromPrivateKey, getBootstrapNodeEnr } from '@aztec/p2p/test-helpers';
26
21
  import { tryStop } from '@aztec/stdlib/interfaces/server';
27
- import { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
28
22
  import { TopicType } from '@aztec/stdlib/p2p';
29
- import type { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
23
+ import { TxStatus } from '@aztec/stdlib/tx';
24
+ import type { GenesisData } from '@aztec/stdlib/world-state';
30
25
  import { ZkPassportProofParams } from '@aztec/stdlib/zkpassport';
31
26
  import { getGenesisValues } from '@aztec/world-state/testing';
32
27
 
@@ -77,7 +72,7 @@ export class P2PNetworkTest {
77
72
  public validators: Operator[] = [];
78
73
 
79
74
  public deployedAccounts: InitialAccountData[] = [];
80
- public prefilledPublicData: PublicDataTreeLeaf[] = [];
75
+ public genesis: GenesisData | undefined;
81
76
 
82
77
  // The re-execution test needs a wallet and a spam contract
83
78
  public wallet?: TestWallet;
@@ -124,7 +119,7 @@ export class P2PNetworkTest {
124
119
  initialValidatorConfig.aztecProofSubmissionEpochs ?? l1ContractsConfig.aztecProofSubmissionEpochs,
125
120
  slashingRoundSizeInEpochs:
126
121
  initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
127
- slasherFlavor: initialValidatorConfig.slasherFlavor ?? 'tally',
122
+ slasherEnabled: initialValidatorConfig.slasherEnabled ?? true,
128
123
  aztecTargetCommitteeSize: numberOfValidators,
129
124
  metricsPort: metricsPort,
130
125
  numberOfInitialFundedAccounts: 2,
@@ -137,7 +132,7 @@ export class P2PNetworkTest {
137
132
  aztecEpochDuration: initialValidatorConfig.aztecEpochDuration ?? l1ContractsConfig.aztecEpochDuration,
138
133
  slashingRoundSizeInEpochs:
139
134
  initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
140
- slasherFlavor: initialValidatorConfig.slasherFlavor ?? 'tally',
135
+ slasherEnabled: initialValidatorConfig.slasherEnabled ?? true,
141
136
 
142
137
  ethereumSlotDuration: initialValidatorConfig.ethereumSlotDuration ?? l1ContractsConfig.ethereumSlotDuration,
143
138
  aztecSlotDuration: initialValidatorConfig.aztecSlotDuration ?? l1ContractsConfig.aztecSlotDuration,
@@ -305,10 +300,11 @@ export class P2PNetworkTest {
305
300
 
306
301
  async setupAccount() {
307
302
  this.logger.info('Setting up account');
308
- const { deployedAccounts } = await deployAccounts(
309
- 1,
310
- this.logger,
311
- )({
303
+ const { deployedAccounts } = await deployAccounts(1, this.logger, {
304
+ wait: {
305
+ waitForStatus: TxStatus.CHECKPOINTED,
306
+ },
307
+ })({
312
308
  wallet: this.context.wallet,
313
309
  initialFundedAccounts: this.context.initialFundedAccounts,
314
310
  });
@@ -360,7 +356,7 @@ export class P2PNetworkTest {
360
356
  ...this.setupOptions,
361
357
  fundSponsoredFPC: true,
362
358
  skipAccountDeployment: true,
363
- slasherFlavor: this.setupOptions.slasherFlavor ?? this.deployL1ContractsArgs.slasherFlavor ?? 'none',
359
+ slasherEnabled: this.setupOptions.slasherEnabled ?? this.deployL1ContractsArgs.slasherEnabled ?? false,
364
360
  aztecTargetCommitteeSize: 0,
365
361
  l1ContractsArgs: this.deployL1ContractsArgs,
366
362
  },
@@ -372,8 +368,13 @@ export class P2PNetworkTest {
372
368
  const sponsoredFPCAddress = await getSponsoredFPCAddress();
373
369
  const initialFundedAccounts = [...this.context.initialFundedAccounts.map(a => a.address), sponsoredFPCAddress];
374
370
 
375
- const { prefilledPublicData } = await getGenesisValues(initialFundedAccounts);
376
- this.prefilledPublicData = prefilledPublicData;
371
+ const { genesis } = await getGenesisValues(
372
+ initialFundedAccounts,
373
+ undefined,
374
+ undefined,
375
+ this.context.genesis!.genesisTimestamp,
376
+ );
377
+ this.genesis = genesis;
377
378
 
378
379
  const rollupContract = RollupContract.getFromL1ContractsValues(this.context.deployL1ContractsValues);
379
380
  this.monitor = new ChainMonitor(rollupContract, this.context.dateProvider).start();
@@ -468,8 +469,7 @@ export class P2PNetworkTest {
468
469
  async getContracts(): Promise<{
469
470
  rollup: RollupContract;
470
471
  slasherContract: GetContractReturnType<typeof SlasherAbi, ViemClient>;
471
- slashingProposer: EmpireSlashingProposerContract | TallySlashingProposerContract | undefined;
472
- slashFactory: SlashFactoryContract;
472
+ slashingProposer: SlashingProposerContract | undefined;
473
473
  }> {
474
474
  if (!this.ctx.deployL1ContractsValues) {
475
475
  throw new Error('DeployAztecL1ContractsValues not set');
@@ -486,14 +486,9 @@ export class P2PNetworkTest {
486
486
  client: this.ctx.deployL1ContractsValues.l1Client,
487
487
  });
488
488
 
489
- // Get the actual slashing proposer from rollup (which handles both empire and tally)
489
+ // Get the actual slashing proposer from rollup
490
490
  const slashingProposer = await rollup.getSlashingProposer();
491
491
 
492
- const slashFactory = new SlashFactoryContract(
493
- this.ctx.deployL1ContractsValues.l1Client,
494
- getAddress(this.ctx.deployL1ContractsValues.l1ContractAddresses.slashFactoryAddress!.toString()),
495
- );
496
-
497
- return { rollup, slasherContract, slashingProposer, slashFactory };
492
+ return { rollup, slasherContract, slashingProposer };
498
493
  }
499
494
  }
@@ -91,7 +91,7 @@ export async function runReqrespTxTest(params: {
91
91
  t.bootstrapNodeEnr,
92
92
  NUM_VALIDATORS,
93
93
  BOOT_NODE_UDP_PORT,
94
- t.prefilledPublicData,
94
+ t.genesis,
95
95
  dataDir,
96
96
  shouldCollectMetrics(),
97
97
  );
@@ -7,11 +7,7 @@ import type { Logger } from '@aztec/aztec.js/log';
7
7
  import { TxHash } from '@aztec/aztec.js/tx';
8
8
  import type { RollupCheatCodes } from '@aztec/aztec/testing';
9
9
  import type { EpochCacheInterface } from '@aztec/epoch-cache';
10
- import type {
11
- EmpireSlashingProposerContract,
12
- RollupContract,
13
- TallySlashingProposerContract,
14
- } from '@aztec/ethereum/contracts';
10
+ import type { RollupContract, SlashingProposerContract } from '@aztec/ethereum/contracts';
15
11
  import { EpochNumber, SlotNumber } from '@aztec/foundation/branded-types';
16
12
  import { timesAsync, unique } from '@aztec/foundation/collection';
17
13
  import { EthAddress } from '@aztec/foundation/eth-address';
@@ -22,7 +18,6 @@ import { TestContract, TestContractArtifact } from '@aztec/noir-test-contracts.j
22
18
  import { getPXEConfig, getPXEConfig as getRpcConfig } from '@aztec/pxe/server';
23
19
  import { getRoundForOffense } from '@aztec/slasher';
24
20
  import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
25
- import type { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
26
21
 
27
22
  import { submitTxsTo } from '../shared/submit-transactions.js';
28
23
  import { TestWallet } from '../test-wallet/test_wallet.js';
@@ -99,7 +94,7 @@ export async function prepareTransactions(
99
94
  }
100
95
 
101
96
  export function awaitProposalExecution(
102
- slashingProposer: EmpireSlashingProposerContract | TallySlashingProposerContract,
97
+ slashingProposer: SlashingProposerContract,
103
98
  timeoutSeconds: number,
104
99
  logger: Logger,
105
100
  ): Promise<bigint> {
@@ -109,24 +104,12 @@ export function awaitProposalExecution(
109
104
  reject(new Error(`Timeout waiting for proposal execution after ${timeoutSeconds}s`));
110
105
  }, timeoutSeconds * 1000);
111
106
 
112
- if (slashingProposer.type === 'empire') {
113
- const unwatch = slashingProposer.listenToPayloadSubmitted(args => {
114
- logger.warn(`Proposal ${args.payload} from round ${args.round} executed`);
115
- clearTimeout(timeout);
116
- unwatch();
117
- resolve(args.round);
118
- });
119
- } else if (slashingProposer.type === 'tally') {
120
- const unwatch = slashingProposer.listenToRoundExecuted(args => {
121
- logger.warn(`Slash from round ${args.round} executed`);
122
- clearTimeout(timeout);
123
- unwatch();
124
- resolve(args.round);
125
- });
126
- } else {
107
+ const unwatch = slashingProposer.listenToRoundExecuted(args => {
108
+ logger.warn(`Slash from round ${args.round} executed`);
127
109
  clearTimeout(timeout);
128
- reject(new Error(`Unknown slashing proposer type: ${(slashingProposer as any).type}`));
129
- }
110
+ unwatch();
111
+ resolve(args.round);
112
+ });
130
113
  });
131
114
  }
132
115
 
@@ -245,7 +228,6 @@ export async function awaitCommitteeKicked({
245
228
  rollup,
246
229
  cheatCodes,
247
230
  committee,
248
- slashFactory,
249
231
  slashingProposer,
250
232
  slashingRoundSize,
251
233
  aztecSlotDuration,
@@ -256,8 +238,7 @@ export async function awaitCommitteeKicked({
256
238
  rollup: RollupContract;
257
239
  cheatCodes: RollupCheatCodes;
258
240
  committee: readonly `0x${string}`[];
259
- slashFactory: SlashFactoryContract;
260
- slashingProposer: EmpireSlashingProposerContract | TallySlashingProposerContract | undefined;
241
+ slashingProposer: SlashingProposerContract | undefined;
261
242
  slashingRoundSize: number;
262
243
  aztecSlotDuration: number;
263
244
  aztecEpochDuration: number;
@@ -270,36 +251,14 @@ export async function awaitCommitteeKicked({
270
251
 
271
252
  await cheatCodes.debugRollup();
272
253
 
273
- if (slashingProposer.type === 'empire') {
274
- // Await for the slash payload to be created if empire (no payload is created on tally until execution time)
275
- const targetEpoch = EpochNumber((await cheatCodes.getEpoch()) + (await rollup.getLagInEpochsForValidatorSet()) + 1);
276
- logger.info(`Advancing to epoch ${targetEpoch} so we start slashing`);
277
- await cheatCodes.advanceToEpoch(targetEpoch);
278
-
279
- const slashPayloadEvents = await retryUntil(
280
- async () => {
281
- const events = await slashFactory.getSlashPayloadCreatedEvents();
282
- return events.length > 0 ? events : undefined;
283
- },
284
- 'slash payload created',
285
- 120,
286
- 1,
287
- );
288
- expect(slashPayloadEvents.length).toBe(1);
289
- // The uniqueness check is needed since a validator may be slashed more than once on the same round (eg because they let two epochs be pruned)
290
- expect(unique(slashPayloadEvents[0].slashes.map(slash => slash.validator.toString()))).toHaveLength(
291
- committee.length,
292
- );
293
- } else {
294
- // Use the slash offset to ensure we are in the right epoch for tally
295
- const slashOffsetInRounds = await slashingProposer.getSlashOffsetInRounds();
296
- const slashingRoundSizeInEpochs = slashingRoundSize / aztecEpochDuration;
297
- const slashingOffsetInEpochs = Number(slashOffsetInRounds) * slashingRoundSizeInEpochs;
298
- const firstEpochInOffenseRound = offenseEpoch - (offenseEpoch % slashingRoundSizeInEpochs);
299
- const targetEpoch = firstEpochInOffenseRound + slashingOffsetInEpochs;
300
- logger.info(`Advancing to epoch ${targetEpoch} so we start slashing`);
301
- await cheatCodes.advanceToEpoch(EpochNumber(targetEpoch), { offset: -aztecSlotDuration / 2 });
302
- }
254
+ // Use the slash offset to ensure we are in the right epoch for tally
255
+ const slashOffsetInRounds = await slashingProposer.getSlashOffsetInRounds();
256
+ const slashingRoundSizeInEpochs = slashingRoundSize / aztecEpochDuration;
257
+ const slashingOffsetInEpochs = Number(slashOffsetInRounds) * slashingRoundSizeInEpochs;
258
+ const firstEpochInOffenseRound = offenseEpoch - (offenseEpoch % slashingRoundSizeInEpochs);
259
+ const targetEpoch = firstEpochInOffenseRound + slashingOffsetInEpochs;
260
+ logger.info(`Advancing to epoch ${targetEpoch} so we start slashing`);
261
+ await cheatCodes.advanceToEpoch(EpochNumber(targetEpoch), { offset: -aztecSlotDuration / 2 });
303
262
 
304
263
  const attestersPre = await rollup.getAttesters();
305
264
  expect(attestersPre.length).toBe(committee.length);
@@ -17,6 +17,10 @@ async function buildProxyCall(proxy: GenericProxyContract, action: ContractFunct
17
17
  return proxy.methods.forward_private_3(call.to, call.selector, call.args);
18
18
  } else if (argCount === 4) {
19
19
  return proxy.methods.forward_private_4(call.to, call.selector, call.args);
20
+ } else if (argCount === 5) {
21
+ return proxy.methods.forward_private_5(call.to, call.selector, call.args);
22
+ } else if (argCount === 6) {
23
+ return proxy.methods.forward_private_6(call.to, call.selector, call.args);
20
24
  }
21
25
  throw new Error(`No forward_private_${argCount} method on proxy`);
22
26
  }
@@ -104,15 +104,13 @@ export class FullProverTest {
104
104
  await publicDeployAccounts(this.wallet, this.accounts.slice(0, 2));
105
105
 
106
106
  this.logger.info('Applying base setup: deploying token contract');
107
- const {
108
- receipt: { contract: asset, instance },
109
- } = await TokenContract.deploy(
107
+ const { contract: asset, instance } = await TokenContract.deploy(
110
108
  this.wallet,
111
109
  this.accounts[0],
112
110
  FullProverTest.TOKEN_NAME,
113
111
  FullProverTest.TOKEN_SYMBOL,
114
112
  FullProverTest.TOKEN_DECIMALS,
115
- ).send({ from: this.accounts[0], wait: { returnReceipt: true } });
113
+ ).send({ from: this.accounts[0] });
116
114
  this.logger.verbose(`Token deployed to ${asset.address}`);
117
115
 
118
116
  this.fakeProofsAsset = asset;
@@ -225,8 +223,11 @@ export class FullProverTest {
225
223
 
226
224
  this.logger.verbose('Starting prover node');
227
225
  const sponsoredFPCAddress = await getSponsoredFPCAddress();
228
- const { prefilledPublicData } = await getGenesisValues(
226
+ const { genesis } = await getGenesisValues(
229
227
  this.context.initialFundedAccounts.map(a => a.address).concat(sponsoredFPCAddress),
228
+ undefined,
229
+ undefined,
230
+ this.context.genesis!.genesisTimestamp,
230
231
  );
231
232
 
232
233
  const proverNodeConfig: Parameters<typeof AztecNodeService.createAndSync>[0] = {
@@ -254,7 +255,7 @@ export class FullProverTest {
254
255
  this.proverAztecNode = await AztecNodeService.createAndSync(
255
256
  proverNodeConfig,
256
257
  { dateProvider: this.context.dateProvider, p2pClientDeps: { rpcTxProviders: [this.aztecNode] } },
257
- { prefilledPublicData },
258
+ { genesis },
258
259
  );
259
260
  this.logger.warn(`Proofs are now enabled`, { realProofs: this.realProofs });
260
261
  return this;