@aztec/aztec 0.0.0-test.0

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 (122) hide show
  1. package/README.md +57 -0
  2. package/dest/bin/index.d.ts +3 -0
  3. package/dest/bin/index.d.ts.map +1 -0
  4. package/dest/bin/index.js +46 -0
  5. package/dest/cli/aztec_start_action.d.ts +3 -0
  6. package/dest/cli/aztec_start_action.d.ts.map +1 -0
  7. package/dest/cli/aztec_start_action.js +108 -0
  8. package/dest/cli/aztec_start_options.d.ts +15 -0
  9. package/dest/cli/aztec_start_options.d.ts.map +1 -0
  10. package/dest/cli/aztec_start_options.js +348 -0
  11. package/dest/cli/chain_l2_config.d.ts +19 -0
  12. package/dest/cli/chain_l2_config.d.ts.map +1 -0
  13. package/dest/cli/chain_l2_config.js +56 -0
  14. package/dest/cli/cli.d.ts +9 -0
  15. package/dest/cli/cli.d.ts.map +1 -0
  16. package/dest/cli/cli.js +33 -0
  17. package/dest/cli/cmds/start_archiver.d.ts +9 -0
  18. package/dest/cli/cmds/start_archiver.d.ts.map +1 -0
  19. package/dest/cli/cmds/start_archiver.js +42 -0
  20. package/dest/cli/cmds/start_blob_sink.d.ts +3 -0
  21. package/dest/cli/cmds/start_blob_sink.d.ts.map +1 -0
  22. package/dest/cli/cmds/start_blob_sink.js +17 -0
  23. package/dest/cli/cmds/start_bot.d.ts +11 -0
  24. package/dest/cli/cmds/start_bot.d.ts.map +1 -0
  25. package/dest/cli/cmds/start_bot.js +31 -0
  26. package/dest/cli/cmds/start_faucet.d.ts +4 -0
  27. package/dest/cli/cmds/start_faucet.d.ts.map +1 -0
  28. package/dest/cli/cmds/start_faucet.js +20 -0
  29. package/dest/cli/cmds/start_node.d.ts +7 -0
  30. package/dest/cli/cmds/start_node.d.ts.map +1 -0
  31. package/dest/cli/cmds/start_node.js +131 -0
  32. package/dest/cli/cmds/start_p2p_bootstrap.d.ts +6 -0
  33. package/dest/cli/cmds/start_p2p_bootstrap.d.ts.map +1 -0
  34. package/dest/cli/cmds/start_p2p_bootstrap.js +26 -0
  35. package/dest/cli/cmds/start_prover_agent.d.ts +4 -0
  36. package/dest/cli/cmds/start_prover_agent.d.ts.map +1 -0
  37. package/dest/cli/cmds/start_prover_agent.js +41 -0
  38. package/dest/cli/cmds/start_prover_broker.d.ts +9 -0
  39. package/dest/cli/cmds/start_prover_broker.d.ts.map +1 -0
  40. package/dest/cli/cmds/start_prover_broker.js +31 -0
  41. package/dest/cli/cmds/start_prover_node.d.ts +7 -0
  42. package/dest/cli/cmds/start_prover_node.d.ts.map +1 -0
  43. package/dest/cli/cmds/start_prover_node.js +110 -0
  44. package/dest/cli/cmds/start_pxe.d.ts +16 -0
  45. package/dest/cli/cmds/start_pxe.d.ts.map +1 -0
  46. package/dest/cli/cmds/start_pxe.js +95 -0
  47. package/dest/cli/cmds/start_txe.d.ts +3 -0
  48. package/dest/cli/cmds/start_txe.d.ts.map +1 -0
  49. package/dest/cli/cmds/start_txe.js +11 -0
  50. package/dest/cli/get_l1_config.d.ts +7 -0
  51. package/dest/cli/get_l1_config.d.ts.map +1 -0
  52. package/dest/cli/get_l1_config.js +13 -0
  53. package/dest/cli/index.d.ts +2 -0
  54. package/dest/cli/index.d.ts.map +1 -0
  55. package/dest/cli/index.js +1 -0
  56. package/dest/cli/util.d.ts +46 -0
  57. package/dest/cli/util.d.ts.map +1 -0
  58. package/dest/cli/util.js +154 -0
  59. package/dest/cli/versioning.d.ts +4 -0
  60. package/dest/cli/versioning.d.ts.map +1 -0
  61. package/dest/cli/versioning.js +9 -0
  62. package/dest/examples/token.d.ts +2 -0
  63. package/dest/examples/token.d.ts.map +1 -0
  64. package/dest/examples/token.js +46 -0
  65. package/dest/examples/util.d.ts +20 -0
  66. package/dest/examples/util.d.ts.map +1 -0
  67. package/dest/examples/util.js +31 -0
  68. package/dest/index.d.ts +2 -0
  69. package/dest/index.d.ts.map +1 -0
  70. package/dest/index.js +1 -0
  71. package/dest/mnemonic.d.ts +2 -0
  72. package/dest/mnemonic.d.ts.map +1 -0
  73. package/dest/mnemonic.js +1 -0
  74. package/dest/sandbox/banana_fpc.d.ts +11 -0
  75. package/dest/sandbox/banana_fpc.d.ts.map +1 -0
  76. package/dest/sandbox/banana_fpc.js +79 -0
  77. package/dest/sandbox/index.d.ts +5 -0
  78. package/dest/sandbox/index.d.ts.map +1 -0
  79. package/dest/sandbox/index.js +4 -0
  80. package/dest/sandbox/sandbox.d.ts +76 -0
  81. package/dest/sandbox/sandbox.d.ts.map +1 -0
  82. package/dest/sandbox/sandbox.js +181 -0
  83. package/dest/sandbox/sponsored_fee_payment_method.d.ts +23 -0
  84. package/dest/sandbox/sponsored_fee_payment_method.d.ts.map +1 -0
  85. package/dest/sandbox/sponsored_fee_payment_method.js +36 -0
  86. package/dest/sandbox/sponsored_fpc.d.ts +6 -0
  87. package/dest/sandbox/sponsored_fpc.d.ts.map +1 -0
  88. package/dest/sandbox/sponsored_fpc.js +26 -0
  89. package/dest/splash.d.ts +3 -0
  90. package/dest/splash.d.ts.map +1 -0
  91. package/dest/splash.js +2 -0
  92. package/package.json +118 -0
  93. package/src/bin/index.ts +54 -0
  94. package/src/cli/aztec_start_action.ts +114 -0
  95. package/src/cli/aztec_start_options.ts +371 -0
  96. package/src/cli/chain_l2_config.ts +74 -0
  97. package/src/cli/cli.ts +48 -0
  98. package/src/cli/cmds/start_archiver.ts +55 -0
  99. package/src/cli/cmds/start_blob_sink.ts +31 -0
  100. package/src/cli/cmds/start_bot.ts +49 -0
  101. package/src/cli/cmds/start_faucet.ts +34 -0
  102. package/src/cli/cmds/start_node.ts +151 -0
  103. package/src/cli/cmds/start_p2p_bootstrap.ts +29 -0
  104. package/src/cli/cmds/start_prover_agent.ts +68 -0
  105. package/src/cli/cmds/start_prover_broker.ts +46 -0
  106. package/src/cli/cmds/start_prover_node.ts +121 -0
  107. package/src/cli/cmds/start_pxe.ts +129 -0
  108. package/src/cli/cmds/start_txe.ts +15 -0
  109. package/src/cli/get_l1_config.ts +18 -0
  110. package/src/cli/index.ts +1 -0
  111. package/src/cli/util.ts +216 -0
  112. package/src/cli/versioning.ts +13 -0
  113. package/src/examples/token.ts +65 -0
  114. package/src/examples/util.ts +45 -0
  115. package/src/index.ts +7 -0
  116. package/src/mnemonic.ts +1 -0
  117. package/src/sandbox/banana_fpc.ts +83 -0
  118. package/src/sandbox/index.ts +5 -0
  119. package/src/sandbox/sandbox.ts +229 -0
  120. package/src/sandbox/sponsored_fee_payment_method.ts +46 -0
  121. package/src/sandbox/sponsored_fpc.ts +38 -0
  122. package/src/splash.ts +10 -0
package/README.md ADDED
@@ -0,0 +1,57 @@
1
+ # aztec
2
+
3
+ Aztec is a package that allows for a simple development environment on Aztec stack. It creates a Private eXecution Environment (PXE) that listens for HTTP requests on `localhost:8080` by default. When started, it deploys all necessary L1 Aztec contracts and then starts listening for RPC requests.
4
+
5
+ ## How to run:
6
+
7
+ ### Docker Compose
8
+
9
+ The easiest way to run is by using `docker compose up`. This will create two containers:
10
+
11
+ 1. The sandbox listening on port `8080`
12
+ 2. An anvil instance listening on port `8545`
13
+
14
+ ### Node Server
15
+
16
+ You can also run it as a standalone node server with:
17
+
18
+ ```sh
19
+ yarn start
20
+ ```
21
+
22
+ It will look for a local Ethereum RPC to talk to but you can change this with the `ETHEREUM_HOSTS` environment variable.
23
+
24
+ ## Examples
25
+
26
+ The package also includes 2 examples. There are some system prerequisites that you will need to run these locally:
27
+
28
+ - [nvm](https://github.com/nvm-sh/nvm)
29
+ - Node version > 18
30
+ - [yarn](https://yarnpkg.com/)
31
+ - [jq](https://jqlang.github.io/jq/download/)
32
+
33
+ Before running locally you'll need to:
34
+
35
+ - Head to `l1-contracts` directory and run `./bootstrap.sh`
36
+ - Then go to `yarn-project and run:
37
+ - `yarn install`
38
+ - `yarn build`
39
+ And you should be good to go!
40
+
41
+ From the `aztec` directory, you can run the two existing examples:
42
+
43
+ - Deployment, mint and transfer on an Aztec Private Token
44
+ - `yarn run:example:token`
45
+ - An L1 / L2 uniswap token trade.
46
+ - `yarn run:example:uniswap`
47
+ - To run this example, you need to set the following vars:
48
+
49
+ ```
50
+ export FORK_BLOCK_NUMBER=17514288
51
+ export FORK_URL=<YOUR_RPC_URL e.g. https://mainnet.infura.io/v3/API_KEY>
52
+ ```
53
+
54
+ ## Publishing
55
+
56
+ This package is set-up to be published on dockerhub by CI whenever there's a tagged release on `master` branch.
57
+ It's published under the tags `aztecprotocol/aztec:latest` & `aztecprotocol/aztec:<version-tag>`.
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bin/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env node
2
+ //
3
+ import { injectCommands as injectBuilderCommands } from '@aztec/builder';
4
+ import { injectCommands as injectWalletCommands } from '@aztec/cli-wallet';
5
+ import { injectCommands as injectContractCommands } from '@aztec/cli/contracts';
6
+ import { injectCommands as injectDevnetCommands } from '@aztec/cli/devnet';
7
+ import { injectCommands as injectInfrastructureCommands } from '@aztec/cli/infrastructure';
8
+ import { injectCommands as injectL1Commands } from '@aztec/cli/l1';
9
+ import { injectCommands as injectMiscCommands } from '@aztec/cli/misc';
10
+ import { injectCommands as injectPXECommands } from '@aztec/cli/pxe';
11
+ import { createConsoleLogger, createLogger } from '@aztec/foundation/log';
12
+ import { fileURLToPath } from '@aztec/foundation/url';
13
+ import { Command } from 'commander';
14
+ import { readFileSync } from 'fs';
15
+ import { dirname, resolve } from 'path';
16
+ import { injectAztecCommands } from '../cli/index.js';
17
+ const userLog = createConsoleLogger();
18
+ const debugLogger = createLogger('cli');
19
+ /** CLI & full node main entrypoint */ async function main() {
20
+ const shutdown = ()=>{
21
+ process.exit(0);
22
+ };
23
+ process.once('SIGINT', shutdown);
24
+ process.once('SIGTERM', shutdown);
25
+ const packageJsonPath = resolve(dirname(fileURLToPath(import.meta.url)), '../../package.json');
26
+ const cliVersion = JSON.parse(readFileSync(packageJsonPath).toString()).version;
27
+ let program = new Command('aztec');
28
+ program.description('Aztec command line interface').version(cliVersion);
29
+ program = injectAztecCommands(program, userLog, debugLogger);
30
+ program = injectBuilderCommands(program);
31
+ program = injectContractCommands(program, userLog, debugLogger);
32
+ program = injectInfrastructureCommands(program, userLog, debugLogger);
33
+ program = injectL1Commands(program, userLog, debugLogger);
34
+ program = injectPXECommands(program, userLog, debugLogger);
35
+ program = injectMiscCommands(program, userLog);
36
+ program = injectDevnetCommands(program, userLog, debugLogger);
37
+ program = injectWalletCommands(program, userLog, debugLogger);
38
+ await program.parseAsync(process.argv);
39
+ }
40
+ main().catch((err)=>{
41
+ debugLogger.error(`Error in command execution`);
42
+ debugLogger.error(err + '\n' + err.stack);
43
+ // See https://nodejs.org/api/process.html#processexitcode
44
+ process.exitCode = 1;
45
+ throw err;
46
+ });
@@ -0,0 +1,3 @@
1
+ import type { LogFn, Logger } from '@aztec/foundation/log';
2
+ export declare function aztecStart(options: any, userLog: LogFn, debugLogger: Logger): Promise<void>;
3
+ //# sourceMappingURL=aztec_start_action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aztec_start_action.d.ts","sourceRoot":"","sources":["../../src/cli/aztec_start_action.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAmB3D,wBAAsB,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,iBAyFjF"}
@@ -0,0 +1,108 @@
1
+ import { createNamespacedSafeJsonRpcServer, startHttpRpcServer } from '@aztec/foundation/json-rpc/server';
2
+ import { fileURLToPath } from '@aztec/foundation/url';
3
+ import { AztecNodeApiSchema, PXESchema } from '@aztec/stdlib/interfaces/client';
4
+ import { getVersioningMiddleware } from '@aztec/stdlib/versioning';
5
+ import { getOtelJsonRpcPropagationMiddleware } from '@aztec/telemetry-client';
6
+ import { readFileSync } from 'fs';
7
+ import { dirname, resolve } from 'path';
8
+ import { createSandbox } from '../sandbox/index.js';
9
+ import { github, splash } from '../splash.js';
10
+ import { enrichEnvironmentWithChainConfig } from './chain_l2_config.js';
11
+ import { extractNamespacedOptions, installSignalHandlers } from './util.js';
12
+ import { getVersions } from './versioning.js';
13
+ const packageJsonPath = resolve(dirname(fileURLToPath(import.meta.url)), '../../package.json');
14
+ const cliVersion = JSON.parse(readFileSync(packageJsonPath).toString()).version;
15
+ export async function aztecStart(options, userLog, debugLogger) {
16
+ // list of 'stop' functions to call when process ends
17
+ const signalHandlers = [];
18
+ const services = {};
19
+ let config = undefined;
20
+ if (options.sandbox) {
21
+ const sandboxOptions = extractNamespacedOptions(options, 'sandbox');
22
+ const nodeOptions = extractNamespacedOptions(options, 'node');
23
+ userLog(`${splash}\n${github}\n\n`);
24
+ userLog(`Setting up Aztec Sandbox ${cliVersion}, please stand by...`);
25
+ const { node, pxe, stop } = await createSandbox({
26
+ l1Mnemonic: options.l1Mnemonic,
27
+ l1RpcUrls: options.l1RpcUrls,
28
+ l1Salt: nodeOptions.deployAztecContractsSalt,
29
+ noPXE: sandboxOptions.noPXE,
30
+ testAccounts: sandboxOptions.testAccounts
31
+ }, userLog);
32
+ // Start Node and PXE JSON-RPC server
33
+ signalHandlers.push(stop);
34
+ services.node = [
35
+ node,
36
+ AztecNodeApiSchema
37
+ ];
38
+ if (!sandboxOptions.noPXE) {
39
+ services.pxe = [
40
+ pxe,
41
+ PXESchema
42
+ ];
43
+ } else {
44
+ userLog(`Not exposing PXE API through JSON-RPC server`);
45
+ }
46
+ } else {
47
+ // If a network is specified, enrich the environment with the chain config
48
+ if (options.network) {
49
+ await enrichEnvironmentWithChainConfig(options.network);
50
+ }
51
+ if (options.node) {
52
+ const { startNode } = await import('./cmds/start_node.js');
53
+ ({ config } = await startNode(options, signalHandlers, services, userLog));
54
+ } else if (options.bot) {
55
+ const { startBot } = await import('./cmds/start_bot.js');
56
+ await startBot(options, signalHandlers, services, userLog);
57
+ } else if (options.proverNode) {
58
+ const { startProverNode } = await import('./cmds/start_prover_node.js');
59
+ ({ config } = await startProverNode(options, signalHandlers, services, userLog));
60
+ } else if (options.blobSink) {
61
+ const { startBlobSink } = await import('./cmds/start_blob_sink.js');
62
+ await startBlobSink(options, signalHandlers, userLog);
63
+ } else if (options.pxe) {
64
+ const { startPXE } = await import('./cmds/start_pxe.js');
65
+ ({ config } = await startPXE(options, signalHandlers, services, userLog));
66
+ } else if (options.archiver) {
67
+ const { startArchiver } = await import('./cmds/start_archiver.js');
68
+ ({ config } = await startArchiver(options, signalHandlers, services));
69
+ } else if (options.p2pBootstrap) {
70
+ const { startP2PBootstrap } = await import('./cmds/start_p2p_bootstrap.js');
71
+ ({ config } = await startP2PBootstrap(options, signalHandlers, services, userLog));
72
+ } else if (options.proverAgent) {
73
+ const { startProverAgent } = await import('./cmds/start_prover_agent.js');
74
+ await startProverAgent(options, signalHandlers, services, userLog);
75
+ } else if (options.proverBroker) {
76
+ const { startProverBroker } = await import('./cmds/start_prover_broker.js');
77
+ await startProverBroker(options, signalHandlers, services, userLog);
78
+ } else if (options.txe) {
79
+ const { startTXE } = await import('./cmds/start_txe.js');
80
+ await startTXE(options, debugLogger);
81
+ } else if (options.sequencer) {
82
+ userLog(`Cannot run a standalone sequencer without a node`);
83
+ process.exit(1);
84
+ } else if (options.faucet) {
85
+ const { startFaucet } = await import('./cmds/start_faucet.js');
86
+ await startFaucet(options, signalHandlers, services, userLog);
87
+ } else {
88
+ userLog(`No module specified to start`);
89
+ process.exit(1);
90
+ }
91
+ }
92
+ installSignalHandlers(debugLogger.info, signalHandlers);
93
+ const versions = getVersions(config);
94
+ if (Object.entries(services).length > 0) {
95
+ const rpcServer = createNamespacedSafeJsonRpcServer(services, {
96
+ http200OnError: false,
97
+ log: debugLogger,
98
+ middlewares: [
99
+ getOtelJsonRpcPropagationMiddleware(),
100
+ getVersioningMiddleware(versions)
101
+ ]
102
+ });
103
+ const { port } = await startHttpRpcServer(rpcServer, {
104
+ port: options.port
105
+ });
106
+ debugLogger.info(`Aztec Server listening on port ${port}`, versions);
107
+ }
108
+ }
@@ -0,0 +1,15 @@
1
+ import { type ConfigMapping, type EnvVar } from '@aztec/foundation/config';
2
+ export interface AztecStartOption {
3
+ flag: string;
4
+ description: string;
5
+ defaultValue: any | undefined;
6
+ printDefault?: (val: any) => string;
7
+ envVar: EnvVar | undefined;
8
+ parseVal?: (val: string) => any;
9
+ }
10
+ export declare const getOptions: (namespace: string, configMappings: Record<string, ConfigMapping>) => AztecStartOption[];
11
+ export declare const universalOptions: string[];
12
+ export declare const aztecStartOptions: {
13
+ [key: string]: AztecStartOption[];
14
+ };
15
+ //# sourceMappingURL=aztec_start_options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aztec_start_options.d.ts","sourceRoot":"","sources":["../../src/cli/aztec_start_options.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,MAAM,EAIZ,MAAM,0BAA0B,CAAC;AAelC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,GAAG,GAAG,SAAS,CAAC;IAC9B,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC;IACpC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,CAAC;CACjC;AAED,eAAO,MAAM,UAAU,cAAe,MAAM,kBAAkB,OAAO,MAAM,EAAE,aAAa,CAAC,uBAiB1F,CAAC;AAGF,eAAO,MAAM,gBAAgB,UAA2E,CAAC;AAGzG,eAAO,MAAM,iBAAiB,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;CAwTlE,CAAC"}
@@ -0,0 +1,348 @@
1
+ import { archiverConfigMappings } from '@aztec/archiver/config';
2
+ import { faucetConfigMapping } from '@aztec/aztec-faucet/config';
3
+ import { sequencerClientConfigMappings } from '@aztec/aztec-node/config';
4
+ import { blobSinkConfigMappings } from '@aztec/blob-sink/server';
5
+ import { botConfigMappings } from '@aztec/bot/config';
6
+ import { booleanConfigHelper, isBooleanConfigValue, omitConfigMappings } from '@aztec/foundation/config';
7
+ import { bootnodeConfigMappings, p2pConfigMappings } from '@aztec/p2p/config';
8
+ import { proverAgentConfigMappings, proverBrokerConfigMappings } from '@aztec/prover-client/broker';
9
+ import { proverNodeConfigMappings } from '@aztec/prover-node/config';
10
+ import { allPxeConfigMappings } from '@aztec/pxe/config';
11
+ import { telemetryClientConfigMappings } from '@aztec/telemetry-client';
12
+ import { DefaultMnemonic } from '../mnemonic.js';
13
+ export const getOptions = (namespace, configMappings)=>{
14
+ const options = [];
15
+ for (const [key, { env, defaultValue: def, parseEnv, description, printDefault }] of Object.entries(configMappings)){
16
+ if (universalOptions.includes(key)) {
17
+ continue;
18
+ }
19
+ const isBoolean = isBooleanConfigValue(configMappings, key);
20
+ options.push({
21
+ flag: `--${namespace}.${key}${isBoolean ? '' : ' <value>'}`,
22
+ description,
23
+ defaultValue: def,
24
+ printDefault,
25
+ envVar: env,
26
+ parseVal: parseEnv
27
+ });
28
+ }
29
+ return options;
30
+ };
31
+ // These are options used by multiple modules so should be inputted once
32
+ export const universalOptions = [
33
+ 'l1RpcUrls',
34
+ 'l1ChainId',
35
+ 'l1Contracts',
36
+ 'p2pEnabled',
37
+ 'dataDirectory'
38
+ ];
39
+ // Define categories and options
40
+ export const aztecStartOptions = {
41
+ NETWORK: [
42
+ {
43
+ flag: '--network <value>',
44
+ description: 'Network to run Aztec on',
45
+ defaultValue: undefined,
46
+ envVar: 'NETWORK'
47
+ }
48
+ ],
49
+ SANDBOX: [
50
+ {
51
+ flag: '--sandbox',
52
+ description: 'Starts Aztec Sandbox',
53
+ defaultValue: undefined,
54
+ envVar: undefined
55
+ },
56
+ {
57
+ flag: '--sandbox.testAccounts',
58
+ description: 'Deploy test accounts on sandbox start',
59
+ envVar: 'TEST_ACCOUNTS',
60
+ ...booleanConfigHelper(true)
61
+ },
62
+ {
63
+ flag: '--sandbox.noPXE',
64
+ description: 'Do not expose PXE service on sandbox start',
65
+ envVar: 'NO_PXE',
66
+ ...booleanConfigHelper()
67
+ }
68
+ ],
69
+ API: [
70
+ {
71
+ flag: '--port <value>',
72
+ description: 'Port to run the Aztec Services on on',
73
+ defaultValue: 8080,
74
+ envVar: 'AZTEC_PORT',
75
+ parseVal: (val)=>parseInt(val, 10)
76
+ },
77
+ {
78
+ flag: '--api-prefix <value>',
79
+ description: 'Prefix for API routes on any service that is started',
80
+ defaultValue: '',
81
+ envVar: 'API_PREFIX'
82
+ }
83
+ ],
84
+ ETHEREUM: [
85
+ {
86
+ flag: '--l1-rpc-urls <value>',
87
+ description: 'List of URLs of the Ethereum RPC nodes that services will connect to (comma separated)',
88
+ defaultValue: [
89
+ 'http://localhost:8545'
90
+ ],
91
+ envVar: 'ETHEREUM_HOSTS',
92
+ parseVal: (val)=>val.split(',').map((url)=>url.trim())
93
+ },
94
+ {
95
+ flag: '--l1-chain-id <value>',
96
+ description: 'The L1 chain ID',
97
+ defaultValue: 31337,
98
+ envVar: 'L1_CHAIN_ID',
99
+ parseVal: (val)=>parseInt(val, 10)
100
+ },
101
+ {
102
+ flag: '--l1-mnemonic <value>',
103
+ description: 'Mnemonic for L1 accounts. Will be used if no publisher private keys are provided',
104
+ defaultValue: DefaultMnemonic,
105
+ envVar: 'MNEMONIC'
106
+ }
107
+ ],
108
+ 'L1 CONTRACT ADDRESSES': [
109
+ {
110
+ flag: '--rollup-address <value>',
111
+ description: 'The deployed L1 rollup contract address',
112
+ defaultValue: undefined,
113
+ envVar: 'ROLLUP_CONTRACT_ADDRESS'
114
+ },
115
+ {
116
+ flag: '--registry-address <value>',
117
+ description: 'The deployed L1 registry contract address',
118
+ defaultValue: undefined,
119
+ envVar: 'REGISTRY_CONTRACT_ADDRESS'
120
+ },
121
+ {
122
+ flag: '--inbox-address <value>',
123
+ description: 'The deployed L1 -> L2 inbox contract address',
124
+ defaultValue: undefined,
125
+ envVar: 'INBOX_CONTRACT_ADDRESS'
126
+ },
127
+ {
128
+ flag: '--outbox-address <value>',
129
+ description: 'The deployed L2 -> L1 outbox contract address',
130
+ defaultValue: undefined,
131
+ envVar: 'OUTBOX_CONTRACT_ADDRESS'
132
+ },
133
+ {
134
+ flag: '--fee-juice-address <value>',
135
+ description: 'The deployed L1 Fee Juice contract address',
136
+ defaultValue: undefined,
137
+ envVar: 'FEE_JUICE_CONTRACT_ADDRESS'
138
+ },
139
+ {
140
+ flag: '--staking-asset-address <value>',
141
+ description: 'The deployed L1 Staking Asset contract address',
142
+ defaultValue: undefined,
143
+ envVar: 'STAKING_ASSET_CONTRACT_ADDRESS'
144
+ },
145
+ {
146
+ flag: '--fee-juice-portal-address <value>',
147
+ description: 'The deployed L1 Fee Juice portal contract address',
148
+ defaultValue: undefined,
149
+ envVar: 'FEE_JUICE_PORTAL_CONTRACT_ADDRESS'
150
+ }
151
+ ],
152
+ // We can't easily auto-generate node options as they're parts of modules defined below
153
+ 'AZTEC NODE': [
154
+ {
155
+ flag: '--node',
156
+ description: 'Starts Aztec Node with options',
157
+ defaultValue: undefined,
158
+ envVar: undefined
159
+ },
160
+ {
161
+ flag: '--data-directory <value>',
162
+ description: 'Where to store data. If not set, will store temporarily',
163
+ defaultValue: undefined,
164
+ envVar: 'DATA_DIRECTORY'
165
+ },
166
+ {
167
+ flag: '--node.archiverUrl <value>',
168
+ description: 'URL for an archiver service',
169
+ defaultValue: undefined,
170
+ envVar: 'ARCHIVER_URL'
171
+ },
172
+ {
173
+ flag: '--node.deployAztecContracts',
174
+ description: 'Deploys L1 Aztec contracts before starting the node. Needs mnemonic or private key to be set.',
175
+ envVar: 'DEPLOY_AZTEC_CONTRACTS',
176
+ defaultValue: undefined
177
+ },
178
+ {
179
+ flag: '--node.deployAztecContractsSalt <value>',
180
+ description: 'Numeric salt for deploying L1 Aztec contracts before starting the node. Needs mnemonic or private key to be set. Implies --node.deployAztecContracts.',
181
+ envVar: 'DEPLOY_AZTEC_CONTRACTS_SALT',
182
+ defaultValue: undefined,
183
+ parseVal: (val)=>val ? parseInt(val) : undefined
184
+ },
185
+ {
186
+ flag: '--node.assumeProvenThroughBlockNumber <value>',
187
+ description: 'Cheats the rollup contract into assuming every block until this one is proven. Useful for speeding up bootstraps.',
188
+ envVar: 'ASSUME_PROVEN_THROUGH_BLOCK_NUMBER',
189
+ parseVal: (val)=>parseInt(val, 10),
190
+ defaultValue: 0
191
+ },
192
+ {
193
+ flag: '--node.publisherPrivateKey <value>',
194
+ description: 'Private key of account for publishing L1 contracts',
195
+ defaultValue: undefined,
196
+ envVar: 'L1_PRIVATE_KEY'
197
+ },
198
+ {
199
+ flag: '--node.worldStateBlockCheckIntervalMS <value>',
200
+ description: 'Frequency in which to check for blocks in ms',
201
+ defaultValue: 100,
202
+ envVar: 'WS_BLOCK_CHECK_INTERVAL_MS',
203
+ parseVal: (val)=>parseInt(val, 10)
204
+ },
205
+ {
206
+ flag: '--node.testAccounts',
207
+ description: 'Populate genesis state with initial fee juice for test accounts',
208
+ envVar: 'TEST_ACCOUNTS',
209
+ ...booleanConfigHelper()
210
+ }
211
+ ],
212
+ 'P2P SUBSYSTEM': [
213
+ {
214
+ flag: '--p2p-enabled',
215
+ description: 'Enable P2P subsystem',
216
+ envVar: 'P2P_ENABLED',
217
+ ...booleanConfigHelper()
218
+ },
219
+ ...getOptions('p2p', p2pConfigMappings)
220
+ ],
221
+ TELEMETRY: [
222
+ ...getOptions('tel', telemetryClientConfigMappings)
223
+ ],
224
+ PXE: [
225
+ {
226
+ flag: '--pxe',
227
+ description: 'Starts Aztec PXE with options',
228
+ defaultValue: undefined,
229
+ envVar: undefined
230
+ },
231
+ ...getOptions('pxe', allPxeConfigMappings)
232
+ ],
233
+ ARCHIVER: [
234
+ {
235
+ flag: '--archiver',
236
+ description: 'Starts Aztec Archiver with options',
237
+ defaultValue: undefined,
238
+ envVar: undefined
239
+ },
240
+ // filter out archiverUrl as it's passed separately in --node & --prover-node
241
+ ...getOptions('archiver', archiverConfigMappings).filter((opt)=>!opt.flag.includes('archiverUrl'))
242
+ ],
243
+ SEQUENCER: [
244
+ {
245
+ flag: '--sequencer',
246
+ description: 'Starts Aztec Sequencer with options',
247
+ defaultValue: undefined,
248
+ envVar: undefined
249
+ },
250
+ ...getOptions('sequencer', sequencerClientConfigMappings)
251
+ ],
252
+ BLOB_SINK: [
253
+ {
254
+ flag: '--blob-sink',
255
+ description: 'Starts Aztec Blob Sink with options',
256
+ defaultValue: undefined,
257
+ envVar: undefined
258
+ },
259
+ ...getOptions('blobSink', blobSinkConfigMappings)
260
+ ],
261
+ 'PROVER NODE': [
262
+ {
263
+ flag: '--prover-node',
264
+ description: 'Starts Aztec Prover Node with options',
265
+ defaultValue: undefined,
266
+ envVar: undefined
267
+ },
268
+ {
269
+ flag: '--proverNode.archiverUrl <value>',
270
+ description: 'URL for an archiver service',
271
+ defaultValue: undefined,
272
+ envVar: 'ARCHIVER_URL'
273
+ },
274
+ ...getOptions('proverNode', omitConfigMappings(proverNodeConfigMappings, [
275
+ // filter out options passed separately
276
+ ...Object.keys(archiverConfigMappings),
277
+ ...Object.keys(proverBrokerConfigMappings),
278
+ ...Object.keys(proverAgentConfigMappings)
279
+ ]))
280
+ ],
281
+ 'PROVER BROKER': [
282
+ {
283
+ flag: '--prover-broker',
284
+ description: 'Starts Aztec proving job broker',
285
+ defaultValue: undefined,
286
+ envVar: undefined
287
+ },
288
+ ...getOptions('proverBroker', // filter out archiver options from prover node options as they're passed separately in --archiver
289
+ proverBrokerConfigMappings)
290
+ ],
291
+ 'PROVER AGENT': [
292
+ {
293
+ flag: '--prover-agent',
294
+ description: 'Starts Aztec Prover Agent with options',
295
+ defaultValue: undefined,
296
+ envVar: undefined
297
+ },
298
+ ...getOptions('proverAgent', proverAgentConfigMappings)
299
+ ],
300
+ 'P2P BOOTSTRAP': [
301
+ {
302
+ flag: '--p2p-bootstrap',
303
+ description: 'Starts Aztec P2P Bootstrap with options',
304
+ defaultValue: undefined,
305
+ envVar: undefined
306
+ },
307
+ ...getOptions('p2pBootstrap', bootnodeConfigMappings)
308
+ ],
309
+ BOT: [
310
+ {
311
+ flag: '--bot',
312
+ description: 'Starts Aztec Bot with options',
313
+ defaultValue: undefined,
314
+ envVar: undefined
315
+ },
316
+ ...getOptions('bot', botConfigMappings)
317
+ ],
318
+ TXE: [
319
+ {
320
+ flag: '--txe',
321
+ description: 'Starts Aztec TXE with options',
322
+ defaultValue: undefined,
323
+ envVar: undefined
324
+ }
325
+ ],
326
+ FAUCET: [
327
+ {
328
+ flag: '--faucet',
329
+ description: 'Starts the Aztec faucet',
330
+ defaultValue: undefined,
331
+ envVar: undefined
332
+ },
333
+ {
334
+ flag: '--faucet.apiServer',
335
+ description: 'Starts a simple HTTP server to access the faucet',
336
+ defaultValue: true,
337
+ envVar: undefined
338
+ },
339
+ {
340
+ flag: '--faucet.apiServerPort <value>',
341
+ description: 'The port on which to start the api server on',
342
+ defaultValue: 8080,
343
+ envVar: undefined,
344
+ parseVal: (val)=>parseInt(val, 10)
345
+ },
346
+ ...getOptions('faucet', faucetConfigMapping)
347
+ ]
348
+ };
@@ -0,0 +1,19 @@
1
+ export type NetworkNames = 'testnet-ignition';
2
+ export type L2ChainConfig = {
3
+ l1ChainId: number;
4
+ ethereumSlotDuration: number;
5
+ aztecSlotDuration: number;
6
+ aztecEpochDuration: number;
7
+ aztecProofSubmissionWindow: number;
8
+ testAccounts: boolean;
9
+ p2pEnabled: boolean;
10
+ p2pBootstrapNodes: string[];
11
+ registryAddress: string;
12
+ seqMinTxsPerBlock: number;
13
+ seqMaxTxsPerBlock: number;
14
+ };
15
+ export declare const testnetIgnitionL2ChainConfig: L2ChainConfig;
16
+ export declare function getBootnodes(networkName: NetworkNames): Promise<any>;
17
+ export declare function getL2ChainConfig(networkName: NetworkNames): Promise<L2ChainConfig | undefined>;
18
+ export declare function enrichEnvironmentWithChainConfig(networkName: NetworkNames): Promise<void>;
19
+ //# sourceMappingURL=chain_l2_config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain_l2_config.d.ts","sourceRoot":"","sources":["../../src/cli/chain_l2_config.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAE9C,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0BAA0B,EAAE,MAAM,CAAC;IACnC,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,aAY1C,CAAC;AAEF,wBAAsB,YAAY,CAAC,WAAW,EAAE,YAAY,gBAQ3D;AAED,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAOpG;AAUD,wBAAsB,gCAAgC,CAAC,WAAW,EAAE,YAAY,iBAgB/E"}
@@ -0,0 +1,56 @@
1
+ export const testnetIgnitionL2ChainConfig = {
2
+ l1ChainId: 11155111,
3
+ ethereumSlotDuration: 12,
4
+ aztecSlotDuration: 36,
5
+ aztecEpochDuration: 32,
6
+ aztecProofSubmissionWindow: 64,
7
+ testAccounts: true,
8
+ p2pEnabled: true,
9
+ p2pBootstrapNodes: [],
10
+ registryAddress: '0x12b3ebc176a1646b911391eab3760764f2e05fe3',
11
+ seqMinTxsPerBlock: 0,
12
+ seqMaxTxsPerBlock: 0
13
+ };
14
+ export async function getBootnodes(networkName) {
15
+ const url = `http://static.aztec.network/${networkName}/bootnodes.json`;
16
+ const response = await fetch(url);
17
+ if (!response.ok) {
18
+ throw new Error(`Failed to fetch basic contract addresses from ${url}`);
19
+ }
20
+ const json = await response.json();
21
+ return json['bootnodes'];
22
+ }
23
+ export async function getL2ChainConfig(networkName) {
24
+ if (networkName === 'testnet-ignition') {
25
+ const config = {
26
+ ...testnetIgnitionL2ChainConfig
27
+ };
28
+ config.p2pBootstrapNodes = await getBootnodes(networkName);
29
+ return config;
30
+ }
31
+ return undefined;
32
+ }
33
+ function enrichVar(envVar, value) {
34
+ // Don't override
35
+ if (process.env[envVar]) {
36
+ return;
37
+ }
38
+ process.env[envVar] = value;
39
+ }
40
+ export async function enrichEnvironmentWithChainConfig(networkName) {
41
+ const config = await getL2ChainConfig(networkName);
42
+ if (!config) {
43
+ throw new Error(`Unknown network name: ${networkName}`);
44
+ }
45
+ enrichVar('ETHEREUM_SLOT_DURATION', config.ethereumSlotDuration.toString());
46
+ enrichVar('AZTEC_SLOT_DURATION', config.aztecSlotDuration.toString());
47
+ enrichVar('AZTEC_EPOCH_DURATION', config.aztecEpochDuration.toString());
48
+ enrichVar('AZTEC_PROOF_SUBMISSION_WINDOW', config.aztecProofSubmissionWindow.toString());
49
+ enrichVar('P2P_BOOTSTRAP_NODES', config.p2pBootstrapNodes.join(','));
50
+ enrichVar('TEST_ACCOUNTS', config.testAccounts.toString());
51
+ enrichVar('P2P_ENABLED', config.p2pEnabled.toString());
52
+ enrichVar('L1_CHAIN_ID', config.l1ChainId.toString());
53
+ enrichVar('REGISTRY_CONTRACT_ADDRESS', config.registryAddress);
54
+ enrichVar('SEQ_MIN_TX_PER_BLOCK', config.seqMinTxsPerBlock.toString());
55
+ enrichVar('SEQ_MAX_TX_PER_BLOCK', config.seqMaxTxsPerBlock.toString());
56
+ }