@aztec/end-to-end 0.0.1-commit.5914bae → 0.0.1-commit.59a0419c6

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 (110) hide show
  1. package/dest/bench/client_flows/client_flows_benchmark.d.ts +1 -1
  2. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  3. package/dest/bench/client_flows/client_flows_benchmark.js +13 -27
  4. package/dest/e2e_epochs/epochs_test.d.ts +16 -1
  5. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  6. package/dest/e2e_epochs/epochs_test.js +56 -8
  7. package/dest/e2e_fees/fees_test.d.ts +1 -1
  8. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  9. package/dest/e2e_fees/fees_test.js +2 -2
  10. package/dest/e2e_p2p/inactivity_slash_test.d.ts +1 -1
  11. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
  12. package/dest/e2e_p2p/inactivity_slash_test.js +2 -3
  13. package/dest/e2e_p2p/p2p_network.d.ts +11 -10
  14. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  15. package/dest/e2e_p2p/p2p_network.js +47 -28
  16. package/dest/e2e_p2p/reqresp/utils.d.ts +1 -1
  17. package/dest/e2e_p2p/reqresp/utils.d.ts.map +1 -1
  18. package/dest/e2e_p2p/reqresp/utils.js +16 -3
  19. package/dest/e2e_p2p/shared.d.ts +5 -19
  20. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  21. package/dest/e2e_p2p/shared.js +36 -70
  22. package/dest/fixtures/e2e_prover_test.d.ts +4 -3
  23. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  24. package/dest/fixtures/e2e_prover_test.js +7 -12
  25. package/dest/fixtures/elu_monitor.d.ts +21 -0
  26. package/dest/fixtures/elu_monitor.d.ts.map +1 -0
  27. package/dest/fixtures/elu_monitor.js +102 -0
  28. package/dest/fixtures/fixtures.d.ts +12 -1
  29. package/dest/fixtures/fixtures.d.ts.map +1 -1
  30. package/dest/fixtures/fixtures.js +10 -0
  31. package/dest/fixtures/get_bb_config.d.ts +1 -1
  32. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  33. package/dest/fixtures/get_bb_config.js +5 -5
  34. package/dest/fixtures/ha_setup.d.ts +2 -2
  35. package/dest/fixtures/ha_setup.d.ts.map +1 -1
  36. package/dest/fixtures/ha_setup.js +1 -1
  37. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts +25 -0
  38. package/dest/fixtures/schnorr_hardcoded_account_contract.d.ts.map +1 -0
  39. package/dest/fixtures/schnorr_hardcoded_account_contract.js +39 -0
  40. package/dest/fixtures/setup.d.ts +17 -9
  41. package/dest/fixtures/setup.d.ts.map +1 -1
  42. package/dest/fixtures/setup.js +28 -12
  43. package/dest/fixtures/setup_p2p_test.d.ts +6 -6
  44. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  45. package/dest/fixtures/setup_p2p_test.js +8 -8
  46. package/dest/fixtures/token_utils.d.ts +1 -1
  47. package/dest/fixtures/token_utils.d.ts.map +1 -1
  48. package/dest/fixtures/token_utils.js +2 -5
  49. package/dest/shared/gas_portal_test_harness.js +1 -1
  50. package/dest/shared/jest_setup.js +41 -1
  51. package/dest/shared/submit-transactions.d.ts +1 -1
  52. package/dest/shared/submit-transactions.d.ts.map +1 -1
  53. package/dest/shared/uniswap_l1_l2.d.ts +1 -1
  54. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  55. package/dest/shared/uniswap_l1_l2.js +0 -4
  56. package/dest/simulators/token_simulator.js +1 -1
  57. package/dest/spartan/setup_test_wallets.d.ts +1 -1
  58. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  59. package/dest/spartan/setup_test_wallets.js +58 -40
  60. package/dest/spartan/tx_metrics.d.ts +1 -1
  61. package/dest/spartan/tx_metrics.d.ts.map +1 -1
  62. package/dest/spartan/tx_metrics.js +16 -2
  63. package/dest/spartan/utils/config.d.ts +7 -1
  64. package/dest/spartan/utils/config.d.ts.map +1 -1
  65. package/dest/spartan/utils/config.js +3 -1
  66. package/dest/spartan/utils/index.d.ts +2 -1
  67. package/dest/spartan/utils/index.d.ts.map +1 -1
  68. package/dest/spartan/utils/index.js +2 -0
  69. package/dest/spartan/utils/nodes.d.ts +4 -5
  70. package/dest/spartan/utils/nodes.d.ts.map +1 -1
  71. package/dest/spartan/utils/nodes.js +9 -9
  72. package/dest/spartan/utils/pod_logs.d.ts +25 -0
  73. package/dest/spartan/utils/pod_logs.d.ts.map +1 -0
  74. package/dest/spartan/utils/pod_logs.js +74 -0
  75. package/dest/test-wallet/test_wallet.d.ts +1 -1
  76. package/dest/test-wallet/test_wallet.d.ts.map +1 -1
  77. package/dest/test-wallet/test_wallet.js +10 -4
  78. package/dest/test-wallet/worker_wallet_schema.d.ts +6 -1
  79. package/dest/test-wallet/worker_wallet_schema.d.ts.map +1 -1
  80. package/package.json +42 -44
  81. package/src/bench/client_flows/client_flows_benchmark.ts +31 -22
  82. package/src/e2e_epochs/epochs_test.ts +56 -7
  83. package/src/e2e_fees/fees_test.ts +4 -2
  84. package/src/e2e_p2p/inactivity_slash_test.ts +2 -3
  85. package/src/e2e_p2p/p2p_network.ts +58 -40
  86. package/src/e2e_p2p/reqresp/utils.ts +24 -3
  87. package/src/e2e_p2p/shared.ts +33 -103
  88. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  89. package/src/fixtures/e2e_prover_test.ts +12 -17
  90. package/src/fixtures/elu_monitor.ts +126 -0
  91. package/src/fixtures/fixtures.ts +22 -0
  92. package/src/fixtures/get_bb_config.ts +7 -6
  93. package/src/fixtures/ha_setup.ts +4 -2
  94. package/src/fixtures/schnorr_hardcoded_account_contract.ts +49 -0
  95. package/src/fixtures/setup.ts +43 -16
  96. package/src/fixtures/setup_p2p_test.ts +9 -9
  97. package/src/fixtures/token_utils.ts +1 -4
  98. package/src/guides/up_quick_start.sh +0 -2
  99. package/src/shared/gas_portal_test_harness.ts +0 -1
  100. package/src/shared/jest_setup.ts +51 -1
  101. package/src/shared/submit-transactions.ts +1 -4
  102. package/src/shared/uniswap_l1_l2.ts +0 -4
  103. package/src/simulators/token_simulator.ts +1 -1
  104. package/src/spartan/setup_test_wallets.ts +59 -36
  105. package/src/spartan/tx_metrics.ts +14 -2
  106. package/src/spartan/utils/config.ts +2 -0
  107. package/src/spartan/utils/index.ts +3 -0
  108. package/src/spartan/utils/nodes.ts +15 -10
  109. package/src/spartan/utils/pod_logs.ts +99 -0
  110. package/src/test-wallet/test_wallet.ts +9 -3
@@ -1,3 +1,5 @@
1
+ import { generateSchnorrAccounts } from '@aztec/accounts/testing';
2
+ import { getAccountContractAddress } from '@aztec/aztec.js/account';
1
3
  import { EthAddress } from '@aztec/aztec.js/addresses';
2
4
  import { Fr } from '@aztec/aztec.js/fields';
3
5
  import { getL1ContractsConfigEnvVars } from '@aztec/ethereum/config';
@@ -14,14 +16,14 @@ import { RollupAbi, SlasherAbi, TestERC20Abi } from '@aztec/l1-artifacts';
14
16
  import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
15
17
  import { createBootstrapNodeFromPrivateKey, getBootstrapNodeEnr } from '@aztec/p2p/test-helpers';
16
18
  import { tryStop } from '@aztec/stdlib/interfaces/server';
17
- import { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
18
19
  import { TopicType } from '@aztec/stdlib/p2p';
19
20
  import { ZkPassportProofParams } from '@aztec/stdlib/zkpassport';
20
21
  import { getGenesisValues } from '@aztec/world-state/testing';
21
22
  import getPort from 'get-port';
22
23
  import { getAddress, getContract } from 'viem';
23
24
  import { privateKeyToAccount } from 'viem/accounts';
24
- import { deployAccounts, getPrivateKeyFromIndex, getSponsoredFPCAddress, setup, teardown } from '../fixtures/setup.js';
25
+ import { SCHNORR_HARDCODED_PRIVATE_KEY, SchnorrHardcodedKeyAccountContract } from '../fixtures/schnorr_hardcoded_account_contract.js';
26
+ import { getPrivateKeyFromIndex, getSponsoredFPCAddress, setup, teardown } from '../fixtures/setup.js';
25
27
  import { ATTESTER_PRIVATE_KEYS_START_INDEX, createValidatorConfig, generatePrivateKeys } from '../fixtures/setup_p2p_test.js';
26
28
  import { getEndToEndTestTelemetryClient } from '../fixtures/with_telemetry_utils.js';
27
29
  // Use a fixed bootstrap node private key so that we can re-use the same snapshot and the nodes can find each other
@@ -31,7 +33,7 @@ export const WAIT_FOR_TX_TIMEOUT = l1ContractsConfig.aztecSlotDuration * 3;
31
33
  export const SHORTENED_BLOCK_TIME_CONFIG_NO_PRUNES = {
32
34
  aztecSlotDuration: 12,
33
35
  ethereumSlotDuration: 4,
34
- aztecProofSubmissionWindow: 640
36
+ aztecProofSubmissionEpochs: 640
35
37
  };
36
38
  export class P2PNetworkTest {
37
39
  testName;
@@ -50,8 +52,8 @@ export class P2PNetworkTest {
50
52
  attesterPublicKeys;
51
53
  peerIdPrivateKeys;
52
54
  validators;
53
- deployedAccounts;
54
- prefilledPublicData;
55
+ hardcodedAccountData;
56
+ genesis;
55
57
  // The re-execution test needs a wallet and a spam contract
56
58
  wallet;
57
59
  defaultAccountAddress;
@@ -72,8 +74,6 @@ export class P2PNetworkTest {
72
74
  this.attesterPublicKeys = [];
73
75
  this.peerIdPrivateKeys = [];
74
76
  this.validators = [];
75
- this.deployedAccounts = [];
76
- this.prefilledPublicData = [];
77
77
  this.logger = createLogger(`e2e:e2e_p2p:${testName}`);
78
78
  // Set up the base account and node private keys for the initial network deployment
79
79
  this.baseAccountPrivateKey = `0x${getPrivateKeyFromIndex(1).toString('hex')}`;
@@ -89,18 +89,17 @@ export class P2PNetworkTest {
89
89
  aztecSlotDuration: initialValidatorConfig.aztecSlotDuration ?? l1ContractsConfig.aztecSlotDuration,
90
90
  aztecProofSubmissionEpochs: initialValidatorConfig.aztecProofSubmissionEpochs ?? l1ContractsConfig.aztecProofSubmissionEpochs,
91
91
  slashingRoundSizeInEpochs: initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
92
- slasherFlavor: initialValidatorConfig.slasherFlavor ?? 'tally',
92
+ slasherEnabled: initialValidatorConfig.slasherEnabled ?? true,
93
93
  aztecTargetCommitteeSize: numberOfValidators,
94
94
  metricsPort: metricsPort,
95
95
  numberOfInitialFundedAccounts: 2,
96
- startProverNode,
97
- walletMinFeePadding: 2.0
96
+ startProverNode
98
97
  };
99
98
  this.deployL1ContractsArgs = {
100
99
  ...initialValidatorConfig,
101
100
  aztecEpochDuration: initialValidatorConfig.aztecEpochDuration ?? l1ContractsConfig.aztecEpochDuration,
102
101
  slashingRoundSizeInEpochs: initialValidatorConfig.slashingRoundSizeInEpochs ?? l1ContractsConfig.slashingRoundSizeInEpochs,
103
- slasherFlavor: initialValidatorConfig.slasherFlavor ?? 'tally',
102
+ slasherEnabled: initialValidatorConfig.slasherEnabled ?? true,
104
103
  ethereumSlotDuration: initialValidatorConfig.ethereumSlotDuration ?? l1ContractsConfig.ethereumSlotDuration,
105
104
  aztecSlotDuration: initialValidatorConfig.aztecSlotDuration ?? l1ContractsConfig.aztecSlotDuration,
106
105
  aztecProofSubmissionEpochs: initialValidatorConfig.aztecProofSubmissionEpochs ?? l1ContractsConfig.aztecProofSubmissionEpochs,
@@ -120,10 +119,10 @@ export class P2PNetworkTest {
120
119
  return new P2PNetworkTest(testName, bootstrapNodeEnr, port, numberOfValidators, initialValidatorConfig, numberOfNodes, metricsPort, startProverNode);
121
120
  }
122
121
  get fundedAccount() {
123
- if (!this.deployedAccounts[0]) {
124
- throw new Error('Call setupAccount to create a funded account.');
122
+ if (!this.hardcodedAccountData) {
123
+ throw new Error('Call setup to initialize the hardcoded account.');
125
124
  }
126
- return this.deployedAccounts[0];
125
+ return this.hardcodedAccountData;
127
126
  }
128
127
  async addBootstrapNode() {
129
128
  this.logger.info('Adding bootstrap node');
@@ -205,14 +204,19 @@ export class P2PNetworkTest {
205
204
  // Send and await a tx to make sure we mine a block for the warp to correctly progress.
206
205
  await this._sendDummyTx(this.context.deployL1ContractsValues.l1Client);
207
206
  }
208
- async setupAccount() {
209
- this.logger.info('Setting up account');
210
- const { deployedAccounts } = await deployAccounts(1, this.logger)({
211
- wallet: this.context.wallet,
212
- initialFundedAccounts: this.context.initialFundedAccounts
207
+ /** Points the wallet to a P2P-enabled node so transactions can propagate through the network. */ setupWalletOnNode(node) {
208
+ this.logger.info('Pointing wallet to a P2P-enabled node');
209
+ this.context.wallet.updateNode(node);
210
+ }
211
+ /** Registers the hardcoded account in PXE without on-chain deployment. No sequencer needed. */ async setupAccount() {
212
+ this.logger.info('Registering hardcoded account (no deployment)');
213
+ const contract = new SchnorrHardcodedKeyAccountContract();
214
+ const accountManager = await this.context.wallet.createAccount({
215
+ secret: this.hardcodedAccountData.secret,
216
+ salt: this.hardcodedAccountData.salt,
217
+ contract
213
218
  });
214
- this.deployedAccounts = deployedAccounts;
215
- [{ address: this.defaultAccountAddress }] = deployedAccounts;
219
+ this.defaultAccountAddress = accountManager.address;
216
220
  this.wallet = this.context.wallet;
217
221
  }
218
222
  async deploySpamContract() {
@@ -246,11 +250,28 @@ export class P2PNetworkTest {
246
250
  }
247
251
  async setup() {
248
252
  this.logger.info('Setting up subsystems from fresh');
253
+ // Pre-compute hardcoded account data so it gets funded in genesis.
254
+ const contract = new SchnorrHardcodedKeyAccountContract();
255
+ const secret = Fr.random();
256
+ const salt = Fr.random();
257
+ this.hardcodedAccountData = {
258
+ secret,
259
+ salt,
260
+ signingKey: SCHNORR_HARDCODED_PRIVATE_KEY,
261
+ address: await getAccountContractAddress(contract, secret, salt)
262
+ };
263
+ // Generate regular Schnorr accounts for tests that need deployable accounts (e.g. add_rollup).
264
+ const regularAccounts = await generateSchnorrAccounts(this.setupOptions.numberOfInitialFundedAccounts ?? 2);
249
265
  this.context = await setup(0, {
250
266
  ...this.setupOptions,
251
267
  fundSponsoredFPC: true,
252
268
  skipAccountDeployment: true,
253
- slasherFlavor: this.setupOptions.slasherFlavor ?? this.deployL1ContractsArgs.slasherFlavor ?? 'none',
269
+ skipInitialSequencer: true,
270
+ initialFundedAccounts: [
271
+ ...regularAccounts,
272
+ this.hardcodedAccountData
273
+ ],
274
+ slasherEnabled: this.setupOptions.slasherEnabled ?? this.deployL1ContractsArgs.slasherEnabled ?? false,
254
275
  aztecTargetCommitteeSize: 0,
255
276
  l1ContractsArgs: this.deployL1ContractsArgs
256
277
  }, // Use checkpointed chain tip for PXE to avoid issues with blocks being dropped due to pruned anchor blocks.
@@ -263,8 +284,8 @@ export class P2PNetworkTest {
263
284
  ...this.context.initialFundedAccounts.map((a)=>a.address),
264
285
  sponsoredFPCAddress
265
286
  ];
266
- const { prefilledPublicData } = await getGenesisValues(initialFundedAccounts);
267
- this.prefilledPublicData = prefilledPublicData;
287
+ const { genesis } = await getGenesisValues(initialFundedAccounts, undefined, undefined, this.context.genesis.genesisTimestamp);
288
+ this.genesis = genesis;
268
289
  const rollupContract = RollupContract.getFromL1ContractsValues(this.context.deployL1ContractsValues);
269
290
  this.monitor = new ChainMonitor(rollupContract, this.context.dateProvider).start();
270
291
  this.monitor.on('l1-block', ({ timestamp })=>this.context.dateProvider.setTime(Number(timestamp) * 1000));
@@ -333,14 +354,12 @@ export class P2PNetworkTest {
333
354
  abi: SlasherAbi,
334
355
  client: this.ctx.deployL1ContractsValues.l1Client
335
356
  });
336
- // Get the actual slashing proposer from rollup (which handles both empire and tally)
357
+ // Get the actual slashing proposer from rollup
337
358
  const slashingProposer = await rollup.getSlashingProposer();
338
- const slashFactory = new SlashFactoryContract(this.ctx.deployL1ContractsValues.l1Client, getAddress(this.ctx.deployL1ContractsValues.l1ContractAddresses.slashFactoryAddress.toString()));
339
359
  return {
340
360
  rollup,
341
361
  slasherContract,
342
- slashingProposer,
343
- slashFactory
362
+ slashingProposer
344
363
  };
345
364
  }
346
365
  }
@@ -19,4 +19,4 @@ export declare function runReqrespTxTest(params: {
19
19
  disableStatusHandshake?: boolean;
20
20
  }): Promise<AztecNodeService[]>;
21
21
  export {};
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lMmVfcDJwL3JlcXJlc3AvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQWdCMUQsT0FBTyxFQUFFLGNBQWMsRUFBdUIsTUFBTSxtQkFBbUIsQ0FBQztBQUl4RSxlQUFPLE1BQU0sY0FBYyxJQUFJLENBQUM7QUFDaEMsZUFBTyxNQUFNLGdCQUFnQixJQUFJLENBQUM7QUFDbEMsZUFBTyxNQUFNLGtCQUFrQixRQUF1QixDQUFDO0FBRXZELGVBQU8sTUFBTSxvQkFBb0IsY0FBMkQsQ0FBQztBQUU3RixLQUFLLGNBQWMsR0FBRztJQUNwQixzQkFBc0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQztDQUNsQyxDQUFDO0FBRUYsd0JBQXNCLGlCQUFpQixDQUFDLE9BQU8sR0FBRSxjQUFtQixHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0EwQjdGO0FBRUQsd0JBQXNCLGtCQUFrQixDQUFDLE1BQU0sRUFBRTtJQUFFLENBQUMsRUFBRSxjQUFjLENBQUM7SUFBQyxLQUFLLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO0lBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQTtDQUFFLGlCQVNsSDtBQUlELHdCQUFzQixnQkFBZ0IsQ0FBQyxNQUFNLEVBQUU7SUFDN0MsQ0FBQyxFQUFFLGNBQWMsQ0FBQztJQUNsQixPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQ2hCLHNCQUFzQixDQUFDLEVBQUUsT0FBTyxDQUFDO0NBQ2xDLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0E4SDlCIn0=
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lMmVfcDJwL3JlcXJlc3AvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQWdCMUQsT0FBTyxFQUFFLGNBQWMsRUFBdUIsTUFBTSxtQkFBbUIsQ0FBQztBQUl4RSxlQUFPLE1BQU0sY0FBYyxJQUFJLENBQUM7QUFDaEMsZUFBTyxNQUFNLGdCQUFnQixJQUFJLENBQUM7QUFDbEMsZUFBTyxNQUFNLGtCQUFrQixRQUF1QixDQUFDO0FBRXZELGVBQU8sTUFBTSxvQkFBb0IsY0FBMkQsQ0FBQztBQUU3RixLQUFLLGNBQWMsR0FBRztJQUNwQixzQkFBc0IsQ0FBQyxFQUFFLE9BQU8sQ0FBQztDQUNsQyxDQUFDO0FBRUYsd0JBQXNCLGlCQUFpQixDQUFDLE9BQU8sR0FBRSxjQUFtQixHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0EwQjdGO0FBRUQsd0JBQXNCLGtCQUFrQixDQUFDLE1BQU0sRUFBRTtJQUFFLENBQUMsRUFBRSxjQUFjLENBQUM7SUFBQyxLQUFLLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO0lBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQTtDQUFFLGlCQVNsSDtBQUlELHdCQUFzQixnQkFBZ0IsQ0FBQyxNQUFNLEVBQUU7SUFDN0MsQ0FBQyxFQUFFLGNBQWMsQ0FBQztJQUNsQixPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQ2hCLHNCQUFzQixDQUFDLEVBQUUsT0FBTyxDQUFDO0NBQ2xDLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FtSjlCIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/e2e_p2p/reqresp/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAgB1D,OAAO,EAAE,cAAc,EAAuB,MAAM,mBAAmB,CAAC;AAIxE,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,kBAAkB,QAAuB,CAAC;AAEvD,eAAO,MAAM,oBAAoB,cAA2D,CAAC;AAE7F,KAAK,cAAc,GAAG;IACpB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CA0B7F;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE;IAAE,CAAC,EAAE,cAAc,CAAC;IAAC,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,iBASlH;AAID,wBAAsB,gBAAgB,CAAC,MAAM,EAAE;IAC7C,CAAC,EAAE,cAAc,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA8H9B"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/e2e_p2p/reqresp/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAgB1D,OAAO,EAAE,cAAc,EAAuB,MAAM,mBAAmB,CAAC;AAIxE,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,kBAAkB,QAAuB,CAAC;AAEvD,eAAO,MAAM,oBAAoB,cAA2D,CAAC;AAE7F,KAAK,cAAc,GAAG;IACpB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CA0B7F;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE;IAAE,CAAC,EAAE,cAAc,CAAC;IAAC,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,iBASlH;AAID,wBAAsB,gBAAgB,CAAC,MAAM,EAAE;IAC7C,CAAC,EAAE,cAAc,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAmJ9B"}
@@ -72,7 +72,7 @@ export async function runReqrespTxTest(params) {
72
72
  ...t.ctx.aztecNodeConfig,
73
73
  p2pDisableStatusHandshake: true
74
74
  } : t.ctx.aztecNodeConfig;
75
- const nodes = await createNodes(aztecNodeConfig, t.ctx.dateProvider, t.bootstrapNodeEnr, NUM_VALIDATORS, BOOT_NODE_UDP_PORT, t.prefilledPublicData, dataDir, shouldCollectMetrics());
75
+ const nodes = await createNodes(aztecNodeConfig, t.ctx.dateProvider, t.bootstrapNodeEnr, NUM_VALIDATORS, BOOT_NODE_UDP_PORT, t.genesis, dataDir, shouldCollectMetrics());
76
76
  t.logger.info('Waiting for nodes to connect');
77
77
  await t.waitForP2PMeshConnectivity(nodes, NUM_VALIDATORS);
78
78
  await t.setupAccount();
@@ -108,6 +108,11 @@ export async function runReqrespTxTest(params) {
108
108
  t.logger.info('Sending transactions through proposer nodes');
109
109
  const submittedTxs = await Promise.all(txBatches.map(async (batch, batchIndex)=>{
110
110
  const proposerNode = nodes[proposerIndexes[batchIndex]];
111
+ for (const tx of batch){
112
+ t.logger.info(`Tx ${tx.getTxHash().toString()} base64: ${tx.toBuffer().toString('base64')}`);
113
+ }
114
+ const txHashes = batch.map((tx)=>tx.getTxHash().toString());
115
+ t.logger.info(`Sending batch ${batchIndex} to proposer ${getNodePort(proposerIndexes[batchIndex])}: ${txHashes.join(', ')}`);
111
116
  await Promise.all(batch.map(async (tx)=>{
112
117
  try {
113
118
  await proposerNode.sendTx(tx);
@@ -121,6 +126,11 @@ export async function runReqrespTxTest(params) {
121
126
  txHash: tx.getTxHash()
122
127
  }));
123
128
  }));
129
+ // Log pool state per node after sending
130
+ for(let i = 0; i < NUM_VALIDATORS; i++){
131
+ const count = await nodes[i].getPendingTxCount();
132
+ t.logger.info(`Node ${getNodePort(i)} pool has ${count} pending txs`);
133
+ }
124
134
  t.logger.info('Waiting for all transactions to be mined');
125
135
  await Promise.all(submittedTxs.flatMap((batch, batchIndex)=>batch.map(async (submittedTx, txIndex)=>{
126
136
  t.logger.info(`Waiting for tx ${batchIndex}-${txIndex} ${submittedTx.txHash.toString()} to be mined`);
@@ -132,8 +142,11 @@ export async function runReqrespTxTest(params) {
132
142
  t.logger.info('All transactions mined');
133
143
  // Assert that multiple blocks were built for at least one slot
134
144
  t.logger.info('Verifying multiple blocks for at least one checkpoint');
135
- const checkpoints = await nodes[0].getCheckpoints(CheckpointNumber(1), 50);
136
- expect(checkpoints.length).toBeGreaterThan(0);
145
+ // Wait for L1 checkpoint sync, which may lag behind P2P block propagation.
146
+ const checkpoints = await retryUntil(async ()=>{
147
+ const cps = await nodes[0].getCheckpoints(CheckpointNumber(1), 50);
148
+ return cps.length > 0 && cps.some((cp)=>cp.checkpoint.blocks.length >= 2) ? cps : undefined;
149
+ }, 'waiting for multi-block checkpoint to sync from L1', 30, 1);
137
150
  let mbpsFound = false;
138
151
  let expectedBlockNumber = checkpoints[0].checkpoint.blocks[0].number;
139
152
  for (const published of checkpoints){
@@ -5,19 +5,18 @@ import type { Logger } from '@aztec/aztec.js/log';
5
5
  import { TxHash } from '@aztec/aztec.js/tx';
6
6
  import type { RollupCheatCodes } from '@aztec/aztec/testing';
7
7
  import type { EpochCacheInterface } from '@aztec/epoch-cache';
8
- import type { EmpireSlashingProposerContract, RollupContract, TallySlashingProposerContract } from '@aztec/ethereum/contracts';
8
+ import type { RollupContract, SlashingProposerContract } from '@aztec/ethereum/contracts';
9
9
  import { EpochNumber } from '@aztec/foundation/branded-types';
10
10
  import { EthAddress } from '@aztec/foundation/eth-address';
11
11
  import type { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
12
12
  import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
13
- import type { SlashFactoryContract } from '@aztec/stdlib/l1-contracts';
14
13
  import { type ProvenTx } from '../test-wallet/utils.js';
15
14
  export declare const submitComplexTxsTo: (logger: Logger, from: AztecAddress, spamContract: SpamContract, numTxs: number, opts?: {
16
15
  callPublic?: boolean | undefined;
17
16
  }) => Promise<TxHash[]>;
18
17
  export declare const submitTransactions: (logger: Logger, node: AztecNodeService, numTxs: number, fundedAccount: InitialAccountData) => Promise<TxHash[]>;
19
18
  export declare function prepareTransactions(logger: Logger, node: AztecNodeService, numTxs: number, fundedAccount: InitialAccountData): Promise<ProvenTx[]>;
20
- export declare function awaitProposalExecution(slashingProposer: EmpireSlashingProposerContract | TallySlashingProposerContract, timeoutSeconds: number, logger: Logger): Promise<bigint>;
19
+ export declare function awaitProposalExecution(slashingProposer: SlashingProposerContract, timeoutSeconds: number, logger: Logger): Promise<bigint>;
21
20
  export declare function awaitCommitteeExists({ rollup, logger }: {
22
21
  rollup: RollupContract;
23
22
  logger: Logger;
@@ -39,18 +38,6 @@ export declare function advanceToEpochBeforeProposer({ epochCache, cheatCodes, t
39
38
  }): Promise<{
40
39
  targetEpoch: EpochNumber;
41
40
  }>;
42
- /**
43
- * Advance epochs until we find one where the target proposer is selected for at least one slot.
44
- * With N validators and M slots per epoch, a specific proposer may not be selected in any given epoch.
45
- * For example, with 4 validators and 2 slots/epoch, there is about a 44% chance per epoch.
46
- */
47
- export declare function awaitEpochWithProposer({ epochCache, cheatCodes, targetProposer, logger, maxAttempts }: {
48
- epochCache: EpochCacheInterface;
49
- cheatCodes: RollupCheatCodes;
50
- targetProposer: EthAddress;
51
- logger: Logger;
52
- maxAttempts?: number;
53
- }): Promise<void>;
54
41
  export declare function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSize, epochDuration, waitUntilOffenseCount, timeoutSeconds }: {
55
42
  nodeAdmin: AztecNodeAdmin;
56
43
  logger: Logger;
@@ -63,16 +50,15 @@ export declare function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundS
63
50
  * Await the committee to be slashed out of the validator set.
64
51
  * Currently assumes that the committee is the same size as the validator set.
65
52
  */
66
- export declare function awaitCommitteeKicked({ rollup, cheatCodes, committee, slashFactory, slashingProposer, slashingRoundSize, aztecSlotDuration, aztecEpochDuration, logger, offenseEpoch }: {
53
+ export declare function awaitCommitteeKicked({ rollup, cheatCodes, committee, slashingProposer, slashingRoundSize, aztecSlotDuration, aztecEpochDuration, logger, offenseEpoch }: {
67
54
  rollup: RollupContract;
68
55
  cheatCodes: RollupCheatCodes;
69
56
  committee: readonly `0x${string}`[];
70
- slashFactory: SlashFactoryContract;
71
- slashingProposer: EmpireSlashingProposerContract | TallySlashingProposerContract | undefined;
57
+ slashingProposer: SlashingProposerContract | undefined;
72
58
  slashingRoundSize: number;
73
59
  aztecSlotDuration: number;
74
60
  aztecEpochDuration: number;
75
61
  logger: Logger;
76
62
  offenseEpoch: number;
77
63
  }): Promise<void>;
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZTJlX3AycC9zaGFyZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd6RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUNWLDhCQUE4QixFQUM5QixjQUFjLEVBQ2QsNkJBQTZCLEVBQzlCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLFdBQVcsRUFBYyxNQUFNLGlDQUFpQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUczRCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUl2RSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN0RSxPQUFPLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSXZFLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBb0IsTUFBTSx5QkFBeUIsQ0FBQztBQUcxRSxlQUFPLE1BQU0sa0JBQWtCOzt1QkFrQjlCLENBQUM7QUFHRixlQUFPLE1BQU0sa0JBQWtCLGtIQWU5QixDQUFDO0FBRUYsd0JBQXNCLG1CQUFtQixDQUN2QyxN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
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZTJlX3AycC9zaGFyZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd6RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxXQUFXLEVBQWMsTUFBTSxpQ0FBaUMsQ0FBQztBQUUxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHM0QsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFJdkUsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFLdEUsT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFvQixNQUFNLHlCQUF5QixDQUFDO0FBRzFFLGVBQU8sTUFBTSxrQkFBa0I7O3VCQWtCOUIsQ0FBQztBQUdGLGVBQU8sTUFBTSxrQkFBa0Isa0hBc0I5QixDQUFDO0FBRUYsd0JBQXNCLG1CQUFtQixDQUN2QyxNQUFNLEVBQUUsTUFBTSxFQUNkLElBQUksRUFBRSxnQkFBZ0IsRUFDdEIsTUFBTSxFQUFFLE1BQU0sRUFDZCxhQUFhLEVBQUUsa0JBQWtCLEdBQ2hDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQTZCckI7QUFFRCx3QkFBZ0Isc0JBQXNCLENBQ3BDLGdCQUFnQixFQUFFLHdCQUF3QixFQUMxQyxjQUFjLEVBQUUsTUFBTSxFQUN0QixNQUFNLEVBQUUsTUFBTSxHQUNiLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FjakI7QUFFRCx3QkFBc0Isb0JBQW9CLENBQUMsRUFDekMsTUFBTSxFQUNOLE1BQU0sRUFDUCxFQUFFO0lBQ0QsTUFBTSxFQUFFLGNBQWMsQ0FBQztJQUN2QixNQUFNLEVBQUUsTUFBTSxDQUFDO0NBQ2hCLEdBQUcsT0FBTyxDQUFDLFNBQVMsS0FBSyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBYXBDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILHdCQUFzQiw0QkFBNEIsQ0FBQyxFQUNqRCxVQUFVLEVBQ1YsVUFBVSxFQUNWLGNBQWMsRUFDZCxNQUFNLEVBQ04sV0FBZ0IsRUFDakIsRUFBRTtJQUNELFVBQVUsRUFBRSxtQkFBbUIsQ0FBQztJQUNoQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUM7SUFDN0IsY0FBYyxFQUFFLFVBQVUsQ0FBQztJQUMzQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsV0FBVyxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ3RCLEdBQUcsT0FBTyxDQUFDO0lBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQTtDQUFFLENBQUMsQ0E4QnhDO0FBRUQsd0JBQXNCLG9CQUFvQixDQUFDLEVBQ3pDLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixxQkFBcUIsRUFDckIsY0FBb0IsRUFDckIsRUFBRTtJQUNELFNBQVMsRUFBRSxjQUFjLENBQUM7SUFDMUIsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLGlCQUFpQixFQUFFLE1BQU0sQ0FBQztJQUMxQixhQUFhLEVBQUUsTUFBTSxDQUFDO0lBQ3RCLHFCQUFxQixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQy9CLGNBQWMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUN6QiwrQ0FrQkE7QUFFRDs7O0dBR0c7QUFDSCx3QkFBc0Isb0JBQW9CLENBQUMsRUFDekMsTUFBTSxFQUNOLFVBQVUsRUFDVixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLE1BQU0sRUFDTixZQUFZLEVBQ2IsRUFBRTtJQUNELE1BQU0sRUFBRSxjQUFjLENBQUM7SUFDdkIsVUFBVSxFQUFFLGdCQUFnQixDQUFDO0lBQzdCLFNBQVMsRUFBRSxTQUFTLEtBQUssTUFBTSxFQUFFLEVBQUUsQ0FBQztJQUNwQyxnQkFBZ0IsRUFBRSx3QkFBd0IsR0FBRyxTQUFTLENBQUM7SUFDdkQsaUJBQWlCLEVBQUUsTUFBTSxDQUFDO0lBQzFCLGlCQUFpQixFQUFFLE1BQU0sQ0FBQztJQUMxQixrQkFBa0IsRUFBRSxNQUFNLENBQUM7SUFDM0IsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLFlBQVksRUFBRSxNQUFNLENBQUM7Q0FDdEIsaUJBdURBIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/e2e_p2p/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAc,MAAM,iCAAiC,CAAC;AAE1E,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAIvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAKtE,OAAO,EAAE,KAAK,QAAQ,EAAoB,MAAM,yBAAyB,CAAC;AAG1E,eAAO,MAAM,kBAAkB;;uBAkB9B,CAAC;AAGF,eAAO,MAAM,kBAAkB,kHAsB9B,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,kBAAkB,GAChC,OAAO,CAAC,QAAQ,EAAE,CAAC,CA6BrB;AAED,wBAAgB,sBAAsB,CACpC,gBAAgB,EAAE,wBAAwB,EAC1C,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAcjB;AAED,wBAAsB,oBAAoB,CAAC,EACzC,MAAM,EACN,MAAM,EACP,EAAE;IACD,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,SAAS,KAAK,MAAM,EAAE,EAAE,CAAC,CAapC;AAED;;;;;;;GAOG;AACH,wBAAsB,4BAA4B,CAAC,EACjD,UAAU,EACV,UAAU,EACV,cAAc,EACd,MAAM,EACN,WAAgB,EACjB,EAAE;IACD,UAAU,EAAE,mBAAmB,CAAC;IAChC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,cAAc,EAAE,UAAU,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC;IAAE,WAAW,EAAE,WAAW,CAAA;CAAE,CAAC,CA8BxC;AAED,wBAAsB,oBAAoB,CAAC,EACzC,MAAM,EACN,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,cAAoB,EACrB,EAAE;IACD,SAAS,EAAE,cAAc,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,+CAkBA;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,EACzC,MAAM,EACN,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,EACN,YAAY,EACb,EAAE;IACD,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,SAAS,EAAE,SAAS,KAAK,MAAM,EAAE,EAAE,CAAC;IACpC,gBAAgB,EAAE,wBAAwB,GAAG,SAAS,CAAC;IACvD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB,iBAuDA"}
@@ -7,6 +7,7 @@ import { pluralize } from '@aztec/foundation/string';
7
7
  import { TestContract, TestContractArtifact } from '@aztec/noir-test-contracts.js/Test';
8
8
  import { getPXEConfig, getPXEConfig as getRpcConfig } from '@aztec/pxe/server';
9
9
  import { getRoundForOffense } from '@aztec/slasher';
10
+ import { SchnorrHardcodedKeyAccountContract } from '../fixtures/schnorr_hardcoded_account_contract.js';
10
11
  import { submitTxsTo } from '../shared/submit-transactions.js';
11
12
  import { TestWallet } from '../test-wallet/test_wallet.js';
12
13
  import { proveInteraction } from '../test-wallet/utils.js';
@@ -30,13 +31,21 @@ export const submitComplexTxsTo = async (logger, from, spamContract, numTxs, opt
30
31
  export const submitTransactions = async (logger, node, numTxs, fundedAccount)=>{
31
32
  const rpcConfig = getRpcConfig();
32
33
  rpcConfig.proverEnabled = false;
33
- const wallet = await TestWallet.create(node, {
34
+ const wallet = await TestWallet.create(node, // Use checkpointed chain tip to avoid anchoring on provisional blocks that the archiver can prune
35
+ // when their slot ends without a checkpoint landing on L1.
36
+ {
34
37
  ...getPXEConfig(),
35
- proverEnabled: false
38
+ proverEnabled: false,
39
+ syncChainTip: 'checkpointed'
36
40
  }, {
37
41
  loggerActorLabel: 'pxe-tx'
38
42
  });
39
- const fundedAccountManager = await wallet.createSchnorrAccount(fundedAccount.secret, fundedAccount.salt);
43
+ const contract = new SchnorrHardcodedKeyAccountContract();
44
+ const fundedAccountManager = await wallet.createAccount({
45
+ secret: fundedAccount.secret,
46
+ salt: fundedAccount.salt,
47
+ contract
48
+ });
40
49
  return submitTxsTo(wallet, fundedAccountManager.address, numTxs, logger);
41
50
  };
42
51
  export async function prepareTransactions(logger, node, numTxs, fundedAccount) {
@@ -44,11 +53,17 @@ export async function prepareTransactions(logger, node, numTxs, fundedAccount) {
44
53
  rpcConfig.proverEnabled = false;
45
54
  const wallet = await TestWallet.create(node, {
46
55
  ...getPXEConfig(),
47
- proverEnabled: false
56
+ proverEnabled: false,
57
+ syncChainTip: 'checkpointed'
48
58
  }, {
49
59
  loggerActorLabel: 'pxe-tx'
50
60
  });
51
- const fundedAccountManager = await wallet.createSchnorrAccount(fundedAccount.secret, fundedAccount.salt);
61
+ const accountContract = new SchnorrHardcodedKeyAccountContract();
62
+ const fundedAccountManager = await wallet.createAccount({
63
+ secret: fundedAccount.secret,
64
+ salt: fundedAccount.salt,
65
+ contract: accountContract
66
+ });
52
67
  const testContractInstance = await getContractInstanceFromInstantiationParams(TestContractArtifact, {
53
68
  salt: Fr.random()
54
69
  });
@@ -68,24 +83,12 @@ export function awaitProposalExecution(slashingProposer, timeoutSeconds, logger)
68
83
  logger.warn(`Timed out waiting for proposal execution`);
69
84
  reject(new Error(`Timeout waiting for proposal execution after ${timeoutSeconds}s`));
70
85
  }, timeoutSeconds * 1000);
71
- if (slashingProposer.type === 'empire') {
72
- const unwatch = slashingProposer.listenToPayloadSubmitted((args)=>{
73
- logger.warn(`Proposal ${args.payload} from round ${args.round} executed`);
74
- clearTimeout(timeout);
75
- unwatch();
76
- resolve(args.round);
77
- });
78
- } else if (slashingProposer.type === 'tally') {
79
- const unwatch = slashingProposer.listenToRoundExecuted((args)=>{
80
- logger.warn(`Slash from round ${args.round} executed`);
81
- clearTimeout(timeout);
82
- unwatch();
83
- resolve(args.round);
84
- });
85
- } else {
86
+ const unwatch = slashingProposer.listenToRoundExecuted((args)=>{
87
+ logger.warn(`Slash from round ${args.round} executed`);
86
88
  clearTimeout(timeout);
87
- reject(new Error(`Unknown slashing proposer type: ${slashingProposer.type}`));
88
- }
89
+ unwatch();
90
+ resolve(args.round);
91
+ });
89
92
  });
90
93
  }
91
94
  export async function awaitCommitteeExists({ rollup, logger }) {
@@ -131,29 +134,6 @@ export async function awaitCommitteeExists({ rollup, logger }) {
131
134
  }
132
135
  throw new Error(`Target proposer ${targetProposer} not found in any slot after ${maxAttempts} epoch attempts`);
133
136
  }
134
- /**
135
- * Advance epochs until we find one where the target proposer is selected for at least one slot.
136
- * With N validators and M slots per epoch, a specific proposer may not be selected in any given epoch.
137
- * For example, with 4 validators and 2 slots/epoch, there is about a 44% chance per epoch.
138
- */ export async function awaitEpochWithProposer({ epochCache, cheatCodes, targetProposer, logger, maxAttempts = 20 }) {
139
- const { epochDuration } = await cheatCodes.getConfig();
140
- for(let attempt = 0; attempt < maxAttempts; attempt++){
141
- const currentEpoch = await cheatCodes.getEpoch();
142
- const startSlot = Number(currentEpoch) * Number(epochDuration);
143
- const endSlot = startSlot + Number(epochDuration);
144
- logger.info(`Checking epoch ${currentEpoch} (slots ${startSlot}-${endSlot - 1}) for proposer ${targetProposer}`);
145
- for(let s = startSlot; s < endSlot; s++){
146
- const proposer = await epochCache.getProposerAttesterAddressInSlot(SlotNumber(s));
147
- if (proposer && proposer.equals(targetProposer)) {
148
- logger.warn(`Found target proposer ${targetProposer} in slot ${s} of epoch ${currentEpoch}`);
149
- return;
150
- }
151
- }
152
- logger.info(`Target proposer not found in epoch ${currentEpoch}, advancing to next epoch`);
153
- await cheatCodes.advanceToNextEpoch();
154
- }
155
- throw new Error(`Target proposer ${targetProposer} not found in any slot after ${maxAttempts} epoch attempts`);
156
- }
157
137
  export async function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSize, epochDuration, waitUntilOffenseCount, timeoutSeconds = 120 }) {
158
138
  const targetOffenseCount = waitUntilOffenseCount ?? 1;
159
139
  logger.warn(`Waiting for ${pluralize('offense', targetOffenseCount)} to be detected`);
@@ -174,35 +154,21 @@ export async function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSiz
174
154
  /**
175
155
  * Await the committee to be slashed out of the validator set.
176
156
  * Currently assumes that the committee is the same size as the validator set.
177
- */ export async function awaitCommitteeKicked({ rollup, cheatCodes, committee, slashFactory, slashingProposer, slashingRoundSize, aztecSlotDuration, aztecEpochDuration, logger, offenseEpoch }) {
157
+ */ export async function awaitCommitteeKicked({ rollup, cheatCodes, committee, slashingProposer, slashingRoundSize, aztecSlotDuration, aztecEpochDuration, logger, offenseEpoch }) {
178
158
  if (!slashingProposer) {
179
159
  throw new Error('No slashing proposer configured. Cannot test slashing.');
180
160
  }
181
161
  await cheatCodes.debugRollup();
182
- if (slashingProposer.type === 'empire') {
183
- // Await for the slash payload to be created if empire (no payload is created on tally until execution time)
184
- const targetEpoch = EpochNumber(await cheatCodes.getEpoch() + await rollup.getLagInEpochsForValidatorSet() + 1);
185
- logger.info(`Advancing to epoch ${targetEpoch} so we start slashing`);
186
- await cheatCodes.advanceToEpoch(targetEpoch);
187
- const slashPayloadEvents = await retryUntil(async ()=>{
188
- const events = await slashFactory.getSlashPayloadCreatedEvents();
189
- return events.length > 0 ? events : undefined;
190
- }, 'slash payload created', 120, 1);
191
- expect(slashPayloadEvents.length).toBe(1);
192
- // 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)
193
- expect(unique(slashPayloadEvents[0].slashes.map((slash)=>slash.validator.toString()))).toHaveLength(committee.length);
194
- } else {
195
- // Use the slash offset to ensure we are in the right epoch for tally
196
- const slashOffsetInRounds = await slashingProposer.getSlashOffsetInRounds();
197
- const slashingRoundSizeInEpochs = slashingRoundSize / aztecEpochDuration;
198
- const slashingOffsetInEpochs = Number(slashOffsetInRounds) * slashingRoundSizeInEpochs;
199
- const firstEpochInOffenseRound = offenseEpoch - offenseEpoch % slashingRoundSizeInEpochs;
200
- const targetEpoch = firstEpochInOffenseRound + slashingOffsetInEpochs;
201
- logger.info(`Advancing to epoch ${targetEpoch} so we start slashing`);
202
- await cheatCodes.advanceToEpoch(EpochNumber(targetEpoch), {
203
- offset: -aztecSlotDuration / 2
204
- });
205
- }
162
+ // Use the slash offset to ensure we are in the right epoch for tally
163
+ const slashOffsetInRounds = await slashingProposer.getSlashOffsetInRounds();
164
+ const slashingRoundSizeInEpochs = slashingRoundSize / aztecEpochDuration;
165
+ const slashingOffsetInEpochs = Number(slashOffsetInRounds) * slashingRoundSizeInEpochs;
166
+ const firstEpochInOffenseRound = offenseEpoch - offenseEpoch % slashingRoundSizeInEpochs;
167
+ const targetEpoch = firstEpochInOffenseRound + slashingOffsetInEpochs;
168
+ logger.info(`Advancing to epoch ${targetEpoch} so we start slashing`);
169
+ await cheatCodes.advanceToEpoch(EpochNumber(targetEpoch), {
170
+ offset: -aztecSlotDuration / 2
171
+ });
206
172
  const attestersPre = await rollup.getAttesters();
207
173
  expect(attestersPre.length).toBe(committee.length);
208
174
  for (const attester of attestersPre){
@@ -3,7 +3,7 @@ import { AztecAddress, EthAddress } from '@aztec/aztec.js/addresses';
3
3
  import { type Logger } from '@aztec/aztec.js/log';
4
4
  import type { AztecNode } from '@aztec/aztec.js/node';
5
5
  import { CheatCodes } from '@aztec/aztec/testing';
6
- import { type ClientProtocolCircuitVerifier } from '@aztec/bb-prover';
6
+ import type { ClientProtocolCircuitVerifier } from '@aztec/bb-prover';
7
7
  import type { DeployAztecL1ContractsReturnType } from '@aztec/ethereum/deploy-aztec-l1-contracts';
8
8
  import { TokenContract } from '@aztec/noir-contracts.js/Token';
9
9
  import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
@@ -35,7 +35,8 @@ export declare class FullProverTest {
35
35
  private provenComponents;
36
36
  private bbConfigCleanup?;
37
37
  private acvmConfigCleanup?;
38
- circuitProofVerifier?: ClientProtocolCircuitVerifier;
38
+ /** Returns the proof verifier from the prover node (for test assertions). */
39
+ get circuitProofVerifier(): ClientProtocolCircuitVerifier | undefined;
39
40
  provenAsset: TokenContract;
40
41
  context: EndToEndContext;
41
42
  private proverAztecNode;
@@ -52,4 +53,4 @@ export declare class FullProverTest {
52
53
  teardown(): Promise<void>;
53
54
  private applyMint;
54
55
  }
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZTJlX3Byb3Zlcl90ZXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZml4dHVyZXMvZTJlX3Byb3Zlcl90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFFTCxLQUFLLDZCQUE2QixFQUduQyxNQUFNLGtCQUFrQixDQUFDO0FBRTFCLE9BQU8sS0FBSyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFJbEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sS0FBSyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUUsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFNdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUczRCxPQUFPLEVBQ0wsS0FBSyxlQUFlLEVBUXJCLE1BQU0sWUFBWSxDQUFDO0FBT3BCOzs7OztHQUtHO0FBRUgscUJBQWEsY0FBYztJQUN6QixNQUFNLENBQUMsVUFBVSxTQUFVO0lBQzNCLE1BQU0sQ0FBQyxZQUFZLFNBQVM7SUFDNUIsTUFBTSxDQUFDLGNBQWMsU0FBTztJQUM1QixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsTUFBTSxFQUFHLFVBQVUsQ0FBQztJQUNwQixZQUFZLEVBQUcsVUFBVSxDQUFDO0lBQzFCLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBTTtJQUM5QixnQkFBZ0IsRUFBRyxrQkFBa0IsRUFBRSxDQUFDO0lBQ3hDLGVBQWUsRUFBRyxhQUFhLENBQUM7SUFDaEMsdUJBQXVCLEVBQUcsMkJBQTJCLENBQUM7SUFDdEQsUUFBUSxFQUFHLGNBQWMsQ0FBQztJQUMxQixTQUFTLEVBQUcsU0FBUyxDQUFDO0lBQ3RCLGNBQWMsRUFBRyxjQUFjLENBQUM7SUFDaEMsVUFBVSxFQUFHLFVBQVUsQ0FBQztJQUN4QixPQUFPLENBQUMsZ0JBQWdCLENBQXFCO0lBQzdDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBc0I7SUFDOUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQXNCO0lBQ2hELG9CQUFvQixDQUFDLEVBQUUsNkJBQTZCLENBQUM7SUFDckQsV0FBVyxFQUFHLGFBQWEsQ0FBQztJQUM1QixPQUFPLEVBQUcsZUFBZSxDQUFDO0lBQzFCLE9BQU8sQ0FBQyxlQUFlLENBQW9CO0lBQzNDLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBb0I7SUFDN0MsV0FBVyxFQUFHLGdDQUFnQyxDQUFDO0lBQy9DLGFBQWEsRUFBRyxVQUFVLENBQUM7SUFDbEMsT0FBTyxDQUFDLHNCQUFzQixDQUFTO0lBQ3ZDLE9BQU8sQ0FBQyxRQUFRLENBQWE7SUFDN0IsT0FBTyxDQUFDLFVBQVUsQ0FBVTtJQUU1QixZQUFZLFFBQVEsRUFBRSxNQUFNLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxVQUFPLEVBS3BHO1lBS2EsY0FBYztJQXVDdEIsS0FBSyxrQkF3SVY7WUFFYSxZQUFZO0lBU3BCLFFBQVEsa0JBY2I7WUFFYSxTQUFTO0NBc0N4QiJ9
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZTJlX3Byb3Zlcl90ZXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZml4dHVyZXMvZTJlX3Byb3Zlcl90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFdEUsT0FBTyxLQUFLLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUlsRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxLQUFLLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQU10RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRzNELE9BQU8sRUFDTCxLQUFLLGVBQWUsRUFRckIsTUFBTSxZQUFZLENBQUM7QUFPcEI7Ozs7O0dBS0c7QUFFSCxxQkFBYSxjQUFjO0lBQ3pCLE1BQU0sQ0FBQyxVQUFVLFNBQVU7SUFDM0IsTUFBTSxDQUFDLFlBQVksU0FBUztJQUM1QixNQUFNLENBQUMsY0FBYyxTQUFPO0lBQzVCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDZixNQUFNLEVBQUcsVUFBVSxDQUFDO0lBQ3BCLFlBQVksRUFBRyxVQUFVLENBQUM7SUFDMUIsUUFBUSxFQUFFLFlBQVksRUFBRSxDQUFNO0lBQzlCLGdCQUFnQixFQUFHLGtCQUFrQixFQUFFLENBQUM7SUFDeEMsZUFBZSxFQUFHLGFBQWEsQ0FBQztJQUNoQyx1QkFBdUIsRUFBRywyQkFBMkIsQ0FBQztJQUN0RCxRQUFRLEVBQUcsY0FBYyxDQUFDO0lBQzFCLFNBQVMsRUFBRyxTQUFTLENBQUM7SUFDdEIsY0FBYyxFQUFHLGNBQWMsQ0FBQztJQUNoQyxVQUFVLEVBQUcsVUFBVSxDQUFDO0lBQ3hCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBcUI7SUFDN0MsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFzQjtJQUM5QyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBc0I7SUFDaEQsNkVBQTZFO0lBQzdFLElBQUksb0JBQW9CLElBQUksNkJBQTZCLEdBQUcsU0FBUyxDQUVwRTtJQUNELFdBQVcsRUFBRyxhQUFhLENBQUM7SUFDNUIsT0FBTyxFQUFHLGVBQWUsQ0FBQztJQUMxQixPQUFPLENBQUMsZUFBZSxDQUFvQjtJQUMzQyxPQUFPLENBQUMsd0JBQXdCLENBQW9CO0lBQzdDLFdBQVcsRUFBRyxnQ0FBZ0MsQ0FBQztJQUMvQyxhQUFhLEVBQUcsVUFBVSxDQUFDO0lBQ2xDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBUztJQUN2QyxPQUFPLENBQUMsUUFBUSxDQUFhO0lBQzdCLE9BQU8sQ0FBQyxVQUFVLENBQVU7SUFFNUIsWUFBWSxRQUFRLEVBQUUsTUFBTSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsVUFBTyxFQUtwRztZQUthLGNBQWM7SUFxQ3RCLEtBQUssa0JBdUlWO1lBRWEsWUFBWTtJQVNwQixRQUFRLGtCQWNiO1lBRWEsU0FBUztDQXNDeEIifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"e2e_prover_test.d.ts","sourceRoot":"","sources":["../../src/fixtures/e2e_prover_test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAEL,KAAK,6BAA6B,EAGnC,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,2CAA2C,CAAC;AAIlG,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAMtE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EACL,KAAK,eAAe,EAQrB,MAAM,YAAY,CAAC;AAOpB;;;;;GAKG;AAEH,qBAAa,cAAc;IACzB,MAAM,CAAC,UAAU,SAAU;IAC3B,MAAM,CAAC,YAAY,SAAS;IAC5B,MAAM,CAAC,cAAc,SAAO;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAG,UAAU,CAAC;IACpB,YAAY,EAAG,UAAU,CAAC;IAC1B,QAAQ,EAAE,YAAY,EAAE,CAAM;IAC9B,gBAAgB,EAAG,kBAAkB,EAAE,CAAC;IACxC,eAAe,EAAG,aAAa,CAAC;IAChC,uBAAuB,EAAG,2BAA2B,CAAC;IACtD,QAAQ,EAAG,cAAc,CAAC;IAC1B,SAAS,EAAG,SAAS,CAAC;IACtB,cAAc,EAAG,cAAc,CAAC;IAChC,UAAU,EAAG,UAAU,CAAC;IACxB,OAAO,CAAC,gBAAgB,CAAqB;IAC7C,OAAO,CAAC,eAAe,CAAC,CAAsB;IAC9C,OAAO,CAAC,iBAAiB,CAAC,CAAsB;IAChD,oBAAoB,CAAC,EAAE,6BAA6B,CAAC;IACrD,WAAW,EAAG,aAAa,CAAC;IAC5B,OAAO,EAAG,eAAe,CAAC;IAC1B,OAAO,CAAC,eAAe,CAAoB;IAC3C,OAAO,CAAC,wBAAwB,CAAoB;IAC7C,WAAW,EAAG,gCAAgC,CAAC;IAC/C,aAAa,EAAG,UAAU,CAAC;IAClC,OAAO,CAAC,sBAAsB,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,UAAU,CAAU;IAE5B,YAAY,QAAQ,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,UAAO,EAKpG;YAKa,cAAc;IAuCtB,KAAK,kBAwIV;YAEa,YAAY;IASpB,QAAQ,kBAcb;YAEa,SAAS;CAsCxB"}
1
+ {"version":3,"file":"e2e_prover_test.d.ts","sourceRoot":"","sources":["../../src/fixtures/e2e_prover_test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,2CAA2C,CAAC;AAIlG,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAMtE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,EACL,KAAK,eAAe,EAQrB,MAAM,YAAY,CAAC;AAOpB;;;;;GAKG;AAEH,qBAAa,cAAc;IACzB,MAAM,CAAC,UAAU,SAAU;IAC3B,MAAM,CAAC,YAAY,SAAS;IAC5B,MAAM,CAAC,cAAc,SAAO;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAG,UAAU,CAAC;IACpB,YAAY,EAAG,UAAU,CAAC;IAC1B,QAAQ,EAAE,YAAY,EAAE,CAAM;IAC9B,gBAAgB,EAAG,kBAAkB,EAAE,CAAC;IACxC,eAAe,EAAG,aAAa,CAAC;IAChC,uBAAuB,EAAG,2BAA2B,CAAC;IACtD,QAAQ,EAAG,cAAc,CAAC;IAC1B,SAAS,EAAG,SAAS,CAAC;IACtB,cAAc,EAAG,cAAc,CAAC;IAChC,UAAU,EAAG,UAAU,CAAC;IACxB,OAAO,CAAC,gBAAgB,CAAqB;IAC7C,OAAO,CAAC,eAAe,CAAC,CAAsB;IAC9C,OAAO,CAAC,iBAAiB,CAAC,CAAsB;IAChD,6EAA6E;IAC7E,IAAI,oBAAoB,IAAI,6BAA6B,GAAG,SAAS,CAEpE;IACD,WAAW,EAAG,aAAa,CAAC;IAC5B,OAAO,EAAG,eAAe,CAAC;IAC1B,OAAO,CAAC,eAAe,CAAoB;IAC3C,OAAO,CAAC,wBAAwB,CAAoB;IAC7C,WAAW,EAAG,gCAAgC,CAAC;IAC/C,aAAa,EAAG,UAAU,CAAC;IAClC,OAAO,CAAC,sBAAsB,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,UAAU,CAAU;IAE5B,YAAY,QAAQ,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,UAAO,EAKpG;YAKa,cAAc;IAqCtB,KAAK,kBAuIV;YAEa,YAAY;IASpB,QAAQ,kBAcb;YAEa,SAAS;CAsCxB"}
@@ -1,7 +1,6 @@
1
1
  import { AztecNodeService } from '@aztec/aztec-node';
2
2
  import { EthAddress } from '@aztec/aztec.js/addresses';
3
3
  import { createLogger } from '@aztec/aztec.js/log';
4
- import { BBCircuitVerifier, QueuedIVCVerifier, TestCircuitVerifier } from '@aztec/bb-prover';
5
4
  import { BackendType, Barretenberg } from '@aztec/bb.js';
6
5
  import { Buffer32 } from '@aztec/foundation/buffer';
7
6
  import { SecretValue } from '@aztec/foundation/config';
@@ -37,7 +36,9 @@ import { deployAccounts, getPrivateKeyFromIndex, getSponsoredFPCAddress, publicD
37
36
  provenComponents = [];
38
37
  bbConfigCleanup;
39
38
  acvmConfigCleanup;
40
- circuitProofVerifier;
39
+ /** Returns the proof verifier from the prover node (for test assertions). */ get circuitProofVerifier() {
40
+ return this.proverAztecNode?.getProofVerifier();
41
+ }
41
42
  provenAsset;
42
43
  context;
43
44
  proverAztecNode;
@@ -67,11 +68,8 @@ import { deployAccounts, getPrivateKeyFromIndex, getSponsoredFPCAddress, publicD
67
68
  this.logger.info('Applying base setup: publicly deploying accounts');
68
69
  await publicDeployAccounts(this.wallet, this.accounts.slice(0, 2));
69
70
  this.logger.info('Applying base setup: deploying token contract');
70
- const { receipt: { contract: asset, instance } } = await TokenContract.deploy(this.wallet, this.accounts[0], FullProverTest.TOKEN_NAME, FullProverTest.TOKEN_SYMBOL, FullProverTest.TOKEN_DECIMALS).send({
71
- from: this.accounts[0],
72
- wait: {
73
- returnReceipt: true
74
- }
71
+ const { contract: asset, instance } = await TokenContract.deploy(this.wallet, this.accounts[0], FullProverTest.TOKEN_NAME, FullProverTest.TOKEN_SYMBOL, FullProverTest.TOKEN_DECIMALS).send({
72
+ from: this.accounts[0]
75
73
  });
76
74
  this.logger.verbose(`Token deployed to ${asset.address}`);
77
75
  this.fakeProofsAsset = asset;
@@ -120,8 +118,6 @@ import { deployAccounts, getPrivateKeyFromIndex, getSponsoredFPCAddress, publicD
120
118
  await Barretenberg.initSingleton({
121
119
  backend: BackendType.NativeUnixSocket
122
120
  });
123
- const verifier = await BBCircuitVerifier.new(bbConfig);
124
- this.circuitProofVerifier = new QueuedIVCVerifier(bbConfig, verifier);
125
121
  this.logger.debug(`Configuring the node for real proofs...`);
126
122
  await this.aztecNodeAdmin.setConfig({
127
123
  realProofs: true,
@@ -129,7 +125,6 @@ import { deployAccounts, getPrivateKeyFromIndex, getSponsoredFPCAddress, publicD
129
125
  });
130
126
  } else {
131
127
  this.logger.debug(`Configuring the node min txs per block ${this.minNumberOfTxsPerBlock}...`);
132
- this.circuitProofVerifier = new TestCircuitVerifier();
133
128
  await this.aztecNodeAdmin.setConfig({
134
129
  minTxsPerBlock: this.minNumberOfTxsPerBlock
135
130
  });
@@ -168,7 +163,7 @@ import { deployAccounts, getPrivateKeyFromIndex, getSponsoredFPCAddress, publicD
168
163
  await this.mintFeeJuice(proverNodeSenderAddress);
169
164
  this.logger.verbose('Starting prover node');
170
165
  const sponsoredFPCAddress = await getSponsoredFPCAddress();
171
- const { prefilledPublicData } = await getGenesisValues(this.context.initialFundedAccounts.map((a)=>a.address).concat(sponsoredFPCAddress));
166
+ const { genesis } = await getGenesisValues(this.context.initialFundedAccounts.map((a)=>a.address).concat(sponsoredFPCAddress), undefined, undefined, this.context.genesis.genesisTimestamp);
172
167
  const proverNodeConfig = {
173
168
  ...config,
174
169
  enableProverNode: true,
@@ -200,7 +195,7 @@ import { deployAccounts, getPrivateKeyFromIndex, getSponsoredFPCAddress, publicD
200
195
  ]
201
196
  }
202
197
  }, {
203
- prefilledPublicData
198
+ genesis
204
199
  });
205
200
  this.logger.warn(`Proofs are now enabled`, {
206
201
  realProofs: this.realProofs
@@ -0,0 +1,21 @@
1
+ /** Samples event-loop utilization, delay histogram, and heap usage per test, writing columnar text to a file. */
2
+ export declare class EluMonitor {
3
+ private filePath;
4
+ private intervalMs;
5
+ private timer;
6
+ private lastELU;
7
+ private histogram;
8
+ private testName;
9
+ private testStart;
10
+ private eluSamples;
11
+ constructor(filePath: string, intervalMs?: number);
12
+ /** Begin sampling for a test. Writes a header line and starts the periodic sampler. */
13
+ startTest(testName: string): void;
14
+ /** Stop sampling and write a summary line. */
15
+ stopTest(): void;
16
+ /** Alias for stopTest — call on process exit to flush any remaining data. */
17
+ stop(): void;
18
+ private sample;
19
+ private writeSummary;
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWx1X21vbml0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maXh0dXJlcy9lbHVfbW9uaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxpSEFBaUg7QUFDakgscUJBQWEsVUFBVTtJQUNyQixPQUFPLENBQUMsUUFBUSxDQUFTO0lBQ3pCLE9BQU8sQ0FBQyxVQUFVLENBQVM7SUFDM0IsT0FBTyxDQUFDLEtBQUssQ0FBNkM7SUFDMUQsT0FBTyxDQUFDLE9BQU8sQ0FBbUM7SUFDbEQsT0FBTyxDQUFDLFNBQVMsQ0FBb0I7SUFDckMsT0FBTyxDQUFDLFFBQVEsQ0FBcUI7SUFDckMsT0FBTyxDQUFDLFNBQVMsQ0FBcUI7SUFDdEMsT0FBTyxDQUFDLFVBQVUsQ0FBZ0I7SUFFbEMsWUFBWSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxFQUFFLE1BQU0sRUFJaEQ7SUFFRCx1RkFBdUY7SUFDdkYsU0FBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLEdBQUcsSUFBSSxDQW1CaEM7SUFFRCw4Q0FBOEM7SUFDOUMsUUFBUSxJQUFJLElBQUksQ0FtQmY7SUFFRCwrRUFBNkU7SUFDN0UsSUFBSSxJQUFJLElBQUksQ0FFWDtJQUVELE9BQU8sQ0FBQyxNQUFNO0lBOEJkLE9BQU8sQ0FBQyxZQUFZO0NBbUJyQiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elu_monitor.d.ts","sourceRoot":"","sources":["../../src/fixtures/elu_monitor.ts"],"names":[],"mappings":"AAKA,iHAAiH;AACjH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,KAAK,CAA6C;IAC1D,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,UAAU,CAAgB;IAElC,YAAY,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAIhD;IAED,uFAAuF;IACvF,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAmBhC;IAED,8CAA8C;IAC9C,QAAQ,IAAI,IAAI,CAmBf;IAED,+EAA6E;IAC7E,IAAI,IAAI,IAAI,CAEX;IAED,OAAO,CAAC,MAAM;IA8Bd,OAAO,CAAC,YAAY;CAmBrB"}