@aztec/end-to-end 0.0.1-commit.c7c42ec → 0.0.1-commit.d1f2d6c

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 (166) hide show
  1. package/dest/bench/client_flows/benchmark.d.ts +3 -2
  2. package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
  3. package/dest/bench/client_flows/benchmark.js +21 -1
  4. package/dest/bench/client_flows/client_flows_benchmark.d.ts +12 -13
  5. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  6. package/dest/bench/client_flows/client_flows_benchmark.js +118 -133
  7. package/dest/bench/client_flows/data_extractor.js +3 -1
  8. package/dest/bench/utils.d.ts +9 -8
  9. package/dest/bench/utils.d.ts.map +1 -1
  10. package/dest/bench/utils.js +17 -12
  11. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +6 -7
  12. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
  13. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +96 -112
  14. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +15 -10
  15. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
  16. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +89 -70
  17. package/dest/e2e_deploy_contract/deploy_test.d.ts +4 -3
  18. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
  19. package/dest/e2e_deploy_contract/deploy_test.js +18 -13
  20. package/dest/e2e_epochs/epochs_test.d.ts +1 -1
  21. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  22. package/dest/e2e_epochs/epochs_test.js +5 -2
  23. package/dest/e2e_fees/bridging_race.notest.js +3 -5
  24. package/dest/e2e_fees/fees_test.d.ts +13 -13
  25. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  26. package/dest/e2e_fees/fees_test.js +123 -141
  27. package/dest/e2e_l1_publisher/write_json.d.ts +2 -2
  28. package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
  29. package/dest/e2e_l1_publisher/write_json.js +19 -15
  30. package/dest/e2e_nested_contract/nested_contract_test.d.ts +6 -9
  31. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
  32. package/dest/e2e_nested_contract/nested_contract_test.js +31 -39
  33. package/dest/e2e_p2p/inactivity_slash_test.d.ts +3 -3
  34. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
  35. package/dest/e2e_p2p/inactivity_slash_test.js +3 -3
  36. package/dest/e2e_p2p/p2p_network.d.ts +7 -6
  37. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  38. package/dest/e2e_p2p/p2p_network.js +109 -103
  39. package/dest/e2e_p2p/shared.d.ts +6 -6
  40. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  41. package/dest/e2e_p2p/shared.js +11 -18
  42. package/dest/e2e_token_contract/token_contract_test.d.ts +16 -9
  43. package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
  44. package/dest/e2e_token_contract/token_contract_test.js +89 -91
  45. package/dest/fixtures/e2e_prover_test.d.ts +8 -14
  46. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  47. package/dest/fixtures/e2e_prover_test.js +85 -94
  48. package/dest/fixtures/setup.d.ts +216 -0
  49. package/dest/fixtures/setup.d.ts.map +1 -0
  50. package/dest/fixtures/setup.js +684 -0
  51. package/dest/fixtures/token_utils.d.ts +1 -1
  52. package/dest/fixtures/token_utils.d.ts.map +1 -1
  53. package/dest/fixtures/token_utils.js +7 -4
  54. package/dest/fixtures/utils.d.ts +5 -194
  55. package/dest/fixtures/utils.d.ts.map +1 -1
  56. package/dest/fixtures/utils.js +4 -619
  57. package/dest/quality_of_service/grafana_client.d.ts +41 -0
  58. package/dest/quality_of_service/grafana_client.d.ts.map +1 -0
  59. package/dest/quality_of_service/{alert_checker.js → grafana_client.js} +1 -1
  60. package/dest/quality_of_service/prometheus_client.d.ts +38 -0
  61. package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
  62. package/dest/quality_of_service/prometheus_client.js +67 -0
  63. package/dest/shared/cross_chain_test_harness.d.ts +16 -6
  64. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  65. package/dest/shared/cross_chain_test_harness.js +13 -13
  66. package/dest/shared/gas_portal_test_harness.d.ts +11 -1
  67. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  68. package/dest/shared/gas_portal_test_harness.js +1 -1
  69. package/dest/shared/index.d.ts +2 -2
  70. package/dest/shared/index.d.ts.map +1 -1
  71. package/dest/shared/submit-transactions.d.ts +3 -3
  72. package/dest/shared/submit-transactions.d.ts.map +1 -1
  73. package/dest/shared/submit-transactions.js +9 -11
  74. package/dest/shared/uniswap_l1_l2.d.ts +3 -28
  75. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  76. package/dest/shared/uniswap_l1_l2.js +51 -33
  77. package/dest/simulators/lending_simulator.d.ts +5 -1
  78. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  79. package/dest/simulators/lending_simulator.js +2 -2
  80. package/dest/spartan/setup_test_wallets.d.ts +4 -3
  81. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  82. package/dest/spartan/setup_test_wallets.js +61 -34
  83. package/dest/spartan/tx_metrics.d.ts +17 -2
  84. package/dest/spartan/tx_metrics.d.ts.map +1 -1
  85. package/dest/spartan/tx_metrics.js +183 -6
  86. package/dest/spartan/utils/bot.d.ts +27 -0
  87. package/dest/spartan/utils/bot.d.ts.map +1 -0
  88. package/dest/spartan/utils/bot.js +141 -0
  89. package/dest/spartan/utils/chaos.d.ts +79 -0
  90. package/dest/spartan/utils/chaos.d.ts.map +1 -0
  91. package/dest/spartan/utils/chaos.js +142 -0
  92. package/dest/spartan/utils/clients.d.ts +39 -0
  93. package/dest/spartan/utils/clients.d.ts.map +1 -0
  94. package/dest/spartan/utils/clients.js +90 -0
  95. package/dest/spartan/utils/config.d.ts +36 -0
  96. package/dest/spartan/utils/config.d.ts.map +1 -0
  97. package/dest/spartan/utils/config.js +20 -0
  98. package/dest/spartan/utils/health.d.ts +63 -0
  99. package/dest/spartan/utils/health.d.ts.map +1 -0
  100. package/dest/spartan/utils/health.js +202 -0
  101. package/dest/spartan/utils/helm.d.ts +15 -0
  102. package/dest/spartan/utils/helm.d.ts.map +1 -0
  103. package/dest/spartan/utils/helm.js +47 -0
  104. package/dest/spartan/utils/index.d.ts +9 -0
  105. package/dest/spartan/utils/index.d.ts.map +1 -0
  106. package/dest/spartan/utils/index.js +18 -0
  107. package/dest/spartan/utils/k8s.d.ts +98 -0
  108. package/dest/spartan/utils/k8s.d.ts.map +1 -0
  109. package/dest/spartan/utils/k8s.js +257 -0
  110. package/dest/spartan/utils/nodes.d.ts +31 -0
  111. package/dest/spartan/utils/nodes.d.ts.map +1 -0
  112. package/dest/spartan/utils/nodes.js +290 -0
  113. package/dest/spartan/utils/scripts.d.ts +16 -0
  114. package/dest/spartan/utils/scripts.d.ts.map +1 -0
  115. package/dest/spartan/utils/scripts.js +66 -0
  116. package/dest/spartan/utils.d.ts +2 -253
  117. package/dest/spartan/utils.d.ts.map +1 -1
  118. package/dest/spartan/utils.js +1 -892
  119. package/package.json +40 -39
  120. package/src/bench/client_flows/benchmark.ts +24 -2
  121. package/src/bench/client_flows/client_flows_benchmark.ts +138 -204
  122. package/src/bench/client_flows/data_extractor.ts +1 -1
  123. package/src/bench/utils.ts +20 -14
  124. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +104 -142
  125. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +127 -116
  126. package/src/e2e_deploy_contract/deploy_test.ts +21 -14
  127. package/src/e2e_epochs/epochs_test.ts +31 -26
  128. package/src/e2e_fees/bridging_race.notest.ts +3 -9
  129. package/src/e2e_fees/fees_test.ts +172 -220
  130. package/src/e2e_l1_publisher/write_json.ts +21 -16
  131. package/src/e2e_nested_contract/nested_contract_test.ts +33 -56
  132. package/src/e2e_p2p/inactivity_slash_test.ts +5 -5
  133. package/src/e2e_p2p/p2p_network.ts +171 -168
  134. package/src/e2e_p2p/shared.ts +16 -25
  135. package/src/e2e_token_contract/token_contract_test.ts +103 -118
  136. package/src/fixtures/e2e_prover_test.ts +98 -133
  137. package/src/fixtures/setup.ts +1006 -0
  138. package/src/fixtures/token_utils.ts +6 -5
  139. package/src/fixtures/utils.ts +27 -907
  140. package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +1 -1
  141. package/src/quality_of_service/prometheus_client.ts +113 -0
  142. package/src/shared/cross_chain_test_harness.ts +16 -36
  143. package/src/shared/gas_portal_test_harness.ts +1 -1
  144. package/src/shared/index.ts +1 -1
  145. package/src/shared/submit-transactions.ts +9 -15
  146. package/src/shared/uniswap_l1_l2.ts +58 -77
  147. package/src/simulators/lending_simulator.ts +2 -2
  148. package/src/spartan/setup_test_wallets.ts +79 -25
  149. package/src/spartan/tx_metrics.ts +129 -9
  150. package/src/spartan/utils/bot.ts +185 -0
  151. package/src/spartan/utils/chaos.ts +253 -0
  152. package/src/spartan/utils/clients.ts +100 -0
  153. package/src/spartan/utils/config.ts +26 -0
  154. package/src/spartan/utils/health.ts +255 -0
  155. package/src/spartan/utils/helm.ts +84 -0
  156. package/src/spartan/utils/index.ts +62 -0
  157. package/src/spartan/utils/k8s.ts +375 -0
  158. package/src/spartan/utils/nodes.ts +323 -0
  159. package/src/spartan/utils/scripts.ts +63 -0
  160. package/src/spartan/utils.ts +1 -1158
  161. package/dest/fixtures/snapshot_manager.d.ts +0 -93
  162. package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
  163. package/dest/fixtures/snapshot_manager.js +0 -493
  164. package/dest/quality_of_service/alert_checker.d.ts +0 -41
  165. package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
  166. package/src/fixtures/snapshot_manager.ts +0 -651
@@ -1,9 +1,11 @@
1
1
  import type { AztecNodeService } from '@aztec/aztec-node';
2
2
  import { AztecAddress } from '@aztec/aztec.js/addresses';
3
- import { BatchCall, type SentTx, type WaitOpts } from '@aztec/aztec.js/contracts';
3
+ import { BatchCall, NO_WAIT, type WaitOpts } from '@aztec/aztec.js/contracts';
4
+ import { waitForTx } from '@aztec/aztec.js/node';
4
5
  import { mean, stdDev, times } from '@aztec/foundation/collection';
5
6
  import { BenchmarkingContract } from '@aztec/noir-test-contracts.js/Benchmarking';
6
- import type { MetricsType } from '@aztec/telemetry-client';
7
+ import type { TxHash } from '@aztec/stdlib/tx';
8
+ import type { MetricDefinition } from '@aztec/telemetry-client';
7
9
  import type { BenchmarkDataPoint, BenchmarkMetricsType, BenchmarkTelemetryClient } from '@aztec/telemetry-client/bench';
8
10
 
9
11
  import { mkdirSync, writeFileSync } from 'fs';
@@ -16,14 +18,14 @@ import { type EndToEndContext, type SetupOptions, setup } from '../fixtures/util
16
18
  */
17
19
  export async function benchmarkSetup(
18
20
  opts: Partial<SetupOptions> & {
19
- /** What metrics to export */ metrics: (MetricsType | MetricFilter)[];
21
+ /** What metrics to export */ metrics: (MetricDefinition | MetricFilter)[];
20
22
  /** Where to output the benchmark data (defaults to BENCH_OUTPUT or bench.json) */
21
23
  benchOutput?: string;
22
24
  },
23
25
  ) {
24
26
  const context = await setup(1, { ...opts, telemetryConfig: { benchmark: true } });
25
27
  const defaultAccountAddress = context.accounts[0];
26
- const contract = await BenchmarkingContract.deploy(context.wallet).send({ from: defaultAccountAddress }).deployed();
28
+ const contract = await BenchmarkingContract.deploy(context.wallet).send({ from: defaultAccountAddress });
27
29
  context.logger.info(`Deployed benchmarking contract at ${contract.address}`);
28
30
  const sequencer = (context.aztecNode as AztecNodeService).getSequencer()!;
29
31
  const telemetry = context.telemetryClient! as BenchmarkTelemetryClient;
@@ -47,7 +49,7 @@ export async function benchmarkSetup(
47
49
  }
48
50
 
49
51
  type MetricFilter = {
50
- source: MetricsType;
52
+ source: MetricDefinition;
51
53
  transform: (value: number) => number;
52
54
  name: string;
53
55
  unit?: string;
@@ -62,17 +64,21 @@ export type GithubActionBenchmarkResult = {
62
64
  extra?: string;
63
65
  };
64
66
 
67
+ function isMetricDefinition(f: MetricDefinition | MetricFilter): f is MetricDefinition {
68
+ return 'description' in f;
69
+ }
70
+
65
71
  function formatMetricsForGithubBenchmarkAction(
66
72
  data: BenchmarkMetricsType,
67
- filter: (MetricsType | MetricFilter)[],
73
+ filter: (MetricDefinition | MetricFilter)[],
68
74
  ): GithubActionBenchmarkResult[] {
69
75
  const allFilters: MetricFilter[] = filter.map(f =>
70
- typeof f === 'string' ? { name: f, source: f, transform: (x: number) => x, unit: undefined } : f,
76
+ isMetricDefinition(f) ? { name: f.name, source: f, transform: (x: number) => x, unit: f.unit } : f,
71
77
  );
72
78
  return data.flatMap(meter => {
73
79
  return meter.metrics
74
- .filter(metric => allFilters.map(f => f.source).includes(metric.name as MetricsType))
75
- .map(metric => [metric, allFilters.find(f => f.source === metric.name)!] as const)
80
+ .filter(metric => allFilters.map(f => f.source.name).includes(metric.name))
81
+ .map(metric => [metric, allFilters.find(f => f.source.name === metric.name)!] as const)
76
82
  .map(([metric, filter]) => ({
77
83
  name: `${meter.name}/${filter.name}`,
78
84
  unit: filter.unit ?? metric.unit ?? 'unknown',
@@ -138,18 +144,18 @@ export async function sendTxs(
138
144
  context: EndToEndContext,
139
145
  contract: BenchmarkingContract,
140
146
  heavyPublicCompute: boolean = false,
141
- ): Promise<SentTx[]> {
147
+ ): Promise<TxHash[]> {
142
148
  const calls = await Promise.all(times(txCount, index => makeCall(index, context, contract, heavyPublicCompute)));
143
149
  context.logger.info(`Creating ${txCount} txs`);
144
150
  const [from] = context.accounts;
145
151
  context.logger.info(`Sending ${txCount} txs`);
146
- return calls.map(call => call.send({ from }));
152
+ return Promise.all(calls.map(call => call.send({ from, wait: NO_WAIT })));
147
153
  }
148
154
 
149
- export async function waitTxs(txs: SentTx[], context: EndToEndContext, txWaitOpts?: WaitOpts) {
155
+ export async function waitTxs(txs: TxHash[], context: EndToEndContext, txWaitOpts?: WaitOpts) {
150
156
  context.logger.info(`Awaiting ${txs.length} txs to be mined`);
151
- await Promise.all(txs.map(tx => tx.wait(txWaitOpts)));
152
- context.logger.info(`All ${txs.length} txs have been mined`);
157
+ await Promise.all(txs.map(txHash => waitForTx(context.aztecNode, txHash, txWaitOpts)));
158
+ context.logger.info(`${txs.length} txs have been mined`);
153
159
  }
154
160
 
155
161
  function randomBytesAsBigInts(length: number): bigint[] {
@@ -13,17 +13,9 @@ import type { TestWallet } from '@aztec/test-wallet/server';
13
13
 
14
14
  import { jest } from '@jest/globals';
15
15
 
16
- import {
17
- type ISnapshotManager,
18
- type SubsystemsContext,
19
- createSnapshotManager,
20
- deployAccounts,
21
- publicDeployAccounts,
22
- } from '../fixtures/snapshot_manager.js';
16
+ import { type EndToEndContext, deployAccounts, publicDeployAccounts, setup, teardown } from '../fixtures/setup.js';
23
17
  import { TokenSimulator } from '../simulators/token_simulator.js';
24
18
 
25
- const { E2E_DATA_PATH: dataPath } = process.env;
26
-
27
19
  export class Role {
28
20
  private isAdmin = false;
29
21
  private isMinter = false;
@@ -55,7 +47,7 @@ export class BlacklistTokenContractTest {
55
47
  // This value MUST match the same value that we have in the contract
56
48
  static CHANGE_ROLES_DELAY = 86400;
57
49
 
58
- private snapshotManager: ISnapshotManager;
50
+ context!: EndToEndContext;
59
51
  logger: Logger;
60
52
  wallet!: TestWallet;
61
53
  asset!: TokenBlacklistContract;
@@ -71,7 +63,6 @@ export class BlacklistTokenContractTest {
71
63
 
72
64
  constructor(testName: string) {
73
65
  this.logger = createLogger(`e2e:e2e_blacklist_token_contract:${testName}`);
74
- this.snapshotManager = createSnapshotManager(`e2e_blacklist_token_contract/${testName}`, dataPath);
75
66
  }
76
67
 
77
68
  async crossTimestampOfChange() {
@@ -83,86 +74,72 @@ export class BlacklistTokenContractTest {
83
74
  }
84
75
 
85
76
  /**
86
- * Adds two state shifts to snapshot manager.
77
+ * Applies base setup:
87
78
  * 1. Add 3 accounts.
88
79
  * 2. Publicly deploy accounts, deploy token contract and a "bad account".
89
80
  */
90
- async applyBaseSnapshots() {
81
+ async applyBaseSetup() {
91
82
  // Adding a timeout of 2 minutes in here such that it is propagated to the underlying tests
92
83
  jest.setTimeout(120_000);
93
84
 
94
- await this.snapshotManager.snapshot(
95
- '3_accounts',
96
- deployAccounts(3, this.logger),
97
- ({ deployedAccounts }, { cheatCodes, aztecNode, sequencer, wallet }) => {
98
- this.cheatCodes = cheatCodes;
99
- this.aztecNode = aztecNode;
100
- this.sequencer = sequencer;
101
- this.wallet = wallet;
102
- this.adminAddress = deployedAccounts[0].address;
103
- this.otherAddress = deployedAccounts[1].address;
104
- this.blacklistedAddress = deployedAccounts[2].address;
105
- return Promise.resolve();
106
- },
85
+ this.logger.info('Deploying 3 accounts');
86
+ const { deployedAccounts } = await deployAccounts(
87
+ 3,
88
+ this.logger,
89
+ )({
90
+ wallet: this.context.wallet,
91
+ initialFundedAccounts: this.context.initialFundedAccounts,
92
+ });
93
+
94
+ this.cheatCodes = this.context.cheatCodes;
95
+ this.aztecNode = this.context.aztecNodeService!;
96
+ this.sequencer = this.context.sequencer!;
97
+ this.wallet = this.context.wallet;
98
+ this.adminAddress = deployedAccounts[0].address;
99
+ this.otherAddress = deployedAccounts[1].address;
100
+ this.blacklistedAddress = deployedAccounts[2].address;
101
+
102
+ this.logger.info('Setting up blacklist token contract');
103
+ // Create the token contract state.
104
+ this.logger.verbose(`Public deploy accounts...`);
105
+ await publicDeployAccounts(this.wallet, [this.adminAddress, this.otherAddress, this.blacklistedAddress]);
106
+
107
+ this.logger.verbose(`Deploying TokenContract...`);
108
+ this.asset = await TokenBlacklistContract.deploy(this.wallet, this.adminAddress).send({
109
+ from: this.adminAddress,
110
+ });
111
+ this.logger.verbose(`Token deployed to ${this.asset.address}`);
112
+
113
+ this.logger.verbose(`Deploying bad account...`);
114
+ this.badAccount = await InvalidAccountContract.deploy(this.wallet).send({ from: this.adminAddress });
115
+ this.logger.verbose(`Deployed to ${this.badAccount.address}.`);
116
+
117
+ await this.crossTimestampOfChange();
118
+
119
+ this.tokenSim = new TokenSimulator(
120
+ this.asset as unknown as TokenContract,
121
+ this.wallet,
122
+ this.adminAddress,
123
+ this.logger,
124
+ [this.adminAddress, this.otherAddress, this.blacklistedAddress],
107
125
  );
108
126
 
109
- await this.snapshotManager.snapshot(
110
- 'e2e_blacklist_token_contract',
111
- async () => {
112
- // Create the token contract state.
113
- // Move this account thing to addAccounts above?
114
- this.logger.verbose(`Public deploy accounts...`);
115
- await publicDeployAccounts(this.wallet, [this.adminAddress, this.otherAddress, this.blacklistedAddress]);
116
-
117
- this.logger.verbose(`Deploying TokenContract...`);
118
- this.asset = await TokenBlacklistContract.deploy(this.wallet, this.adminAddress)
119
- .send({ from: this.adminAddress })
120
- .deployed();
121
- this.logger.verbose(`Token deployed to ${this.asset.address}`);
122
-
123
- this.logger.verbose(`Deploying bad account...`);
124
- this.badAccount = await InvalidAccountContract.deploy(this.wallet).send({ from: this.adminAddress }).deployed();
125
- this.logger.verbose(`Deployed to ${this.badAccount.address}.`);
126
-
127
- await this.crossTimestampOfChange();
128
-
129
- return { tokenContractAddress: this.asset.address, badAccountAddress: this.badAccount.address };
130
- },
131
- async ({ tokenContractAddress, badAccountAddress }) => {
132
- // Restore the token contract state.
133
- this.asset = TokenBlacklistContract.at(tokenContractAddress, this.wallet);
134
- this.logger.verbose(`Token contract address: ${this.asset.address}`);
135
-
136
- this.tokenSim = new TokenSimulator(
137
- this.asset as unknown as TokenContract,
138
- this.wallet,
139
- this.adminAddress,
140
- this.logger,
141
- [this.adminAddress, this.otherAddress, this.blacklistedAddress],
142
- );
143
-
144
- this.badAccount = InvalidAccountContract.at(badAccountAddress, this.wallet);
145
- this.logger.verbose(`Bad account address: ${this.badAccount.address}`);
146
-
147
- expect(await this.asset.methods.get_roles(this.adminAddress).simulate({ from: this.adminAddress })).toEqual(
148
- new Role().withAdmin().toNoirStruct(),
149
- );
150
- },
127
+ expect(await this.asset.methods.get_roles(this.adminAddress).simulate({ from: this.adminAddress })).toEqual(
128
+ new Role().withAdmin().toNoirStruct(),
151
129
  );
152
130
  }
153
131
 
154
132
  async setup() {
155
- await this.snapshotManager.setup();
133
+ this.logger.info('Setting up fresh context');
134
+ this.context = await setup(0, {
135
+ fundSponsoredFPC: true,
136
+ skipAccountDeployment: true,
137
+ });
138
+ await this.applyBaseSetup();
156
139
  }
157
140
 
158
- snapshot = <T>(
159
- name: string,
160
- apply: (context: SubsystemsContext) => Promise<T>,
161
- restore: (snapshotData: T, context: SubsystemsContext) => Promise<void> = () => Promise.resolve(),
162
- ): Promise<void> => this.snapshotManager.snapshot(name, apply, restore);
163
-
164
141
  async teardown() {
165
- await this.snapshotManager.teardown();
142
+ await teardown(this.context);
166
143
  }
167
144
 
168
145
  async addPendingShieldNoteToPXE(
@@ -174,7 +151,7 @@ export class BlacklistTokenContractTest {
174
151
  ) {
175
152
  const txEffects = await this.aztecNode.getTxEffect(txHash);
176
153
  await contract.methods
177
- .deliver_transparent_note(
154
+ .process_transparent_note(
178
155
  contract.address,
179
156
  amount,
180
157
  secretHash,
@@ -186,71 +163,56 @@ export class BlacklistTokenContractTest {
186
163
  .simulate({ from: recipient });
187
164
  }
188
165
 
189
- async applyMintSnapshot() {
190
- await this.snapshotManager.snapshot(
191
- 'mint',
192
- async () => {
193
- const { asset } = this;
194
- const amount = 10000n;
195
-
196
- const adminMinterRole = new Role().withAdmin().withMinter();
197
- await this.asset.methods
198
- .update_roles(this.adminAddress, adminMinterRole.toNoirStruct())
199
- .send({ from: this.adminAddress })
200
- .wait();
201
-
202
- const blacklistRole = new Role().withBlacklisted();
203
- await this.asset.methods
204
- .update_roles(this.blacklistedAddress, blacklistRole.toNoirStruct())
205
- .send({ from: this.adminAddress })
206
- .wait();
207
-
208
- await this.crossTimestampOfChange();
209
-
210
- expect(await this.asset.methods.get_roles(this.adminAddress).simulate({ from: this.adminAddress })).toEqual(
211
- adminMinterRole.toNoirStruct(),
212
- );
213
-
214
- this.logger.verbose(`Minting ${amount} publicly...`);
215
- await asset.methods.mint_public(this.adminAddress, amount).send({ from: this.adminAddress }).wait();
216
-
217
- this.logger.verbose(`Minting ${amount} privately...`);
218
- const secret = Fr.random();
219
- const secretHash = await computeSecretHash(secret);
220
- const receipt = await asset.methods.mint_private(amount, secretHash).send({ from: this.adminAddress }).wait();
221
-
222
- await this.addPendingShieldNoteToPXE(asset, this.adminAddress, amount, secretHash, receipt.txHash);
223
- const txClaim = asset.methods
224
- .redeem_shield(this.adminAddress, amount, secret)
225
- .send({ from: this.adminAddress });
226
- await txClaim.wait();
227
- this.logger.verbose(`Minting complete.`);
228
-
229
- return { amount };
230
- },
231
- async ({ amount }) => {
232
- const { asset, tokenSim } = this;
233
- tokenSim.mintPublic(this.adminAddress, amount);
234
-
235
- const publicBalance = await asset.methods
236
- .balance_of_public(this.adminAddress)
237
- .simulate({ from: this.adminAddress });
238
- this.logger.verbose(`Public balance of wallet 0: ${publicBalance}`);
239
- expect(publicBalance).toEqual(this.tokenSim.balanceOfPublic(this.adminAddress));
240
-
241
- tokenSim.mintPrivate(this.adminAddress, amount);
242
- const privateBalance = await asset.methods
243
- .balance_of_private(this.adminAddress)
244
- .simulate({ from: this.adminAddress });
245
- this.logger.verbose(`Private balance of wallet 0: ${privateBalance}`);
246
- expect(privateBalance).toEqual(tokenSim.balanceOfPrivate(this.adminAddress));
247
-
248
- const totalSupply = await asset.methods.total_supply().simulate({ from: this.adminAddress });
249
- this.logger.verbose(`Total supply: ${totalSupply}`);
250
- expect(totalSupply).toEqual(tokenSim.totalSupply);
251
-
252
- return Promise.resolve();
253
- },
166
+ async applyMint() {
167
+ this.logger.info('Applying mint setup');
168
+ const { asset, tokenSim } = this;
169
+ const amount = 10000n;
170
+
171
+ const adminMinterRole = new Role().withAdmin().withMinter();
172
+ await this.asset.methods
173
+ .update_roles(this.adminAddress, adminMinterRole.toNoirStruct())
174
+ .send({ from: this.adminAddress });
175
+
176
+ const blacklistRole = new Role().withBlacklisted();
177
+ await this.asset.methods
178
+ .update_roles(this.blacklistedAddress, blacklistRole.toNoirStruct())
179
+ .send({ from: this.adminAddress });
180
+
181
+ await this.crossTimestampOfChange();
182
+
183
+ expect(await this.asset.methods.get_roles(this.adminAddress).simulate({ from: this.adminAddress })).toEqual(
184
+ adminMinterRole.toNoirStruct(),
254
185
  );
186
+
187
+ this.logger.verbose(`Minting ${amount} publicly...`);
188
+ await asset.methods.mint_public(this.adminAddress, amount).send({ from: this.adminAddress });
189
+
190
+ this.logger.verbose(`Minting ${amount} privately...`);
191
+ const secret = Fr.random();
192
+ const secretHash = await computeSecretHash(secret);
193
+ const receipt = await asset.methods.mint_private(amount, secretHash).send({ from: this.adminAddress });
194
+
195
+ await this.addPendingShieldNoteToPXE(asset, this.adminAddress, amount, secretHash, receipt.txHash);
196
+ await asset.methods.redeem_shield(this.adminAddress, amount, secret).send({ from: this.adminAddress });
197
+ this.logger.verbose(`Minting complete.`);
198
+
199
+ tokenSim.mintPublic(this.adminAddress, amount);
200
+
201
+ const publicBalance = await asset.methods
202
+ .balance_of_public(this.adminAddress)
203
+ .simulate({ from: this.adminAddress });
204
+ this.logger.verbose(`Public balance of wallet 0: ${publicBalance}`);
205
+ expect(publicBalance).toEqual(this.tokenSim.balanceOfPublic(this.adminAddress));
206
+
207
+ tokenSim.mintPrivate(this.adminAddress, amount);
208
+ const privateBalance = await asset.methods
209
+ .balance_of_private(this.adminAddress)
210
+ .simulate({ from: this.adminAddress });
211
+ this.logger.verbose(`Private balance of wallet 0: ${privateBalance}`);
212
+ expect(privateBalance).toEqual(tokenSim.balanceOfPrivate(this.adminAddress));
213
+
214
+ const totalSupply = await asset.methods.total_supply().simulate({ from: this.adminAddress });
215
+ this.logger.verbose(`Total supply: ${totalSupply}`);
216
+ expect(totalSupply).toEqual(tokenSim.totalSupply);
255
217
  }
256
218
  }