@aztec/cli 3.0.0-canary.a9708bd → 3.0.0-devnet.3

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 (173) hide show
  1. package/README.md +1 -427
  2. package/dest/cmds/aztec_node/block_number.d.ts +3 -0
  3. package/dest/cmds/aztec_node/block_number.d.ts.map +1 -0
  4. package/dest/cmds/aztec_node/block_number.js +10 -0
  5. package/dest/cmds/aztec_node/get_block.d.ts +3 -0
  6. package/dest/cmds/aztec_node/get_block.d.ts.map +1 -0
  7. package/dest/cmds/aztec_node/get_block.js +9 -0
  8. package/dest/cmds/aztec_node/get_current_base_fee.d.ts +3 -0
  9. package/dest/cmds/aztec_node/get_current_base_fee.d.ts.map +1 -0
  10. package/dest/cmds/aztec_node/get_current_base_fee.js +7 -0
  11. package/dest/cmds/aztec_node/get_l1_to_l2_message_witness.d.ts +5 -0
  12. package/dest/cmds/aztec_node/get_l1_to_l2_message_witness.d.ts.map +1 -0
  13. package/dest/cmds/aztec_node/get_l1_to_l2_message_witness.js +12 -0
  14. package/dest/cmds/aztec_node/get_logs.d.ts +6 -0
  15. package/dest/cmds/aztec_node/get_logs.d.ts.map +1 -0
  16. package/dest/cmds/{pxe → aztec_node}/get_logs.js +4 -4
  17. package/dest/cmds/aztec_node/get_node_info.d.ts +3 -0
  18. package/dest/cmds/aztec_node/get_node_info.d.ts.map +1 -0
  19. package/dest/cmds/{pxe → aztec_node}/get_node_info.js +3 -8
  20. package/dest/cmds/aztec_node/index.d.ts.map +1 -0
  21. package/dest/cmds/aztec_node/index.js +28 -0
  22. package/dest/cmds/infrastructure/index.d.ts +2 -2
  23. package/dest/cmds/infrastructure/index.d.ts.map +1 -1
  24. package/dest/cmds/infrastructure/index.js +7 -8
  25. package/dest/cmds/infrastructure/sequencers.d.ts +2 -3
  26. package/dest/cmds/infrastructure/sequencers.d.ts.map +1 -1
  27. package/dest/cmds/infrastructure/sequencers.js +4 -3
  28. package/dest/cmds/infrastructure/setup_l2_contract.d.ts +1 -1
  29. package/dest/cmds/infrastructure/setup_l2_contract.d.ts.map +1 -1
  30. package/dest/cmds/infrastructure/setup_l2_contract.js +10 -25
  31. package/dest/cmds/l1/advance_epoch.d.ts +1 -1
  32. package/dest/cmds/l1/advance_epoch.d.ts.map +1 -1
  33. package/dest/cmds/l1/advance_epoch.js +6 -5
  34. package/dest/cmds/l1/assume_proven_through.d.ts +1 -1
  35. package/dest/cmds/l1/assume_proven_through.d.ts.map +1 -1
  36. package/dest/cmds/l1/assume_proven_through.js +7 -6
  37. package/dest/cmds/l1/bridge_erc20.d.ts +1 -1
  38. package/dest/cmds/l1/bridge_erc20.d.ts.map +1 -1
  39. package/dest/cmds/l1/bridge_erc20.js +1 -1
  40. package/dest/cmds/l1/deploy_l1_contracts.d.ts +2 -2
  41. package/dest/cmds/l1/deploy_l1_contracts.d.ts.map +1 -1
  42. package/dest/cmds/l1/deploy_l1_contracts.js +5 -5
  43. package/dest/cmds/l1/deploy_new_rollup.d.ts +1 -1
  44. package/dest/cmds/l1/deploy_new_rollup.d.ts.map +1 -1
  45. package/dest/cmds/l1/deploy_new_rollup.js +4 -4
  46. package/dest/cmds/l1/get_l1_addresses.d.ts +1 -1
  47. package/dest/cmds/l1/get_l1_addresses.d.ts.map +1 -1
  48. package/dest/cmds/l1/index.d.ts.map +1 -1
  49. package/dest/cmds/l1/index.js +18 -34
  50. package/dest/cmds/l1/update_l1_validators.d.ts +5 -0
  51. package/dest/cmds/l1/update_l1_validators.d.ts.map +1 -1
  52. package/dest/cmds/l1/update_l1_validators.js +67 -6
  53. package/dest/cmds/misc/generate_secret_and_hash.js +1 -1
  54. package/dest/cmds/misc/generate_secret_key.d.ts +1 -1
  55. package/dest/cmds/misc/generate_secret_key.d.ts.map +1 -1
  56. package/dest/cmds/misc/generate_secret_key.js +1 -1
  57. package/dest/config/cached_fetch.d.ts +18 -0
  58. package/dest/config/cached_fetch.d.ts.map +1 -0
  59. package/dest/config/cached_fetch.js +54 -0
  60. package/dest/config/chain_l2_config.d.ts +37 -0
  61. package/dest/config/chain_l2_config.d.ts.map +1 -0
  62. package/dest/config/chain_l2_config.js +444 -0
  63. package/dest/config/enrich_env.d.ts +4 -0
  64. package/dest/config/enrich_env.d.ts.map +1 -0
  65. package/dest/config/enrich_env.js +12 -0
  66. package/dest/config/get_l1_config.d.ts +8 -0
  67. package/dest/config/get_l1_config.d.ts.map +1 -0
  68. package/dest/config/get_l1_config.js +22 -0
  69. package/dest/config/index.d.ts +5 -0
  70. package/dest/config/index.d.ts.map +1 -0
  71. package/dest/config/index.js +4 -0
  72. package/dest/config/network_config.d.ts +19 -0
  73. package/dest/config/network_config.d.ts.map +1 -0
  74. package/dest/config/network_config.js +79 -0
  75. package/dest/utils/aztec.d.ts +3 -9
  76. package/dest/utils/aztec.d.ts.map +1 -1
  77. package/dest/utils/aztec.js +8 -32
  78. package/dest/utils/commands.d.ts +6 -7
  79. package/dest/utils/commands.d.ts.map +1 -1
  80. package/dest/utils/commands.js +5 -6
  81. package/dest/utils/inspect.d.ts +3 -10
  82. package/dest/utils/inspect.d.ts.map +1 -1
  83. package/dest/utils/inspect.js +13 -95
  84. package/dest/utils/setup_contracts.d.ts +1 -3
  85. package/dest/utils/setup_contracts.d.ts.map +1 -1
  86. package/dest/utils/setup_contracts.js +2 -22
  87. package/package.json +28 -25
  88. package/src/cmds/aztec_node/block_number.ts +9 -0
  89. package/src/cmds/aztec_node/get_block.ts +10 -0
  90. package/src/cmds/aztec_node/get_current_base_fee.ts +9 -0
  91. package/src/cmds/aztec_node/get_l1_to_l2_message_witness.ts +27 -0
  92. package/src/cmds/{pxe → aztec_node}/get_logs.ts +8 -7
  93. package/src/cmds/{pxe → aztec_node}/get_node_info.ts +5 -16
  94. package/src/cmds/aztec_node/index.ts +87 -0
  95. package/src/cmds/infrastructure/index.ts +7 -17
  96. package/src/cmds/infrastructure/sequencers.ts +6 -6
  97. package/src/cmds/infrastructure/setup_l2_contract.ts +13 -30
  98. package/src/cmds/l1/advance_epoch.ts +6 -5
  99. package/src/cmds/l1/assume_proven_through.ts +7 -6
  100. package/src/cmds/l1/bridge_erc20.ts +3 -1
  101. package/src/cmds/l1/deploy_l1_contracts.ts +6 -3
  102. package/src/cmds/l1/deploy_new_rollup.ts +4 -2
  103. package/src/cmds/l1/get_l1_addresses.ts +1 -1
  104. package/src/cmds/l1/index.ts +25 -53
  105. package/src/cmds/l1/update_l1_validators.ts +81 -6
  106. package/src/cmds/misc/generate_secret_and_hash.ts +1 -1
  107. package/src/cmds/misc/generate_secret_key.ts +1 -1
  108. package/src/config/cached_fetch.ts +67 -0
  109. package/src/config/chain_l2_config.ts +585 -0
  110. package/src/config/enrich_env.ts +15 -0
  111. package/src/config/get_l1_config.ts +28 -0
  112. package/src/config/index.ts +4 -0
  113. package/src/config/network_config.ts +102 -0
  114. package/src/utils/aztec.ts +8 -40
  115. package/src/utils/commands.ts +8 -10
  116. package/src/utils/inspect.ts +18 -111
  117. package/src/utils/setup_contracts.ts +4 -43
  118. package/dest/cmds/devnet/bootstrap_network.d.ts +0 -3
  119. package/dest/cmds/devnet/bootstrap_network.d.ts.map +0 -1
  120. package/dest/cmds/devnet/bootstrap_network.js +0 -216
  121. package/dest/cmds/devnet/faucet.d.ts +0 -4
  122. package/dest/cmds/devnet/faucet.d.ts.map +0 -1
  123. package/dest/cmds/devnet/faucet.js +0 -26
  124. package/dest/cmds/devnet/index.d.ts.map +0 -1
  125. package/dest/cmds/devnet/index.js +0 -14
  126. package/dest/cmds/pxe/add_contract.d.ts +0 -5
  127. package/dest/cmds/pxe/add_contract.d.ts.map +0 -1
  128. package/dest/cmds/pxe/add_contract.js +0 -29
  129. package/dest/cmds/pxe/block_number.d.ts +0 -3
  130. package/dest/cmds/pxe/block_number.d.ts.map +0 -1
  131. package/dest/cmds/pxe/block_number.js +0 -10
  132. package/dest/cmds/pxe/get_account.d.ts +0 -4
  133. package/dest/cmds/pxe/get_account.d.ts.map +0 -1
  134. package/dest/cmds/pxe/get_account.js +0 -10
  135. package/dest/cmds/pxe/get_accounts.d.ts +0 -3
  136. package/dest/cmds/pxe/get_accounts.d.ts.map +0 -1
  137. package/dest/cmds/pxe/get_accounts.js +0 -25
  138. package/dest/cmds/pxe/get_block.d.ts +0 -3
  139. package/dest/cmds/pxe/get_block.d.ts.map +0 -1
  140. package/dest/cmds/pxe/get_block.js +0 -9
  141. package/dest/cmds/pxe/get_contract_data.d.ts +0 -4
  142. package/dest/cmds/pxe/get_contract_data.d.ts.map +0 -1
  143. package/dest/cmds/pxe/get_contract_data.js +0 -31
  144. package/dest/cmds/pxe/get_current_base_fee.d.ts +0 -3
  145. package/dest/cmds/pxe/get_current_base_fee.d.ts.map +0 -1
  146. package/dest/cmds/pxe/get_current_base_fee.js +0 -7
  147. package/dest/cmds/pxe/get_l1_to_l2_message_witness.d.ts +0 -4
  148. package/dest/cmds/pxe/get_l1_to_l2_message_witness.d.ts.map +0 -1
  149. package/dest/cmds/pxe/get_l1_to_l2_message_witness.js +0 -11
  150. package/dest/cmds/pxe/get_logs.d.ts +0 -4
  151. package/dest/cmds/pxe/get_logs.d.ts.map +0 -1
  152. package/dest/cmds/pxe/get_node_info.d.ts +0 -3
  153. package/dest/cmds/pxe/get_node_info.d.ts.map +0 -1
  154. package/dest/cmds/pxe/get_pxe_info.d.ts +0 -3
  155. package/dest/cmds/pxe/get_pxe_info.d.ts.map +0 -1
  156. package/dest/cmds/pxe/get_pxe_info.js +0 -11
  157. package/dest/cmds/pxe/index.d.ts +0 -4
  158. package/dest/cmds/pxe/index.d.ts.map +0 -1
  159. package/dest/cmds/pxe/index.js +0 -55
  160. package/src/cmds/devnet/bootstrap_network.ts +0 -321
  161. package/src/cmds/devnet/faucet.ts +0 -33
  162. package/src/cmds/devnet/index.ts +0 -60
  163. package/src/cmds/pxe/add_contract.ts +0 -41
  164. package/src/cmds/pxe/block_number.ts +0 -9
  165. package/src/cmds/pxe/get_account.ts +0 -16
  166. package/src/cmds/pxe/get_accounts.ts +0 -35
  167. package/src/cmds/pxe/get_block.ts +0 -10
  168. package/src/cmds/pxe/get_contract_data.ts +0 -51
  169. package/src/cmds/pxe/get_current_base_fee.ts +0 -9
  170. package/src/cmds/pxe/get_l1_to_l2_message_witness.ts +0 -25
  171. package/src/cmds/pxe/get_pxe_info.ts +0 -13
  172. package/src/cmds/pxe/index.ts +0 -170
  173. /package/dest/cmds/{devnet → aztec_node}/index.d.ts +0 -0
@@ -0,0 +1,102 @@
1
+ import { type NetworkConfig, NetworkConfigMapSchema, type NetworkNames } from '@aztec/foundation/config';
2
+
3
+ import { readFile } from 'fs/promises';
4
+ import { join } from 'path';
5
+
6
+ import { cachedFetch } from './cached_fetch.js';
7
+ import { enrichEthAddressVar, enrichVar } from './enrich_env.js';
8
+
9
+ const DEFAULT_CONFIG_URL =
10
+ 'https://raw.githubusercontent.com/AztecProtocol/networks/refs/heads/main/network_config.json';
11
+ const NETWORK_CONFIG_CACHE_DURATION_MS = 60 * 60 * 1000; // 1 hour
12
+
13
+ /**
14
+ * Fetches remote network configuration from GitHub with caching support.
15
+ * Uses the reusable cachedFetch utility.
16
+ *
17
+ * @param networkName - The network name to fetch config for
18
+ * @param cacheDir - Optional cache directory for storing fetched config
19
+ * @returns Remote configuration for the specified network, or undefined if not found/error
20
+ */
21
+ export async function getNetworkConfig(
22
+ networkName: NetworkNames,
23
+ cacheDir?: string,
24
+ ): Promise<NetworkConfig | undefined> {
25
+ let url: URL | undefined;
26
+ const configLocation = process.env.NETWORK_CONFIG_LOCATION || DEFAULT_CONFIG_URL;
27
+
28
+ if (!configLocation) {
29
+ return undefined;
30
+ }
31
+
32
+ try {
33
+ if (configLocation.includes('://')) {
34
+ url = new URL(configLocation);
35
+ } else {
36
+ url = new URL(`file://${configLocation}`);
37
+ }
38
+ } catch {
39
+ /* no-op */
40
+ }
41
+
42
+ if (!url) {
43
+ return undefined;
44
+ }
45
+
46
+ try {
47
+ let rawConfig: any;
48
+
49
+ if (url.protocol === 'http:' || url.protocol === 'https:') {
50
+ rawConfig = await cachedFetch(url.href, {
51
+ cacheDurationMs: NETWORK_CONFIG_CACHE_DURATION_MS,
52
+ cacheFile: cacheDir ? join(cacheDir, networkName, 'network_config.json') : undefined,
53
+ });
54
+ } else if (url.protocol === 'file:') {
55
+ rawConfig = JSON.parse(await readFile(url.pathname, 'utf-8'));
56
+ } else {
57
+ throw new Error('Unsupported Aztec network config protocol: ' + url.href);
58
+ }
59
+
60
+ if (!rawConfig) {
61
+ return undefined;
62
+ }
63
+
64
+ const networkConfigMap = NetworkConfigMapSchema.parse(rawConfig);
65
+ if (networkName in networkConfigMap) {
66
+ return networkConfigMap[networkName];
67
+ } else {
68
+ return undefined;
69
+ }
70
+ } catch {
71
+ return undefined;
72
+ }
73
+ }
74
+
75
+ /**
76
+ * Enriches environment variables with remote network configuration.
77
+ * This function is called before node config initialization to set env vars
78
+ * from the remote config, following the same pattern as enrichEnvironmentWithChainConfig().
79
+ *
80
+ * @param networkName - The network name to fetch remote config for
81
+ */
82
+ export async function enrichEnvironmentWithNetworkConfig(networkName: NetworkNames) {
83
+ if (networkName === 'local') {
84
+ return; // No remote config for local development
85
+ }
86
+
87
+ const cacheDir = process.env.DATA_DIRECTORY ? join(process.env.DATA_DIRECTORY, 'cache') : undefined;
88
+ const networkConfig = await getNetworkConfig(networkName, cacheDir);
89
+
90
+ if (!networkConfig) {
91
+ return;
92
+ }
93
+
94
+ enrichVar('BOOTSTRAP_NODES', networkConfig.bootnodes.join(','));
95
+ enrichVar('L1_CHAIN_ID', String(networkConfig.l1ChainId));
96
+ enrichVar('SYNC_SNAPSHOTS_URLS', networkConfig.snapshots.join(','));
97
+
98
+ enrichEthAddressVar('REGISTRY_CONTRACT_ADDRESS', networkConfig.registryAddress.toString());
99
+ if (networkConfig.feeAssetHandlerAddress) {
100
+ enrichEthAddressVar('FEE_ASSET_HANDLER_CONTRACT_ADDRESS', networkConfig.feeAssetHandlerAddress.toString());
101
+ }
102
+ }
@@ -1,4 +1,3 @@
1
- import { EthAddress, type PXE } from '@aztec/aztec.js';
2
1
  import {
3
2
  type ContractArtifact,
4
3
  type FunctionAbi,
@@ -6,6 +5,7 @@ import {
6
5
  getAllFunctionAbis,
7
6
  loadContractArtifact,
8
7
  } from '@aztec/aztec.js/abi';
8
+ import { EthAddress } from '@aztec/aztec.js/addresses';
9
9
  import {
10
10
  type DeployL1ContractsReturnType,
11
11
  type L1ContractsConfig,
@@ -16,11 +16,10 @@ import { SecretValue } from '@aztec/foundation/config';
16
16
  import { Fr } from '@aztec/foundation/fields';
17
17
  import type { LogFn, Logger } from '@aztec/foundation/log';
18
18
  import type { NoirPackageConfig } from '@aztec/foundation/noir';
19
- import { protocolContractTreeRoot } from '@aztec/protocol-contracts';
19
+ import { protocolContractsHash } from '@aztec/protocol-contracts';
20
20
 
21
21
  import TOML from '@iarna/toml';
22
22
  import { readFile } from 'fs/promises';
23
- import { gtr, ltr, satisfies, valid } from 'semver';
24
23
 
25
24
  import { encodeArgs } from './encoding.js';
26
25
 
@@ -57,6 +56,7 @@ export async function deployAztecContracts(
57
56
  feeJuicePortalInitialBalance: bigint,
58
57
  acceleratedTestDeployments: boolean,
59
58
  config: L1ContractsConfig,
59
+ existingToken: EthAddress | undefined,
60
60
  realVerifier: boolean,
61
61
  createVerificationJson: string | false,
62
62
  debugLogger: Logger,
@@ -78,13 +78,14 @@ export async function deployAztecContracts(
78
78
  debugLogger,
79
79
  {
80
80
  vkTreeRoot: getVKTreeRoot(),
81
- protocolContractTreeRoot,
81
+ protocolContractsHash,
82
82
  genesisArchiveRoot,
83
83
  salt,
84
84
  initialValidators,
85
85
  acceleratedTestDeployments,
86
86
  feeJuicePortalInitialBalance,
87
87
  realVerifier,
88
+ existingTokenAddress: existingToken,
88
89
  ...config,
89
90
  },
90
91
  config,
@@ -107,6 +108,7 @@ export async function deployNewRollupContracts(
107
108
  feeJuicePortalInitialBalance: bigint,
108
109
  config: L1ContractsConfig,
109
110
  realVerifier: boolean,
111
+ createVerificationJson: string | false,
110
112
  logger: Logger,
111
113
  ): Promise<{ rollup: RollupContract; slashFactoryAddress: EthAddress }> {
112
114
  const { createEthereumChain, deployRollupForUpgrade, createExtendedL1Client } = await import('@aztec/ethereum');
@@ -140,7 +142,7 @@ export async function deployNewRollupContracts(
140
142
  {
141
143
  salt,
142
144
  vkTreeRoot: getVKTreeRoot(),
143
- protocolContractTreeRoot,
145
+ protocolContractsHash,
144
146
  genesisArchiveRoot,
145
147
  initialValidators,
146
148
  feeJuicePortalInitialBalance,
@@ -150,6 +152,7 @@ export async function deployNewRollupContracts(
150
152
  registryAddress,
151
153
  logger,
152
154
  config,
155
+ createVerificationJson,
153
156
  );
154
157
 
155
158
  return { rollup, slashFactoryAddress };
@@ -258,38 +261,3 @@ export function prettyPrintNargoToml(config: NoirPackageConfig): string {
258
261
 
259
262
  return partialToml + '\n[dependencies]\n' + dependenciesToml.join('\n') + '\n';
260
263
  }
261
-
262
- /** Mismatch between server and client versions. */
263
- class VersionMismatchError extends Error {}
264
-
265
- /**
266
- * Checks that Private eXecution Environment (PXE) version matches the expected one by this CLI. Throws if not.
267
- * @param pxe - PXE client.
268
- * @param expectedVersionRange - Expected version by CLI.
269
- */
270
- export async function checkServerVersion(pxe: PXE, expectedVersionRange: string) {
271
- const serverName = 'Aztec Node';
272
- const { nodeVersion } = await pxe.getNodeInfo();
273
- if (!nodeVersion) {
274
- throw new VersionMismatchError(`Couldn't determine ${serverName} version. You may run into issues.`);
275
- }
276
- if (!nodeVersion || !valid(nodeVersion)) {
277
- throw new VersionMismatchError(
278
- `Missing or invalid version identifier for ${serverName} (${nodeVersion ?? 'empty'}).`,
279
- );
280
- } else if (!satisfies(nodeVersion, expectedVersionRange)) {
281
- if (gtr(nodeVersion, expectedVersionRange)) {
282
- throw new VersionMismatchError(
283
- `${serverName} is running version ${nodeVersion} which is newer than the expected by this CLI (${expectedVersionRange}). Consider upgrading your CLI to a newer version.`,
284
- );
285
- } else if (ltr(nodeVersion, expectedVersionRange)) {
286
- throw new VersionMismatchError(
287
- `${serverName} is running version ${nodeVersion} which is older than the expected by this CLI (${expectedVersionRange}). Consider upgrading your ${serverName} to a newer version.`,
288
- );
289
- } else {
290
- throw new VersionMismatchError(
291
- `${serverName} is running version ${nodeVersion} which does not match the expected by this CLI (${expectedVersionRange}).`,
292
- );
293
- }
294
- }
295
- }
@@ -1,11 +1,10 @@
1
1
  import { FunctionSelector } from '@aztec/aztec.js/abi';
2
- import { AztecAddress } from '@aztec/aztec.js/addresses';
3
- import { EthAddress } from '@aztec/aztec.js/eth_address';
2
+ import { AztecAddress, EthAddress } from '@aztec/aztec.js/addresses';
4
3
  import { Fr } from '@aztec/aztec.js/fields';
5
- import { LogId } from '@aztec/aztec.js/log_id';
6
- import { TxHash } from '@aztec/aztec.js/tx_hash';
4
+ import { LogId } from '@aztec/aztec.js/log';
5
+ import { TxHash } from '@aztec/aztec.js/tx';
7
6
  import type { LogFn } from '@aztec/foundation/log';
8
- import type { PXE } from '@aztec/stdlib/interfaces/client';
7
+ import type { PXE } from '@aztec/pxe/server';
9
8
  import { PublicKeys } from '@aztec/stdlib/keys';
10
9
 
11
10
  import { type Command, CommanderError, InvalidArgumentError, Option } from 'commander';
@@ -29,14 +28,13 @@ export function addOptions(program: Command, options: Option[]) {
29
28
  return program;
30
29
  }
31
30
 
32
- export const makePxeOption = (mandatory: boolean) =>
33
- new Option('-u, --rpc-url <string>', 'URL of the PXE')
34
- .env('PXE_URL')
31
+ export const makeNodeOption = (mandatory: boolean) =>
32
+ new Option('-n, --node-url <string>', 'URL of the Aztec node')
33
+ .env('AZTEC_NODE_URL')
35
34
  .default(`http://${LOCALHOST}:8080`)
36
- .conflicts('remote-pxe')
37
35
  .makeOptionMandatory(mandatory);
38
36
 
39
- export const pxeOption = makePxeOption(true);
37
+ export const nodeOption = makeNodeOption(true);
40
38
 
41
39
  export const l1ChainIdOption = new Option('-c, --l1-chain-id <number>', 'Chain ID of the ethereum host')
42
40
  .env('L1_CHAIN_ID')
@@ -1,13 +1,14 @@
1
- import type { AztecAddress, ContractArtifact, Fr } from '@aztec/aztec.js';
2
1
  import type { LogFn } from '@aztec/foundation/log';
3
- import { ProtocolContractAddress } from '@aztec/protocol-contracts';
4
- import { siloNullifier } from '@aztec/stdlib/hash';
5
- import type { PXE } from '@aztec/stdlib/interfaces/client';
6
- import type { ExtendedNote } from '@aztec/stdlib/note';
2
+ import type { AztecNode } from '@aztec/stdlib/interfaces/client';
7
3
  import type { TxHash } from '@aztec/stdlib/tx';
8
4
 
9
- export async function inspectBlock(pxe: PXE, blockNumber: number, log: LogFn, opts: { showTxs?: boolean } = {}) {
10
- const block = await pxe.getBlock(blockNumber);
5
+ export async function inspectBlock(
6
+ aztecNode: AztecNode,
7
+ blockNumber: number,
8
+ log: LogFn,
9
+ opts: { showTxs?: boolean } = {},
10
+ ) {
11
+ const block = await aztecNode.getBlock(blockNumber);
11
12
  if (!block) {
12
13
  log(`No block found for block number ${blockNumber}`);
13
14
  return;
@@ -25,9 +26,8 @@ export async function inspectBlock(pxe: PXE, blockNumber: number, log: LogFn, op
25
26
  log(` Timestamp: ${new Date(Number(block.header.globalVariables.timestamp) * 500)}`);
26
27
  if (opts.showTxs) {
27
28
  log(``);
28
- const artifactMap = await getKnownArtifacts(pxe);
29
29
  for (const txHash of block.body.txEffects.map(tx => tx.txHash)) {
30
- await inspectTx(pxe, txHash, log, { includeBlockInfo: false, artifactMap });
30
+ await inspectTx(aztecNode, txHash, log, { includeBlockInfo: false });
31
31
  }
32
32
  } else {
33
33
  log(` Transactions: ${block.body.txEffects.length}`);
@@ -35,12 +35,12 @@ export async function inspectBlock(pxe: PXE, blockNumber: number, log: LogFn, op
35
35
  }
36
36
 
37
37
  export async function inspectTx(
38
- pxe: PXE,
38
+ aztecNode: AztecNode,
39
39
  txHash: TxHash,
40
40
  log: LogFn,
41
- opts: { includeBlockInfo?: boolean; artifactMap?: ArtifactMap } = {},
41
+ opts: { includeBlockInfo?: boolean } = {},
42
42
  ) {
43
- const [receipt, effectsInBlock] = await Promise.all([pxe.getTxReceipt(txHash), pxe.getTxEffect(txHash)]);
43
+ const [receipt, effectsInBlock] = await Promise.all([aztecNode.getTxReceipt(txHash), aztecNode.getTxEffect(txHash)]);
44
44
  // Base tx data
45
45
  log(`Tx ${txHash.toString()}`);
46
46
  log(` Status: ${receipt.status} ${effectsInBlock ? `(${effectsInBlock.data.revertCode.getDescription()})` : ''}`);
@@ -53,7 +53,6 @@ export async function inspectTx(
53
53
  }
54
54
 
55
55
  const effects = effectsInBlock.data;
56
- const artifactMap = opts?.artifactMap ?? (await getKnownArtifacts(pxe));
57
56
 
58
57
  if (opts.includeBlockInfo) {
59
58
  log(` Block: ${receipt.blockNumber} (${receipt.blockHash?.toString()})`);
@@ -90,38 +89,12 @@ export async function inspectTx(
90
89
  }
91
90
  }
92
91
 
93
- // Nullifiers
94
- const nullifierCount = effects.nullifiers.length;
95
- const { deployNullifiers, initNullifiers, classNullifiers } = await getKnownNullifiers(pxe, artifactMap);
96
- if (nullifierCount > 0) {
97
- log(' Nullifiers:');
98
- for (const nullifier of effects.nullifiers) {
99
- const deployed = deployNullifiers[nullifier.toString()];
100
- const note = deployed
101
- ? (await pxe.getNotes({ siloedNullifier: nullifier, contractAddress: deployed }))[0]
102
- : undefined;
103
- const initialized = initNullifiers[nullifier.toString()];
104
- const registered = classNullifiers[nullifier.toString()];
105
- if (nullifier.toBuffer().equals(txHash.toBuffer())) {
106
- log(` Transaction hash nullifier ${nullifier.toShortString()}`);
107
- } else if (note) {
108
- inspectNote(note, artifactMap, log, `Nullifier ${nullifier.toShortString()} for note`);
109
- } else if (deployed) {
110
- log(
111
- ` Contract ${toFriendlyAddress(deployed, artifactMap)} deployed via nullifier ${nullifier.toShortString()}`,
112
- );
113
- } else if (initialized) {
114
- log(
115
- ` Contract ${toFriendlyAddress(
116
- initialized,
117
- artifactMap,
118
- )} initialized via nullifier ${nullifier.toShortString()}`,
119
- );
120
- } else if (registered) {
121
- log(` Class ${registered} registered via nullifier ${nullifier.toShortString()}`);
122
- } else {
123
- log(` Unknown nullifier ${nullifier.toString()}`);
124
- }
92
+ // Created nullifiers
93
+ const nullifiers = effects.nullifiers;
94
+ if (nullifiers.length > 0) {
95
+ log(' Created nullifiers:');
96
+ for (const nullifier of nullifiers) {
97
+ log(` Nullifier: ${nullifier.toShortString()}`);
125
98
  }
126
99
  }
127
100
 
@@ -133,69 +106,3 @@ export async function inspectTx(
133
106
  }
134
107
  }
135
108
  }
136
-
137
- function inspectNote(note: ExtendedNote, artifactMap: ArtifactMap, log: LogFn, text = 'Note') {
138
- const artifact = artifactMap[note.contractAddress.toString()];
139
- const contract = artifact?.name ?? note.contractAddress.toString();
140
- log(` ${text} at ${contract}`);
141
- log(` Recipient: ${toFriendlyAddress(note.recipient, artifactMap)}`);
142
- for (const field of note.note.items) {
143
- log(` ${field.toString()}`);
144
- }
145
- }
146
-
147
- function toFriendlyAddress(address: AztecAddress, artifactMap: ArtifactMap) {
148
- const artifact = artifactMap[address.toString()];
149
- if (!artifact) {
150
- return address.toString();
151
- }
152
-
153
- return `${artifact.name}<${address.toString()}>`;
154
- }
155
-
156
- async function getKnownNullifiers(pxe: PXE, artifactMap: ArtifactMap) {
157
- const knownContracts = await pxe.getContracts();
158
- const deployerAddress = ProtocolContractAddress.ContractInstanceRegistry;
159
- const classRegistryAddress = ProtocolContractAddress.ContractClassRegistry;
160
- const initNullifiers: Record<string, AztecAddress> = {};
161
- const deployNullifiers: Record<string, AztecAddress> = {};
162
- const classNullifiers: Record<string, string> = {};
163
- for (const contract of knownContracts) {
164
- initNullifiers[(await siloNullifier(contract, contract.toField())).toString()] = contract;
165
- deployNullifiers[(await siloNullifier(deployerAddress, contract.toField())).toString()] = contract;
166
- }
167
- for (const artifact of Object.values(artifactMap)) {
168
- classNullifiers[(await siloNullifier(classRegistryAddress, artifact.classId)).toString()] =
169
- `${artifact.name}Class<${artifact.classId}>`;
170
- }
171
- return { initNullifiers, deployNullifiers, classNullifiers };
172
- }
173
-
174
- type ArtifactMap = Record<string, ContractArtifactWithClassId>;
175
- type ContractArtifactWithClassId = ContractArtifact & { classId: Fr };
176
- async function getKnownArtifacts(pxe: PXE): Promise<ArtifactMap> {
177
- const knownContractAddresses = await pxe.getContracts();
178
- const knownContracts = (
179
- await Promise.all(knownContractAddresses.map(contractAddress => pxe.getContractMetadata(contractAddress)))
180
- ).map(contractMetadata => contractMetadata.contractInstance);
181
- const classIds = [...new Set(knownContracts.map(contract => contract?.currentContractClassId))];
182
- const knownArtifacts = (
183
- await Promise.all(classIds.map(classId => (classId ? pxe.getContractClassMetadata(classId) : undefined)))
184
- ).map(contractClassMetadata =>
185
- contractClassMetadata
186
- ? { ...contractClassMetadata.artifact, classId: contractClassMetadata.contractClass?.id }
187
- : undefined,
188
- );
189
- const map: Record<string, ContractArtifactWithClassId> = {};
190
- for (const instance of knownContracts) {
191
- if (instance) {
192
- const artifact = knownArtifacts.find(a =>
193
- a?.classId?.equals(instance.currentContractClassId),
194
- ) as ContractArtifactWithClassId;
195
- if (artifact) {
196
- map[instance.address.toString()] = artifact;
197
- }
198
- }
199
- }
200
- return map;
201
- }
@@ -1,17 +1,7 @@
1
- import {
2
- AztecAddress,
3
- DefaultWaitOpts,
4
- Fr,
5
- type PXE,
6
- SignerlessWallet,
7
- SponsoredFeePaymentMethod,
8
- type WaitForProvenOpts,
9
- getContractInstanceFromInstantiationParams,
10
- waitForProven,
11
- } from '@aztec/aztec.js';
1
+ import type { AztecAddress } from '@aztec/aztec.js/addresses';
2
+ import { getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
3
+ import { Fr } from '@aztec/aztec.js/fields';
12
4
  import { SPONSORED_FPC_SALT } from '@aztec/constants';
13
- import { DefaultMultiCallEntrypoint } from '@aztec/entrypoints/multicall';
14
- import type { LogFn } from '@aztec/foundation/log';
15
5
 
16
6
  async function getSponsoredFPCContract() {
17
7
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -20,39 +10,10 @@ async function getSponsoredFPCContract() {
20
10
  return SponsoredFPCContract;
21
11
  }
22
12
 
23
- export async function getSponsoredFPCAddress() {
13
+ export async function getSponsoredFPCAddress(): Promise<AztecAddress> {
24
14
  const SponsoredFPCContract = await getSponsoredFPCContract();
25
15
  const sponsoredFPCInstance = await getContractInstanceFromInstantiationParams(SponsoredFPCContract.artifact, {
26
16
  salt: new Fr(SPONSORED_FPC_SALT),
27
17
  });
28
18
  return sponsoredFPCInstance.address;
29
19
  }
30
-
31
- export async function setupSponsoredFPC(
32
- pxe: PXE,
33
- log: LogFn,
34
- waitOpts = DefaultWaitOpts,
35
- waitForProvenOptions?: WaitForProvenOpts,
36
- ) {
37
- const SponsoredFPCContract = await getSponsoredFPCContract();
38
- const address = await getSponsoredFPCAddress();
39
- const paymentMethod = new SponsoredFeePaymentMethod(address);
40
- const { l1ChainId: chainId, rollupVersion } = await pxe.getNodeInfo();
41
-
42
- const deployer = new SignerlessWallet(pxe, new DefaultMultiCallEntrypoint(chainId, rollupVersion));
43
-
44
- const deployTx = SponsoredFPCContract.deploy(deployer).send({
45
- from: AztecAddress.ZERO,
46
- contractAddressSalt: new Fr(SPONSORED_FPC_SALT),
47
- universalDeploy: true,
48
- fee: { paymentMethod },
49
- });
50
-
51
- const deployed = await deployTx.deployed(waitOpts);
52
-
53
- if (waitForProvenOptions !== undefined) {
54
- await waitForProven(pxe, await deployTx.getReceipt(), waitForProvenOptions);
55
- }
56
-
57
- log(`SponsoredFPC: ${deployed.address}`);
58
- }
@@ -1,3 +0,0 @@
1
- import type { LogFn, Logger } from '@aztec/foundation/log';
2
- export declare function bootstrapNetwork(pxeUrl: string, l1Urls: string[], l1ChainId: string, l1PrivateKey: `0x${string}` | undefined, l1Mnemonic: string, addressIndex: number, json: boolean, log: LogFn, debugLog: Logger): Promise<void>;
3
- //# sourceMappingURL=bootstrap_network.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bootstrap_network.d.ts","sourceRoot":"","sources":["../../../src/cmds/devnet/bootstrap_network.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAqB3D,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EAAE,EAChB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,KAAK,MAAM,EAAE,GAAG,SAAS,EACvC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,KAAK,EACV,QAAQ,EAAE,MAAM,iBAkFjB"}