@aztec/end-to-end 4.0.0-nightly.20250907 → 4.0.0-nightly.20260108

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 +26 -15
  5. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  6. package/dest/bench/client_flows/client_flows_benchmark.js +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 +10 -30
  10. package/dest/bench/utils.d.ts +3 -12
  11. package/dest/bench/utils.d.ts.map +1 -1
  12. package/dest/bench/utils.js +17 -37
  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 +13 -10
  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 +20 -12
  23. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  24. package/dest/e2e_epochs/epochs_test.js +36 -27
  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 +13 -9
  28. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  29. package/dest/e2e_fees/fees_test.js +39 -40
  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 +136 -0
  42. package/dest/e2e_p2p/p2p_network.d.ts +238 -18
  43. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  44. package/dest/e2e_p2p/p2p_network.js +50 -25
  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 +57 -56
  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 +13 -11
  52. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  53. package/dest/fixtures/e2e_prover_test.js +57 -66
  54. package/dest/fixtures/fixtures.d.ts +2 -3
  55. package/dest/fixtures/fixtures.d.ts.map +1 -1
  56. package/dest/fixtures/fixtures.js +2 -3
  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_p2p_test.d.ts +12 -11
  69. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  70. package/dest/fixtures/setup_p2p_test.js +50 -24
  71. package/dest/fixtures/snapshot_manager.d.ts +16 -15
  72. package/dest/fixtures/snapshot_manager.d.ts.map +1 -1
  73. package/dest/fixtures/snapshot_manager.js +84 -88
  74. package/dest/fixtures/token_utils.d.ts +10 -5
  75. package/dest/fixtures/token_utils.d.ts.map +1 -1
  76. package/dest/fixtures/token_utils.js +17 -18
  77. package/dest/fixtures/utils.d.ts +44 -47
  78. package/dest/fixtures/utils.d.ts.map +1 -1
  79. package/dest/fixtures/utils.js +128 -185
  80. package/dest/fixtures/web3signer.d.ts +5 -0
  81. package/dest/fixtures/web3signer.d.ts.map +1 -0
  82. package/dest/fixtures/web3signer.js +53 -0
  83. package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
  84. package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
  85. package/dest/fixtures/with_telemetry_utils.js +2 -2
  86. package/dest/index.d.ts +1 -1
  87. package/dest/quality_of_service/alert_checker.d.ts +2 -2
  88. package/dest/quality_of_service/alert_checker.d.ts.map +1 -1
  89. package/dest/shared/cross_chain_test_harness.d.ts +20 -23
  90. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  91. package/dest/shared/cross_chain_test_harness.js +14 -16
  92. package/dest/shared/gas_portal_test_harness.d.ts +10 -17
  93. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  94. package/dest/shared/gas_portal_test_harness.js +11 -8
  95. package/dest/shared/index.d.ts +1 -1
  96. package/dest/shared/jest_setup.d.ts +1 -1
  97. package/dest/shared/jest_setup.js +1 -1
  98. package/dest/shared/submit-transactions.d.ts +6 -4
  99. package/dest/shared/submit-transactions.d.ts.map +1 -1
  100. package/dest/shared/submit-transactions.js +8 -7
  101. package/dest/shared/uniswap_l1_l2.d.ts +13 -9
  102. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  103. package/dest/shared/uniswap_l1_l2.js +44 -58
  104. package/dest/simulators/index.d.ts +1 -1
  105. package/dest/simulators/lending_simulator.d.ts +4 -7
  106. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  107. package/dest/simulators/lending_simulator.js +8 -5
  108. package/dest/simulators/token_simulator.d.ts +4 -2
  109. package/dest/simulators/token_simulator.d.ts.map +1 -1
  110. package/dest/simulators/token_simulator.js +2 -2
  111. package/dest/spartan/setup_test_wallets.d.ts +22 -14
  112. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  113. package/dest/spartan/setup_test_wallets.js +144 -86
  114. package/dest/spartan/tx_metrics.d.ts +39 -0
  115. package/dest/spartan/tx_metrics.d.ts.map +1 -0
  116. package/dest/spartan/tx_metrics.js +95 -0
  117. package/dest/spartan/utils.d.ts +101 -16
  118. package/dest/spartan/utils.d.ts.map +1 -1
  119. package/dest/spartan/utils.js +414 -52
  120. package/package.json +43 -40
  121. package/src/bench/client_flows/benchmark.ts +8 -8
  122. package/src/bench/client_flows/client_flows_benchmark.ts +143 -115
  123. package/src/bench/client_flows/data_extractor.ts +9 -31
  124. package/src/bench/utils.ts +15 -39
  125. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +46 -63
  126. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +46 -55
  127. package/src/e2e_deploy_contract/deploy_test.ts +18 -36
  128. package/src/e2e_epochs/epochs_test.ts +59 -42
  129. package/src/e2e_fees/bridging_race.notest.ts +16 -11
  130. package/src/e2e_fees/fees_test.ts +48 -52
  131. package/src/e2e_l1_publisher/write_json.ts +12 -9
  132. package/src/e2e_multi_validator/utils.ts +5 -11
  133. package/src/e2e_nested_contract/nested_contract_test.ts +15 -13
  134. package/src/e2e_p2p/inactivity_slash_test.ts +179 -0
  135. package/src/e2e_p2p/p2p_network.ts +125 -89
  136. package/src/e2e_p2p/shared.ts +69 -60
  137. package/src/e2e_token_contract/token_contract_test.ts +17 -17
  138. package/src/fixtures/e2e_prover_test.ts +65 -105
  139. package/src/fixtures/fixtures.ts +2 -5
  140. package/src/fixtures/get_acvm_config.ts +2 -2
  141. package/src/fixtures/get_bb_config.ts +3 -2
  142. package/src/fixtures/l1_to_l2_messaging.ts +4 -2
  143. package/src/fixtures/setup_p2p_test.ts +79 -32
  144. package/src/fixtures/snapshot_manager.ts +120 -131
  145. package/src/fixtures/token_utils.ts +16 -24
  146. package/src/fixtures/utils.ts +175 -269
  147. package/src/fixtures/web3signer.ts +63 -0
  148. package/src/fixtures/with_telemetry_utils.ts +2 -2
  149. package/src/guides/up_quick_start.sh +3 -11
  150. package/src/quality_of_service/alert_checker.ts +1 -1
  151. package/src/shared/cross_chain_test_harness.ts +23 -31
  152. package/src/shared/gas_portal_test_harness.ts +14 -21
  153. package/src/shared/jest_setup.ts +1 -1
  154. package/src/shared/submit-transactions.ts +12 -8
  155. package/src/shared/uniswap_l1_l2.ts +80 -88
  156. package/src/simulators/lending_simulator.ts +9 -6
  157. package/src/simulators/token_simulator.ts +5 -2
  158. package/src/spartan/DEVELOP.md +15 -3
  159. package/src/spartan/setup_test_wallets.ts +171 -127
  160. package/src/spartan/tx_metrics.ts +130 -0
  161. package/src/spartan/utils.ts +543 -45
  162. package/dest/fixtures/setup_l1_contracts.d.ts +0 -6
  163. package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
  164. package/dest/fixtures/setup_l1_contracts.js +0 -17
  165. package/src/fixtures/setup_l1_contracts.ts +0 -26
@@ -1,9 +1,14 @@
1
- import { getSchnorrAccount } from '@aztec/accounts/schnorr';
2
- import { Fr, TxStatus, getContractInstanceFromInstantiationParams, retryUntil } from '@aztec/aztec.js';
1
+ import { getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
2
+ import { Fr } from '@aztec/aztec.js/fields';
3
+ import { TxStatus } from '@aztec/aztec.js/tx';
4
+ import { EpochNumber } from '@aztec/foundation/branded-types';
3
5
  import { timesAsync, unique } from '@aztec/foundation/collection';
6
+ import { retryUntil } from '@aztec/foundation/retry';
7
+ import { pluralize } from '@aztec/foundation/string';
4
8
  import { TestContract, TestContractArtifact } from '@aztec/noir-test-contracts.js/Test';
5
- import { createPXEService, getPXEServiceConfig as getRpcConfig } from '@aztec/pxe/server';
9
+ import { getPXEConfig, getPXEConfig as getRpcConfig } from '@aztec/pxe/server';
6
10
  import { getRoundForOffense } from '@aztec/slasher';
11
+ import { TestWallet, proveInteraction } from '@aztec/test-wallet/server';
7
12
  import { submitTxsTo } from '../shared/submit-transactions.js';
8
13
  // submits a set of transactions to the provided Private eXecution Environment (PXE)
9
14
  export const submitComplexTxsTo = async (logger, from, spamContract, numTxs, opts = {})=>{
@@ -26,51 +31,42 @@ export const submitComplexTxsTo = async (logger, from, spamContract, numTxs, opt
26
31
  }
27
32
  return txs;
28
33
  };
29
- // creates an instance of the PXE and submit a given number of transactions to it.
30
- export const createPXEServiceAndSubmitTransactions = async (logger, node, numTxs, fundedAccount)=>{
34
+ // creates a wallet and submit a given number of transactions through it.
35
+ export const submitTransactions = async (logger, node, numTxs, fundedAccount)=>{
31
36
  const rpcConfig = getRpcConfig();
32
37
  rpcConfig.proverEnabled = false;
33
- const pxeService = await createPXEService(node, rpcConfig, {
38
+ const wallet = await TestWallet.create(node, {
39
+ ...getPXEConfig(),
40
+ proverEnabled: false
41
+ }, {
34
42
  useLogSuffix: true
35
43
  });
36
- const account = await getSchnorrAccount(pxeService, fundedAccount.secret, fundedAccount.signingKey, fundedAccount.salt);
37
- await account.register();
38
- const wallet = await account.getWallet();
39
- const txs = await submitTxsTo(pxeService, numTxs, wallet, logger);
40
- return {
41
- txs,
42
- pxeService,
43
- node
44
- };
44
+ const fundedAccountManager = await wallet.createSchnorrAccount(fundedAccount.secret, fundedAccount.salt);
45
+ return submitTxsTo(wallet, fundedAccountManager.address, numTxs, logger);
45
46
  };
46
- export async function createPXEServiceAndPrepareTransactions(logger, node, numTxs, fundedAccount) {
47
+ export async function prepareTransactions(logger, node, numTxs, fundedAccount) {
47
48
  const rpcConfig = getRpcConfig();
48
49
  rpcConfig.proverEnabled = false;
49
- const pxe = await createPXEService(node, rpcConfig, {
50
+ const wallet = await TestWallet.create(node, {
51
+ ...getPXEConfig(),
52
+ proverEnabled: false
53
+ }, {
50
54
  useLogSuffix: true
51
55
  });
52
- const account = await getSchnorrAccount(pxe, fundedAccount.secret, fundedAccount.signingKey, fundedAccount.salt);
53
- await account.register();
54
- const wallet = await account.getWallet();
55
- const testContractInstance = await getContractInstanceFromInstantiationParams(TestContractArtifact, {});
56
- await wallet.registerContract({
57
- instance: testContractInstance,
58
- artifact: TestContractArtifact
56
+ const fundedAccountManager = await wallet.createSchnorrAccount(fundedAccount.secret, fundedAccount.salt);
57
+ const testContractInstance = await getContractInstanceFromInstantiationParams(TestContractArtifact, {
58
+ salt: Fr.random()
59
59
  });
60
- const contract = await TestContract.at(testContractInstance.address, wallet);
61
- const txs = await timesAsync(numTxs, async ()=>{
62
- const tx = await contract.methods.emit_nullifier(Fr.random()).prove({
63
- from: account.getAddress()
60
+ await wallet.registerContract(testContractInstance, TestContractArtifact);
61
+ const contract = TestContract.at(testContractInstance.address, wallet);
62
+ return timesAsync(numTxs, async ()=>{
63
+ const tx = await proveInteraction(wallet, contract.methods.emit_nullifier(Fr.random()), {
64
+ from: fundedAccountManager.address
64
65
  });
65
66
  const txHash = tx.getTxHash();
66
67
  logger.info(`Tx prepared with hash ${txHash}`);
67
68
  return tx;
68
69
  });
69
- return {
70
- txs,
71
- pxeService: pxe,
72
- node
73
- };
74
70
  }
75
71
  export function awaitProposalExecution(slashingProposer, timeoutSeconds, logger) {
76
72
  return new Promise((resolve, reject)=>{
@@ -105,39 +101,38 @@ export async function awaitCommitteeExists({ rollup, logger }) {
105
101
  committee = await rollup.getCurrentEpochCommittee();
106
102
  return committee && committee.length > 0;
107
103
  }, 'non-empty committee', 60);
108
- return committee;
104
+ return committee.map((c)=>c.toString());
109
105
  }
110
- export async function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSize, epochDuration }) {
111
- logger.info(`Waiting for an offense to be detected`);
106
+ export async function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSize, epochDuration, waitUntilOffenseCount, timeoutSeconds = 120 }) {
107
+ const targetOffenseCount = waitUntilOffenseCount ?? 1;
108
+ logger.warn(`Waiting for ${pluralize('offense', targetOffenseCount)} to be detected`);
112
109
  const offenses = await retryUntil(async ()=>{
113
110
  const offenses = await nodeAdmin.getSlashOffenses('all');
114
- if (offenses.length > 0) {
111
+ if (offenses.length >= targetOffenseCount) {
115
112
  return offenses;
116
113
  }
117
- }, 'non-empty offenses', 60);
114
+ }, 'non-empty offenses', timeoutSeconds);
118
115
  logger.info(`Hit ${offenses.length} offenses on rounds ${unique(offenses.map((o)=>getRoundForOffense(o, {
119
116
  slashingRoundSize,
120
117
  epochDuration
121
- })))}`, offenses);
118
+ })))}`, {
119
+ offenses
120
+ });
122
121
  return offenses;
123
122
  }
124
123
  /**
125
124
  * Await the committee to be slashed out of the validator set.
126
125
  * Currently assumes that the committee is the same size as the validator set.
127
- */ export async function awaitCommitteeKicked({ rollup, cheatCodes, committee, slashFactory, slashingProposer, slashingRoundSize, aztecSlotDuration, logger, dateProvider }) {
126
+ */ export async function awaitCommitteeKicked({ rollup, cheatCodes, committee, slashFactory, slashingProposer, slashingRoundSize, aztecSlotDuration, aztecEpochDuration, logger, offenseEpoch }) {
128
127
  if (!slashingProposer) {
129
128
  throw new Error('No slashing proposer configured. Cannot test slashing.');
130
129
  }
131
- logger.info(`Advancing epochs so we start slashing`);
132
130
  await cheatCodes.debugRollup();
133
- await cheatCodes.advanceToNextEpoch({
134
- updateDateProvider: dateProvider
135
- });
136
- await cheatCodes.advanceToNextEpoch({
137
- updateDateProvider: dateProvider
138
- });
139
- // Await for the slash payload to be created if empire (no payload is created on tally until execution time)
140
131
  if (slashingProposer.type === 'empire') {
132
+ // Await for the slash payload to be created if empire (no payload is created on tally until execution time)
133
+ const targetEpoch = EpochNumber(await cheatCodes.getEpoch() + await rollup.getLagInEpochsForValidatorSet() + 1);
134
+ logger.info(`Advancing to epoch ${targetEpoch} so we start slashing`);
135
+ await cheatCodes.advanceToEpoch(targetEpoch);
141
136
  const slashPayloadEvents = await retryUntil(async ()=>{
142
137
  const events = await slashFactory.getSlashPayloadCreatedEvents();
143
138
  return events.length > 0 ? events : undefined;
@@ -145,6 +140,17 @@ export async function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSiz
145
140
  expect(slashPayloadEvents.length).toBe(1);
146
141
  // 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)
147
142
  expect(unique(slashPayloadEvents[0].slashes.map((slash)=>slash.validator.toString()))).toHaveLength(committee.length);
143
+ } else {
144
+ // Use the slash offset to ensure we are in the right epoch for tally
145
+ const slashOffsetInRounds = await slashingProposer.getSlashOffsetInRounds();
146
+ const slashingRoundSizeInEpochs = slashingRoundSize / aztecEpochDuration;
147
+ const slashingOffsetInEpochs = Number(slashOffsetInRounds) * slashingRoundSizeInEpochs;
148
+ const firstEpochInOffenseRound = offenseEpoch - offenseEpoch % slashingRoundSizeInEpochs;
149
+ const targetEpoch = firstEpochInOffenseRound + slashingOffsetInEpochs;
150
+ logger.info(`Advancing to epoch ${targetEpoch} so we start slashing`);
151
+ await cheatCodes.advanceToEpoch(EpochNumber(targetEpoch), {
152
+ offset: -aztecSlotDuration / 2
153
+ });
148
154
  }
149
155
  const attestersPre = await rollup.getAttesters();
150
156
  expect(attestersPre.length).toBe(committee.length);
@@ -152,7 +158,7 @@ export async function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSiz
152
158
  const attesterInfo = await rollup.getAttesterView(attester);
153
159
  expect(attesterInfo.status).toEqual(1); // Validating
154
160
  }
155
- const timeout = slashingRoundSize * 2 * aztecSlotDuration;
161
+ const timeout = slashingRoundSize * 2 * aztecSlotDuration + 30;
156
162
  logger.info(`Waiting for slash to be executed (timeout ${timeout}s)`);
157
163
  await awaitProposalExecution(slashingProposer, timeout, logger);
158
164
  // The attesters should still form the committee but they should be reduced to the "living" status
@@ -165,14 +171,9 @@ export async function awaitOffenseDetected({ logger, nodeAdmin, slashingRoundSiz
165
171
  const attesterInfo = await rollup.getAttesterView(attester);
166
172
  expect(attesterInfo.status).toEqual(2); // Living
167
173
  }
168
- logger.info(`Advancing two epochs to check current committee`);
174
+ logger.info(`Advancing to check current committee`);
169
175
  await cheatCodes.debugRollup();
170
- await cheatCodes.advanceToNextEpoch({
171
- updateDateProvider: dateProvider
172
- });
173
- await cheatCodes.advanceToNextEpoch({
174
- updateDateProvider: dateProvider
175
- });
176
+ await cheatCodes.advanceToEpoch(EpochNumber(await cheatCodes.getEpoch() + await rollup.getLagInEpochsForValidatorSet() + 1));
176
177
  await cheatCodes.debugRollup();
177
178
  const committeeNextEpoch = await rollup.getCurrentEpochCommittee();
178
179
  // The committee should be undefined, since the validator set is empty
@@ -1,6 +1,9 @@
1
- import { type AccountWallet, AztecAddress, type AztecNode, type Logger } from '@aztec/aztec.js';
1
+ import { 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 { TokenContract } from '@aztec/noir-contracts.js/Token';
3
5
  import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
6
+ import type { TestWallet } from '@aztec/test-wallet/server';
4
7
  import { type SubsystemsContext } from '../fixtures/snapshot_manager.js';
5
8
  import { TokenSimulator } from '../simulators/token_simulator.js';
6
9
  export declare class TokenContractTest {
@@ -13,11 +16,9 @@ export declare class TokenContractTest {
13
16
  tokenSim: TokenSimulator;
14
17
  node: AztecNode;
15
18
  badAccount: InvalidAccountContract;
16
- admin: AccountWallet;
19
+ wallet: TestWallet;
17
20
  adminAddress: AztecAddress;
18
- account1: AccountWallet;
19
21
  account1Address: AztecAddress;
20
- account2: AccountWallet;
21
22
  account2Address: AztecAddress;
22
23
  constructor(testName: string);
23
24
  /**
@@ -31,4 +32,4 @@ export declare class TokenContractTest {
31
32
  teardown(): Promise<void>;
32
33
  applyMintSnapshot(): Promise<void>;
33
34
  }
34
- //# sourceMappingURL=token_contract_test.d.ts.map
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5fY29udHJhY3RfdGVzdC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2UyZV90b2tlbl9jb250cmFjdC90b2tlbl9jb250cmFjdF90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3RGLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSTVELE9BQU8sRUFFTCxLQUFLLGlCQUFpQixFQUl2QixNQUFNLGlDQUFpQyxDQUFDO0FBRXpDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUlsRSxxQkFBYSxpQkFBaUI7SUFDNUIsTUFBTSxDQUFDLFVBQVUsU0FBVTtJQUMzQixNQUFNLENBQUMsWUFBWSxTQUFTO0lBQzVCLE1BQU0sQ0FBQyxjQUFjLFNBQU87SUFDNUIsT0FBTyxDQUFDLGVBQWUsQ0FBbUI7SUFDMUMsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUNmLEtBQUssRUFBRyxhQUFhLENBQUM7SUFDdEIsUUFBUSxFQUFHLGNBQWMsQ0FBQztJQUMxQixJQUFJLEVBQUcsU0FBUyxDQUFDO0lBRWpCLFVBQVUsRUFBRyxzQkFBc0IsQ0FBQztJQUNwQyxNQUFNLEVBQUcsVUFBVSxDQUFDO0lBQ3BCLFlBQVksRUFBRyxZQUFZLENBQUM7SUFDNUIsZUFBZSxFQUFHLFlBQVksQ0FBQztJQUMvQixlQUFlLEVBQUcsWUFBWSxDQUFDO0lBRS9CLFlBQVksUUFBUSxFQUFFLE1BQU0sRUFLM0I7SUFFRDs7OztPQUlHO0lBQ0csa0JBQWtCLGtCQWdFdkI7SUFFSyxLQUFLLGtCQUVWO0lBRUQsUUFBUSxHQUFJLENBQUMsOEpBSTJEO0lBRWxFLFFBQVEsa0JBRWI7SUFFSyxpQkFBaUIsa0JBb0N0QjtDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"token_contract_test.d.ts","sourceRoot":"","sources":["../../src/e2e_token_contract/token_contract_test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,KAAK,MAAM,EAAgB,MAAM,iBAAiB,CAAC;AAC9G,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AAItF,OAAO,EAEL,KAAK,iBAAiB,EAIvB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAIlE,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,UAAU,SAAU;IAC3B,MAAM,CAAC,YAAY,SAAS;IAC5B,MAAM,CAAC,cAAc,SAAO;IAC5B,OAAO,CAAC,eAAe,CAAmB;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAG,aAAa,CAAC;IACtB,QAAQ,EAAG,cAAc,CAAC;IAC1B,IAAI,EAAG,SAAS,CAAC;IAEjB,UAAU,EAAG,sBAAsB,CAAC;IACpC,KAAK,EAAG,aAAa,CAAC;IACtB,YAAY,EAAG,YAAY,CAAC;IAC5B,QAAQ,EAAG,aAAa,CAAC;IACzB,eAAe,EAAG,YAAY,CAAC;IAC/B,QAAQ,EAAG,aAAa,CAAC;IACzB,eAAe,EAAG,YAAY,CAAC;gBAEnB,QAAQ,EAAE,MAAM;IAO5B;;;;OAIG;IACG,kBAAkB;IAkElB,KAAK;IAIX,QAAQ,GAAI,CAAC,EACX,MAAM,MAAM,EACZ,OAAO,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,CAAC,CAAC,EACjD,UAAS,CAAC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAA2B,KAChG,OAAO,CAAC,IAAI,CAAC,CAAwD;IAElE,QAAQ;IAIR,iBAAiB;CAqCxB"}
1
+ {"version":3,"file":"token_contract_test.d.ts","sourceRoot":"","sources":["../../src/e2e_token_contract/token_contract_test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAI5D,OAAO,EAEL,KAAK,iBAAiB,EAIvB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAIlE,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,UAAU,SAAU;IAC3B,MAAM,CAAC,YAAY,SAAS;IAC5B,MAAM,CAAC,cAAc,SAAO;IAC5B,OAAO,CAAC,eAAe,CAAmB;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAG,aAAa,CAAC;IACtB,QAAQ,EAAG,cAAc,CAAC;IAC1B,IAAI,EAAG,SAAS,CAAC;IAEjB,UAAU,EAAG,sBAAsB,CAAC;IACpC,MAAM,EAAG,UAAU,CAAC;IACpB,YAAY,EAAG,YAAY,CAAC;IAC5B,eAAe,EAAG,YAAY,CAAC;IAC/B,eAAe,EAAG,YAAY,CAAC;IAE/B,YAAY,QAAQ,EAAE,MAAM,EAK3B;IAED;;;;OAIG;IACG,kBAAkB,kBAgEvB;IAEK,KAAK,kBAEV;IAED,QAAQ,GAAI,CAAC,8JAI2D;IAElE,QAAQ,kBAEb;IAEK,iBAAiB,kBAoCtB;CACF"}
@@ -1,5 +1,4 @@
1
- import { getSchnorrWallet } from '@aztec/accounts/schnorr';
2
- import { createLogger } from '@aztec/aztec.js';
1
+ import { createLogger } from '@aztec/aztec.js/log';
3
2
  import { TokenContract } from '@aztec/noir-contracts.js/Token';
4
3
  import { InvalidAccountContract } from '@aztec/noir-test-contracts.js/InvalidAccount';
5
4
  import { jest } from '@jest/globals';
@@ -17,11 +16,9 @@ export class TokenContractTest {
17
16
  tokenSim;
18
17
  node;
19
18
  badAccount;
20
- admin;
19
+ wallet;
21
20
  adminAddress;
22
- account1;
23
21
  account1Address;
24
- account2;
25
22
  account2Address;
26
23
  constructor(testName){
27
24
  this.logger = createLogger(`e2e:e2e_token_contract:${testName}`);
@@ -36,27 +33,27 @@ export class TokenContractTest {
36
33
  */ async applyBaseSnapshots() {
37
34
  // Adding a timeout of 2 minutes in here such that it is propagated to the underlying tests
38
35
  jest.setTimeout(120_000);
39
- await this.snapshotManager.snapshot('3_accounts', deployAccounts(3, this.logger), async ({ deployedAccounts }, { pxe, aztecNode })=>{
36
+ await this.snapshotManager.snapshot('3_accounts', deployAccounts(3, this.logger), ({ deployedAccounts }, { wallet, aztecNode })=>{
40
37
  this.node = aztecNode;
41
- const wallets = await Promise.all(deployedAccounts.map((a)=>getSchnorrWallet(pxe, a.address, a.signingKey)));
42
- [this.admin, this.account1, this.account2] = wallets;
43
- [this.adminAddress, this.account1Address, this.account2Address] = wallets.map((w)=>w.getAddress());
38
+ this.wallet = wallet;
39
+ [this.adminAddress, this.account1Address, this.account2Address] = deployedAccounts.map((acc)=>acc.address);
40
+ return Promise.resolve();
44
41
  });
45
42
  await this.snapshotManager.snapshot('e2e_token_contract', async ()=>{
46
43
  // Create the token contract state.
47
44
  // Move this account thing to addAccounts above?
48
45
  this.logger.verbose(`Public deploy accounts...`);
49
- await publicDeployAccounts(this.admin, [
46
+ await publicDeployAccounts(this.wallet, [
50
47
  this.adminAddress,
51
48
  this.account1Address
52
49
  ]);
53
50
  this.logger.verbose(`Deploying TokenContract...`);
54
- const asset = await TokenContract.deploy(this.admin, this.adminAddress, TokenContractTest.TOKEN_NAME, TokenContractTest.TOKEN_SYMBOL, TokenContractTest.TOKEN_DECIMALS).send({
51
+ const asset = await TokenContract.deploy(this.wallet, this.adminAddress, TokenContractTest.TOKEN_NAME, TokenContractTest.TOKEN_SYMBOL, TokenContractTest.TOKEN_DECIMALS).send({
55
52
  from: this.adminAddress
56
53
  }).deployed();
57
54
  this.logger.verbose(`Token deployed to ${asset.address}`);
58
55
  this.logger.verbose(`Deploying bad account...`);
59
- this.badAccount = await InvalidAccountContract.deploy(this.admin).send({
56
+ this.badAccount = await InvalidAccountContract.deploy(this.wallet).send({
60
57
  from: this.adminAddress
61
58
  }).deployed();
62
59
  this.logger.verbose(`Deployed to ${this.badAccount.address}.`);
@@ -66,13 +63,13 @@ export class TokenContractTest {
66
63
  };
67
64
  }, async ({ tokenContractAddress, badAccountAddress })=>{
68
65
  // Restore the token contract state.
69
- this.asset = await TokenContract.at(tokenContractAddress, this.admin);
66
+ this.asset = TokenContract.at(tokenContractAddress, this.wallet);
70
67
  this.logger.verbose(`Token contract address: ${this.asset.address}`);
71
- this.tokenSim = new TokenSimulator(this.asset, this.admin, this.adminAddress, this.logger, [
68
+ this.tokenSim = new TokenSimulator(this.asset, this.wallet, this.adminAddress, this.logger, [
72
69
  this.adminAddress,
73
70
  this.account1Address
74
71
  ]);
75
- this.badAccount = await InvalidAccountContract.at(badAccountAddress, this.admin);
72
+ this.badAccount = InvalidAccountContract.at(badAccountAddress, this.wallet);
76
73
  this.logger.verbose(`Bad account address: ${this.badAccount.address}`);
77
74
  expect(await this.asset.methods.get_admin().simulate({
78
75
  from: this.adminAddress
@@ -92,14 +89,14 @@ export class TokenContractTest {
92
89
  }
93
90
  async applyMintSnapshot() {
94
91
  await this.snapshotManager.snapshot('mint', async ()=>{
95
- const { asset, admin, adminAddress } = this;
92
+ const { asset, adminAddress } = this;
96
93
  const amount = 10000n;
97
94
  this.logger.verbose(`Minting ${amount} publicly...`);
98
95
  await asset.methods.mint_to_public(adminAddress, amount).send({
99
96
  from: adminAddress
100
97
  }).wait();
101
98
  this.logger.verbose(`Minting ${amount} privately...`);
102
- await mintTokensToPrivate(asset, adminAddress, admin, adminAddress, amount);
99
+ await mintTokensToPrivate(asset, adminAddress, adminAddress, amount);
103
100
  this.logger.verbose(`Minting complete.`);
104
101
  return {
105
102
  amount
@@ -1,12 +1,14 @@
1
1
  import type { InitialAccountData } from '@aztec/accounts/testing';
2
- import { type AccountWalletWithSecretKey, type AztecNode, type CompleteAddress, EthAddress, type Logger } from '@aztec/aztec.js';
2
+ import { AztecAddress, EthAddress } from '@aztec/aztec.js/addresses';
3
+ import { type Logger } from '@aztec/aztec.js/log';
4
+ import type { AztecNode } from '@aztec/aztec.js/node';
3
5
  import { CheatCodes } from '@aztec/aztec/testing';
4
6
  import { type ClientProtocolCircuitVerifier } from '@aztec/bb-prover';
5
- import type { BlobSinkServer } from '@aztec/blob-sink/server';
6
- import type { DeployL1ContractsReturnType } from '@aztec/ethereum';
7
+ import type { DeployAztecL1ContractsReturnType } from '@aztec/ethereum/deploy-aztec-l1-contracts';
7
8
  import { TokenContract } from '@aztec/noir-contracts.js/Token';
8
- import type { PXEService } from '@aztec/pxe/server';
9
+ import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
9
10
  import type { AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
11
+ import { TestWallet } from '@aztec/test-wallet/server';
10
12
  import { TokenSimulator } from '../simulators/token_simulator.js';
11
13
  import { type SubsystemsContext } from './snapshot_manager.js';
12
14
  /**
@@ -23,25 +25,25 @@ export declare class FullProverTest {
23
25
  static TOKEN_DECIMALS: bigint;
24
26
  private snapshotManager;
25
27
  logger: Logger;
28
+ wallet: TestWallet;
29
+ provenWallet: TestWallet;
30
+ accounts: AztecAddress[];
26
31
  deployedAccounts: InitialAccountData[];
27
- wallets: AccountWalletWithSecretKey[];
28
- accounts: CompleteAddress[];
29
32
  fakeProofsAsset: TokenContract;
33
+ fakeProofsAssetInstance: ContractInstanceWithAddress;
30
34
  tokenSim: TokenSimulator;
31
35
  aztecNode: AztecNode;
32
36
  aztecNodeAdmin: AztecNodeAdmin;
33
- pxe: PXEService;
34
37
  cheatCodes: CheatCodes;
35
- blobSink: BlobSinkServer;
36
38
  private provenComponents;
37
39
  private bbConfigCleanup?;
38
40
  private acvmConfigCleanup?;
39
41
  circuitProofVerifier?: ClientProtocolCircuitVerifier;
40
- provenAssets: TokenContract[];
42
+ provenAsset: TokenContract;
41
43
  private context;
42
44
  private proverNode;
43
45
  private simulatedProverNode;
44
- l1Contracts: DeployL1ContractsReturnType;
46
+ l1Contracts: DeployAztecL1ContractsReturnType;
45
47
  proverAddress: EthAddress;
46
48
  constructor(testName: string, minNumberOfTxsPerBlock: number, coinbase: EthAddress, realProofs?: boolean);
47
49
  /**
@@ -56,4 +58,4 @@ export declare class FullProverTest {
56
58
  teardown(): Promise<void>;
57
59
  applyMintSnapshot(): Promise<void>;
58
60
  }
59
- //# sourceMappingURL=e2e_prover_test.d.ts.map
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZTJlX3Byb3Zlcl90ZXN0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZml4dHVyZXMvZTJlX3Byb3Zlcl90ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFFTCxLQUFLLDZCQUE2QixFQUduQyxNQUFNLGtCQUFrQixDQUFDO0FBRzFCLE9BQU8sS0FBSyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFJbEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRS9ELE9BQU8sS0FBSyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUUsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBTXZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUdsRSxPQUFPLEVBRUwsS0FBSyxpQkFBaUIsRUFJdkIsTUFBTSx1QkFBdUIsQ0FBQztBQVUvQjs7Ozs7R0FLRztBQUVILHFCQUFhLGNBQWM7SUE2QnZCLE9BQU8sQ0FBQyxzQkFBc0I7SUFFOUIsT0FBTyxDQUFDLFVBQVU7SUE5QnBCLE1BQU0sQ0FBQyxVQUFVLFNBQVU7SUFDM0IsTUFBTSxDQUFDLFlBQVksU0FBUztJQUM1QixNQUFNLENBQUMsY0FBYyxTQUFPO0lBQzVCLE9BQU8sQ0FBQyxlQUFlLENBQW1CO0lBQzFDLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDZixNQUFNLEVBQUcsVUFBVSxDQUFDO0lBQ3BCLFlBQVksRUFBRyxVQUFVLENBQUM7SUFDMUIsUUFBUSxFQUFFLFlBQVksRUFBRSxDQUFNO0lBQzlCLGdCQUFnQixFQUFHLGtCQUFrQixFQUFFLENBQUM7SUFDeEMsZUFBZSxFQUFHLGFBQWEsQ0FBQztJQUNoQyx1QkFBdUIsRUFBRywyQkFBMkIsQ0FBQztJQUN0RCxRQUFRLEVBQUcsY0FBYyxDQUFDO0lBQzFCLFNBQVMsRUFBRyxTQUFTLENBQUM7SUFDdEIsY0FBYyxFQUFHLGNBQWMsQ0FBQztJQUNoQyxVQUFVLEVBQUcsVUFBVSxDQUFDO0lBQ3hCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBcUI7SUFDN0MsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFzQjtJQUM5QyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBc0I7SUFDaEQsb0JBQW9CLENBQUMsRUFBRSw2QkFBNkIsQ0FBQztJQUNyRCxXQUFXLEVBQUcsYUFBYSxDQUFDO0lBQzVCLE9BQU8sQ0FBQyxPQUFPLENBQXFCO0lBQ3BDLE9BQU8sQ0FBQyxVQUFVLENBQWM7SUFDaEMsT0FBTyxDQUFDLG1CQUFtQixDQUFjO0lBQ2xDLFdBQVcsRUFBRyxnQ0FBZ0MsQ0FBQztJQUMvQyxhQUFhLEVBQUcsVUFBVSxDQUFDO0lBRWxDLFlBQ0UsUUFBUSxFQUFFLE1BQU0sRUFDUixzQkFBc0IsRUFBRSxNQUFNLEVBQ3RDLFFBQVEsRUFBRSxVQUFVLEVBQ1osVUFBVSxVQUFPLEVBVzFCO0lBRUQ7Ozs7T0FJRztJQUNHLGtCQUFrQixrQkFxRHZCO0lBRUssS0FBSyxrQkFvSVY7WUFFYSxZQUFZO0lBUzFCLFFBQVEsR0FBSSxDQUFDLDhKQUkyRDtJQUVsRSxRQUFRLGtCQWNiO0lBRUssaUJBQWlCLGtCQTZDdEI7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"e2e_prover_test.d.ts","sourceRoot":"","sources":["../../src/fixtures/e2e_prover_test.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,UAAU,EACV,KAAK,MAAM,EAGZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAEL,KAAK,6BAA6B,EAGnC,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAInE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAMtE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAGlE,OAAO,EAEL,KAAK,iBAAiB,EAIvB,MAAM,uBAAuB,CAAC;AAU/B;;;;;GAKG;AAEH,qBAAa,cAAc;IA6BvB,OAAO,CAAC,sBAAsB;IAE9B,OAAO,CAAC,UAAU;IA9BpB,MAAM,CAAC,UAAU,SAAU;IAC3B,MAAM,CAAC,YAAY,SAAS;IAC5B,MAAM,CAAC,cAAc,SAAO;IAC5B,OAAO,CAAC,eAAe,CAAmB;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,kBAAkB,EAAE,CAAM;IAC5C,OAAO,EAAE,0BAA0B,EAAE,CAAM;IAC3C,QAAQ,EAAE,eAAe,EAAE,CAAM;IACjC,eAAe,EAAG,aAAa,CAAC;IAChC,QAAQ,EAAG,cAAc,CAAC;IAC1B,SAAS,EAAG,SAAS,CAAC;IACtB,cAAc,EAAG,cAAc,CAAC;IAChC,GAAG,EAAG,UAAU,CAAC;IACjB,UAAU,EAAG,UAAU,CAAC;IACxB,QAAQ,EAAG,cAAc,CAAC;IAC1B,OAAO,CAAC,gBAAgB,CAAqB;IAC7C,OAAO,CAAC,eAAe,CAAC,CAAsB;IAC9C,OAAO,CAAC,iBAAiB,CAAC,CAAsB;IAChD,oBAAoB,CAAC,EAAE,6BAA6B,CAAC;IACrD,YAAY,EAAE,aAAa,EAAE,CAAM;IACnC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,mBAAmB,CAAc;IAClC,WAAW,EAAG,2BAA2B,CAAC;IAC1C,aAAa,EAAG,UAAU,CAAC;gBAGhC,QAAQ,EAAE,MAAM,EACR,sBAAsB,EAAE,MAAM,EACtC,QAAQ,EAAE,UAAU,EACZ,UAAU,UAAO;IAa3B;;;;OAIG;IACG,kBAAkB;IAwDlB,KAAK;YAiKG,YAAY;IAS1B,QAAQ,GAAI,CAAC,EACX,MAAM,MAAM,EACZ,OAAO,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,CAAC,CAAC,EACjD,UAAS,CAAC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAA2B,KAChG,OAAO,CAAC,IAAI,CAAC,CAAwD;IAElE,QAAQ;IAeR,iBAAiB;CAiDxB"}
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;AAG1B,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,2CAA2C,CAAC;AAIlG,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAMvD,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAGlE,OAAO,EAEL,KAAK,iBAAiB,EAIvB,MAAM,uBAAuB,CAAC;AAU/B;;;;;GAKG;AAEH,qBAAa,cAAc;IA6BvB,OAAO,CAAC,sBAAsB;IAE9B,OAAO,CAAC,UAAU;IA9BpB,MAAM,CAAC,UAAU,SAAU;IAC3B,MAAM,CAAC,YAAY,SAAS;IAC5B,MAAM,CAAC,cAAc,SAAO;IAC5B,OAAO,CAAC,eAAe,CAAmB;IAC1C,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,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,mBAAmB,CAAc;IAClC,WAAW,EAAG,gCAAgC,CAAC;IAC/C,aAAa,EAAG,UAAU,CAAC;IAElC,YACE,QAAQ,EAAE,MAAM,EACR,sBAAsB,EAAE,MAAM,EACtC,QAAQ,EAAE,UAAU,EACZ,UAAU,UAAO,EAW1B;IAED;;;;OAIG;IACG,kBAAkB,kBAqDvB;IAEK,KAAK,kBAoIV;YAEa,YAAY;IAS1B,QAAQ,GAAI,CAAC,8JAI2D;IAElE,QAAQ,kBAcb;IAEK,iBAAiB,kBA6CtB;CACF"}
@@ -1,8 +1,9 @@
1
- import { SchnorrAccountContractArtifact, getSchnorrAccount, getSchnorrWalletWithSecretKey } from '@aztec/accounts/schnorr';
2
1
  import { createArchiver } from '@aztec/archiver';
3
- import { EthAddress, createLogger } from '@aztec/aztec.js';
2
+ import { EthAddress } from '@aztec/aztec.js/addresses';
3
+ import { createLogger } from '@aztec/aztec.js/log';
4
4
  import { BBCircuitVerifier, QueuedIVCVerifier, TestCircuitVerifier } from '@aztec/bb-prover';
5
- import { createBlobSinkClient } from '@aztec/blob-sink/client';
5
+ import { BackendType, Barretenberg } from '@aztec/bb.js';
6
+ import { createBlobClientWithFileStores } from '@aztec/blob-client/client';
6
7
  import { Buffer32 } from '@aztec/foundation/buffer';
7
8
  import { SecretValue } from '@aztec/foundation/config';
8
9
  import { FeeAssetHandlerAbi } from '@aztec/l1-artifacts';
@@ -15,7 +16,7 @@ import { TokenSimulator } from '../simulators/token_simulator.js';
15
16
  import { getACVMConfig } from './get_acvm_config.js';
16
17
  import { getBBConfig } from './get_bb_config.js';
17
18
  import { createSnapshotManager, deployAccounts, publicDeployAccounts } from './snapshot_manager.js';
18
- import { getPrivateKeyFromIndex, getSponsoredFPCAddress, setupPXEService } from './utils.js';
19
+ import { getPrivateKeyFromIndex, getSponsoredFPCAddress, setupPXEAndGetWallet } from './utils.js';
19
20
  const { E2E_DATA_PATH: dataPath } = process.env;
20
21
  /**
21
22
  * Largely taken from the e2e_token_contract test file. We deploy 2 accounts and a token contract.
@@ -30,21 +31,21 @@ const { E2E_DATA_PATH: dataPath } = process.env;
30
31
  static TOKEN_DECIMALS = 18n;
31
32
  snapshotManager;
32
33
  logger;
33
- deployedAccounts;
34
- wallets;
34
+ wallet;
35
+ provenWallet;
35
36
  accounts;
37
+ deployedAccounts;
36
38
  fakeProofsAsset;
39
+ fakeProofsAssetInstance;
37
40
  tokenSim;
38
41
  aztecNode;
39
42
  aztecNodeAdmin;
40
- pxe;
41
43
  cheatCodes;
42
- blobSink;
43
44
  provenComponents;
44
45
  bbConfigCleanup;
45
46
  acvmConfigCleanup;
46
47
  circuitProofVerifier;
47
- provenAssets;
48
+ provenAsset;
48
49
  context;
49
50
  proverNode;
50
51
  simulatedProverNode;
@@ -53,16 +54,12 @@ const { E2E_DATA_PATH: dataPath } = process.env;
53
54
  constructor(testName, minNumberOfTxsPerBlock, coinbase, realProofs = true){
54
55
  this.minNumberOfTxsPerBlock = minNumberOfTxsPerBlock;
55
56
  this.realProofs = realProofs;
56
- this.deployedAccounts = [];
57
- this.wallets = [];
58
57
  this.accounts = [];
59
58
  this.provenComponents = [];
60
- this.provenAssets = [];
61
59
  this.snapshot = (name, apply, restore = ()=>Promise.resolve())=>this.snapshotManager.snapshot(name, apply, restore);
62
60
  this.logger = createLogger(`e2e:full_prover_test:${testName}`);
63
61
  this.snapshotManager = createSnapshotManager(`full_prover_integration/${testName}`, dataPath, {
64
62
  startProverNode: true,
65
- fundRewardDistributor: true,
66
63
  coinbase
67
64
  }, {
68
65
  realVerifier: realProofs
@@ -73,33 +70,35 @@ const { E2E_DATA_PATH: dataPath } = process.env;
73
70
  * 1. Add 2 accounts.
74
71
  * 2. Publicly deploy accounts, deploy token contract
75
72
  */ async applyBaseSnapshots() {
76
- await this.snapshotManager.snapshot('2_accounts', deployAccounts(2, this.logger), async ({ deployedAccounts }, { pxe })=>{
73
+ await this.snapshotManager.snapshot('2_accounts', deployAccounts(2, this.logger), ({ deployedAccounts }, { wallet })=>{
77
74
  this.deployedAccounts = deployedAccounts;
78
- this.wallets = await Promise.all(deployedAccounts.map((a)=>getSchnorrWalletWithSecretKey(pxe, a.secret, a.signingKey, a.salt)));
79
- this.accounts = this.wallets.map((w)=>w.getCompleteAddress());
80
- this.wallets.forEach((w, i)=>this.logger.verbose(`Wallet ${i} address: ${w.getAddress()}`));
75
+ this.accounts = deployedAccounts.map((a)=>a.address);
76
+ this.wallet = wallet;
77
+ return Promise.resolve();
81
78
  });
82
79
  await this.snapshotManager.snapshot('client_prover_integration', async ()=>{
83
80
  // Create the token contract state.
84
81
  // Move this account thing to addAccounts above?
85
82
  this.logger.verbose(`Public deploy accounts...`);
86
- await publicDeployAccounts(this.wallets[0], this.accounts.slice(0, 2));
83
+ await publicDeployAccounts(this.wallet, this.accounts.slice(0, 2));
87
84
  this.logger.verbose(`Deploying TokenContract...`);
88
- const asset = await TokenContract.deploy(this.wallets[0], this.accounts[0], FullProverTest.TOKEN_NAME, FullProverTest.TOKEN_SYMBOL, FullProverTest.TOKEN_DECIMALS).send({
89
- from: this.wallets[0].getAddress()
90
- }).deployed();
85
+ const { contract: asset, instance } = await TokenContract.deploy(this.wallet, this.accounts[0], FullProverTest.TOKEN_NAME, FullProverTest.TOKEN_SYMBOL, FullProverTest.TOKEN_DECIMALS).send({
86
+ from: this.accounts[0]
87
+ }).wait();
91
88
  this.logger.verbose(`Token deployed to ${asset.address}`);
92
89
  return {
93
- tokenContractAddress: asset.address
90
+ tokenContractAddress: asset.address,
91
+ tokenContractInstance: instance
94
92
  };
95
- }, async ({ tokenContractAddress })=>{
93
+ }, async ({ tokenContractAddress, tokenContractInstance })=>{
96
94
  // Restore the token contract state.
97
- this.fakeProofsAsset = await TokenContract.at(tokenContractAddress, this.wallets[0]);
95
+ this.fakeProofsAsset = TokenContract.at(tokenContractAddress, this.wallet);
96
+ this.fakeProofsAssetInstance = tokenContractInstance;
98
97
  this.logger.verbose(`Token contract address: ${this.fakeProofsAsset.address}`);
99
- this.tokenSim = new TokenSimulator(this.fakeProofsAsset, this.wallets[0], this.wallets[0].getAddress(), this.logger, this.accounts.map((a)=>a.address));
98
+ this.tokenSim = new TokenSimulator(this.fakeProofsAsset, this.wallet, this.accounts[0], this.logger, this.accounts);
100
99
  expect(await this.fakeProofsAsset.methods.get_admin().simulate({
101
- from: this.accounts[0].address
102
- })).toBe(this.accounts[0].address.toBigInt());
100
+ from: this.accounts[0]
101
+ })).toBe(this.accounts[0].toBigInt());
103
102
  });
104
103
  }
105
104
  async setup() {
@@ -107,11 +106,10 @@ const { E2E_DATA_PATH: dataPath } = process.env;
107
106
  // We don't wish to mark as proven automatically, so we set the flag to false
108
107
  this.context.watcher.setIsMarkingAsProven(false);
109
108
  this.simulatedProverNode = this.context.proverNode;
110
- ({ pxe: this.pxe, aztecNode: this.aztecNode, deployL1ContractsValues: this.l1Contracts, cheatCodes: this.cheatCodes, blobSink: this.blobSink } = this.context);
109
+ ({ aztecNode: this.aztecNode, deployL1ContractsValues: this.l1Contracts, cheatCodes: this.cheatCodes } = this.context);
111
110
  this.aztecNodeAdmin = this.context.aztecNode;
112
- const blobSinkClient = createBlobSinkClient({
113
- blobSinkUrl: `http://localhost:${this.blobSink.port}`
114
- });
111
+ const config = this.context.aztecNodeConfig;
112
+ const blobClient = await createBlobClientWithFileStores(config, this.logger);
115
113
  // Configure a full prover PXE
116
114
  let acvmConfig;
117
115
  let bbConfig;
@@ -125,9 +123,9 @@ const { E2E_DATA_PATH: dataPath } = process.env;
125
123
  }
126
124
  this.acvmConfigCleanup = acvmConfig.cleanup;
127
125
  this.bbConfigCleanup = bbConfig.cleanup;
128
- if (!bbConfig?.bbWorkingDirectory || !bbConfig?.bbBinaryPath) {
129
- throw new Error(`Test must be run with BB native configuration`);
130
- }
126
+ await Barretenberg.initSingleton({
127
+ backend: BackendType.NativeUnixSocket
128
+ });
131
129
  const verifier = await BBCircuitVerifier.new(bbConfig);
132
130
  this.circuitProofVerifier = new QueuedIVCVerifier(bbConfig, verifier);
133
131
  this.logger.debug(`Configuring the node for real proofs...`);
@@ -147,31 +145,22 @@ const { E2E_DATA_PATH: dataPath } = process.env;
147
145
  this.logger.verbose(`Marking current block as proven`);
148
146
  await this.context.cheatCodes.rollup.markAsProven();
149
147
  this.logger.verbose(`Main setup completed, initializing full prover PXE, Node, and Prover Node`);
148
+ const { wallet: provenWallet, teardown: provenTeardown } = await setupPXEAndGetWallet(this.aztecNode, {
149
+ proverEnabled: this.realProofs
150
+ }, undefined, true);
151
+ this.logger.debug(`Contract address ${this.fakeProofsAsset.address}`);
152
+ await provenWallet.registerContract(this.fakeProofsAssetInstance, TokenContract.artifact);
150
153
  for(let i = 0; i < 2; i++){
151
- const result = await setupPXEService(this.aztecNode, {
152
- proverEnabled: this.realProofs,
153
- bbBinaryPath: bbConfig?.bbBinaryPath,
154
- bbWorkingDirectory: bbConfig?.bbWorkingDirectory
155
- }, undefined, true);
156
- this.logger.debug(`Contract address ${this.fakeProofsAsset.address}`);
157
- await result.pxe.registerContract(this.fakeProofsAsset);
158
- for(let i = 0; i < 2; i++){
159
- await result.pxe.registerAccount(this.deployedAccounts[i].secret, this.wallets[i].getCompleteAddress().partialAddress);
160
- await this.pxe.registerAccount(this.deployedAccounts[i].secret, this.wallets[i].getCompleteAddress().partialAddress);
161
- }
162
- const account = await getSchnorrAccount(result.pxe, this.deployedAccounts[0].secret, this.deployedAccounts[0].signingKey, this.deployedAccounts[0].salt);
163
- await result.pxe.registerContract({
164
- instance: account.getInstance(),
165
- artifact: SchnorrAccountContractArtifact
166
- });
167
- const provenWallet = await account.getWallet();
168
- const asset = await TokenContract.at(this.fakeProofsAsset.address, provenWallet);
169
- this.provenComponents.push({
170
- pxe: result.pxe,
171
- teardown: result.teardown
172
- });
173
- this.provenAssets.push(asset);
154
+ await provenWallet.createSchnorrAccount(this.deployedAccounts[i].secret, this.deployedAccounts[i].salt);
155
+ await this.wallet.createSchnorrAccount(this.deployedAccounts[i].secret, this.deployedAccounts[i].salt);
174
156
  }
157
+ const asset = TokenContract.at(this.fakeProofsAsset.address, provenWallet);
158
+ this.provenComponents.push({
159
+ wallet: provenWallet,
160
+ teardown: provenTeardown
161
+ });
162
+ this.provenAsset = asset;
163
+ this.provenWallet = provenWallet;
175
164
  this.logger.info(`Full prover PXE started`);
176
165
  // Shutdown the current, simulated prover node
177
166
  this.logger.verbose('Shutting down simulated prover node');
@@ -182,7 +171,8 @@ const { E2E_DATA_PATH: dataPath } = process.env;
182
171
  ...this.context.aztecNodeConfig,
183
172
  dataDirectory: undefined
184
173
  }, {
185
- blobSinkClient
174
+ blobClient,
175
+ dateProvider: this.context.dateProvider
186
176
  }, {
187
177
  blockUntilSync: true
188
178
  });
@@ -210,14 +200,14 @@ const { E2E_DATA_PATH: dataPath } = process.env;
210
200
  txGatheringBatchSize: 10,
211
201
  txGatheringMaxParallelRequestsPerNode: 100,
212
202
  txGatheringTimeoutMs: 24_000,
213
- proverNodeFailedEpochStore: undefined
203
+ proverNodeFailedEpochStore: undefined,
204
+ proverNodeEpochProvingDelayMs: undefined
214
205
  };
215
206
  const sponsoredFPCAddress = await getSponsoredFPCAddress();
216
207
  const { prefilledPublicData } = await getGenesisValues(this.context.initialFundedAccounts.map((a)=>a.address).concat(sponsoredFPCAddress));
217
208
  this.proverNode = await createProverNode(proverConfig, {
218
209
  aztecNodeTxProvider: this.aztecNode,
219
- archiver: archiver,
220
- blobSinkClient
210
+ archiver: archiver
221
211
  }, {
222
212
  prefilledPublicData
223
213
  });
@@ -250,6 +240,7 @@ const { E2E_DATA_PATH: dataPath } = process.env;
250
240
  }
251
241
  // clean up the full prover node
252
242
  await this.proverNode.stop();
243
+ await Barretenberg.destroySingleton();
253
244
  await this.bbConfigCleanup?.();
254
245
  await this.acvmConfigCleanup?.();
255
246
  }
@@ -259,19 +250,19 @@ const { E2E_DATA_PATH: dataPath } = process.env;
259
250
  const privateAmount = 10000n;
260
251
  const publicAmount = 10000n;
261
252
  this.logger.verbose(`Minting ${privateAmount + publicAmount} publicly...`);
262
- await asset.methods.mint_to_public(accounts[0].address, privateAmount + publicAmount).send({
263
- from: accounts[0].address
253
+ await asset.methods.mint_to_public(accounts[0], privateAmount + publicAmount).send({
254
+ from: accounts[0]
264
255
  }).wait();
265
256
  this.logger.verbose(`Transferring ${privateAmount} to private...`);
266
- await asset.methods.transfer_to_private(accounts[0].address, privateAmount).send({
267
- from: accounts[0].address
257
+ await asset.methods.transfer_to_private(accounts[0], privateAmount).send({
258
+ from: accounts[0]
268
259
  }).wait();
269
260
  this.logger.verbose(`Minting complete.`);
270
261
  return {
271
262
  amount: publicAmount
272
263
  };
273
264
  }, async ({ amount })=>{
274
- const { fakeProofsAsset: asset, accounts: [{ address }], tokenSim } = this;
265
+ const { fakeProofsAsset: asset, accounts: [address], tokenSim } = this;
275
266
  tokenSim.mintPublic(address, amount);
276
267
  const publicBalance = await asset.methods.balance_of_public(address).simulate({
277
268
  from: address