@aztec/aztec 0.0.0-test.0 → 0.0.1-commit.001888fc
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.
- package/README.md +1 -1
- package/dest/bin/index.d.ts +1 -1
- package/dest/bin/index.js +28 -13
- package/dest/cli/admin_api_key_store.d.ts +45 -0
- package/dest/cli/admin_api_key_store.d.ts.map +1 -0
- package/dest/cli/admin_api_key_store.js +98 -0
- package/dest/cli/aztec_start_action.d.ts +1 -1
- package/dest/cli/aztec_start_action.d.ts.map +1 -1
- package/dest/cli/aztec_start_action.js +89 -44
- package/dest/cli/aztec_start_options.d.ts +5 -3
- package/dest/cli/aztec_start_options.d.ts.map +1 -1
- package/dest/cli/aztec_start_options.js +157 -220
- package/dest/cli/cli.d.ts +1 -1
- package/dest/cli/cli.d.ts.map +1 -1
- package/dest/cli/cli.js +11 -7
- package/dest/cli/cmds/compile.d.ts +4 -0
- package/dest/cli/cmds/compile.d.ts.map +1 -0
- package/dest/cli/cmds/compile.js +166 -0
- package/dest/cli/cmds/migrate_ha_db.d.ts +3 -0
- package/dest/cli/cmds/migrate_ha_db.d.ts.map +1 -0
- package/dest/cli/cmds/migrate_ha_db.js +27 -0
- package/dest/cli/cmds/profile.d.ts +4 -0
- package/dest/cli/cmds/profile.d.ts.map +1 -0
- package/dest/cli/cmds/profile.js +8 -0
- package/dest/cli/cmds/profile_flamegraph.d.ts +4 -0
- package/dest/cli/cmds/profile_flamegraph.d.ts.map +1 -0
- package/dest/cli/cmds/profile_flamegraph.js +52 -0
- package/dest/cli/cmds/profile_gates.d.ts +4 -0
- package/dest/cli/cmds/profile_gates.d.ts.map +1 -0
- package/dest/cli/cmds/profile_gates.js +58 -0
- package/dest/cli/cmds/profile_utils.d.ts +18 -0
- package/dest/cli/cmds/profile_utils.d.ts.map +1 -0
- package/dest/cli/cmds/profile_utils.js +50 -0
- package/dest/cli/cmds/standby.d.ts +32 -0
- package/dest/cli/cmds/standby.d.ts.map +1 -0
- package/dest/cli/cmds/standby.js +97 -0
- package/dest/cli/cmds/start_archiver.d.ts +2 -2
- package/dest/cli/cmds/start_archiver.d.ts.map +1 -1
- package/dest/cli/cmds/start_archiver.js +25 -19
- package/dest/cli/cmds/start_bot.d.ts +4 -7
- package/dest/cli/cmds/start_bot.d.ts.map +1 -1
- package/dest/cli/cmds/start_bot.js +29 -14
- package/dest/cli/cmds/start_node.d.ts +3 -2
- package/dest/cli/cmds/start_node.d.ts.map +1 -1
- package/dest/cli/cmds/start_node.js +128 -85
- package/dest/cli/cmds/start_p2p_bootstrap.d.ts +2 -2
- package/dest/cli/cmds/start_p2p_bootstrap.d.ts.map +1 -1
- package/dest/cli/cmds/start_p2p_bootstrap.js +10 -6
- package/dest/cli/cmds/start_prover_agent.d.ts +1 -1
- package/dest/cli/cmds/start_prover_agent.d.ts.map +1 -1
- package/dest/cli/cmds/start_prover_agent.js +35 -6
- package/dest/cli/cmds/start_prover_broker.d.ts +1 -1
- package/dest/cli/cmds/start_prover_broker.d.ts.map +1 -1
- package/dest/cli/cmds/start_prover_broker.js +17 -5
- package/dest/cli/cmds/start_txe.d.ts +1 -1
- package/dest/cli/cmds/utils/artifacts.d.ts +21 -0
- package/dest/cli/cmds/utils/artifacts.d.ts.map +1 -0
- package/dest/cli/cmds/utils/artifacts.js +24 -0
- package/dest/cli/cmds/utils/needs_recompile.d.ts +10 -0
- package/dest/cli/cmds/utils/needs_recompile.d.ts.map +1 -0
- package/dest/cli/cmds/utils/needs_recompile.js +134 -0
- package/dest/cli/cmds/utils/spawn.d.ts +3 -0
- package/dest/cli/cmds/utils/spawn.d.ts.map +1 -0
- package/dest/cli/cmds/utils/spawn.js +16 -0
- package/dest/cli/index.d.ts +1 -1
- package/dest/cli/preload_crs.d.ts +3 -0
- package/dest/cli/preload_crs.d.ts.map +1 -0
- package/dest/cli/preload_crs.js +6 -0
- package/dest/cli/util.d.ts +37 -17
- package/dest/cli/util.d.ts.map +1 -1
- package/dest/cli/util.js +165 -31
- package/dest/cli/versioning.d.ts +1 -1
- package/dest/cli/versioning.js +3 -3
- package/dest/examples/token.d.ts +1 -1
- package/dest/examples/token.js +31 -18
- package/dest/examples/util.d.ts +5 -6
- package/dest/examples/util.d.ts.map +1 -1
- package/dest/examples/util.js +5 -6
- package/dest/index.d.ts +2 -2
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -1
- package/dest/local-network/banana_fpc.d.ts +10 -0
- package/dest/local-network/banana_fpc.d.ts.map +1 -0
- package/dest/{sandbox → local-network}/banana_fpc.js +23 -25
- package/dest/local-network/index.d.ts +4 -0
- package/dest/local-network/index.d.ts.map +1 -0
- package/dest/local-network/index.js +3 -0
- package/dest/local-network/local-network.d.ts +73 -0
- package/dest/local-network/local-network.d.ts.map +1 -0
- package/dest/local-network/local-network.js +226 -0
- package/dest/local-network/sponsored_fpc.d.ts +5 -0
- package/dest/local-network/sponsored_fpc.d.ts.map +1 -0
- package/dest/local-network/sponsored_fpc.js +18 -0
- package/dest/mnemonic.d.ts +1 -1
- package/dest/splash.d.ts +1 -1
- package/dest/testing/anvil_test_watcher.d.ts +42 -0
- package/dest/testing/anvil_test_watcher.d.ts.map +1 -0
- package/dest/testing/anvil_test_watcher.js +181 -0
- package/dest/testing/cheat_codes.d.ts +43 -0
- package/dest/testing/cheat_codes.d.ts.map +1 -0
- package/dest/testing/cheat_codes.js +62 -0
- package/dest/testing/epoch_test_settler.d.ts +19 -0
- package/dest/testing/epoch_test_settler.d.ts.map +1 -0
- package/dest/testing/epoch_test_settler.js +61 -0
- package/dest/testing/index.d.ts +6 -0
- package/dest/testing/index.d.ts.map +1 -0
- package/dest/testing/index.js +5 -0
- package/dest/testing/token_allowed_setup.d.ts +7 -0
- package/dest/testing/token_allowed_setup.d.ts.map +1 -0
- package/dest/testing/token_allowed_setup.js +20 -0
- package/package.json +55 -45
- package/scripts/add_crate.sh +102 -0
- package/scripts/aztec.sh +69 -0
- package/scripts/init.sh +39 -0
- package/scripts/new.sh +83 -0
- package/scripts/setup_workspace.sh +68 -0
- package/src/bin/index.ts +33 -13
- package/src/cli/admin_api_key_store.ts +128 -0
- package/src/cli/aztec_start_action.ts +87 -41
- package/src/cli/aztec_start_options.ts +176 -218
- package/src/cli/cli.ts +19 -11
- package/src/cli/cmds/compile.ts +191 -0
- package/src/cli/cmds/migrate_ha_db.ts +43 -0
- package/src/cli/cmds/profile.ts +25 -0
- package/src/cli/cmds/profile_flamegraph.ts +64 -0
- package/src/cli/cmds/profile_gates.ts +68 -0
- package/src/cli/cmds/profile_utils.ts +58 -0
- package/src/cli/cmds/standby.ts +132 -0
- package/src/cli/cmds/start_archiver.ts +16 -21
- package/src/cli/cmds/start_bot.ts +40 -14
- package/src/cli/cmds/start_node.ts +146 -91
- package/src/cli/cmds/start_p2p_bootstrap.ts +14 -6
- package/src/cli/cmds/start_prover_agent.ts +26 -14
- package/src/cli/cmds/start_prover_broker.ts +28 -4
- package/src/cli/cmds/utils/artifacts.ts +44 -0
- package/src/cli/cmds/utils/needs_recompile.ts +151 -0
- package/src/cli/cmds/utils/spawn.ts +16 -0
- package/src/cli/preload_crs.ts +7 -0
- package/src/cli/util.ts +186 -50
- package/src/cli/versioning.ts +3 -3
- package/src/examples/token.ts +23 -19
- package/src/examples/util.ts +6 -8
- package/src/index.ts +5 -6
- package/src/{sandbox → local-network}/banana_fpc.ts +28 -29
- package/src/local-network/index.ts +7 -0
- package/src/local-network/local-network.ts +277 -0
- package/src/local-network/sponsored_fpc.ts +26 -0
- package/src/testing/anvil_test_watcher.ts +210 -0
- package/src/testing/cheat_codes.ts +79 -0
- package/src/testing/epoch_test_settler.ts +70 -0
- package/src/testing/index.ts +5 -0
- package/src/testing/token_allowed_setup.ts +19 -0
- package/dest/cli/chain_l2_config.d.ts +0 -19
- package/dest/cli/chain_l2_config.d.ts.map +0 -1
- package/dest/cli/chain_l2_config.js +0 -56
- package/dest/cli/cmds/start_blob_sink.d.ts +0 -3
- package/dest/cli/cmds/start_blob_sink.d.ts.map +0 -1
- package/dest/cli/cmds/start_blob_sink.js +0 -17
- package/dest/cli/cmds/start_faucet.d.ts +0 -4
- package/dest/cli/cmds/start_faucet.d.ts.map +0 -1
- package/dest/cli/cmds/start_faucet.js +0 -20
- package/dest/cli/cmds/start_prover_node.d.ts +0 -7
- package/dest/cli/cmds/start_prover_node.d.ts.map +0 -1
- package/dest/cli/cmds/start_prover_node.js +0 -110
- package/dest/cli/cmds/start_pxe.d.ts +0 -16
- package/dest/cli/cmds/start_pxe.d.ts.map +0 -1
- package/dest/cli/cmds/start_pxe.js +0 -95
- package/dest/cli/get_l1_config.d.ts +0 -7
- package/dest/cli/get_l1_config.d.ts.map +0 -1
- package/dest/cli/get_l1_config.js +0 -13
- package/dest/sandbox/banana_fpc.d.ts +0 -11
- package/dest/sandbox/banana_fpc.d.ts.map +0 -1
- package/dest/sandbox/index.d.ts +0 -5
- package/dest/sandbox/index.d.ts.map +0 -1
- package/dest/sandbox/index.js +0 -4
- package/dest/sandbox/sandbox.d.ts +0 -76
- package/dest/sandbox/sandbox.d.ts.map +0 -1
- package/dest/sandbox/sandbox.js +0 -181
- package/dest/sandbox/sponsored_fee_payment_method.d.ts +0 -23
- package/dest/sandbox/sponsored_fee_payment_method.d.ts.map +0 -1
- package/dest/sandbox/sponsored_fee_payment_method.js +0 -36
- package/dest/sandbox/sponsored_fpc.d.ts +0 -6
- package/dest/sandbox/sponsored_fpc.d.ts.map +0 -1
- package/dest/sandbox/sponsored_fpc.js +0 -26
- package/src/cli/chain_l2_config.ts +0 -74
- package/src/cli/cmds/start_blob_sink.ts +0 -31
- package/src/cli/cmds/start_faucet.ts +0 -34
- package/src/cli/cmds/start_prover_node.ts +0 -121
- package/src/cli/cmds/start_pxe.ts +0 -129
- package/src/cli/get_l1_config.ts +0 -18
- package/src/sandbox/index.ts +0 -5
- package/src/sandbox/sandbox.ts +0 -229
- package/src/sandbox/sponsored_fee_payment_method.ts +0 -46
- package/src/sandbox/sponsored_fpc.ts +0 -38
|
@@ -1,36 +1,42 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { createLogger } from '@aztec/aztec.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { createStore } from '@aztec/kv-store/lmdb-v2';
|
|
1
|
+
import { archiverConfigMappings, createArchiver, getArchiverConfigFromEnv } from '@aztec/archiver';
|
|
2
|
+
import { createLogger } from '@aztec/aztec.js/log';
|
|
3
|
+
import { blobClientConfigMapping, createBlobClient } from '@aztec/blob-client/client';
|
|
4
|
+
import { getL1Config } from '@aztec/cli/config';
|
|
6
5
|
import { ArchiverApiSchema } from '@aztec/stdlib/interfaces/server';
|
|
6
|
+
import { dataConfigMappings } from '@aztec/stdlib/kv-store';
|
|
7
7
|
import { getConfigEnvVars as getTelemetryClientConfig, initTelemetryClient } from '@aztec/telemetry-client';
|
|
8
|
-
import { getL1Config } from '../get_l1_config.js';
|
|
9
8
|
import { extractRelevantOptions } from '../util.js';
|
|
10
9
|
/** Starts a standalone archiver. */ export async function startArchiver(options, signalHandlers, services) {
|
|
11
|
-
|
|
10
|
+
const envConfig = getArchiverConfigFromEnv();
|
|
11
|
+
const cliOptions = extractRelevantOptions(options, {
|
|
12
12
|
...archiverConfigMappings,
|
|
13
|
-
...dataConfigMappings
|
|
13
|
+
...dataConfigMappings,
|
|
14
|
+
...blobClientConfigMapping
|
|
14
15
|
}, 'archiver');
|
|
16
|
+
let archiverConfig = {
|
|
17
|
+
...envConfig,
|
|
18
|
+
...cliOptions
|
|
19
|
+
};
|
|
20
|
+
archiverConfig.dataStoreMapSizeKb = archiverConfig.archiverStoreMapSizeKb ?? archiverConfig.dataStoreMapSizeKb;
|
|
15
21
|
if (!archiverConfig.l1Contracts.registryAddress || archiverConfig.l1Contracts.registryAddress.isZero()) {
|
|
16
22
|
throw new Error('L1 registry address is required to start an Archiver');
|
|
17
23
|
}
|
|
18
|
-
const { addresses, config } = await getL1Config(archiverConfig.l1Contracts.registryAddress, archiverConfig.l1RpcUrls, archiverConfig.l1ChainId);
|
|
24
|
+
const { addresses, config: l1Config } = await getL1Config(archiverConfig.l1Contracts.registryAddress, archiverConfig.l1RpcUrls, archiverConfig.l1ChainId);
|
|
19
25
|
archiverConfig.l1Contracts = addresses;
|
|
20
26
|
archiverConfig = {
|
|
21
27
|
...archiverConfig,
|
|
22
|
-
...
|
|
28
|
+
...l1Config
|
|
23
29
|
};
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const blobSinkClient = createBlobSinkClient();
|
|
30
|
-
const archiver = await Archiver.createAndSync(archiverConfig, archiverStore, {
|
|
30
|
+
const telemetry = await initTelemetryClient(getTelemetryClientConfig());
|
|
31
|
+
const blobClient = createBlobClient(archiverConfig, {
|
|
32
|
+
logger: createLogger('archiver:blob-client:client')
|
|
33
|
+
});
|
|
34
|
+
const archiver = await createArchiver(archiverConfig, {
|
|
31
35
|
telemetry,
|
|
32
|
-
|
|
33
|
-
},
|
|
36
|
+
blobClient
|
|
37
|
+
}, {
|
|
38
|
+
blockUntilSync: true
|
|
39
|
+
});
|
|
34
40
|
services.archiver = [
|
|
35
41
|
archiver,
|
|
36
42
|
ArchiverApiSchema
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import type { NamespacedApiHandlers } from '@aztec/foundation/json-rpc/server';
|
|
2
2
|
import type { LogFn } from '@aztec/foundation/log';
|
|
3
|
-
import type
|
|
3
|
+
import { type AztecNode, type AztecNodeAdmin } from '@aztec/stdlib/interfaces/client';
|
|
4
4
|
import type { TelemetryClient } from '@aztec/telemetry-client';
|
|
5
|
+
import { EmbeddedWallet } from '@aztec/wallets/embedded';
|
|
5
6
|
export declare function startBot(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, userLog: LogFn): Promise<void>;
|
|
6
|
-
export declare function addBot(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers,
|
|
7
|
-
|
|
8
|
-
node?: AztecNode;
|
|
9
|
-
telemetry: TelemetryClient;
|
|
10
|
-
}): Promise<void>;
|
|
11
|
-
//# sourceMappingURL=start_bot.d.ts.map
|
|
7
|
+
export declare function addBot(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, wallet: EmbeddedWallet, aztecNode: AztecNode, telemetry: TelemetryClient, aztecNodeAdmin?: AztecNodeAdmin, userLog?: LogFn): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfYm90LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2NtZHMvc3RhcnRfYm90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDL0UsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHbkQsT0FBTyxFQUFFLEtBQUssU0FBUyxFQUFFLEtBQUssY0FBYyxFQUF5QixNQUFNLGlDQUFpQyxDQUFDO0FBQzdHLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBTS9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUt6RCx3QkFBc0IsUUFBUSxDQUM1QixPQUFPLEVBQUUsR0FBRyxFQUNaLGNBQWMsRUFBRSxDQUFDLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFDdkMsUUFBUSxFQUFFLHFCQUFxQixFQUMvQixPQUFPLEVBQUUsS0FBSyxpQkF3QmY7QUFFRCx3QkFBc0IsTUFBTSxDQUMxQixPQUFPLEVBQUUsR0FBRyxFQUNaLGNBQWMsRUFBRSxDQUFDLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFDdkMsUUFBUSxFQUFFLHFCQUFxQixFQUMvQixNQUFNLEVBQUUsY0FBYyxFQUN0QixTQUFTLEVBQUUsU0FBUyxFQUNwQixTQUFTLEVBQUUsZUFBZSxFQUMxQixjQUFjLENBQUMsRUFBRSxjQUFjLEVBQy9CLE9BQU8sQ0FBQyxFQUFFLEtBQUssaUJBbUJoQiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start_bot.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_bot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"start_bot.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_bot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,cAAc,EAAyB,MAAM,iCAAiC,CAAC;AAC7G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAM/D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAKzD,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,KAAK,iBAwBf;AAED,wBAAsB,MAAM,CAC1B,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,eAAe,EAC1B,cAAc,CAAC,EAAE,cAAc,EAC/B,OAAO,CAAC,EAAE,KAAK,iBAmBhB"}
|
|
@@ -1,27 +1,42 @@
|
|
|
1
|
-
import { BotRunner, botConfigMappings, getBotRunnerApiHandler } from '@aztec/bot';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { BotRunner, BotStore, botConfigMappings, getBotRunnerApiHandler } from '@aztec/bot';
|
|
2
|
+
import { createStore, openTmpStore } from '@aztec/kv-store/lmdb-v2';
|
|
3
|
+
import { allPxeConfigMappings } from '@aztec/pxe/config';
|
|
4
|
+
import { createAztecNodeClient } from '@aztec/stdlib/interfaces/client';
|
|
5
|
+
import { getConfigEnvVars as getTelemetryClientConfig, initTelemetryClient, makeTracedFetch } from '@aztec/telemetry-client';
|
|
6
|
+
import { EmbeddedWallet } from '@aztec/wallets/embedded';
|
|
7
|
+
import { extractRelevantOptions, stringifyConfig } from '../util.js';
|
|
8
|
+
import { getVersions } from '../versioning.js';
|
|
4
9
|
export async function startBot(options, signalHandlers, services, userLog) {
|
|
5
10
|
const { proverNode, archiver, sequencer, p2pBootstrap, txe, prover } = options;
|
|
6
11
|
if (proverNode || archiver || sequencer || p2pBootstrap || txe || prover) {
|
|
7
12
|
userLog(`Starting a bot with --prover-node, --prover, --archiver, --sequencer, --p2p-bootstrap, or --txe is not supported.`);
|
|
8
13
|
process.exit(1);
|
|
9
14
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
const fetch = makeTracedFetch([
|
|
16
|
+
1,
|
|
17
|
+
2,
|
|
18
|
+
3
|
|
19
|
+
], true);
|
|
20
|
+
const config = extractRelevantOptions(options, botConfigMappings, 'bot');
|
|
21
|
+
if (!config.nodeUrl) {
|
|
22
|
+
throw new Error('The bot requires access to a Node');
|
|
15
23
|
}
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
24
|
+
const aztecNode = createAztecNodeClient(config.nodeUrl, getVersions(), fetch);
|
|
25
|
+
const pxeConfig = extractRelevantOptions(options, allPxeConfigMappings, 'pxe');
|
|
26
|
+
userLog(`Creating bot wallet with config ${stringifyConfig(pxeConfig)}`);
|
|
27
|
+
const wallet = await EmbeddedWallet.create(aztecNode, {
|
|
28
|
+
pxeConfig
|
|
20
29
|
});
|
|
30
|
+
const telemetry = await initTelemetryClient(getTelemetryClientConfig());
|
|
31
|
+
await addBot(options, signalHandlers, services, wallet, aztecNode, telemetry, undefined, userLog);
|
|
21
32
|
}
|
|
22
|
-
export function addBot(options, signalHandlers, services,
|
|
33
|
+
export async function addBot(options, signalHandlers, services, wallet, aztecNode, telemetry, aztecNodeAdmin, userLog) {
|
|
23
34
|
const config = extractRelevantOptions(options, botConfigMappings, 'bot');
|
|
24
|
-
|
|
35
|
+
userLog?.(`Starting bot with config ${stringifyConfig(config)}`);
|
|
36
|
+
const db = await (config.dataDirectory ? createStore('bot', BotStore.SCHEMA_VERSION, config) : openTmpStore('bot', true, config.dataStoreMapSizeKb));
|
|
37
|
+
const store = new BotStore(db);
|
|
38
|
+
await store.cleanupOldClaims();
|
|
39
|
+
const botRunner = new BotRunner(config, wallet, aztecNode, telemetry, aztecNodeAdmin, store);
|
|
25
40
|
if (!config.noStart) {
|
|
26
41
|
void botRunner.start(); // Do not block since bot setup takes time
|
|
27
42
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { type AztecNodeConfig } from '@aztec/aztec-node';
|
|
2
|
+
import { type NetworkNames } from '@aztec/foundation/config';
|
|
2
3
|
import type { NamespacedApiHandlers } from '@aztec/foundation/json-rpc/server';
|
|
3
4
|
import type { LogFn } from '@aztec/foundation/log';
|
|
4
|
-
export declare function startNode(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, userLog: LogFn): Promise<{
|
|
5
|
+
export declare function startNode(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, adminServices: NamespacedApiHandlers, userLog: LogFn, networkName: NetworkNames): Promise<{
|
|
5
6
|
config: AztecNodeConfig;
|
|
6
7
|
}>;
|
|
7
|
-
//# sourceMappingURL=
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfbm9kZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jbWRzL3N0YXJ0X25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUE2QyxNQUFNLG1CQUFtQixDQUFDO0FBS3BHLE9BQU8sRUFBRSxLQUFLLFlBQVksRUFBZSxNQUFNLDBCQUEwQixDQUFDO0FBQzFFLE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFL0UsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUEwQm5ELHdCQUFzQixTQUFTLENBQzdCLE9BQU8sRUFBRSxHQUFHLEVBQ1osY0FBYyxFQUFFLENBQUMsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUN2QyxRQUFRLEVBQUUscUJBQXFCLEVBQy9CLGFBQWEsRUFBRSxxQkFBcUIsRUFDcEMsT0FBTyxFQUFFLEtBQUssRUFDZCxXQUFXLEVBQUUsWUFBWSxHQUN4QixPQUFPLENBQUM7SUFBRSxNQUFNLEVBQUUsZUFBZSxDQUFBO0NBQUUsQ0FBQyxDQW9LdEMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start_node.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_node.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"start_node.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAA6C,MAAM,mBAAmB,CAAC;AAKpG,OAAO,EAAE,KAAK,YAAY,EAAe,MAAM,0BAA0B,CAAC;AAC1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AA0BnD,wBAAsB,SAAS,CAC7B,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,aAAa,EAAE,qBAAqB,EACpC,OAAO,EAAE,KAAK,EACd,WAAW,EAAE,YAAY,GACxB,OAAO,CAAC;IAAE,MAAM,EAAE,eAAe,CAAA;CAAE,CAAC,CAoKtC"}
|
|
@@ -1,87 +1,112 @@
|
|
|
1
|
-
import { getInitialTestAccounts } from '@aztec/accounts/testing';
|
|
2
1
|
import { aztecNodeConfigMappings, getConfigEnvVars } from '@aztec/aztec-node';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
2
|
+
import { Fr } from '@aztec/aztec.js/fields';
|
|
3
|
+
import { getL1Config } from '@aztec/cli/config';
|
|
4
|
+
import { getPublicClient } from '@aztec/ethereum/client';
|
|
5
|
+
import { getGenesisStateConfigEnvVars } from '@aztec/ethereum/config';
|
|
6
|
+
import { SecretValue } from '@aztec/foundation/config';
|
|
7
|
+
import { Agent, makeUndiciFetch } from '@aztec/foundation/json-rpc/undici';
|
|
8
|
+
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
9
|
+
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
10
|
+
import { ProvingJobConsumerSchema, createProvingJobBrokerClient } from '@aztec/prover-client/broker';
|
|
11
|
+
import { allPxeConfigMappings } from '@aztec/pxe/config';
|
|
12
|
+
import { AztecNodeAdminApiSchema, AztecNodeApiSchema } from '@aztec/stdlib/interfaces/client';
|
|
13
|
+
import { P2PApiSchema, ProverNodeApiSchema } from '@aztec/stdlib/interfaces/server';
|
|
14
|
+
import { initTelemetryClient, makeTracedFetch, telemetryClientConfigMappings } from '@aztec/telemetry-client';
|
|
15
|
+
import { EmbeddedWallet } from '@aztec/wallets/embedded';
|
|
16
|
+
import { createAztecNode } from '../../local-network/index.js';
|
|
17
|
+
import { extractNamespacedOptions, extractRelevantOptions, preloadCrsDataForVerifying, setupVersionChecker } from '../util.js';
|
|
18
|
+
import { getVersions } from '../versioning.js';
|
|
19
|
+
import { computeExpectedGenesisRoot, waitForCompatibleRollup } from './standby.js';
|
|
20
|
+
import { startProverBroker } from './start_prover_broker.js';
|
|
21
|
+
export async function startNode(options, signalHandlers, services, adminServices, userLog, networkName) {
|
|
22
|
+
// All options set from environment variables
|
|
23
|
+
const configFromEnvVars = getConfigEnvVars();
|
|
24
|
+
// Extract relevant options from command line arguments
|
|
25
|
+
const relevantOptions = extractRelevantOptions(options, aztecNodeConfigMappings, 'node');
|
|
15
26
|
// All options that are relevant to the Aztec Node
|
|
16
27
|
let nodeConfig = {
|
|
17
|
-
...
|
|
18
|
-
...
|
|
28
|
+
...configFromEnvVars,
|
|
29
|
+
...relevantOptions
|
|
19
30
|
};
|
|
31
|
+
// Prover node configuration and broker setup
|
|
32
|
+
// REFACTOR: Move the broker setup out of here and into the prover-node factory
|
|
33
|
+
let broker = undefined;
|
|
20
34
|
if (options.proverNode) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const initialFundedAccounts = nodeConfig.testAccounts ? await getInitialTestAccounts() : [];
|
|
25
|
-
const { genesisBlockHash, genesisArchiveRoot, prefilledPublicData } = await getGenesisValues(initialFundedAccounts.map((a)=>a.address));
|
|
26
|
-
// Deploy contracts if needed
|
|
27
|
-
if (nodeSpecificOptions.deployAztecContracts || nodeSpecificOptions.deployAztecContractsSalt) {
|
|
28
|
-
let account;
|
|
29
|
-
if (nodeSpecificOptions.publisherPrivateKey) {
|
|
30
|
-
account = privateKeyToAccount(nodeSpecificOptions.publisherPrivateKey);
|
|
31
|
-
} else if (options.l1Mnemonic) {
|
|
32
|
-
account = mnemonicToAccount(options.l1Mnemonic);
|
|
33
|
-
} else {
|
|
34
|
-
throw new Error('--node.publisherPrivateKey or --l1-mnemonic is required to deploy L1 contracts');
|
|
35
|
+
nodeConfig.enableProverNode = true;
|
|
36
|
+
if (nodeConfig.proverAgentCount === 0) {
|
|
37
|
+
userLog(`Running prover node without local prover agent. Connect prover agents or pass --proverAgent.proverAgentCount`);
|
|
35
38
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
39
|
+
if (nodeConfig.proverBrokerUrl) {
|
|
40
|
+
// at 1TPS we'd enqueue ~1k chonk verifier proofs and ~1k AVM proofs immediately
|
|
41
|
+
// set a lower connection limit such that we don't overload the server
|
|
42
|
+
// Keep retrying up to 30s
|
|
43
|
+
const fetch = makeTracedFetch([
|
|
44
|
+
1,
|
|
45
|
+
2,
|
|
46
|
+
3,
|
|
47
|
+
3,
|
|
48
|
+
3,
|
|
49
|
+
3,
|
|
50
|
+
3,
|
|
51
|
+
3,
|
|
52
|
+
3,
|
|
53
|
+
3,
|
|
54
|
+
3
|
|
55
|
+
], false, makeUndiciFetch(new Agent({
|
|
56
|
+
connections: 100
|
|
57
|
+
})));
|
|
58
|
+
broker = createProvingJobBrokerClient(nodeConfig.proverBrokerUrl, getVersions(nodeConfig), fetch);
|
|
59
|
+
} else if (options.proverBroker) {
|
|
60
|
+
({ broker } = await startProverBroker(options, signalHandlers, services, userLog));
|
|
61
|
+
} else {
|
|
62
|
+
userLog(`--prover-broker-url or --prover-broker is required to start a Prover Node`);
|
|
63
|
+
process.exit(1);
|
|
46
64
|
}
|
|
47
|
-
const { addresses, config } = await getL1Config(nodeConfig.l1Contracts.registryAddress, nodeConfig.l1RpcUrls, nodeConfig.l1ChainId);
|
|
48
|
-
// TODO(#12272): will clean this up.
|
|
49
|
-
nodeConfig = {
|
|
50
|
-
...nodeConfig,
|
|
51
|
-
l1Contracts: {
|
|
52
|
-
...addresses,
|
|
53
|
-
slashFactoryAddress: nodeConfig.l1Contracts.slashFactoryAddress
|
|
54
|
-
},
|
|
55
|
-
...config
|
|
56
|
-
};
|
|
57
65
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
throw new Error('Archiver Service URL is required to start Aztec Node without --archiver option');
|
|
65
|
-
}
|
|
66
|
-
nodeConfig.archiverUrl = archiverUrl;
|
|
66
|
+
await preloadCrsDataForVerifying(nodeConfig, userLog);
|
|
67
|
+
const genesisConfig = getGenesisStateConfigEnvVars();
|
|
68
|
+
const { genesisArchiveRoot, prefilledPublicData } = await computeExpectedGenesisRoot(genesisConfig, userLog);
|
|
69
|
+
const followsCanonicalRollup = typeof nodeConfig.rollupVersion !== 'number' || nodeConfig.rollupVersion === 'canonical';
|
|
70
|
+
if (!nodeConfig.l1Contracts.registryAddress || nodeConfig.l1Contracts.registryAddress.isZero()) {
|
|
71
|
+
throw new Error('L1 registry address is required to start Aztec Node');
|
|
67
72
|
}
|
|
68
|
-
|
|
73
|
+
// Wait for a compatible rollup before proceeding with full L1 config fetch.
|
|
74
|
+
// This prevents crashes when the canonical rollup hasn't been upgraded yet.
|
|
75
|
+
await waitForCompatibleRollup(nodeConfig, {
|
|
76
|
+
genesisArchiveRoot,
|
|
77
|
+
vkTreeRoot: getVKTreeRoot(),
|
|
78
|
+
protocolContractsHash
|
|
79
|
+
}, options.port, userLog);
|
|
80
|
+
const { addresses, config } = await getL1Config(nodeConfig.l1Contracts.registryAddress, nodeConfig.l1RpcUrls, nodeConfig.l1ChainId, nodeConfig.rollupVersion);
|
|
81
|
+
process.env.ROLLUP_CONTRACT_ADDRESS ??= addresses.rollupAddress.toString();
|
|
82
|
+
if (!Fr.fromHexString(config.genesisArchiveTreeRoot).equals(genesisArchiveRoot)) {
|
|
83
|
+
throw new Error(`The computed genesis archive tree root ${genesisArchiveRoot} does not match the expected genesis archive tree root ${config.genesisArchiveTreeRoot} for the rollup deployed at ${addresses.rollupAddress}`);
|
|
84
|
+
}
|
|
85
|
+
// TODO(#12272): will clean this up.
|
|
86
|
+
nodeConfig = {
|
|
87
|
+
...nodeConfig,
|
|
88
|
+
l1Contracts: {
|
|
89
|
+
...addresses,
|
|
90
|
+
slashFactoryAddress: nodeConfig.l1Contracts.slashFactoryAddress
|
|
91
|
+
},
|
|
92
|
+
...config
|
|
93
|
+
};
|
|
94
|
+
if (!options.sequencer && !nodeConfig.fishermanMode) {
|
|
69
95
|
nodeConfig.disableValidator = true;
|
|
70
96
|
} else {
|
|
71
|
-
const sequencerConfig =
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
97
|
+
const sequencerConfig = {
|
|
98
|
+
...configFromEnvVars,
|
|
99
|
+
...extractNamespacedOptions(options, 'sequencer')
|
|
100
|
+
};
|
|
101
|
+
// If no publisher private keys have been given, use the first validator key
|
|
102
|
+
if (sequencerConfig.sequencerPublisherPrivateKeys === undefined || !sequencerConfig.sequencerPublisherPrivateKeys.length) {
|
|
103
|
+
if (sequencerConfig.validatorPrivateKeys?.getValue().length) {
|
|
104
|
+
sequencerConfig.sequencerPublisherPrivateKeys = [
|
|
105
|
+
new SecretValue(sequencerConfig.validatorPrivateKeys.getValue()[0])
|
|
106
|
+
];
|
|
81
107
|
}
|
|
82
|
-
} else {
|
|
83
|
-
nodeConfig.publisherPrivateKey = sequencerConfig.publisherPrivateKey;
|
|
84
108
|
}
|
|
109
|
+
nodeConfig.sequencerPublisherPrivateKeys = sequencerConfig.sequencerPublisherPrivateKeys;
|
|
85
110
|
}
|
|
86
111
|
if (nodeConfig.p2pEnabled) {
|
|
87
112
|
// ensure bootstrapNodes is an array
|
|
@@ -90,10 +115,11 @@ export async function startNode(options, signalHandlers, services, userLog) {
|
|
|
90
115
|
}
|
|
91
116
|
}
|
|
92
117
|
const telemetryConfig = extractRelevantOptions(options, telemetryClientConfigMappings, 'tel');
|
|
93
|
-
const telemetry = initTelemetryClient(telemetryConfig);
|
|
118
|
+
const telemetry = await initTelemetryClient(telemetryConfig);
|
|
94
119
|
// Create and start Aztec Node
|
|
95
120
|
const node = await createAztecNode(nodeConfig, {
|
|
96
|
-
telemetry
|
|
121
|
+
telemetry,
|
|
122
|
+
proverBroker: broker
|
|
97
123
|
}, {
|
|
98
124
|
prefilledPublicData
|
|
99
125
|
});
|
|
@@ -106,24 +132,41 @@ export async function startNode(options, signalHandlers, services, userLog) {
|
|
|
106
132
|
node.getP2P(),
|
|
107
133
|
P2PApiSchema
|
|
108
134
|
];
|
|
135
|
+
adminServices.nodeAdmin = [
|
|
136
|
+
node,
|
|
137
|
+
AztecNodeAdminApiSchema
|
|
138
|
+
];
|
|
139
|
+
// Register prover-node services if the prover node subsystem is running
|
|
140
|
+
const proverNode = node.getProverNode();
|
|
141
|
+
if (proverNode) {
|
|
142
|
+
services.prover = [
|
|
143
|
+
proverNode,
|
|
144
|
+
ProverNodeApiSchema
|
|
145
|
+
];
|
|
146
|
+
if (!nodeConfig.proverBrokerUrl) {
|
|
147
|
+
services.provingJobSource = [
|
|
148
|
+
proverNode.getProver().getProvingJobSource(),
|
|
149
|
+
ProvingJobConsumerSchema
|
|
150
|
+
];
|
|
151
|
+
}
|
|
152
|
+
}
|
|
109
153
|
// Add node stop function to signal handlers
|
|
110
154
|
signalHandlers.push(node.stop.bind(node));
|
|
111
|
-
// Add a PXE client that connects to this node if requested
|
|
112
|
-
let pxe;
|
|
113
|
-
if (options.pxe) {
|
|
114
|
-
const { addPXE } = await import('./start_pxe.js');
|
|
115
|
-
({ pxe } = await addPXE(options, signalHandlers, services, userLog, {
|
|
116
|
-
node
|
|
117
|
-
}));
|
|
118
|
-
}
|
|
119
155
|
// Add a txs bot if requested
|
|
120
156
|
if (options.bot) {
|
|
121
157
|
const { addBot } = await import('./start_bot.js');
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
telemetry
|
|
158
|
+
const pxeConfig = extractRelevantOptions(options, allPxeConfigMappings, 'pxe');
|
|
159
|
+
const wallet = await EmbeddedWallet.create(node, {
|
|
160
|
+
pxeConfig
|
|
126
161
|
});
|
|
162
|
+
await addBot(options, signalHandlers, services, wallet, node, telemetry, undefined);
|
|
163
|
+
}
|
|
164
|
+
if (nodeConfig.enableVersionCheck && networkName !== 'local') {
|
|
165
|
+
const cacheDir = process.env.DATA_DIRECTORY ? `${process.env.DATA_DIRECTORY}/cache` : undefined;
|
|
166
|
+
try {
|
|
167
|
+
await setupVersionChecker(networkName, followsCanonicalRollup, getPublicClient(nodeConfig), signalHandlers, cacheDir);
|
|
168
|
+
} catch {
|
|
169
|
+
/* no-op */ }
|
|
127
170
|
}
|
|
128
171
|
return {
|
|
129
172
|
config: nodeConfig
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { NamespacedApiHandlers } from '@aztec/foundation/json-rpc/server';
|
|
2
|
-
import {
|
|
2
|
+
import type { LogFn } from '@aztec/foundation/log';
|
|
3
3
|
export declare function startP2PBootstrap(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, userLog: LogFn): Promise<{
|
|
4
4
|
config: import("@aztec/stdlib/config").ChainConfig;
|
|
5
5
|
}>;
|
|
6
|
-
//# sourceMappingURL=
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfcDJwX2Jvb3RzdHJhcC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jbWRzL3N0YXJ0X3AycF9ib290c3RyYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQWFuRCx3QkFBc0IsaUJBQWlCLENBQ3JDLE9BQU8sRUFBRSxHQUFHLEVBQ1osY0FBYyxFQUFFLENBQUMsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUN2QyxRQUFRLEVBQUUscUJBQXFCLEVBQy9CLE9BQU8sRUFBRSxLQUFLOztHQWlCZiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start_p2p_bootstrap.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_p2p_bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"start_p2p_bootstrap.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_p2p_bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAanD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,KAAK;;GAiBf"}
|
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
import { jsonStringify } from '@aztec/foundation/json-rpc';
|
|
2
|
-
import { createLogger } from '@aztec/foundation/log';
|
|
3
2
|
import { createStore } from '@aztec/kv-store/lmdb-v2';
|
|
4
3
|
import { BootstrapNode, bootnodeConfigMappings } from '@aztec/p2p';
|
|
5
4
|
import { emptyChainConfig } from '@aztec/stdlib/config';
|
|
6
5
|
import { P2PBootstrapApiSchema } from '@aztec/stdlib/interfaces/server';
|
|
7
|
-
import {
|
|
6
|
+
import { initTelemetryClient, telemetryClientConfigMappings } from '@aztec/telemetry-client';
|
|
8
7
|
import { extractRelevantOptions } from '../util.js';
|
|
9
8
|
export async function startP2PBootstrap(options, signalHandlers, services, userLog) {
|
|
10
9
|
// Start a P2P bootstrap node.
|
|
11
10
|
const config = extractRelevantOptions(options, bootnodeConfigMappings, 'p2p');
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
const safeConfig = {
|
|
12
|
+
...config,
|
|
13
|
+
peerIdPrivateKey: '<redacted>'
|
|
14
|
+
};
|
|
15
|
+
userLog(`Starting P2P bootstrap node with config: ${jsonStringify(safeConfig)}`);
|
|
16
|
+
const telemetryConfig = extractRelevantOptions(options, telemetryClientConfigMappings, 'tel');
|
|
17
|
+
const telemetryClient = await initTelemetryClient(telemetryConfig);
|
|
18
|
+
const store = await createStore('p2p-bootstrap', 1, config);
|
|
15
19
|
const node = new BootstrapNode(store, telemetryClient);
|
|
16
20
|
await node.start(config);
|
|
17
21
|
signalHandlers.push(()=>node.stop());
|
|
@@ -19,7 +23,7 @@ export async function startP2PBootstrap(options, signalHandlers, services, userL
|
|
|
19
23
|
node,
|
|
20
24
|
P2PBootstrapApiSchema
|
|
21
25
|
];
|
|
22
|
-
userLog(`P2P bootstrap node started on ${config.
|
|
26
|
+
userLog(`P2P bootstrap node started on ${config.p2pIp}:${config.p2pPort}`);
|
|
23
27
|
return {
|
|
24
28
|
config: emptyChainConfig
|
|
25
29
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { NamespacedApiHandlers } from '@aztec/foundation/json-rpc/server';
|
|
2
2
|
import type { LogFn } from '@aztec/foundation/log';
|
|
3
3
|
export declare function startProverAgent(options: any, signalHandlers: (() => Promise<void>)[], services: NamespacedApiHandlers, userLog: LogFn): Promise<void>;
|
|
4
|
-
//# sourceMappingURL=
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfcHJvdmVyX2FnZW50LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2NtZHMvc3RhcnRfcHJvdmVyX2FnZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFL0UsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFnQm5ELHdCQUFzQixnQkFBZ0IsQ0FDcEMsT0FBTyxFQUFFLEdBQUcsRUFDWixjQUFjLEVBQUUsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQ3ZDLFFBQVEsRUFBRSxxQkFBcUIsRUFDL0IsT0FBTyxFQUFFLEtBQUssaUJBd0RmIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start_prover_agent.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_prover_agent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"start_prover_agent.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_prover_agent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAgBnD,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,KAAK,iBAwDf"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { times } from '@aztec/foundation/collection';
|
|
2
2
|
import { Agent, makeUndiciFetch } from '@aztec/foundation/json-rpc/undici';
|
|
3
3
|
import { buildServerCircuitProver } from '@aztec/prover-client';
|
|
4
|
-
import {
|
|
4
|
+
import { ProvingAgent, createProofStore, createProvingJobBrokerClient, proverAgentConfigMappings } from '@aztec/prover-client/broker';
|
|
5
5
|
import { getProverNodeAgentConfigFromEnv } from '@aztec/prover-node';
|
|
6
|
+
import { ProverAgentApiSchema } from '@aztec/stdlib/interfaces/server';
|
|
6
7
|
import { initTelemetryClient, makeTracedFetch, telemetryClientConfigMappings } from '@aztec/telemetry-client';
|
|
7
|
-
import { extractRelevantOptions } from '../util.js';
|
|
8
|
+
import { extractRelevantOptions, preloadCrsDataForServerSideProving } from '../util.js';
|
|
8
9
|
import { getVersions } from '../versioning.js';
|
|
9
10
|
export async function startProverAgent(options, signalHandlers, services, userLog) {
|
|
10
11
|
if (options.node || options.sequencer || options.pxe || options.p2pBootstrap || options.txe) {
|
|
@@ -16,23 +17,51 @@ export async function startProverAgent(options, signalHandlers, services, userLo
|
|
|
16
17
|
...extractRelevantOptions(options, proverAgentConfigMappings, 'proverAgent')
|
|
17
18
|
};
|
|
18
19
|
if (config.realProofs && (!config.bbBinaryPath || !config.acvmBinaryPath)) {
|
|
20
|
+
userLog(`Requested real proving but no path to bb or acvm binaries provided`);
|
|
19
21
|
process.exit(1);
|
|
20
22
|
}
|
|
21
23
|
if (!config.proverBrokerUrl) {
|
|
24
|
+
userLog(`Missing prover broker URL. Pass --proverAgent.proverBrokerUrl <value>`);
|
|
22
25
|
process.exit(1);
|
|
23
26
|
}
|
|
24
|
-
|
|
27
|
+
await preloadCrsDataForServerSideProving(config, userLog);
|
|
28
|
+
const fetch = makeTracedFetch(// retry connections every 3s, up to 30s before giving up
|
|
29
|
+
[
|
|
25
30
|
1,
|
|
26
31
|
2,
|
|
32
|
+
3,
|
|
33
|
+
3,
|
|
34
|
+
3,
|
|
35
|
+
3,
|
|
36
|
+
3,
|
|
37
|
+
3,
|
|
38
|
+
3,
|
|
39
|
+
3,
|
|
27
40
|
3
|
|
28
41
|
], false, makeUndiciFetch(new Agent({
|
|
29
42
|
connections: 10
|
|
30
43
|
})));
|
|
31
44
|
const broker = createProvingJobBrokerClient(config.proverBrokerUrl, getVersions(), fetch);
|
|
32
|
-
const telemetry = initTelemetryClient(extractRelevantOptions(options, telemetryClientConfigMappings, 'tel'));
|
|
45
|
+
const telemetry = await initTelemetryClient(extractRelevantOptions(options, telemetryClientConfigMappings, 'tel'));
|
|
33
46
|
const prover = await buildServerCircuitProver(config, telemetry);
|
|
34
|
-
const proofStore =
|
|
35
|
-
const agents = times(config.proverAgentCount, ()=>new ProvingAgent(broker, proofStore, prover, config.proverAgentProofTypes, config.proverAgentPollIntervalMs
|
|
47
|
+
const proofStore = await createProofStore(config.proofStore);
|
|
48
|
+
const agents = times(config.proverAgentCount, ()=>new ProvingAgent(broker, proofStore, prover, config.proverAgentProofTypes, config.proverAgentPollIntervalMs));
|
|
49
|
+
// expose all agents as individual services
|
|
50
|
+
for(let i = 0; i < agents.length; i++){
|
|
51
|
+
services[`agent${i}`] = [
|
|
52
|
+
agents[i],
|
|
53
|
+
ProverAgentApiSchema,
|
|
54
|
+
()=>agents[i].getStatus().status !== 'stopped'
|
|
55
|
+
];
|
|
56
|
+
}
|
|
57
|
+
// shortcut in the most common case of having a single running agent
|
|
58
|
+
if (agents.length === 1) {
|
|
59
|
+
services[`agent`] = [
|
|
60
|
+
agents[0],
|
|
61
|
+
ProverAgentApiSchema,
|
|
62
|
+
()=>agents[0].getStatus().status !== 'stopped'
|
|
63
|
+
];
|
|
64
|
+
}
|
|
36
65
|
await Promise.all(agents.map((agent)=>agent.start()));
|
|
37
66
|
signalHandlers.push(async ()=>{
|
|
38
67
|
await Promise.all(agents.map((agent)=>agent.stop()));
|
|
@@ -6,4 +6,4 @@ export declare function startProverBroker(options: any, signalHandlers: (() => P
|
|
|
6
6
|
broker: ProvingJobBroker;
|
|
7
7
|
config: ProverBrokerConfig;
|
|
8
8
|
}>;
|
|
9
|
-
//# sourceMappingURL=
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfcHJvdmVyX2Jyb2tlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaS9jbWRzL3N0YXJ0X3Byb3Zlcl9icm9rZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRSxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUduRCxPQUFPLEVBQ0wsS0FBSyxrQkFBa0IsRUFLeEIsTUFBTSw2QkFBNkIsQ0FBQztBQUVyQyxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBTXhFLHdCQUFzQixpQkFBaUIsQ0FDckMsT0FBTyxFQUFFLEdBQUcsRUFDWixjQUFjLEVBQUUsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQ3ZDLFFBQVEsRUFBRSxxQkFBcUIsRUFDL0IsT0FBTyxFQUFFLEtBQUssR0FDYixPQUFPLENBQUM7SUFBRSxNQUFNLEVBQUUsZ0JBQWdCLENBQUM7SUFBQyxNQUFNLEVBQUUsa0JBQWtCLENBQUE7Q0FBRSxDQUFDLENBNENuRSJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start_prover_broker.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_prover_broker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"start_prover_broker.d.ts","sourceRoot":"","sources":["../../../src/cli/cmds/start_prover_broker.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAMxE,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,GAAG,EACZ,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EACvC,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE,KAAK,GACb,OAAO,CAAC;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,CAAC,CA4CnE"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getL1Config } from '@aztec/cli/config';
|
|
2
|
+
import { getGenesisStateConfigEnvVars } from '@aztec/ethereum/config';
|
|
3
|
+
import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
|
|
4
|
+
import { protocolContractsHash } from '@aztec/protocol-contracts';
|
|
5
|
+
import { ProvingJobBrokerSchema, ProvingJobBrokerSchemaWithDebug, createAndStartProvingBroker, proverBrokerConfigMappings } from '@aztec/prover-client/broker';
|
|
2
6
|
import { getProverNodeBrokerConfigFromEnv } from '@aztec/prover-node';
|
|
3
7
|
import { getConfigEnvVars as getTelemetryClientConfig, initTelemetryClient } from '@aztec/telemetry-client';
|
|
4
|
-
import { getL1Config } from '../get_l1_config.js';
|
|
5
8
|
import { extractRelevantOptions } from '../util.js';
|
|
9
|
+
import { computeExpectedGenesisRoot, waitForCompatibleRollup } from './standby.js';
|
|
6
10
|
export async function startProverBroker(options, signalHandlers, services, userLog) {
|
|
7
11
|
if (options.node || options.sequencer || options.pxe || options.p2pBootstrap || options.txe) {
|
|
8
12
|
userLog(`Starting a prover broker with --node, --sequencer, --pxe, --p2p-bootstrap, or --txe is not supported.`);
|
|
@@ -15,13 +19,21 @@ export async function startProverBroker(options, signalHandlers, services, userL
|
|
|
15
19
|
if (!config.l1Contracts.registryAddress || config.l1Contracts.registryAddress.isZero()) {
|
|
16
20
|
throw new Error('L1 registry address is required to start Aztec Node without --deploy-aztec-contracts option');
|
|
17
21
|
}
|
|
18
|
-
const
|
|
22
|
+
const genesisConfig = getGenesisStateConfigEnvVars();
|
|
23
|
+
const { genesisArchiveRoot } = await computeExpectedGenesisRoot(genesisConfig, userLog);
|
|
24
|
+
await waitForCompatibleRollup(config, {
|
|
25
|
+
genesisArchiveRoot,
|
|
26
|
+
vkTreeRoot: getVKTreeRoot(),
|
|
27
|
+
protocolContractsHash
|
|
28
|
+
}, options.port, userLog);
|
|
29
|
+
const { addresses, config: rollupConfig } = await getL1Config(config.l1Contracts.registryAddress, config.l1RpcUrls, config.l1ChainId, config.rollupVersion);
|
|
19
30
|
config.l1Contracts = addresses;
|
|
20
|
-
|
|
31
|
+
config.rollupVersion = rollupConfig.rollupVersion;
|
|
32
|
+
const client = await initTelemetryClient(getTelemetryClientConfig());
|
|
21
33
|
const broker = await createAndStartProvingBroker(config, client);
|
|
22
34
|
services.proverBroker = [
|
|
23
35
|
broker,
|
|
24
|
-
ProvingJobBrokerSchema
|
|
36
|
+
config.proverBrokerDebugReplayEnabled ? ProvingJobBrokerSchemaWithDebug : ProvingJobBrokerSchema
|
|
25
37
|
];
|
|
26
38
|
signalHandlers.push(()=>broker.stop());
|
|
27
39
|
return {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { Logger } from '@aztec/foundation/log';
|
|
2
2
|
export declare function startTXE(options: any, debugLogger: Logger): Promise<void>;
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnRfdHhlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2NtZHMvc3RhcnRfdHhlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3BELHdCQUFzQixRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFVL0QifQ==
|