@aztec/aztec 0.0.1-commit.b655e406 → 0.0.1-commit.c0b82b2

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 (149) hide show
  1. package/README.md +1 -1
  2. package/dest/bin/index.d.ts +1 -1
  3. package/dest/bin/index.js +11 -4
  4. package/dest/cli/admin_api_key_store.d.ts +45 -0
  5. package/dest/cli/admin_api_key_store.d.ts.map +1 -0
  6. package/dest/cli/admin_api_key_store.js +98 -0
  7. package/dest/cli/aztec_start_action.d.ts +1 -1
  8. package/dest/cli/aztec_start_action.d.ts.map +1 -1
  9. package/dest/cli/aztec_start_action.js +58 -21
  10. package/dest/cli/aztec_start_options.d.ts +1 -1
  11. package/dest/cli/aztec_start_options.d.ts.map +1 -1
  12. package/dest/cli/aztec_start_options.js +46 -38
  13. package/dest/cli/cli.d.ts +1 -1
  14. package/dest/cli/cli.js +7 -7
  15. package/dest/cli/cmds/compile.d.ts +4 -0
  16. package/dest/cli/cmds/compile.d.ts.map +1 -0
  17. package/dest/cli/cmds/compile.js +160 -0
  18. package/dest/cli/cmds/migrate_ha_db.d.ts +3 -0
  19. package/dest/cli/cmds/migrate_ha_db.d.ts.map +1 -0
  20. package/dest/cli/cmds/migrate_ha_db.js +27 -0
  21. package/dest/cli/cmds/profile.d.ts +4 -0
  22. package/dest/cli/cmds/profile.d.ts.map +1 -0
  23. package/dest/cli/cmds/profile.js +8 -0
  24. package/dest/cli/cmds/profile_flamegraph.d.ts +4 -0
  25. package/dest/cli/cmds/profile_flamegraph.d.ts.map +1 -0
  26. package/dest/cli/cmds/profile_flamegraph.js +51 -0
  27. package/dest/cli/cmds/profile_gates.d.ts +4 -0
  28. package/dest/cli/cmds/profile_gates.d.ts.map +1 -0
  29. package/dest/cli/cmds/profile_gates.js +57 -0
  30. package/dest/cli/cmds/profile_utils.d.ts +18 -0
  31. package/dest/cli/cmds/profile_utils.d.ts.map +1 -0
  32. package/dest/cli/cmds/profile_utils.js +50 -0
  33. package/dest/cli/cmds/start_archiver.d.ts +1 -1
  34. package/dest/cli/cmds/start_archiver.d.ts.map +1 -1
  35. package/dest/cli/cmds/start_archiver.js +11 -13
  36. package/dest/cli/cmds/start_bot.d.ts +3 -3
  37. package/dest/cli/cmds/start_bot.d.ts.map +1 -1
  38. package/dest/cli/cmds/start_bot.js +10 -6
  39. package/dest/cli/cmds/start_node.d.ts +1 -1
  40. package/dest/cli/cmds/start_node.d.ts.map +1 -1
  41. package/dest/cli/cmds/start_node.js +66 -14
  42. package/dest/cli/cmds/start_p2p_bootstrap.d.ts +2 -2
  43. package/dest/cli/cmds/start_p2p_bootstrap.d.ts.map +1 -1
  44. package/dest/cli/cmds/start_p2p_bootstrap.js +2 -3
  45. package/dest/cli/cmds/start_prover_agent.d.ts +1 -1
  46. package/dest/cli/cmds/start_prover_agent.d.ts.map +1 -1
  47. package/dest/cli/cmds/start_prover_agent.js +4 -4
  48. package/dest/cli/cmds/start_prover_broker.d.ts +1 -1
  49. package/dest/cli/cmds/start_prover_broker.d.ts.map +1 -1
  50. package/dest/cli/cmds/start_prover_broker.js +4 -4
  51. package/dest/cli/cmds/start_txe.d.ts +1 -1
  52. package/dest/cli/cmds/utils/artifacts.d.ts +21 -0
  53. package/dest/cli/cmds/utils/artifacts.d.ts.map +1 -0
  54. package/dest/cli/cmds/utils/artifacts.js +24 -0
  55. package/dest/cli/cmds/utils/spawn.d.ts +3 -0
  56. package/dest/cli/cmds/utils/spawn.d.ts.map +1 -0
  57. package/dest/cli/cmds/utils/spawn.js +16 -0
  58. package/dest/cli/index.d.ts +1 -1
  59. package/dest/cli/preload_crs.d.ts +1 -1
  60. package/dest/cli/release_version.d.ts +1 -1
  61. package/dest/cli/util.d.ts +11 -20
  62. package/dest/cli/util.d.ts.map +1 -1
  63. package/dest/cli/util.js +16 -11
  64. package/dest/cli/versioning.d.ts +1 -1
  65. package/dest/examples/token.d.ts +1 -1
  66. package/dest/examples/token.js +6 -6
  67. package/dest/examples/util.d.ts +2 -2
  68. package/dest/examples/util.d.ts.map +1 -1
  69. package/dest/index.d.ts +2 -2
  70. package/dest/index.d.ts.map +1 -1
  71. package/dest/index.js +1 -1
  72. package/dest/local-network/banana_fpc.d.ts +10 -0
  73. package/dest/local-network/banana_fpc.d.ts.map +1 -0
  74. package/dest/{sandbox → local-network}/banana_fpc.js +3 -3
  75. package/dest/local-network/index.d.ts +4 -0
  76. package/dest/local-network/index.d.ts.map +1 -0
  77. package/dest/{sandbox → local-network}/index.js +1 -1
  78. package/dest/local-network/local-network.d.ts +73 -0
  79. package/dest/local-network/local-network.d.ts.map +1 -0
  80. package/dest/{sandbox/sandbox.js → local-network/local-network.js} +75 -45
  81. package/dest/local-network/sponsored_fpc.d.ts +5 -0
  82. package/dest/local-network/sponsored_fpc.d.ts.map +1 -0
  83. package/dest/mnemonic.d.ts +1 -1
  84. package/dest/splash.d.ts +1 -1
  85. package/dest/testing/anvil_test_watcher.d.ts +12 -4
  86. package/dest/testing/anvil_test_watcher.d.ts.map +1 -1
  87. package/dest/testing/anvil_test_watcher.js +68 -29
  88. package/dest/testing/cheat_codes.d.ts +1 -1
  89. package/dest/testing/cheat_codes.d.ts.map +1 -1
  90. package/dest/testing/epoch_test_settler.d.ts +19 -0
  91. package/dest/testing/epoch_test_settler.d.ts.map +1 -0
  92. package/dest/testing/epoch_test_settler.js +62 -0
  93. package/dest/testing/index.d.ts +2 -1
  94. package/dest/testing/index.d.ts.map +1 -1
  95. package/dest/testing/index.js +1 -0
  96. package/package.json +41 -37
  97. package/scripts/aztec.sh +66 -0
  98. package/scripts/init.sh +45 -0
  99. package/scripts/new.sh +60 -0
  100. package/scripts/setup_workspace.sh +124 -0
  101. package/src/bin/index.ts +12 -4
  102. package/src/cli/admin_api_key_store.ts +128 -0
  103. package/src/cli/aztec_start_action.ts +61 -16
  104. package/src/cli/aztec_start_options.ts +47 -36
  105. package/src/cli/cli.ts +11 -11
  106. package/src/cli/cmds/compile.ts +184 -0
  107. package/src/cli/cmds/migrate_ha_db.ts +43 -0
  108. package/src/cli/cmds/profile.ts +25 -0
  109. package/src/cli/cmds/profile_flamegraph.ts +63 -0
  110. package/src/cli/cmds/profile_gates.ts +67 -0
  111. package/src/cli/cmds/profile_utils.ts +58 -0
  112. package/src/cli/cmds/start_archiver.ts +7 -18
  113. package/src/cli/cmds/start_bot.ts +9 -6
  114. package/src/cli/cmds/start_node.ts +55 -13
  115. package/src/cli/cmds/start_p2p_bootstrap.ts +3 -3
  116. package/src/cli/cmds/start_prover_agent.ts +4 -12
  117. package/src/cli/cmds/start_prover_broker.ts +7 -3
  118. package/src/cli/cmds/utils/artifacts.ts +44 -0
  119. package/src/cli/cmds/utils/spawn.ts +16 -0
  120. package/src/cli/util.ts +22 -27
  121. package/src/examples/token.ts +6 -8
  122. package/src/examples/util.ts +1 -1
  123. package/src/index.ts +2 -2
  124. package/src/{sandbox → local-network}/banana_fpc.ts +11 -7
  125. package/src/{sandbox → local-network}/index.ts +1 -1
  126. package/src/local-network/local-network.ts +267 -0
  127. package/src/{sandbox → local-network}/sponsored_fpc.ts +3 -2
  128. package/src/testing/anvil_test_watcher.ts +76 -30
  129. package/src/testing/cheat_codes.ts +3 -2
  130. package/src/testing/epoch_test_settler.ts +71 -0
  131. package/src/testing/index.ts +1 -0
  132. package/dest/cli/cmds/start_blob_sink.d.ts +0 -3
  133. package/dest/cli/cmds/start_blob_sink.d.ts.map +0 -1
  134. package/dest/cli/cmds/start_blob_sink.js +0 -33
  135. package/dest/cli/cmds/start_prover_node.d.ts +0 -7
  136. package/dest/cli/cmds/start_prover_node.d.ts.map +0 -1
  137. package/dest/cli/cmds/start_prover_node.js +0 -108
  138. package/dest/sandbox/banana_fpc.d.ts +0 -10
  139. package/dest/sandbox/banana_fpc.d.ts.map +0 -1
  140. package/dest/sandbox/index.d.ts +0 -4
  141. package/dest/sandbox/index.d.ts.map +0 -1
  142. package/dest/sandbox/sandbox.d.ts +0 -74
  143. package/dest/sandbox/sandbox.d.ts.map +0 -1
  144. package/dest/sandbox/sponsored_fpc.d.ts +0 -4
  145. package/dest/sandbox/sponsored_fpc.d.ts.map +0 -1
  146. package/src/cli/cmds/start_blob_sink.ts +0 -57
  147. package/src/cli/cmds/start_prover_node.ts +0 -124
  148. package/src/sandbox/sandbox.ts +0 -242
  149. /package/dest/{sandbox → local-network}/sponsored_fpc.js +0 -0
@@ -1,242 +0,0 @@
1
- #!/usr/bin/env -S node --no-warnings
2
- import { getInitialTestAccountsData } from '@aztec/accounts/testing';
3
- import { type AztecNodeConfig, AztecNodeService, getConfigEnvVars } from '@aztec/aztec-node';
4
- import { EthAddress } from '@aztec/aztec.js/addresses';
5
- import { type BlobSinkClientInterface, createBlobSinkClient } from '@aztec/blob-sink/client';
6
- import { GENESIS_ARCHIVE_ROOT } from '@aztec/constants';
7
- import {
8
- NULL_KEY,
9
- createEthereumChain,
10
- deployL1Contracts,
11
- deployMulticall3,
12
- getL1ContractsConfigEnvVars,
13
- waitForPublicClient,
14
- } from '@aztec/ethereum';
15
- import { EthCheatCodes } from '@aztec/ethereum/test';
16
- import { SecretValue } from '@aztec/foundation/config';
17
- import { Fr } from '@aztec/foundation/fields';
18
- import { type LogFn, createLogger } from '@aztec/foundation/log';
19
- import { DateProvider, TestDateProvider } from '@aztec/foundation/timer';
20
- import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
21
- import { protocolContractsHash } from '@aztec/protocol-contracts';
22
- import type { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
23
- import {
24
- type TelemetryClient,
25
- getConfigEnvVars as getTelemetryClientConfig,
26
- initTelemetryClient,
27
- } from '@aztec/telemetry-client';
28
- import { TestWallet, deployFundedSchnorrAccounts } from '@aztec/test-wallet/server';
29
- import { getGenesisValues } from '@aztec/world-state/testing';
30
-
31
- import { type HDAccount, type PrivateKeyAccount, createPublicClient, fallback, http as httpViemTransport } from 'viem';
32
- import { mnemonicToAccount, privateKeyToAddress } from 'viem/accounts';
33
- import { foundry } from 'viem/chains';
34
-
35
- import { createAccountLogs } from '../cli/util.js';
36
- import { DefaultMnemonic } from '../mnemonic.js';
37
- import { AnvilTestWatcher } from '../testing/anvil_test_watcher.js';
38
- import { getBananaFPCAddress, setupBananaFPC } from './banana_fpc.js';
39
- import { getSponsoredFPCAddress } from './sponsored_fpc.js';
40
-
41
- const logger = createLogger('sandbox');
42
-
43
- const localAnvil = foundry;
44
-
45
- /**
46
- * Function to deploy our L1 contracts to the sandbox L1
47
- * @param aztecNodeConfig - The Aztec Node Config
48
- * @param hdAccount - Account for publishing L1 contracts
49
- */
50
- export async function deployContractsToL1(
51
- aztecNodeConfig: AztecNodeConfig,
52
- hdAccount: HDAccount | PrivateKeyAccount,
53
- contractDeployLogger = logger,
54
- opts: {
55
- assumeProvenThroughBlockNumber?: number;
56
- salt?: number;
57
- genesisArchiveRoot?: Fr;
58
- feeJuicePortalInitialBalance?: bigint;
59
- } = {},
60
- ) {
61
- const chain =
62
- aztecNodeConfig.l1RpcUrls.length > 0
63
- ? createEthereumChain(aztecNodeConfig.l1RpcUrls, aztecNodeConfig.l1ChainId)
64
- : { chainInfo: localAnvil };
65
-
66
- await waitForPublicClient(aztecNodeConfig);
67
-
68
- const l1Contracts = await deployL1Contracts(
69
- aztecNodeConfig.l1RpcUrls,
70
- hdAccount,
71
- chain.chainInfo,
72
- contractDeployLogger,
73
- {
74
- ...getL1ContractsConfigEnvVars(), // TODO: We should not need to be loading config from env again, caller should handle this
75
- ...aztecNodeConfig,
76
- vkTreeRoot: getVKTreeRoot(),
77
- protocolContractsHash,
78
- genesisArchiveRoot: opts.genesisArchiveRoot ?? new Fr(GENESIS_ARCHIVE_ROOT),
79
- salt: opts.salt,
80
- feeJuicePortalInitialBalance: opts.feeJuicePortalInitialBalance,
81
- aztecTargetCommitteeSize: 0, // no committee in sandbox
82
- slasherFlavor: 'none', // no slashing in sandbox
83
- realVerifier: false,
84
- },
85
- );
86
-
87
- await deployMulticall3(l1Contracts.l1Client, logger);
88
-
89
- aztecNodeConfig.l1Contracts = l1Contracts.l1ContractAddresses;
90
- aztecNodeConfig.rollupVersion = l1Contracts.rollupVersion;
91
-
92
- return aztecNodeConfig.l1Contracts;
93
- }
94
-
95
- /** Sandbox settings. */
96
- export type SandboxConfig = AztecNodeConfig & {
97
- /** Mnemonic used to derive the L1 deployer private key.*/
98
- l1Mnemonic: string;
99
- /** Salt used to deploy L1 contracts.*/
100
- deployAztecContractsSalt: string;
101
- /** Whether to deploy test accounts on sandbox start.*/
102
- testAccounts: boolean;
103
- };
104
-
105
- /**
106
- * Create and start a new Aztec Node and PXE. Deploys L1 contracts.
107
- * Does not start any HTTP services nor populate any initial accounts.
108
- * @param config - Optional Sandbox settings.
109
- */
110
- export async function createSandbox(config: Partial<SandboxConfig> = {}, userLog: LogFn) {
111
- // sandbox is meant for test envs. We should only need one l1RpcUrl
112
- const l1RpcUrl = config.l1RpcUrls?.[0];
113
- if (!l1RpcUrl) {
114
- throw new Error('An L1 RPC URL is required');
115
- }
116
- if ((config.l1RpcUrls?.length || 0) > 1) {
117
- logger.warn(`Multiple L1 RPC URLs provided. Sandbox will only use the first one: ${l1RpcUrl}`);
118
- }
119
- const aztecNodeConfig: AztecNodeConfig = { ...getConfigEnvVars(), ...config };
120
- const hdAccount = mnemonicToAccount(config.l1Mnemonic || DefaultMnemonic);
121
- if (
122
- aztecNodeConfig.publisherPrivateKeys == undefined ||
123
- !aztecNodeConfig.publisherPrivateKeys.length ||
124
- aztecNodeConfig.publisherPrivateKeys[0].getValue() === NULL_KEY
125
- ) {
126
- const privKey = hdAccount.getHdKey().privateKey;
127
- aztecNodeConfig.publisherPrivateKeys = [new SecretValue(`0x${Buffer.from(privKey!).toString('hex')}` as const)];
128
- }
129
- if (!aztecNodeConfig.validatorPrivateKeys?.getValue().length) {
130
- const privKey = hdAccount.getHdKey().privateKey;
131
- aztecNodeConfig.validatorPrivateKeys = new SecretValue([`0x${Buffer.from(privKey!).toString('hex')}`]);
132
- }
133
- aztecNodeConfig.coinbase = EthAddress.fromString(
134
- privateKeyToAddress(aztecNodeConfig.validatorPrivateKeys.getValue()[0]),
135
- );
136
-
137
- const initialAccounts = await (async () => {
138
- if (config.testAccounts === true || config.testAccounts === undefined) {
139
- if (aztecNodeConfig.p2pEnabled) {
140
- userLog(`Not setting up test accounts as we are connecting to a network`);
141
- } else {
142
- userLog(`Setting up test accounts`);
143
- return await getInitialTestAccountsData();
144
- }
145
- }
146
- return [];
147
- })();
148
-
149
- const bananaFPC = await getBananaFPCAddress(initialAccounts);
150
- const sponsoredFPC = await getSponsoredFPCAddress();
151
- const fundedAddresses = initialAccounts.length
152
- ? [...initialAccounts.map(a => a.address), bananaFPC, sponsoredFPC]
153
- : [];
154
- const { genesisArchiveRoot, prefilledPublicData, fundingNeeded } = await getGenesisValues(fundedAddresses);
155
-
156
- let watcher: AnvilTestWatcher | undefined = undefined;
157
- const dateProvider = new TestDateProvider();
158
- if (!aztecNodeConfig.p2pEnabled) {
159
- const l1ContractAddresses = await deployContractsToL1(aztecNodeConfig, hdAccount, undefined, {
160
- assumeProvenThroughBlockNumber: Number.MAX_SAFE_INTEGER,
161
- genesisArchiveRoot,
162
- salt: config.deployAztecContractsSalt ? parseInt(config.deployAztecContractsSalt) : undefined,
163
- feeJuicePortalInitialBalance: fundingNeeded,
164
- });
165
-
166
- const chain =
167
- aztecNodeConfig.l1RpcUrls.length > 0
168
- ? createEthereumChain([l1RpcUrl], aztecNodeConfig.l1ChainId)
169
- : { chainInfo: localAnvil };
170
-
171
- const publicClient = createPublicClient({
172
- chain: chain.chainInfo,
173
- transport: fallback([httpViemTransport(l1RpcUrl)]) as any,
174
- });
175
-
176
- watcher = new AnvilTestWatcher(
177
- new EthCheatCodes([l1RpcUrl], dateProvider),
178
- l1ContractAddresses.rollupAddress,
179
- publicClient,
180
- dateProvider,
181
- );
182
- watcher.setIsSandbox(true);
183
- await watcher.start();
184
- }
185
-
186
- const telemetry = initTelemetryClient(getTelemetryClientConfig());
187
- // Create a local blob sink client inside the sandbox, no http connectivity
188
- const blobSinkClient = createBlobSinkClient();
189
- const node = await createAztecNode(
190
- aztecNodeConfig,
191
- { telemetry, blobSinkClient, dateProvider },
192
- { prefilledPublicData },
193
- );
194
-
195
- if (initialAccounts.length) {
196
- const PXEConfig = { proverEnabled: aztecNodeConfig.realProofs };
197
- const wallet = await TestWallet.create(node, PXEConfig);
198
-
199
- userLog('Setting up funded test accounts...');
200
- const accountManagers = await deployFundedSchnorrAccounts(wallet, node, initialAccounts);
201
- const accountsWithSecrets = accountManagers.map((manager, i) => ({
202
- account: manager,
203
- secretKey: initialAccounts[i].secret,
204
- }));
205
- const accLogs = await createAccountLogs(accountsWithSecrets, wallet);
206
- userLog(accLogs.join(''));
207
-
208
- await setupBananaFPC(initialAccounts, wallet, userLog);
209
-
210
- userLog(`SponsoredFPC: ${await getSponsoredFPCAddress()}`);
211
-
212
- // We no longer need the wallet once we've setup the accounts so we stop the underlying PXE job queue
213
- await wallet.stop();
214
- }
215
-
216
- const stop = async () => {
217
- await node.stop();
218
- await watcher?.stop();
219
- };
220
-
221
- return { node, stop };
222
- }
223
-
224
- /**
225
- * Create and start a new Aztec RPC HTTP Server
226
- * @param config - Optional Aztec node settings.
227
- */
228
- export async function createAztecNode(
229
- config: Partial<AztecNodeConfig> = {},
230
- deps: { telemetry?: TelemetryClient; blobSinkClient?: BlobSinkClientInterface; dateProvider?: DateProvider } = {},
231
- options: { prefilledPublicData?: PublicDataTreeLeaf[] } = {},
232
- ) {
233
- // TODO(#12272): will clean this up. This is criminal.
234
- const { l1Contracts, ...rest } = getConfigEnvVars();
235
- const aztecNodeConfig: AztecNodeConfig = {
236
- ...rest,
237
- ...config,
238
- l1Contracts: { ...l1Contracts, ...config.l1Contracts },
239
- };
240
- const node = await AztecNodeService.createAndSync(aztecNodeConfig, deps, options);
241
- return node;
242
- }