@aztec/end-to-end 0.0.0-test.0 → 0.0.1-commit.21caa21

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 (174) hide show
  1. package/dest/bench/client_flows/benchmark.d.ts +61 -0
  2. package/dest/bench/client_flows/benchmark.d.ts.map +1 -0
  3. package/dest/bench/client_flows/benchmark.js +261 -0
  4. package/dest/bench/client_flows/client_flows_benchmark.d.ts +80 -0
  5. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -0
  6. package/dest/bench/client_flows/client_flows_benchmark.js +334 -0
  7. package/dest/bench/client_flows/config.d.ts +14 -0
  8. package/dest/bench/client_flows/config.d.ts.map +1 -0
  9. package/dest/bench/client_flows/config.js +106 -0
  10. package/dest/bench/client_flows/data_extractor.d.ts +2 -0
  11. package/dest/bench/client_flows/data_extractor.d.ts.map +1 -0
  12. package/dest/bench/client_flows/data_extractor.js +77 -0
  13. package/dest/bench/utils.d.ts +12 -38
  14. package/dest/bench/utils.d.ts.map +1 -1
  15. package/dest/bench/utils.js +26 -66
  16. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +21 -13
  17. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
  18. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +85 -57
  19. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +19 -25
  20. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
  21. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +50 -70
  22. package/dest/e2e_deploy_contract/deploy_test.d.ts +16 -8
  23. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
  24. package/dest/e2e_deploy_contract/deploy_test.js +13 -19
  25. package/dest/e2e_epochs/epochs_test.d.ts +59 -18
  26. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  27. package/dest/e2e_epochs/epochs_test.js +226 -44
  28. package/dest/e2e_fees/bridging_race.notest.d.ts +2 -0
  29. package/dest/e2e_fees/bridging_race.notest.d.ts.map +1 -0
  30. package/dest/e2e_fees/bridging_race.notest.js +63 -0
  31. package/dest/e2e_fees/fees_test.d.ts +21 -10
  32. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  33. package/dest/e2e_fees/fees_test.js +103 -109
  34. package/dest/e2e_l1_publisher/write_json.d.ts +10 -0
  35. package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -0
  36. package/dest/e2e_l1_publisher/write_json.js +58 -0
  37. package/dest/e2e_multi_validator/utils.d.ts +12 -0
  38. package/dest/e2e_multi_validator/utils.d.ts.map +1 -0
  39. package/dest/e2e_multi_validator/utils.js +214 -0
  40. package/dest/e2e_nested_contract/nested_contract_test.d.ts +10 -7
  41. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
  42. package/dest/e2e_nested_contract/nested_contract_test.js +24 -20
  43. package/dest/e2e_p2p/inactivity_slash_test.d.ts +31 -0
  44. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -0
  45. package/dest/e2e_p2p/inactivity_slash_test.js +139 -0
  46. package/dest/e2e_p2p/p2p_network.d.ts +275 -23
  47. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  48. package/dest/e2e_p2p/p2p_network.js +184 -131
  49. package/dest/e2e_p2p/shared.d.ts +43 -7
  50. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  51. package/dest/e2e_p2p/shared.js +164 -19
  52. package/dest/e2e_token_contract/token_contract_test.d.ts +12 -6
  53. package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
  54. package/dest/e2e_token_contract/token_contract_test.js +50 -26
  55. package/dest/fixtures/e2e_prover_test.d.ts +63 -0
  56. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -0
  57. package/dest/{e2e_prover → fixtures}/e2e_prover_test.js +104 -105
  58. package/dest/fixtures/fixtures.d.ts +6 -7
  59. package/dest/fixtures/fixtures.d.ts.map +1 -1
  60. package/dest/fixtures/fixtures.js +4 -3
  61. package/dest/fixtures/get_acvm_config.d.ts +2 -2
  62. package/dest/fixtures/get_acvm_config.d.ts.map +1 -1
  63. package/dest/fixtures/get_acvm_config.js +2 -14
  64. package/dest/fixtures/get_bb_config.d.ts +2 -2
  65. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  66. package/dest/fixtures/get_bb_config.js +10 -17
  67. package/dest/fixtures/index.d.ts +1 -1
  68. package/dest/fixtures/l1_to_l2_messaging.d.ts +9 -6
  69. package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
  70. package/dest/fixtures/l1_to_l2_messaging.js +44 -18
  71. package/dest/fixtures/logging.d.ts +1 -1
  72. package/dest/fixtures/setup_l1_contracts.d.ts +476 -5
  73. package/dest/fixtures/setup_l1_contracts.d.ts.map +1 -1
  74. package/dest/fixtures/setup_l1_contracts.js +4 -4
  75. package/dest/fixtures/setup_p2p_test.d.ts +15 -14
  76. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  77. package/dest/fixtures/setup_p2p_test.js +81 -21
  78. package/dest/fixtures/snapshot_manager.d.ts +17 -9
  79. package/dest/fixtures/snapshot_manager.d.ts.map +1 -1
  80. package/dest/fixtures/snapshot_manager.js +147 -121
  81. package/dest/fixtures/token_utils.d.ts +10 -4
  82. package/dest/fixtures/token_utils.d.ts.map +1 -1
  83. package/dest/fixtures/token_utils.js +28 -12
  84. package/dest/fixtures/utils.d.ts +524 -40
  85. package/dest/fixtures/utils.d.ts.map +1 -1
  86. package/dest/fixtures/utils.js +464 -369
  87. package/dest/fixtures/web3signer.d.ts +5 -0
  88. package/dest/fixtures/web3signer.d.ts.map +1 -0
  89. package/dest/fixtures/web3signer.js +53 -0
  90. package/dest/fixtures/with_telemetry_utils.d.ts +1 -1
  91. package/dest/index.d.ts +1 -1
  92. package/dest/quality_of_service/alert_checker.d.ts +2 -2
  93. package/dest/quality_of_service/alert_checker.d.ts.map +1 -1
  94. package/dest/shared/cross_chain_test_harness.d.ts +39 -34
  95. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  96. package/dest/shared/cross_chain_test_harness.js +104 -50
  97. package/dest/shared/gas_portal_test_harness.d.ts +29 -31
  98. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  99. package/dest/shared/gas_portal_test_harness.js +51 -30
  100. package/dest/shared/index.d.ts +1 -1
  101. package/dest/shared/jest_setup.d.ts +1 -1
  102. package/dest/shared/jest_setup.js +1 -1
  103. package/dest/shared/submit-transactions.d.ts +6 -4
  104. package/dest/shared/submit-transactions.d.ts.map +1 -1
  105. package/dest/shared/submit-transactions.js +8 -7
  106. package/dest/shared/uniswap_l1_l2.d.ts +14 -12
  107. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  108. package/dest/shared/uniswap_l1_l2.js +146 -116
  109. package/dest/simulators/index.d.ts +1 -1
  110. package/dest/simulators/lending_simulator.d.ts +7 -11
  111. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  112. package/dest/simulators/lending_simulator.js +15 -16
  113. package/dest/simulators/token_simulator.d.ts +6 -3
  114. package/dest/simulators/token_simulator.d.ts.map +1 -1
  115. package/dest/simulators/token_simulator.js +16 -13
  116. package/dest/spartan/setup_test_wallets.d.ts +26 -11
  117. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  118. package/dest/spartan/setup_test_wallets.js +201 -58
  119. package/dest/spartan/utils.d.ts +116 -313
  120. package/dest/spartan/utils.d.ts.map +1 -1
  121. package/dest/spartan/utils.js +434 -130
  122. package/package.json +65 -58
  123. package/src/bench/client_flows/benchmark.ts +341 -0
  124. package/src/bench/client_flows/client_flows_benchmark.ts +447 -0
  125. package/src/bench/client_flows/config.ts +61 -0
  126. package/src/bench/client_flows/data_extractor.ts +89 -0
  127. package/src/bench/utils.ts +22 -76
  128. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +80 -77
  129. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +65 -106
  130. package/src/e2e_deploy_contract/deploy_test.ts +24 -39
  131. package/src/e2e_epochs/epochs_test.ts +276 -55
  132. package/src/e2e_fees/bridging_race.notest.ts +80 -0
  133. package/src/e2e_fees/fees_test.ts +142 -138
  134. package/src/e2e_l1_publisher/write_json.ts +77 -0
  135. package/src/e2e_multi_validator/utils.ts +258 -0
  136. package/src/e2e_nested_contract/nested_contract_test.ts +29 -19
  137. package/src/e2e_p2p/inactivity_slash_test.ts +182 -0
  138. package/src/e2e_p2p/p2p_network.ts +279 -169
  139. package/src/e2e_p2p/shared.ts +247 -29
  140. package/src/e2e_token_contract/token_contract_test.ts +43 -39
  141. package/src/fixtures/dumps/epoch_proof_result.json +1 -1
  142. package/src/{e2e_prover → fixtures}/e2e_prover_test.ts +107 -152
  143. package/src/fixtures/fixtures.ts +4 -3
  144. package/src/fixtures/get_acvm_config.ts +3 -11
  145. package/src/fixtures/get_bb_config.ts +18 -13
  146. package/src/fixtures/l1_to_l2_messaging.ts +53 -23
  147. package/src/fixtures/setup_l1_contracts.ts +6 -7
  148. package/src/fixtures/setup_p2p_test.ts +126 -38
  149. package/src/fixtures/snapshot_manager.ts +187 -139
  150. package/src/fixtures/token_utils.ts +32 -15
  151. package/src/fixtures/utils.ts +580 -434
  152. package/src/fixtures/web3signer.ts +63 -0
  153. package/src/guides/up_quick_start.sh +7 -15
  154. package/src/quality_of_service/alert_checker.ts +1 -1
  155. package/src/shared/cross_chain_test_harness.ts +108 -79
  156. package/src/shared/gas_portal_test_harness.ts +59 -50
  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 +181 -184
  160. package/src/simulators/lending_simulator.ts +14 -15
  161. package/src/simulators/token_simulator.ts +21 -13
  162. package/src/spartan/DEVELOP.md +121 -0
  163. package/src/spartan/setup_test_wallets.ts +251 -93
  164. package/src/spartan/utils.ts +490 -130
  165. package/dest/e2e_prover/e2e_prover_test.d.ts +0 -56
  166. package/dest/e2e_prover/e2e_prover_test.d.ts.map +0 -1
  167. package/dest/sample-dapp/connect.js +0 -12
  168. package/dest/sample-dapp/contracts.js +0 -10
  169. package/dest/sample-dapp/deploy.js +0 -35
  170. package/dest/sample-dapp/index.js +0 -98
  171. package/src/sample-dapp/connect.mjs +0 -16
  172. package/src/sample-dapp/contracts.mjs +0 -14
  173. package/src/sample-dapp/deploy.mjs +0 -40
  174. package/src/sample-dapp/index.mjs +0 -128
@@ -1,13 +1,13 @@
1
1
  // Convenience struct to hold an account's address and secret that can easily be passed around.
2
- import { AztecAddress, type CheatCodes, Fr } from '@aztec/aztec.js';
2
+ import { AztecAddress } from '@aztec/aztec.js/addresses';
3
+ import { Fr } from '@aztec/aztec.js/fields';
4
+ import { CheatCodes } from '@aztec/aztec/testing';
5
+ import type { RollupContract } from '@aztec/ethereum';
6
+ import { SlotNumber } from '@aztec/foundation/branded-types';
3
7
  import { pedersenHash } from '@aztec/foundation/crypto';
4
8
  import type { TestDateProvider } from '@aztec/foundation/timer';
5
- import type { RollupAbi } from '@aztec/l1-artifacts';
6
9
  import type { LendingContract } from '@aztec/noir-contracts.js/Lending';
7
10
 
8
- import type { Account, GetContractReturnType, HttpTransport, WalletClient } from 'viem';
9
- import type * as chains from 'viem/chains';
10
-
11
11
  import type { TokenSimulator } from './token_simulator.js';
12
12
 
13
13
  /**
@@ -83,7 +83,7 @@ export class LendingSimulator {
83
83
  private rate: bigint,
84
84
  private ethereumSlotDuration: number,
85
85
  /** the rollup contract */
86
- public rollup: GetContractReturnType<typeof RollupAbi, WalletClient<HttpTransport, chains.Chain, Account>>,
86
+ public rollup: RollupContract,
87
87
  /** the lending contract */
88
88
  public lendingContract: LendingContract,
89
89
  /** the collateral asset used in the lending contract */
@@ -94,10 +94,8 @@ export class LendingSimulator {
94
94
 
95
95
  async prepare() {
96
96
  this.accumulator = BASE;
97
- const slot = await this.rollup.read.getSlotAt([
98
- BigInt(await this.cc.eth.timestamp()) + BigInt(this.ethereumSlotDuration),
99
- ]);
100
- this.time = Number(await this.rollup.read.getTimestampForSlot([slot]));
97
+ const slot = await this.rollup.getSlotAt(BigInt(await this.cc.eth.timestamp()) + BigInt(this.ethereumSlotDuration));
98
+ this.time = Number(await this.rollup.getTimestampForSlot(slot));
101
99
  }
102
100
 
103
101
  async progressSlots(diff: number, dateProvider?: TestDateProvider) {
@@ -105,8 +103,9 @@ export class LendingSimulator {
105
103
  return;
106
104
  }
107
105
 
108
- const slot = await this.rollup.read.getSlotAt([BigInt(await this.cc.eth.timestamp())]);
109
- const ts = Number(await this.rollup.read.getTimestampForSlot([slot + BigInt(diff)]));
106
+ const slot = await this.rollup.getSlotAt(BigInt(await this.cc.eth.timestamp()));
107
+ const targetSlot = SlotNumber(slot + diff);
108
+ const ts = Number(await this.rollup.getTimestampForSlot(targetSlot));
110
109
  const timeDiff = ts - this.time;
111
110
  this.time = ts;
112
111
 
@@ -115,7 +114,7 @@ export class LendingSimulator {
115
114
  if (dateProvider) {
116
115
  dateProvider.setTime(this.time * 1000);
117
116
  }
118
- await this.cc.rollup.markAsProven(await this.rollup.read.getPendingBlockNumber());
117
+ await this.cc.rollup.markAsProven(await this.rollup.getCheckpointNumber());
119
118
  this.accumulator = muldivDown(this.accumulator, computeMultiplier(this.rate, BigInt(timeDiff)), BASE);
120
119
  }
121
120
 
@@ -187,14 +186,14 @@ export class LendingSimulator {
187
186
 
188
187
  expect(this.borrowed).toEqual(this.stableCoin.totalSupply - this.mintedOutside);
189
188
 
190
- const asset = await this.lendingContract.methods.get_asset(0).simulate();
189
+ const asset = await this.lendingContract.methods.get_asset(0).simulate({ from: this.account.address });
191
190
 
192
191
  const interestAccumulator = asset['interest_accumulator'];
193
192
  expect(interestAccumulator).toEqual(this.accumulator);
194
193
  expect(asset['last_updated_ts']).toEqual(BigInt(this.time));
195
194
 
196
195
  for (const key of [this.account.address, AztecAddress.fromField(await this.account.key())]) {
197
- const privatePos = await this.lendingContract.methods.get_position(key).simulate();
196
+ const privatePos = await this.lendingContract.methods.get_position(key).simulate({ from: this.account.address });
198
197
  expect(new Fr(privatePos['collateral'])).toEqual(this.collateral[key.toString()] ?? Fr.ZERO);
199
198
  expect(new Fr(privatePos['static_debt'])).toEqual(this.staticDebt[key.toString()] ?? Fr.ZERO);
200
199
  expect(privatePos['debt']).toEqual(
@@ -1,5 +1,7 @@
1
- /* eslint-disable jsdoc/require-jsdoc */
2
- import { type AztecAddress, BatchCall, type Logger, type Wallet } from '@aztec/aztec.js';
1
+ import type { AztecAddress } from '@aztec/aztec.js/addresses';
2
+ import { BatchCall } from '@aztec/aztec.js/contracts';
3
+ import type { Logger } from '@aztec/aztec.js/log';
4
+ import type { Wallet } from '@aztec/aztec.js/wallet';
3
5
  import type { TokenContract } from '@aztec/noir-contracts.js/Token';
4
6
 
5
7
  import chunk from 'lodash.chunk';
@@ -14,6 +16,7 @@ export class TokenSimulator {
14
16
  constructor(
15
17
  protected token: TokenContract,
16
18
  protected defaultWallet: Wallet,
19
+ protected defaultAddress: AztecAddress,
17
20
  protected logger: Logger,
18
21
  protected accounts: AztecAddress[],
19
22
  ) {}
@@ -97,13 +100,15 @@ export class TokenSimulator {
97
100
 
98
101
  async checkPublic() {
99
102
  // public calls
100
- const calls = [await this.token.methods.total_supply().request()];
101
- for (const address of this.accounts) {
102
- calls.push(await this.token.methods.balance_of_public(address).request());
103
- }
103
+ const calls = [
104
+ this.token.methods.total_supply(),
105
+ ...this.accounts.map(address => this.token.methods.balance_of_public(address)),
106
+ ];
104
107
 
105
108
  const results = (
106
- await Promise.all(chunk(calls, 4).map(batch => new BatchCall(this.defaultWallet, batch).simulate()))
109
+ await Promise.all(
110
+ chunk(calls, 5).map(batch => new BatchCall(this.defaultWallet, batch).simulate({ from: this.defaultAddress })),
111
+ )
107
112
  ).flat();
108
113
  expect(results[0]).toEqual(this.totalSupply);
109
114
 
@@ -126,12 +131,13 @@ export class TokenSimulator {
126
131
  }
127
132
  }
128
133
 
129
- const defaultCalls = [];
130
- for (const address of defaultLookups) {
131
- defaultCalls.push(await this.token.methods.balance_of_private(address).request());
132
- }
134
+ const defaultCalls = defaultLookups.map(address => this.token.methods.balance_of_private(address));
133
135
  const results = (
134
- await Promise.all(chunk(defaultCalls, 4).map(batch => new BatchCall(this.defaultWallet, batch).simulate()))
136
+ await Promise.all(
137
+ chunk(defaultCalls, 4).map(batch =>
138
+ new BatchCall(this.defaultWallet, batch).simulate({ from: this.defaultAddress }),
139
+ ),
140
+ )
135
141
  ).flat();
136
142
  for (let i = 0; i < defaultLookups.length; i++) {
137
143
  expect(results[i]).toEqual(this.balanceOfPrivate(defaultLookups[i]));
@@ -143,7 +149,9 @@ export class TokenSimulator {
143
149
  const wallet = this.lookupProvider.get(address.toString());
144
150
  const asset = wallet ? this.token.withWallet(wallet) : this.token;
145
151
 
146
- const actualPrivateBalance = await asset.methods.balance_of_private({ address }).simulate();
152
+ const actualPrivateBalance = await asset.methods
153
+ .balance_of_private({ address })
154
+ .simulate({ from: this.defaultAddress });
147
155
  expect(actualPrivateBalance).toEqual(this.balanceOfPrivate(address));
148
156
  }
149
157
  }
@@ -0,0 +1,121 @@
1
+ The flow is as follows:
2
+
3
+ 1. Install/start KIND locally
4
+ 2. Bootstrap (to build an aztec image)
5
+ 3. Load image into kind
6
+ 4. Deploy networks
7
+ 5. Run tests in `yarn-project/end-to-end/src/spartan`
8
+
9
+ # Setup KIND
10
+
11
+ KIND is a kubernetes cluster that runs locally out of docker containers.
12
+
13
+ You can just
14
+
15
+ ```bash
16
+ spartan/bootstrap.sh kind
17
+ ```
18
+
19
+ You only need to do that once. If you do it again, it will destroy the cluster and recreate it (which you almost never need to do).
20
+
21
+ Now you’ll likely want some visibility into your cluster. You can
22
+
23
+ ```bash
24
+ spartan/scripts/create_k8s_dashboard.sh
25
+ ```
26
+
27
+ And after ~30 seconds or so you can
28
+
29
+ ```bash
30
+ spartan/scripts/forward_k8s_dashboard.sh
31
+ ```
32
+
33
+ That will run a port forward to your port `8443` . If you’re running in a remote environment (e.g. the mainframe), you’ll need to subsequently forward that back to your local machine. Cursor/VSCode have built in port forwarding (cmd/ctrl shift P, “forward”)
34
+
35
+ Open the forwarded page, and copy/paste the token that was generated when you forwarded the dashboard.
36
+
37
+ # Build an aztecprotocol:aztec image
38
+
39
+ ```bash
40
+ ./bootstrap.sh
41
+ export AZTEC_DOCKER_IMAGE="aztecprotocol/aztec:$(docker images "aztecprotocol/aztec" --format json | \
42
+ jq -r 'select(.Tag != "latest") | .Tag' | \
43
+ head -1)"
44
+ kind load docker-image $AZTEC_DOCKER_IMAGE
45
+ ```
46
+
47
+ If you just changed typescript, you can (after the initial bootstrap)
48
+
49
+ ```bash
50
+ ./yarn-project/bootstrap.sh
51
+ ./release-image/bootstrap.sh
52
+ export AZTEC_DOCKER_IMAGE="aztecprotocol/aztec:$(docker images "aztecprotocol/aztec" --format json | \
53
+ jq -r 'select(.Tag != "latest") | .Tag' | \
54
+ head -1)"
55
+ kind load docker-image $AZTEC_DOCKER_IMAGE
56
+ ```
57
+
58
+ The export is important there. The `AZTEC_DOCKER_IMAGE` env var is used as both:
59
+
60
+ - the container that runs the rollup contract deployment
61
+ - the containers for the aztec infrastructure (validators, provers, etc)
62
+
63
+ # Deploy Metrics
64
+ ```bash
65
+ ./spartan/bootstrap.sh metrics-kind
66
+ ```
67
+
68
+ # Deploy stuff
69
+
70
+ ```bash
71
+ ./spartan/bootstrap.sh network_deploy scenario.local
72
+ ```
73
+
74
+ That will take 1-3 minutes. But at the end you should have everything you need.
75
+
76
+ You can (`k` is just an alias over `kubectl`)
77
+
78
+ ```bash
79
+ ❯ k get pods -n scenario
80
+ NAME READY STATUS RESTARTS AGE
81
+ deploy-rollup-contracts-2025-08-31-1511-w2dlb 0/1 Completed 0 2m34s
82
+ scenario-eth-beacon-0 1/1 Running 0 39m
83
+ scenario-eth-execution-0 1/1 Running 0 39m
84
+ scenario-eth-validator-0 1/1 Running 0 39m
85
+ scenario-p2p-bootstrap-node-5cbf9658b9-6vd9b 1/1 Running 0 20m
86
+ scenario-prover-agent-59bd96899d-46k5s 1/1 Running 0 116s
87
+ scenario-prover-agent-59bd96899d-vzvkd 1/1 Running 0 116s
88
+ scenario-prover-broker-0 1/1 Running 0 116s
89
+ scenario-prover-node-0 1/1 Running 0 116s
90
+ scenario-rpc-aztec-node-0 1/1 Running 0 116s
91
+ scenario-validator-0 1/1 Running 0 116s
92
+ scenario-validator-1 1/1 Running 0 116s
93
+ scenario-validator-2 1/1 Running 0 116s
94
+ scenario-validator-3 1/1 Running 0 116s
95
+ ```
96
+
97
+ For example, you can forward back the ethereum node with
98
+
99
+ ```bash
100
+ k port-forward -n scenario services/eth-devnet-eth-execution 8545:8545
101
+ ```
102
+
103
+ And then do whatever you like with it.
104
+
105
+ # Run tests
106
+
107
+ With the cluster running, you can now easily run tests.
108
+
109
+ ```bash
110
+ # run one
111
+ ./spartan/bootstrap.sh single_test scenario.local spartan/smoke.test.ts
112
+
113
+ # run all (serially)
114
+ ./spartan/bootstrap.sh network_tests scenario.local
115
+ ```
116
+
117
+ Right now, I recommend running the smoke test first, always, as it waits for the committee to exist.
118
+
119
+ # Teardown
120
+
121
+ You can just `k delete namespace scenario`. That will destroy everything in your kind cluster. To destroy the associated terraform state that was stored locally, just `./spartan/terraform/purge_local_state.sh`.