@aztec/end-to-end 3.0.0-canary.a9708bd → 3.0.0-devnet.20251212

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 (165) hide show
  1. package/dest/bench/client_flows/benchmark.d.ts +4 -3
  2. package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
  3. package/dest/bench/client_flows/benchmark.js +2 -2
  4. package/dest/bench/client_flows/client_flows_benchmark.d.ts +25 -14
  5. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  6. package/dest/bench/client_flows/client_flows_benchmark.js +111 -90
  7. package/dest/bench/client_flows/config.d.ts +1 -1
  8. package/dest/bench/client_flows/data_extractor.d.ts +1 -1
  9. package/dest/bench/client_flows/data_extractor.js +8 -30
  10. package/dest/bench/utils.d.ts +4 -13
  11. package/dest/bench/utils.d.ts.map +1 -1
  12. package/dest/bench/utils.js +10 -34
  13. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +8 -8
  14. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
  15. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +42 -42
  16. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +12 -9
  17. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
  18. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +35 -35
  19. package/dest/e2e_deploy_contract/deploy_test.d.ts +12 -6
  20. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
  21. package/dest/e2e_deploy_contract/deploy_test.js +9 -18
  22. package/dest/e2e_epochs/epochs_test.d.ts +19 -12
  23. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  24. package/dest/e2e_epochs/epochs_test.js +30 -22
  25. package/dest/e2e_fees/bridging_race.notest.d.ts +1 -1
  26. package/dest/e2e_fees/bridging_race.notest.js +14 -11
  27. package/dest/e2e_fees/fees_test.d.ts +10 -8
  28. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  29. package/dest/e2e_fees/fees_test.js +35 -38
  30. package/dest/e2e_l1_publisher/write_json.d.ts +4 -2
  31. package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
  32. package/dest/e2e_l1_publisher/write_json.js +9 -8
  33. package/dest/e2e_multi_validator/utils.d.ts +2 -2
  34. package/dest/e2e_multi_validator/utils.d.ts.map +1 -1
  35. package/dest/e2e_multi_validator/utils.js +4 -10
  36. package/dest/e2e_nested_contract/nested_contract_test.d.ts +7 -4
  37. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
  38. package/dest/e2e_nested_contract/nested_contract_test.js +11 -12
  39. package/dest/e2e_p2p/inactivity_slash_test.d.ts +31 -0
  40. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -0
  41. package/dest/e2e_p2p/inactivity_slash_test.js +139 -0
  42. package/dest/e2e_p2p/p2p_network.d.ts +238 -17
  43. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  44. package/dest/e2e_p2p/p2p_network.js +46 -19
  45. package/dest/e2e_p2p/shared.d.ts +16 -17
  46. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  47. package/dest/e2e_p2p/shared.js +56 -55
  48. package/dest/e2e_token_contract/token_contract_test.d.ts +6 -5
  49. package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
  50. package/dest/e2e_token_contract/token_contract_test.js +14 -17
  51. package/dest/fixtures/e2e_prover_test.d.ts +12 -8
  52. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  53. package/dest/fixtures/e2e_prover_test.js +53 -58
  54. package/dest/fixtures/fixtures.d.ts +1 -1
  55. package/dest/fixtures/fixtures.d.ts.map +1 -1
  56. package/dest/fixtures/fixtures.js +1 -1
  57. package/dest/fixtures/get_acvm_config.d.ts +2 -2
  58. package/dest/fixtures/get_acvm_config.d.ts.map +1 -1
  59. package/dest/fixtures/get_acvm_config.js +1 -1
  60. package/dest/fixtures/get_bb_config.d.ts +2 -2
  61. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  62. package/dest/fixtures/get_bb_config.js +2 -2
  63. package/dest/fixtures/index.d.ts +1 -1
  64. package/dest/fixtures/l1_to_l2_messaging.d.ts +4 -3
  65. package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
  66. package/dest/fixtures/l1_to_l2_messaging.js +2 -2
  67. package/dest/fixtures/logging.d.ts +1 -1
  68. package/dest/fixtures/setup_l1_contracts.d.ts +476 -5
  69. package/dest/fixtures/setup_l1_contracts.d.ts.map +1 -1
  70. package/dest/fixtures/setup_l1_contracts.js +3 -3
  71. package/dest/fixtures/setup_p2p_test.d.ts +12 -11
  72. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  73. package/dest/fixtures/setup_p2p_test.js +50 -24
  74. package/dest/fixtures/snapshot_manager.d.ts +13 -10
  75. package/dest/fixtures/snapshot_manager.d.ts.map +1 -1
  76. package/dest/fixtures/snapshot_manager.js +66 -51
  77. package/dest/fixtures/token_utils.d.ts +10 -5
  78. package/dest/fixtures/token_utils.d.ts.map +1 -1
  79. package/dest/fixtures/token_utils.js +17 -18
  80. package/dest/fixtures/utils.d.ts +479 -35
  81. package/dest/fixtures/utils.d.ts.map +1 -1
  82. package/dest/fixtures/utils.js +106 -125
  83. package/dest/fixtures/web3signer.d.ts +5 -0
  84. package/dest/fixtures/web3signer.d.ts.map +1 -0
  85. package/dest/fixtures/web3signer.js +53 -0
  86. package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
  87. package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
  88. package/dest/fixtures/with_telemetry_utils.js +2 -2
  89. package/dest/index.d.ts +1 -1
  90. package/dest/quality_of_service/alert_checker.d.ts +2 -2
  91. package/dest/quality_of_service/alert_checker.d.ts.map +1 -1
  92. package/dest/shared/cross_chain_test_harness.d.ts +20 -23
  93. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  94. package/dest/shared/cross_chain_test_harness.js +14 -16
  95. package/dest/shared/gas_portal_test_harness.d.ts +10 -17
  96. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  97. package/dest/shared/gas_portal_test_harness.js +11 -8
  98. package/dest/shared/index.d.ts +1 -1
  99. package/dest/shared/jest_setup.d.ts +1 -1
  100. package/dest/shared/jest_setup.js +1 -1
  101. package/dest/shared/submit-transactions.d.ts +6 -4
  102. package/dest/shared/submit-transactions.d.ts.map +1 -1
  103. package/dest/shared/submit-transactions.js +8 -7
  104. package/dest/shared/uniswap_l1_l2.d.ts +12 -8
  105. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  106. package/dest/shared/uniswap_l1_l2.js +44 -58
  107. package/dest/simulators/index.d.ts +1 -1
  108. package/dest/simulators/lending_simulator.d.ts +4 -7
  109. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  110. package/dest/simulators/lending_simulator.js +8 -5
  111. package/dest/simulators/token_simulator.d.ts +4 -2
  112. package/dest/simulators/token_simulator.d.ts.map +1 -1
  113. package/dest/simulators/token_simulator.js +2 -2
  114. package/dest/spartan/setup_test_wallets.d.ts +22 -14
  115. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  116. package/dest/spartan/setup_test_wallets.js +144 -86
  117. package/dest/spartan/tx_metrics.d.ts +39 -0
  118. package/dest/spartan/tx_metrics.d.ts.map +1 -0
  119. package/dest/spartan/tx_metrics.js +95 -0
  120. package/dest/spartan/utils.d.ts +92 -17
  121. package/dest/spartan/utils.d.ts.map +1 -1
  122. package/dest/spartan/utils.js +386 -63
  123. package/package.json +43 -40
  124. package/src/bench/client_flows/benchmark.ts +8 -8
  125. package/src/bench/client_flows/client_flows_benchmark.ts +141 -114
  126. package/src/bench/client_flows/data_extractor.ts +9 -31
  127. package/src/bench/utils.ts +9 -37
  128. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +46 -63
  129. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +38 -51
  130. package/src/e2e_deploy_contract/deploy_test.ts +18 -36
  131. package/src/e2e_epochs/epochs_test.ts +41 -35
  132. package/src/e2e_fees/bridging_race.notest.ts +16 -11
  133. package/src/e2e_fees/fees_test.ts +42 -47
  134. package/src/e2e_l1_publisher/write_json.ts +12 -9
  135. package/src/e2e_multi_validator/utils.ts +5 -11
  136. package/src/e2e_nested_contract/nested_contract_test.ts +15 -13
  137. package/src/e2e_p2p/inactivity_slash_test.ts +184 -0
  138. package/src/e2e_p2p/p2p_network.ts +124 -82
  139. package/src/e2e_p2p/shared.ts +66 -58
  140. package/src/e2e_token_contract/token_contract_test.ts +17 -17
  141. package/src/fixtures/e2e_prover_test.ts +60 -97
  142. package/src/fixtures/fixtures.ts +1 -2
  143. package/src/fixtures/get_acvm_config.ts +2 -2
  144. package/src/fixtures/get_bb_config.ts +3 -2
  145. package/src/fixtures/l1_to_l2_messaging.ts +4 -2
  146. package/src/fixtures/setup_l1_contracts.ts +5 -4
  147. package/src/fixtures/setup_p2p_test.ts +79 -32
  148. package/src/fixtures/snapshot_manager.ts +87 -82
  149. package/src/fixtures/token_utils.ts +16 -24
  150. package/src/fixtures/utils.ts +142 -172
  151. package/src/fixtures/web3signer.ts +63 -0
  152. package/src/fixtures/with_telemetry_utils.ts +2 -2
  153. package/src/guides/up_quick_start.sh +3 -11
  154. package/src/quality_of_service/alert_checker.ts +1 -1
  155. package/src/shared/cross_chain_test_harness.ts +23 -31
  156. package/src/shared/gas_portal_test_harness.ts +14 -21
  157. package/src/shared/jest_setup.ts +1 -1
  158. package/src/shared/submit-transactions.ts +12 -8
  159. package/src/shared/uniswap_l1_l2.ts +77 -86
  160. package/src/simulators/lending_simulator.ts +9 -6
  161. package/src/simulators/token_simulator.ts +5 -2
  162. package/src/spartan/DEVELOP.md +15 -3
  163. package/src/spartan/setup_test_wallets.ts +171 -127
  164. package/src/spartan/tx_metrics.ts +130 -0
  165. package/src/spartan/utils.ts +463 -64
@@ -1,11 +1,11 @@
1
- import { getSchnorrWallet } from '@aztec/accounts/schnorr';
2
- import { Fr, createLogger, getContractInstanceFromInstantiationParams } from '@aztec/aztec.js';
1
+ import { getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
2
+ import { Fr } from '@aztec/aztec.js/fields';
3
+ import { createLogger } from '@aztec/aztec.js/log';
3
4
  import { createSnapshotManager, deployAccounts } from '../fixtures/snapshot_manager.js';
4
5
  const { E2E_DATA_PATH: dataPath } = process.env;
5
6
  export class DeployTest {
6
7
  snapshotManager;
7
8
  logger;
8
- pxe;
9
9
  wallet;
10
10
  defaultAccountAddress;
11
11
  aztecNode;
@@ -17,7 +17,7 @@ export class DeployTest {
17
17
  async setup() {
18
18
  await this.applyInitialAccountSnapshot();
19
19
  const context = await this.snapshotManager.setup();
20
- ({ pxe: this.pxe, aztecNode: this.aztecNode } = context);
20
+ ({ aztecNode: this.aztecNode, wallet: this.wallet } = context);
21
21
  this.aztecNodeAdmin = context.aztecNode;
22
22
  return this;
23
23
  }
@@ -25,11 +25,9 @@ export class DeployTest {
25
25
  await this.snapshotManager.teardown();
26
26
  }
27
27
  async applyInitialAccountSnapshot() {
28
- await this.snapshotManager.snapshot('initial_account', deployAccounts(1, this.logger), async ({ deployedAccounts }, { pxe })=>{
29
- const wallets = await Promise.all(deployedAccounts.map((a)=>getSchnorrWallet(pxe, a.address, a.signingKey)));
30
- wallets.forEach((w, i)=>this.logger.verbose(`Wallet ${i} address: ${w.getAddress()}`));
31
- this.wallet = wallets[0];
32
- this.defaultAccountAddress = this.wallet.getAddress();
28
+ await this.snapshotManager.snapshot('initial_account', deployAccounts(1, this.logger), ({ deployedAccounts })=>{
29
+ this.defaultAccountAddress = deployedAccounts[0].address;
30
+ return Promise.resolve();
33
31
  });
34
32
  }
35
33
  async registerContract(wallet, contractArtifact, opts = {}) {
@@ -37,18 +35,11 @@ export class DeployTest {
37
35
  const instance = await getContractInstanceFromInstantiationParams(contractArtifact.artifact, {
38
36
  constructorArgs: initArgs ?? [],
39
37
  constructorArtifact: constructorName,
40
- salt,
38
+ salt: salt ?? Fr.random(),
41
39
  publicKeys,
42
40
  deployer
43
41
  });
44
- await wallet.registerContract({
45
- artifact: contractArtifact.artifact,
46
- instance
47
- });
42
+ await wallet.registerContract(instance, contractArtifact.artifact);
48
43
  return contractArtifact.at(instance.address, wallet);
49
44
  }
50
- async registerRandomAccount() {
51
- const completeAddress = await this.pxe.registerAccount(Fr.random(), Fr.random());
52
- return completeAddress.address;
53
- }
54
45
  }
@@ -1,12 +1,16 @@
1
1
  import { type AztecNodeConfig, AztecNodeService } from '@aztec/aztec-node';
2
- import { Fr, type Logger, type Wallet } from '@aztec/aztec.js';
3
- import { type ExtendedViemWalletClient } from '@aztec/ethereum';
2
+ import { Fr } from '@aztec/aztec.js/fields';
3
+ import type { Logger } from '@aztec/aztec.js/log';
4
+ import type { Wallet } from '@aztec/aztec.js/wallet';
5
+ import { EpochCache } from '@aztec/epoch-cache';
4
6
  import { RollupContract } from '@aztec/ethereum/contracts';
5
7
  import { ChainMonitor, type Delayer } from '@aztec/ethereum/test';
8
+ import type { ExtendedViemWalletClient } from '@aztec/ethereum/types';
9
+ import { BlockNumber, CheckpointNumber } from '@aztec/foundation/branded-types';
6
10
  import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
7
- import { ProverNode } from '@aztec/prover-node';
11
+ import { ProverNode, type ProverNodeConfig } from '@aztec/prover-node';
8
12
  import { type SequencerClient, type SequencerEvents } from '@aztec/sequencer-client';
9
- import { EthAddress, type L2BlockNumber } from '@aztec/stdlib/block';
13
+ import { type BlockParameter, EthAddress } from '@aztec/stdlib/block';
10
14
  import { type L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
11
15
  import { type EndToEndContext, type SetupOptions } from '../fixtures/utils.js';
12
16
  export declare const WORLD_STATE_BLOCK_HISTORY = 2;
@@ -35,6 +39,7 @@ export declare class EpochsTestContext {
35
39
  constants: L1RollupConstants;
36
40
  logger: Logger;
37
41
  monitor: ChainMonitor;
42
+ epochCache: EpochCache;
38
43
  proverDelayer: Delayer;
39
44
  sequencerDelayer: Delayer;
40
45
  proverNodes: ProverNode[];
@@ -51,7 +56,9 @@ export declare class EpochsTestContext {
51
56
  };
52
57
  setup(opts?: EpochsTestOpts): Promise<void>;
53
58
  teardown(): Promise<void>;
54
- createProverNode(): Promise<ProverNode>;
59
+ createProverNode(opts?: {
60
+ dontStart?: boolean;
61
+ } & Partial<ProverNodeConfig>): Promise<ProverNode>;
55
62
  createNonValidatorNode(opts?: Partial<AztecNodeConfig>): Promise<AztecNodeService>;
56
63
  createValidatorNode(privateKeys: `0x${string}`[], opts?: Partial<AztecNodeConfig> & {
57
64
  txDelayerMaxInclusionTimeIntoSlot?: number;
@@ -61,14 +68,14 @@ export declare class EpochsTestContext {
61
68
  private getNextPrivateKey;
62
69
  /** Waits until the epoch begins (ie until the immediately previous L1 block is mined). */
63
70
  waitUntilEpochStarts(epoch: number): Promise<bigint>;
64
- /** Waits until the given L2 block number is mined. */
65
- waitUntilL2BlockNumber(target: number, timeout?: number): Promise<void>;
66
- /** Waits until the given L2 block number is marked as proven. */
67
- waitUntilProvenL2BlockNumber(t: number, timeout?: number): Promise<number>;
71
+ /** Waits until the given checkpoint number is mined. */
72
+ waitUntilCheckpointNumber(target: CheckpointNumber, timeout?: number): Promise<void>;
73
+ /** Waits until the given checkpoint number is marked as proven. */
74
+ waitUntilProvenCheckpointNumber(target: CheckpointNumber, timeout?: number): Promise<CheckpointNumber>;
68
75
  /** Waits until the last slot of the proof submission window for a given epoch. */
69
76
  waitUntilLastSlotOfProofSubmissionWindow(epochNumber: number | bigint): Promise<void>;
70
77
  /** Waits for the aztec node to sync to the target block number. */
71
- waitForNodeToSync(blockNumber: number, type: 'proven' | 'finalized' | 'historic'): Promise<void>;
78
+ waitForNodeToSync(blockNumber: BlockNumber, type: 'proven' | 'finalized' | 'historic'): Promise<void>;
72
79
  /** Registers the SpamContract on the given wallet. */
73
80
  registerSpamContract(wallet: Wallet, salt?: Fr): Promise<SpamContract>;
74
81
  /** Creates an L1 client using a fresh account with funds from anvil, with a tx delayer already set up. */
@@ -77,10 +84,10 @@ export declare class EpochsTestContext {
77
84
  delayer: Delayer;
78
85
  }>;
79
86
  /** Verifies whether the given block number is found on the aztec node. */
80
- verifyHistoricBlock(blockNumber: L2BlockNumber, expectedSuccess: boolean): Promise<void>;
87
+ verifyHistoricBlock(blockNumber: BlockParameter, expectedSuccess: boolean): Promise<void>;
81
88
  watchSequencerEvents(sequencers: SequencerClient[], getMetadata?: (i: number) => Record<string, any>): {
82
89
  failEvents: TrackedSequencerEvent[];
83
90
  stateChanges: TrackedSequencerEvent[];
84
91
  };
85
92
  }
86
- //# sourceMappingURL=epochs_test.d.ts.map
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2hzX3Rlc3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfZXBvY2hzL2Vwb2Noc190ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRzNFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQWtCLEtBQUssT0FBTyxFQUFxQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3JILE9BQU8sS0FBSyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBZSxNQUFNLGlDQUFpQyxDQUFDO0FBTTdGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssZ0JBQWdCLEVBQXVCLE1BQU0sb0JBQW9CLENBQUM7QUFFNUYsT0FBTyxFQUNMLEtBQUssZUFBZSxFQUNwQixLQUFLLGVBQWUsRUFHckIsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQUUsS0FBSyxjQUFjLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEUsT0FBTyxFQUFFLEtBQUssaUJBQWlCLEVBQXVDLE1BQU0sNkJBQTZCLENBQUM7QUFPMUcsT0FBTyxFQUNMLEtBQUssZUFBZSxFQUNwQixLQUFLLFlBQVksRUFJ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
@@ -1 +1 @@
1
- {"version":3,"file":"epochs_test.d.ts","sourceRoot":"","sources":["../../src/e2e_epochs/epochs_test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"epochs_test.d.ts","sourceRoot":"","sources":["../../src/e2e_epochs/epochs_test.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,19 @@
1
1
  import { AztecNodeService } from '@aztec/aztec-node';
2
- import { Fr, MerkleTreeId, getContractInstanceFromInstantiationParams, getTimestampRangeForEpoch, retryUntil, sleep } from '@aztec/aztec.js';
3
- import { DefaultL1ContractsConfig, createExtendedL1Client } from '@aztec/ethereum';
2
+ import { getTimestampRangeForEpoch } from '@aztec/aztec.js/block';
3
+ import { getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
4
+ import { Fr } from '@aztec/aztec.js/fields';
5
+ import { MerkleTreeId } from '@aztec/aztec.js/trees';
6
+ import { EpochCache } from '@aztec/epoch-cache';
7
+ import { createExtendedL1Client } from '@aztec/ethereum/client';
8
+ import { DefaultL1ContractsConfig } from '@aztec/ethereum/config';
4
9
  import { RollupContract } from '@aztec/ethereum/contracts';
5
10
  import { ChainMonitor, DelayedTxUtils, waitUntilL1Timestamp, withDelayer } from '@aztec/ethereum/test';
11
+ import { EpochNumber } from '@aztec/foundation/branded-types';
6
12
  import { SecretValue } from '@aztec/foundation/config';
7
- import { randomBytes } from '@aztec/foundation/crypto';
13
+ import { randomBytes } from '@aztec/foundation/crypto/random';
8
14
  import { withLogNameSuffix } from '@aztec/foundation/log';
15
+ import { retryUntil } from '@aztec/foundation/retry';
16
+ import { sleep } from '@aztec/foundation/sleep';
9
17
  import { SpamContract } from '@aztec/noir-test-contracts.js/Spam';
10
18
  import { getMockPubSubP2PServiceFactory } from '@aztec/p2p/test-helpers';
11
19
  import { SequencerState } from '@aztec/sequencer-client';
@@ -30,6 +38,7 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
30
38
  constants;
31
39
  logger;
32
40
  monitor;
41
+ epochCache;
33
42
  proverDelayer;
34
43
  sequencerDelayer;
35
44
  proverNodes = [];
@@ -81,9 +90,6 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
81
90
  // using the prover's eth address if the proverId is used for something in the rollup contract
82
91
  // Use numeric EthAddress for deterministic prover id
83
92
  proverId: EthAddress.fromNumber(1),
84
- // This must be enough so that the tx from the prover is delayed properly,
85
- // but not so much to hang the sequencer and timeout the teardown
86
- txPropagationMaxQueryAttempts: opts.txPropagationMaxQueryAttempts ?? 12,
87
93
  worldStateBlockHistory: WORLD_STATE_BLOCK_HISTORY,
88
94
  exitDelaySeconds: DefaultL1ContractsConfig.exitDelaySeconds,
89
95
  slasherFlavor: 'none',
@@ -99,6 +105,9 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
99
105
  this.logger = context.logger;
100
106
  this.l1Client = context.deployL1ContractsValues.l1Client;
101
107
  this.rollup = RollupContract.getFromConfig(context.config);
108
+ this.epochCache = await EpochCache.create(this.rollup, context.config, {
109
+ dateProvider: context.dateProvider
110
+ });
102
111
  // Loop that tracks L1 and L2 block numbers and logs whenever there's a new one.
103
112
  this.monitor = new ChainMonitor(this.rollup, context.dateProvider, this.logger).start();
104
113
  // This is hideous.
@@ -126,15 +135,17 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
126
135
  await Promise.all(this.nodes.map((node)=>tryStop(node, this.logger)));
127
136
  await this.context.teardown();
128
137
  }
129
- async createProverNode() {
138
+ async createProverNode(opts = {}) {
130
139
  this.logger.warn('Creating and syncing a simulated prover node...');
131
140
  const proverNodePrivateKey = this.getNextPrivateKey();
132
141
  const suffix = (this.proverNodes.length + 1).toString();
133
142
  const proverNode = await withLogNameSuffix(suffix, ()=>createAndSyncProverNode(proverNodePrivateKey, {
134
- ...this.context.config,
135
- proverId: EthAddress.fromNumber(parseInt(suffix, 10))
143
+ ...this.context.config
136
144
  }, {
137
- dataDirectory: join(this.context.config.dataDirectory, randomBytes(8).toString('hex'))
145
+ dataDirectory: join(this.context.config.dataDirectory, randomBytes(8).toString('hex')),
146
+ proverId: EthAddress.fromNumber(parseInt(suffix, 10)),
147
+ dontStart: opts.dontStart,
148
+ ...opts
138
149
  }, this.context.aztecNode, undefined, {
139
150
  dateProvider: this.context.dateProvider
140
151
  }));
@@ -202,20 +213,20 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
202
213
  return `0x${key.toString('hex')}`;
203
214
  }
204
215
  /** Waits until the epoch begins (ie until the immediately previous L1 block is mined). */ async waitUntilEpochStarts(epoch) {
205
- const [start] = getTimestampRangeForEpoch(BigInt(epoch), this.constants);
216
+ const [start] = getTimestampRangeForEpoch(EpochNumber(epoch), this.constants);
206
217
  this.logger.info(`Waiting until L1 timestamp ${start} is reached as the start of epoch ${epoch}`);
207
218
  await waitUntilL1Timestamp(this.l1Client, start - BigInt(this.L1_BLOCK_TIME_IN_S), undefined, 30 * this.epochDuration);
208
219
  return start;
209
220
  }
210
- /** Waits until the given L2 block number is mined. */ async waitUntilL2BlockNumber(target, timeout = 60) {
211
- await retryUntil(()=>Promise.resolve(target <= this.monitor.l2BlockNumber), `Wait until L2 block ${target}`, timeout, 0.1);
221
+ /** Waits until the given checkpoint number is mined. */ async waitUntilCheckpointNumber(target, timeout = 60) {
222
+ await retryUntil(()=>Promise.resolve(target <= this.monitor.checkpointNumber), `Wait until checkpoint ${target}`, timeout, 0.1);
212
223
  }
213
- /** Waits until the given L2 block number is marked as proven. */ async waitUntilProvenL2BlockNumber(t, timeout = 60) {
214
- await retryUntil(()=>Promise.resolve(t <= this.monitor.l2ProvenBlockNumber), `Wait proven L2 block ${t}`, timeout, 0.1);
215
- return this.monitor.l2ProvenBlockNumber;
224
+ /** Waits until the given checkpoint number is marked as proven. */ async waitUntilProvenCheckpointNumber(target, timeout = 60) {
225
+ await retryUntil(()=>Promise.resolve(target <= this.monitor.provenCheckpointNumber), `Wait proven checkpoint ${target}`, timeout, 0.1);
226
+ return this.monitor.provenCheckpointNumber;
216
227
  }
217
228
  /** Waits until the last slot of the proof submission window for a given epoch. */ async waitUntilLastSlotOfProofSubmissionWindow(epochNumber) {
218
- const deadline = getProofSubmissionDeadlineTimestamp(BigInt(epochNumber), this.constants);
229
+ const deadline = getProofSubmissionDeadlineTimestamp(EpochNumber.fromBigInt(BigInt(epochNumber)), this.constants);
219
230
  const oneSlotBefore = deadline - BigInt(this.constants.slotDuration);
220
231
  const date = new Date(Number(oneSlotBefore) * 1000);
221
232
  this.logger.info(`Waiting until last slot of submission window for epoch ${epochNumber} at ${date}`, {
@@ -255,10 +266,7 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
255
266
  publicKeys: undefined,
256
267
  deployer: undefined
257
268
  });
258
- await wallet.registerContract({
259
- artifact: SpamContract.artifact,
260
- instance
261
- });
269
+ await wallet.registerContract(instance, SpamContract.artifact);
262
270
  return SpamContract.at(instance.address, wallet);
263
271
  }
264
272
  /** Creates an L1 client using a fresh account with funds from anvil, with a tx delayer already set up. */ async createL1Client() {
@@ -318,7 +326,7 @@ export const DEFAULT_L1_BLOCK_TIME = process.env.CI ? 12 : 8;
318
326
  sequencer.getSequencer().on(eventName, (args)=>{
319
327
  const evt = makeEvent(i, eventName, args);
320
328
  failEvents.push(evt);
321
- this.logger.error(`Failed event ${eventName} from sequencer ${sequencerIndex}`, evt);
329
+ this.logger.error(`Failed event ${eventName} from sequencer ${sequencerIndex}`, undefined, evt);
322
330
  });
323
331
  });
324
332
  });
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=bridging_race.notest.d.ts.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJpZGdpbmdfcmFjZS5ub3Rlc3QuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lMmVfZmVlcy9icmlkZ2luZ19yYWNlLm5vdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -1,6 +1,7 @@
1
- import { getSchnorrAccount } from '@aztec/accounts/schnorr';
2
- import { Fr, sleep } from '@aztec/aztec.js';
3
- import { Fq } from '@aztec/foundation/fields';
1
+ import { SchnorrAccountContract } from '@aztec/accounts/schnorr';
2
+ import { Fr } from '@aztec/aztec.js/fields';
3
+ import { Fq } from '@aztec/foundation/curves/bn254';
4
+ import { sleep } from '@aztec/foundation/sleep';
4
5
  import { jest } from '@jest/globals';
5
6
  import { FeesTest } from './fees_test.js';
6
7
  jest.setTimeout(300_000);
@@ -18,22 +19,24 @@ describe('e2e_fees bridging_race', ()=>{
18
19
  await t.applyInitialAccountsSnapshot();
19
20
  await t.applyPublicDeployAccountsSnapshot();
20
21
  await t.applySetupFeeJuiceSnapshot();
21
- ({ pxe, logger } = await t.setup());
22
+ ({ wallet, logger } = await t.setup());
22
23
  });
23
24
  afterAll(async ()=>{
24
25
  await t.teardown();
25
26
  });
26
27
  let logger;
27
- let pxe;
28
28
  let bobsAddress;
29
+ let wallet;
29
30
  beforeEach(async ()=>{
30
31
  const bobsSecretKey = Fr.random();
31
32
  const bobsPrivateSigningKey = Fq.random();
32
- const bobsAccountManager = await getSchnorrAccount(pxe, bobsSecretKey, bobsPrivateSigningKey, Fr.random());
33
- const bobsCompleteAddress = await bobsAccountManager.getCompleteAddress();
34
- bobsAddress = bobsCompleteAddress.address;
35
- await bobsAccountManager.getWallet();
36
- await bobsAccountManager.register();
33
+ const bobsSalt = Fr.random();
34
+ const bobsAccountManager = await wallet.createAccount({
35
+ secret: bobsSecretKey,
36
+ salt: bobsSalt,
37
+ contract: new SchnorrAccountContract(bobsPrivateSigningKey)
38
+ });
39
+ bobsAddress = bobsAccountManager.address;
37
40
  });
38
41
  it('Alice bridges funds to Bob', async ()=>{
39
42
  // Tweak the token manager so the bridging happens immediately before the end of the current L2 slot
@@ -42,7 +45,7 @@ describe('e2e_fees bridging_race', ()=>{
42
45
  const origApprove = l1TokenManager.approve.bind(l1TokenManager);
43
46
  l1TokenManager.approve = async (amount, address, addressName = '')=>{
44
47
  await origApprove(amount, address, addressName);
45
- const sleepTime = (Number(t.chainMonitor.l2BlockTimestamp) + AZTEC_SLOT_DURATION) * 1000 - Date.now() - 500;
48
+ const sleepTime = (Number(t.chainMonitor.checkpointTimestamp) + AZTEC_SLOT_DURATION) * 1000 - Date.now() - 500;
46
49
  logger.info(`Sleeping for ${sleepTime}ms until near end of L2 slot before sending L1 fee juice to L2 inbox`);
47
50
  await sleep(sleepTime);
48
51
  };
@@ -1,7 +1,11 @@
1
- import { type AccountWallet, type AztecAddress, type AztecNode, type Logger, type PXE } from '@aztec/aztec.js';
1
+ import type { AztecAddress } from '@aztec/aztec.js/addresses';
2
+ import { type Logger } from '@aztec/aztec.js/log';
3
+ import type { AztecNode } from '@aztec/aztec.js/node';
2
4
  import { CheatCodes } from '@aztec/aztec/testing';
3
- import { type DeployL1ContractsArgs, RollupContract } from '@aztec/ethereum';
5
+ import { RollupContract } from '@aztec/ethereum/contracts';
6
+ import type { DeployL1ContractsArgs } from '@aztec/ethereum/deploy-l1-contracts';
4
7
  import { ChainMonitor } from '@aztec/ethereum/test';
8
+ import { BlockNumber } from '@aztec/foundation/branded-types';
5
9
  import { EthAddress } from '@aztec/foundation/eth-address';
6
10
  import { AppSubscriptionContract } from '@aztec/noir-contracts.js/AppSubscription';
7
11
  import { FPCContract } from '@aztec/noir-contracts.js/FPC';
@@ -10,6 +14,7 @@ import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC';
10
14
  import { TokenContract as BananaCoin } from '@aztec/noir-contracts.js/Token';
11
15
  import { CounterContract } from '@aztec/noir-test-contracts.js/Counter';
12
16
  import { GasSettings } from '@aztec/stdlib/gas';
17
+ import { TestWallet } from '@aztec/test-wallet/server';
13
18
  import { type SubsystemsContext } from '../fixtures/snapshot_manager.js';
14
19
  import { type BalancesFn, type SetupOptions } from '../fixtures/utils.js';
15
20
  import { type GasBridgingTestHarness } from '../shared/gas_portal_test_harness.js';
@@ -26,15 +31,12 @@ import { type GasBridgingTestHarness } from '../shared/gas_portal_test_harness.j
26
31
  export declare class FeesTest {
27
32
  private numberOfAccounts;
28
33
  private snapshotManager;
29
- private wallets;
30
34
  private accounts;
31
35
  logger: Logger;
32
- pxe: PXE;
33
36
  aztecNode: AztecNode;
34
37
  cheatCodes: CheatCodes;
35
- aliceWallet: AccountWallet;
38
+ wallet: TestWallet;
36
39
  aliceAddress: AztecAddress;
37
- bobWallet: AccountWallet;
38
40
  bobAddress: AztecAddress;
39
41
  sequencerAddress: AztecAddress;
40
42
  coinbase: EthAddress;
@@ -55,7 +57,7 @@ export declare class FeesTest {
55
57
  getGasBalanceFn: BalancesFn;
56
58
  getBananaPublicBalanceFn: BalancesFn;
57
59
  getBananaPrivateBalanceFn: BalancesFn;
58
- getProverFee: (blockNumber: number) => Promise<bigint>;
60
+ getProverFee: (blockNumber: BlockNumber) => Promise<bigint>;
59
61
  readonly ALICE_INITIAL_BANANAS: bigint;
60
62
  readonly SUBSCRIPTION_AMOUNT: bigint;
61
63
  readonly APP_SPONSORED_TX_GAS_LIMIT: bigint;
@@ -81,4 +83,4 @@ export declare class FeesTest {
81
83
  applyFundAliceWithBananas(): Promise<void>;
82
84
  applyFundAliceWithPrivateBananas(): Promise<void>;
83
85
  }
84
- //# sourceMappingURL=fees_test.d.ts.map
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlc190ZXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZTJlX2ZlZXMvZmVlc190ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBZ0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxhQUFhLElBQUksVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBR3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFLdkQsT0FB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
@@ -1 +1 @@
1
- {"version":3,"file":"fees_test.d.ts","sourceRoot":"","sources":["../../src/e2e_fees/fees_test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fees_test.d.ts","sourceRoot":"","sources":["../../src/e2e_fees/fees_test.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { getSchnorrWallet } from '@aztec/accounts/schnorr';
2
- import { createLogger, sleep } from '@aztec/aztec.js';
3
- import { CheatCodes } from '@aztec/aztec/testing';
4
- import { RollupContract, createExtendedL1Client } from '@aztec/ethereum';
1
+ import { createLogger } from '@aztec/aztec.js/log';
2
+ import { createExtendedL1Client } from '@aztec/ethereum/client';
3
+ import { RollupContract } from '@aztec/ethereum/contracts';
5
4
  import { ChainMonitor } from '@aztec/ethereum/test';
6
5
  import { EthAddress } from '@aztec/foundation/eth-address';
6
+ import { sleep } from '@aztec/foundation/sleep';
7
7
  import { TestERC20Abi } from '@aztec/l1-artifacts';
8
8
  import { FPCContract } from '@aztec/noir-contracts.js/FPC';
9
9
  import { FeeJuiceContract } from '@aztec/noir-contracts.js/FeeJuice';
@@ -31,15 +31,12 @@ const { E2E_DATA_PATH: dataPath } = process.env;
31
31
  */ export class FeesTest {
32
32
  numberOfAccounts;
33
33
  snapshotManager;
34
- wallets;
35
34
  accounts;
36
35
  logger;
37
- pxe;
38
36
  aztecNode;
39
37
  cheatCodes;
40
- aliceWallet;
38
+ wallet;
41
39
  aliceAddress;
42
- bobWallet;
43
40
  bobAddress;
44
41
  sequencerAddress;
45
42
  coinbase;
@@ -66,7 +63,6 @@ const { E2E_DATA_PATH: dataPath } = process.env;
66
63
  APP_SPONSORED_TX_GAS_LIMIT;
67
64
  constructor(testName, numberOfAccounts = 3, setupOptions = {}){
68
65
  this.numberOfAccounts = numberOfAccounts;
69
- this.wallets = [];
70
66
  this.accounts = [];
71
67
  this.ALICE_INITIAL_BANANAS = BigInt(1e22);
72
68
  this.SUBSCRIPTION_AMOUNT = BigInt(1e19);
@@ -104,10 +100,11 @@ const { E2E_DATA_PATH: dataPath } = process.env;
104
100
  }
105
101
  }
106
102
  async getBlockRewards() {
107
- const blockReward = await this.rollupContract.getBlockReward();
108
- const balance = await this.feeJuiceBridgeTestHarness.getL1FeeJuiceBalance(this.context.deployL1ContractsValues.l1ContractAddresses.rewardDistributorAddress);
103
+ const blockReward = await this.rollupContract.getCheckpointReward();
104
+ const rewardConfig = await this.rollupContract.getRewardConfig();
105
+ const balance = await this.feeJuiceBridgeTestHarness.getL1FeeJuiceBalance(EthAddress.fromString(rewardConfig.rewardDistributor));
109
106
  const toDistribute = balance > blockReward ? blockReward : balance;
110
- const sequencerBlockRewards = toDistribute / 2n;
107
+ const sequencerBlockRewards = toDistribute * BigInt(rewardConfig.sequencerBps) / 10000n;
111
108
  const proverBlockRewards = toDistribute - sequencerBlockRewards;
112
109
  return {
113
110
  sequencerBlockRewards,
@@ -125,7 +122,7 @@ const { E2E_DATA_PATH: dataPath } = process.env;
125
122
  const balanceBefore = await this.bananaCoin.methods.balance_of_private(address).simulate({
126
123
  from: this.aliceAddress
127
124
  });
128
- await mintTokensToPrivate(this.bananaCoin, this.aliceAddress, this.aliceWallet, address, amount);
125
+ await mintTokensToPrivate(this.bananaCoin, this.aliceAddress, address, amount);
129
126
  const balanceAfter = await this.bananaCoin.methods.balance_of_private(address).simulate({
130
127
  from: this.aliceAddress
131
128
  });
@@ -138,64 +135,62 @@ const { E2E_DATA_PATH: dataPath } = process.env;
138
135
  await this.applyDeployBananaTokenSnapshot();
139
136
  }
140
137
  async applyInitialAccountsSnapshot() {
141
- await this.snapshotManager.snapshot('initial_accounts', deployAccounts(this.numberOfAccounts, this.logger), async ({ deployedAccounts }, { pxe, aztecNode, aztecNodeConfig })=>{
142
- this.pxe = pxe;
138
+ await this.snapshotManager.snapshot('initial_accounts', deployAccounts(this.numberOfAccounts, this.logger), async ({ deployedAccounts }, { wallet, aztecNode, cheatCodes })=>{
139
+ this.wallet = wallet;
143
140
  this.aztecNode = aztecNode;
144
141
  this.gasSettings = GasSettings.default({
145
142
  maxFeesPerGas: (await this.aztecNode.getCurrentBaseFees()).mul(2)
146
143
  });
147
- this.cheatCodes = await CheatCodes.create(aztecNodeConfig.l1RpcUrls, pxe);
148
- this.wallets = await Promise.all(deployedAccounts.map((a)=>getSchnorrWallet(pxe, a.address, a.signingKey)));
149
- this.wallets.forEach((w, i)=>this.logger.verbose(`Wallet ${i} address: ${w.getAddress()}`));
150
- this.accounts = this.wallets.map((w)=>w.getAddress());
151
- [this.aliceWallet, this.bobWallet] = this.wallets.slice(0, 2);
152
- [this.aliceAddress, this.bobAddress, this.sequencerAddress] = this.accounts;
144
+ this.cheatCodes = cheatCodes;
145
+ this.accounts = deployedAccounts.map((a)=>a.address);
146
+ this.accounts.forEach((a, i)=>this.logger.verbose(`Account ${i} address: ${a}`));
147
+ [this.aliceAddress, this.bobAddress, this.sequencerAddress] = this.accounts.slice(0, 3);
153
148
  // We set Alice as the FPC admin to avoid the need for deployment of another account.
154
149
  this.fpcAdmin = this.aliceAddress;
155
150
  const canonicalFeeJuice = await getCanonicalFeeJuice();
156
- this.feeJuiceContract = await FeeJuiceContract.at(canonicalFeeJuice.address, this.aliceWallet);
151
+ this.feeJuiceContract = FeeJuiceContract.at(canonicalFeeJuice.address, this.wallet);
157
152
  });
158
153
  }
159
154
  async applyPublicDeployAccountsSnapshot() {
160
- await this.snapshotManager.snapshot('public_deploy_accounts', ()=>ensureAccountContractsPublished(this.aliceWallet, this.wallets));
155
+ await this.snapshotManager.snapshot('public_deploy_accounts', ()=>ensureAccountContractsPublished(this.wallet, this.accounts));
161
156
  }
162
157
  async applySetupFeeJuiceSnapshot() {
163
158
  await this.snapshotManager.snapshot('setup_fee_juice', async ()=>{}, async (_data, context)=>{
164
159
  this.context = context;
165
- this.feeJuiceContract = await FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.aliceWallet);
160
+ this.feeJuiceContract = FeeJuiceContract.at(ProtocolContractAddress.FeeJuice, this.wallet);
166
161
  this.getGasBalanceFn = getBalancesFn('⛽', this.feeJuiceContract.methods.balance_of_public, this.aliceAddress, this.logger);
167
162
  this.feeJuiceBridgeTestHarness = await FeeJuicePortalTestingHarnessFactory.create({
168
163
  aztecNode: context.aztecNode,
169
164
  aztecNodeAdmin: context.aztecNode,
170
- pxeService: context.pxe,
171
165
  l1Client: context.deployL1ContractsValues.l1Client,
172
- wallet: this.aliceWallet,
166
+ wallet: this.wallet,
173
167
  logger: this.logger
174
168
  });
175
169
  });
176
170
  }
177
171
  async applyDeployBananaTokenSnapshot() {
178
172
  await this.snapshotManager.snapshot('deploy_banana_token', async ()=>{
179
- const bananaCoin = await BananaCoin.deploy(this.aliceWallet, this.aliceAddress, 'BC', 'BC', 18n).send({
173
+ const bananaCoin = await BananaCoin.deploy(this.wallet, this.aliceAddress, 'BC', 'BC', 18n).send({
180
174
  from: this.aliceAddress
181
175
  }).deployed();
182
176
  this.logger.info(`BananaCoin deployed at ${bananaCoin.address}`);
183
177
  return {
184
178
  bananaCoinAddress: bananaCoin.address
185
179
  };
186
- }, async ({ bananaCoinAddress })=>{
187
- this.bananaCoin = await BananaCoin.at(bananaCoinAddress, this.aliceWallet);
180
+ }, ({ bananaCoinAddress })=>{
181
+ this.bananaCoin = BananaCoin.at(bananaCoinAddress, this.wallet);
188
182
  const logger = this.logger;
189
183
  this.getBananaPublicBalanceFn = getBalancesFn('🍌.public', this.bananaCoin.methods.balance_of_public, this.aliceAddress, logger);
190
184
  this.getBananaPrivateBalanceFn = getBalancesFn('🍌.private', this.bananaCoin.methods.balance_of_private, this.aliceAddress, logger);
185
+ return Promise.resolve();
191
186
  });
192
187
  }
193
188
  async applyFPCSetupSnapshot() {
194
189
  await this.snapshotManager.snapshot('fpc_setup', async (context)=>{
195
190
  const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
196
- expect((await context.pxe.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
191
+ expect((await context.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
197
192
  const bananaCoin = this.bananaCoin;
198
- const bananaFPC = await FPCContract.deploy(this.aliceWallet, bananaCoin.address, this.fpcAdmin).send({
193
+ const bananaFPC = await FPCContract.deploy(this.wallet, bananaCoin.address, this.fpcAdmin).send({
199
194
  from: this.aliceAddress
200
195
  }).deployed();
201
196
  this.logger.info(`BananaPay deployed at ${bananaFPC.address}`);
@@ -206,8 +201,8 @@ const { E2E_DATA_PATH: dataPath } = process.env;
206
201
  l1FeeJuiceAddress: this.feeJuiceBridgeTestHarness.l1FeeJuiceAddress,
207
202
  rollupAddress: context.deployL1ContractsValues.l1ContractAddresses.rollupAddress
208
203
  };
209
- }, async (data, context)=>{
210
- const bananaFPC = await FPCContract.at(data.bananaFPCAddress, this.aliceWallet);
204
+ }, (data, context)=>{
205
+ const bananaFPC = FPCContract.at(data.bananaFPCAddress, this.wallet);
211
206
  this.bananaFPC = bananaFPC;
212
207
  this.getCoinbaseBalance = async ()=>{
213
208
  const l1Client = createExtendedL1Client(context.aztecNodeConfig.l1RpcUrls, MNEMONIC);
@@ -224,7 +219,7 @@ const { E2E_DATA_PATH: dataPath } = process.env;
224
219
  return await this.rollupContract.getSequencerRewards(this.coinbase);
225
220
  };
226
221
  this.getProverFee = async (blockNumber)=>{
227
- const block = await this.pxe.getBlock(blockNumber);
222
+ const block = await this.aztecNode.getBlock(blockNumber);
228
223
  // @todo @lherskind As we deal with #13601
229
224
  // Right now the value is from `FeeLib.sol`
230
225
  const L1_GAS_PER_EPOCH_VERIFIED = 1000000n;
@@ -236,19 +231,21 @@ const { E2E_DATA_PATH: dataPath } = process.env;
236
231
  const mana = block.header.totalManaUsed.toBigInt();
237
232
  return mulDiv(mana * proverCost, price, 10n ** 9n);
238
233
  };
234
+ return Promise.resolve();
239
235
  });
240
236
  }
241
237
  async applySponsoredFPCSetupSnapshot() {
242
238
  await this.snapshotManager.snapshot('sponsored_fpc_setup', async (context)=>{
243
239
  const feeJuiceContract = this.feeJuiceBridgeTestHarness.feeJuice;
244
- expect((await context.pxe.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
245
- const sponsoredFPC = await setupSponsoredFPC(context.pxe);
240
+ expect((await context.wallet.getContractMetadata(feeJuiceContract.address)).isContractPublished).toBe(true);
241
+ const sponsoredFPC = await setupSponsoredFPC(this.wallet);
246
242
  this.logger.info(`SponsoredFPC at ${sponsoredFPC.address}`);
247
243
  return {
248
244
  sponsoredFPCAddress: sponsoredFPC.address
249
245
  };
250
- }, async (data)=>{
251
- this.sponsoredFPC = await SponsoredFPCContract.at(data.sponsoredFPCAddress, this.aliceWallet);
246
+ }, (data)=>{
247
+ this.sponsoredFPC = SponsoredFPCContract.at(data.sponsoredFPCAddress, this.wallet);
248
+ return Promise.resolve();
252
249
  });
253
250
  }
254
251
  async applyFundAliceWithBananas() {
@@ -1,8 +1,10 @@
1
- import { AztecAddress, Fr, type L2Block } from '@aztec/aztec.js';
1
+ import { AztecAddress } from '@aztec/aztec.js/addresses';
2
+ import type { L2Block } from '@aztec/aztec.js/block';
3
+ import { Fr } from '@aztec/aztec.js/fields';
2
4
  import { BatchedBlob, Blob } from '@aztec/blob-lib';
3
5
  /**
4
6
  * Creates a json object that can be used to test the solidity contract.
5
7
  * The json object must be put into
6
8
  */
7
9
  export declare function writeJson(fileName: string, block: L2Block, l1ToL2Content: Fr[], blobs: Blob[], batchedBlob: BatchedBlob, recipientAddress: AztecAddress, deployerAddress: `0x${string}`): Promise<void>;
8
- //# sourceMappingURL=write_json.d.ts.map
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVfanNvbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2UyZV9sMV9wdWJsaXNoZXIvd3JpdGVfanNvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUE2RCxNQUFNLGlCQUFpQixDQUFDO0FBTy9HOzs7R0FHRztBQUNILHdCQUFzQixTQUFTLENBQzdCLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLEtBQUssRUFBRSxPQUFPLEVBQ2QsYUFBYSxFQUFFLEVBQUUsRUFBRSxFQUNuQixLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQ2IsV0FBVyxFQUFFLFdBQVcsRUFDeEIsZ0JBQWdCLEVBQUUsWUFBWSxFQUM5QixlQUFlLEVBQUUsS0FBSyxNQUFNLEVBQUUsR0FDN0IsT0FBTyxDQUFDLElBQUksQ0FBQyxDQXNEZiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"write_json.d.ts","sourceRoot":"","sources":["../../src/e2e_l1_publisher/write_json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAOpD;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,EAAE,EAAE,EACnB,KAAK,EAAE,IAAI,EAAE,EACb,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,YAAY,EAC9B,eAAe,EAAE,KAAK,MAAM,EAAE,GAC7B,OAAO,CAAC,IAAI,CAAC,CAqDf"}
1
+ {"version":3,"file":"write_json.d.ts","sourceRoot":"","sources":["../../src/e2e_l1_publisher/write_json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,IAAI,EAA6D,MAAM,iBAAiB,CAAC;AAO/G;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,EAAE,EAAE,EACnB,KAAK,EAAE,IAAI,EAAE,EACb,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,YAAY,EAC9B,eAAe,EAAE,KAAK,MAAM,EAAE,GAC7B,OAAO,CAAC,IAAI,CAAC,CAsDf"}