Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
b04d26c
fix: Incorrect p2p config - add listenAddress to bootnode (#12978)
PhilWindle Mar 24, 2025
d836b8d
fix: redact boot-node private key (#12982)
alexghr Mar 24, 2025
9e98aec
chore: Set chain config for alpha testnet (#12987)
PhilWindle Mar 24, 2025
c6aa376
fix: send serializable tx through the wire (#12989)
Thunkar Mar 24, 2025
8274af3
chore: Setup helm config for alpha testnet (#12997)
PhilWindle Mar 25, 2025
b265fac
chore: New contracts on alpha-testnet (#13001)
PhilWindle Mar 25, 2025
201397e
Install deps earlier
PhilWindle Mar 25, 2025
0393ac7
chore: Fix missing fee asset config (#13004)
PhilWindle Mar 25, 2025
34c23b8
Switch off sponsored FPC
PhilWindle Mar 25, 2025
1d99df6
fix: add service account to blob sink so it can read k8s data (#13011)
alexghr Mar 25, 2025
a856021
chore: Log our genesis state accounts (#13009)
PhilWindle Mar 25, 2025
cfa965f
fix: set rollup address (#13018)
alexghr Mar 25, 2025
37158da
fix: fix parsing of sponsoredFPC (#13006)
Thunkar Mar 26, 2025
4ae5c67
feat: set up sponsoredFPC in rc-1 (#13034)
alexghr Mar 26, 2025
61f007b
fix: Run node in the upgrade rollup script (#13040)
PhilWindle Mar 26, 2025
97b547e
fix: Network option was not being intercepted early enough (#13057)
PhilWindle Mar 26, 2025
082cf51
fix: Fix the TEST_ACCOUNTS env var (#13066)
PhilWindle Mar 27, 2025
6f08e84
chore: drop unused CLI options (#13000)
alexghr Mar 27, 2025
851c40f
fix: Upgrade scripts and cli require test accounts and sponsored fpc …
PhilWindle Mar 27, 2025
9c84149
chore: New rollup values (#13083)
PhilWindle Mar 27, 2025
b6038e9
fix: Specify correct genesis (#13087)
PhilWindle Mar 27, 2025
1a16846
fix: Attempt zero address for slash factory (#13100)
PhilWindle Mar 27, 2025
6572276
fix: Don't use commander to intercept network flag (#13109)
PhilWindle Mar 28, 2025
fde7fb5
fix: Fix broken port publishing in aztec start (#13122)
PhilWindle Mar 28, 2025
3af9568
Merge remote-tracking branch 'origin/master' into pw/alpha-to-master
PhilWindle Mar 28, 2025
f37929e
Merge remote-tracking branch 'origin/master' into pw/alpha-to-master
PhilWindle Mar 28, 2025
f065637
Merge remote-tracking branch 'origin/master' into pw/alpha-to-master
PhilWindle Mar 30, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion aztec-up/bin/aztec
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,9 @@ case ${1:-} in
# Export p2p port forwarding only if set in env vars
if [ -n "${P2P_PORT:-}" ]; then
P2P_TCP_LISTEN_MAPPING="$P2P_PORT:$P2P_PORT"
P2P_UDP_LISTEN_MAPPING="${P2P_TCP_LISTEN_MAPPING}/udp"

PORTS_TO_EXPOSE="${PORTS_TO_EXPOSE:-} $P2P_TCP_LISTEN_MAPPING"
PORTS_TO_EXPOSE="${PORTS_TO_EXPOSE:-} $P2P_TCP_LISTEN_MAPPING $P2P_UDP_LISTEN_MAPPING"
fi

exec $(dirname $0)/.aztec-run aztec-start \
Expand Down
8 changes: 4 additions & 4 deletions spartan/aztec-network/values/alpha-testnet.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ snapshots:
aztec:
realProofs: true
numberOfDefaultAccounts: 0
testAccounts: true
sponsoredFPC: false
testAccounts: false
sponsoredFPC: true
bootstrapENRs: "enr:-LO4QLbJddVpePYjaiCftOBY-L7O6Mfj_43TAn5Q1Y-5qQ_OWmSFc7bTKWHzw5xmdVIqXUiizum_kIRniXdPnWHHcwEEhWF6dGVjqDAwLTExMTU1MTExLTAwMDAwMDAwLTAtMTgwNmEwMjgtMWE1MzBmM2KCaWSCdjSCaXCEI8nh9YlzZWNwMjU2azGhA-_dX6aFcXP1DLk91negbXL2a0mNYGXH4hrMvb2i92I0g3VkcIKd0A,enr:-LO4QN4WF8kFyV3sQVX0C_y_03Eepxk5Wac70l9QJcIDRYwKS6aRst1YcfbTDdvovXdRfKf-WSXNVWViGLhDA-dUz2MEhWF6dGVjqDAwLTExMTU1MTExLTAwMDAwMDAwLTAtMTgwNmEwMjgtMWE1MzBmM2KCaWSCdjSCaXCEIicTHolzZWNwMjU2azGhAsz7aFFYRnP5xjTux5UW-HyEQcW_EJrZMT1CNm79N4g-g3VkcIKd0A,enr:-LO4QFrGfkRaCk_iFTeUjR5ESwo45Eov9hx_T1-BLdoT-iHzFgCiHMT4V1KBtdFp8D0ajLSe5HcNYrhalmdJXgv6NTUEhWF6dGVjqDAwLTExMTU1MTExLTAwMDAwMDAwLTAtMTgwNmEwMjgtMWE1MzBmM2KCaWSCdjSCaXCEIlICt4lzZWNwMjU2azGhAlC6nKB3iDtRFqWKWqxf_t-P9hc-SZ6VFBJV4y3bTZBQg3VkcIKd0A"
contracts:
registryAddress: "0xad85d55a4bbef35e95396191c22903aa717edf1c"
rollupAddress: "0x8e9152bb1b0577ea82508c001785e92fc96035fd"
slashFactoryAddress: "0xf667f50fd68b30c38b12d29fee537fa5ea158eb8"
rollupAddress: "0xee29e2cfdf6bac577e7a6497a6d61856be22c9f1"
slashFactoryAddress: "0x0000000000000000000000000000000000000000"
feeAssetHandlerContractAddress: "0xf0664fec6ac15313e18d5ad8225e46b7c6463338"

network:
Expand Down
24 changes: 21 additions & 3 deletions spartan/scripts/upgrade_rollup_with_lock.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,18 @@ set -exu
# --registry 0x29f815e32efdef19883cf2b92a766b7aebadd326 \
# --address 0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266 \
# --deposit-amount 200000000000000000000000 \
# --mint
# --mint \
# --test-accounts \
# --sponsored-fpc
#
# where:
# - aztec-docker-tag is the tag of the aztec docker image to use.
# - registry is the address of the registry contract.
# - address is the address that corresponds to whatever mnemonic/private key you are using.
# - deposit-amount is optional, and if provided, will deposit the specified amount of governance tokens to the address.
# - mint is optional, and if provided, will mint the governance tokens to the address before depositing.
# - test-accounts is optional, and if provided, will initialise the genesis state with funded test accounts.
# - sponsored-fpc is optional, and if provided, will initialise the genesis state with a funded FPC.
#
# It can also be used locally by providing an --aztec-bin argument to the path of the aztec binary.
# For example, --aztec-bin /usr/src/yarn-project/aztec/dest/bin/index.js
Expand All @@ -40,6 +44,8 @@ set -exu
# --address 0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266 \
# --deposit-amount 10000000000000000 \
# --mint
# --test-accounts \
# --sponsored-fpc

# First set from environment variables if they exist
DEPOSIT_AMOUNT=""
Expand All @@ -48,6 +54,8 @@ SALT=$((RANDOM % 1000000))
# The default path to the aztec binary within the docker image
AZTEC_BIN="/usr/src/yarn-project/aztec/dest/bin/index.js"
AZTEC_DOCKER_IMAGE=""
TEST_ACCOUNTS=""
SPONSORED_FPC=""

# Parse command line arguments (these will override env vars if provided)
while [[ $# -gt 0 ]]; do
Expand Down Expand Up @@ -80,6 +88,14 @@ while [[ $# -gt 0 ]]; do
MINT="--mint"
shift 1
;;
--test-accounts)
TEST_ACCOUNTS="--test-accounts"
shift 1
;;
--sponsored-fpc)
SPONSORED_FPC="--sponsored-fpc"
shift 1
;;
*)
echo "Unknown parameter: $1"
exit 1
Expand All @@ -106,7 +122,7 @@ cleanup() {

# if aztec-docker-tag is set, use it
if [ -n "$AZTEC_DOCKER_IMAGE" ]; then
EXE="docker run --rm --network=host --env-file .env.tmp $AZTEC_DOCKER_IMAGE $AZTEC_BIN"
EXE="docker run --rm --network=host --env-file .env.tmp $AZTEC_DOCKER_IMAGE node --no-warnings $AZTEC_BIN"
# Check if the image exists locally before pulling it
if ! docker images $AZTEC_DOCKER_IMAGE -q; then
echo "Pulling docker image $AZTEC_DOCKER_IMAGE"
Expand All @@ -126,7 +142,9 @@ if [ -n "$DEPOSIT_AMOUNT" ]; then
$EXE deposit-governance-tokens -r $REGISTRY --recipient $MY_ADDR -a $DEPOSIT_AMOUNT $MINT
fi

PAYLOAD=$($EXE deploy-new-rollup -r $REGISTRY --salt $SALT --json --test-accounts | jq -r '.payloadAddress')
OUTPUT=$($EXE deploy-new-rollup -r $REGISTRY --salt $SALT --json $TEST_ACCOUNTS $SPONSORED_FPC)

PAYLOAD=$(echo $OUTPUT | jq -r '.payloadAddress')

PROPOSAL_ID=$($EXE propose-with-lock -r $REGISTRY --payload-address $PAYLOAD --json | jq -r '.proposalId')

Expand Down
11 changes: 9 additions & 2 deletions yarn-project/aztec-node/src/aztec-node/config.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
import { type ArchiverConfig, archiverConfigMappings } from '@aztec/archiver/config';
import { type L1ContractAddresses, l1ContractAddressesMapping } from '@aztec/ethereum';
import {
type GenesisStateConfig,
type L1ContractAddresses,
genesisStateConfigMappings,
l1ContractAddressesMapping,
} from '@aztec/ethereum';
import { type ConfigMappingsType, booleanConfigHelper, getConfigFromMappings } from '@aztec/foundation/config';
import { type DataStoreConfig, dataConfigMappings } from '@aztec/kv-store/config';
import { type SharedNodeConfig, sharedNodeConfigMappings } from '@aztec/node-lib/config';
Expand Down Expand Up @@ -29,7 +34,8 @@ export type AztecNodeConfig = ArchiverConfig &
P2PConfig &
DataStoreConfig &
SentinelConfig &
SharedNodeConfig & {
SharedNodeConfig &
GenesisStateConfig & {
/** L1 contracts addresses */
l1Contracts: L1ContractAddresses;
/** Whether the validator is disabled for this node */
Expand All @@ -46,6 +52,7 @@ export const aztecNodeConfigMappings: ConfigMappingsType<AztecNodeConfig> = {
...p2pConfigMappings,
...sentinelConfigMappings,
...sharedNodeConfigMappings,
...genesisStateConfigMappings,
l1Contracts: {
description: 'The deployed L1 contract addresses',
nested: l1ContractAddressesMapping,
Expand Down
18 changes: 18 additions & 0 deletions yarn-project/aztec/src/bin/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ import { createConsoleLogger, createLogger } from '@aztec/foundation/log';

import { Command } from 'commander';

import { NETWORK_FLAG } from '../cli/aztec_start_options.js';
import { type NetworkNames, enrichEnvironmentWithChainConfig } from '../cli/chain_l2_config.js';
import { injectAztecCommands } from '../cli/index.js';
import { getCliVersion } from '../cli/release_version.js';

Expand All @@ -26,6 +28,22 @@ async function main() {
process.once('SIGINT', shutdown);
process.once('SIGTERM', shutdown);

// Intercept the setting of a network and enrich the environment with defaults for that network
let networkValue: string | undefined;

const args = process.argv.slice(2);
const networkIndex = args.findIndex(arg => arg.startsWith(`--${NETWORK_FLAG}=`) || arg === `--${NETWORK_FLAG}`);

if (networkIndex !== -1) {
networkValue = args[networkIndex].split('=')[1] || args[networkIndex + 1];
}

networkValue = networkValue || process.env.NETWORK;

if (networkValue !== undefined) {
await enrichEnvironmentWithChainConfig(networkValue as NetworkNames);
}

const cliVersion = getCliVersion();
let program = new Command('aztec');
program.description('Aztec command line interface').version(cliVersion);
Expand Down
6 changes: 1 addition & 5 deletions yarn-project/aztec/src/cli/aztec_start_action.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import { getOtelJsonRpcPropagationMiddleware } from '@aztec/telemetry-client';

import { createSandbox } from '../sandbox/index.js';
import { github, splash } from '../splash.js';
import { enrichEnvironmentWithChainConfig } from './chain_l2_config.js';
import { getCliVersion } from './release_version.js';
import { extractNamespacedOptions, installSignalHandlers } from './util.js';
import { getVersions } from './versioning.js';
Expand All @@ -27,6 +26,7 @@ export async function aztecStart(options: any, userLog: LogFn, debugLogger: Logg
const cliVersion = getCliVersion();
const sandboxOptions = extractNamespacedOptions(options, 'sandbox');
const nodeOptions = extractNamespacedOptions(options, 'node');
sandboxOptions.testAccounts = true;
userLog(`${splash}\n${github}\n\n`);
userLog(`Setting up Aztec Sandbox ${cliVersion}, please stand by...`);

Expand All @@ -51,10 +51,6 @@ export async function aztecStart(options: any, userLog: LogFn, debugLogger: Logg
userLog(`Not exposing PXE API through JSON-RPC server`);
}
} else {
// If a network is specified, enrich the environment with the chain config
if (options.network) {
await enrichEnvironmentWithChainConfig(options.network);
}
if (options.node) {
const { startNode } = await import('./cmds/start_node.js');
({ config } = await startNode(options, signalHandlers, services, adminServices, userLog));
Expand Down
16 changes: 3 additions & 13 deletions yarn-project/aztec/src/cli/aztec_start_options.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,13 @@ export const universalOptions = [
'dataStoreMapSizeKb',
];

export const NETWORK_FLAG = 'network';

// Define categories and options
export const aztecStartOptions: { [key: string]: AztecStartOption[] } = {
NETWORK: [
{
flag: '--network <value>',
flag: `--${NETWORK_FLAG} <value>`,
description: 'Network to run Aztec on',
defaultValue: undefined,
envVar: 'NETWORK',
Expand All @@ -82,12 +84,6 @@ export const aztecStartOptions: { [key: string]: AztecStartOption[] } = {
defaultValue: undefined,
envVar: undefined,
},
{
flag: '--sandbox.testAccounts [value]',
description: 'Deploy test accounts on sandbox start',
envVar: 'TEST_ACCOUNTS',
...booleanConfigHelper(),
},
{
flag: '--sandbox.noPXE [value]',
description: 'Do not expose PXE service on sandbox start',
Expand Down Expand Up @@ -267,12 +263,6 @@ export const aztecStartOptions: { [key: string]: AztecStartOption[] } = {
envVar: 'WS_BLOCK_CHECK_INTERVAL_MS',
parseVal: val => parseInt(val, 10),
},
{
flag: '--node.testAccounts [value]',
description: 'Populate genesis state with initial fee juice for test accounts',
envVar: 'TEST_ACCOUNTS',
...booleanConfigHelper(),
},
{
flag: '--node.syncMode <value>',
description:
Expand Down
21 changes: 16 additions & 5 deletions yarn-project/aztec/src/cli/chain_l2_config.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { EthAddress } from '@aztec/aztec.js';
import type { EnvVar } from '@aztec/foundation/config';

import path from 'path';
Expand Down Expand Up @@ -48,12 +49,12 @@ export const alphaTestnetL2ChainConfig: L2ChainConfig = {
aztecSlotDuration: 36,
aztecEpochDuration: 32,
aztecProofSubmissionWindow: 64,
testAccounts: true,
testAccounts: false,
sponsoredFPC: true,
p2pEnabled: true,
p2pBootstrapNodes: [],
registryAddress: '0xad85d55a4bbef35e95396191c22903aa717edf1c',
slashFactoryAddress: '0xf667f50fd68b30c38b12d29fee537fa5ea158eb8',
slashFactoryAddress: '',
feeAssetHandlerAddress: '0xf0664fec6ac15313e18d5ad8225e46b7c6463338',
seqMinTxsPerBlock: 0,
seqMaxTxsPerBlock: 4,
Expand Down Expand Up @@ -95,6 +96,15 @@ function enrichVar(envVar: EnvVar, value: string) {
process.env[envVar] = value;
}

function enrichEthAddressVar(envVar: EnvVar, value: string) {
// EthAddress doesn't like being given empty strings
if (value === '') {
enrichVar(envVar, EthAddress.ZERO.toString());
return;
}
enrichVar(envVar, value);
}

export async function enrichEnvironmentWithChainConfig(networkName: NetworkNames) {
const config = await getL2ChainConfig(networkName);
if (!config) {
Expand All @@ -109,13 +119,14 @@ export async function enrichEnvironmentWithChainConfig(networkName: NetworkNames
enrichVar('SPONSORED_FPC', config.sponsoredFPC.toString());
enrichVar('P2P_ENABLED', config.p2pEnabled.toString());
enrichVar('L1_CHAIN_ID', config.l1ChainId.toString());
enrichVar('REGISTRY_CONTRACT_ADDRESS', config.registryAddress);
enrichVar('SLASH_FACTORY_CONTRACT_ADDRESS', config.slashFactoryAddress);
enrichVar('FEE_ASSET_HANDLER_CONTRACT_ADDRESS', config.feeAssetHandlerAddress);
enrichVar('SEQ_MIN_TX_PER_BLOCK', config.seqMinTxsPerBlock.toString());
enrichVar('SEQ_MAX_TX_PER_BLOCK', config.seqMaxTxsPerBlock.toString());
enrichVar('DATA_DIRECTORY', path.join(process.env.HOME || '~', '.aztec', networkName, 'data'));
enrichVar('PROVER_REAL_PROOFS', config.realProofs.toString());
enrichVar('PXE_PROVER_ENABLED', config.realProofs.toString());
enrichVar('SYNC_SNAPSHOTS_URL', config.snapshotsUrl);

enrichEthAddressVar('REGISTRY_CONTRACT_ADDRESS', config.registryAddress);
enrichEthAddressVar('SLASH_FACTORY_CONTRACT_ADDRESS', config.slashFactoryAddress);
enrichEthAddressVar('FEE_ASSET_HANDLER_CONTRACT_ADDRESS', config.feeAssetHandlerAddress);
}
11 changes: 7 additions & 4 deletions yarn-project/cli/src/cmds/l1/deploy_l1_contracts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,10 @@ export async function deployL1Contracts(
) {
const config = getL1ContractsConfigEnvVars();

const initialFundedAccounts = testAccounts ? await getInitialTestAccounts() : [];
const initialAccounts = testAccounts ? await getInitialTestAccounts() : [];
const sponsoredFPCAddress = sponsoredFPC ? await getSponsoredFPCAddress() : [];
const { genesisBlockHash, genesisArchiveRoot } = await getGenesisValues(
initialFundedAccounts.map(a => a.address).concat(sponsoredFPCAddress),
);
const initialFundedAccounts = initialAccounts.map(a => a.address).concat(sponsoredFPCAddress);
const { genesisBlockHash, genesisArchiveRoot } = await getGenesisValues(initialFundedAccounts);

const { l1ContractAddresses } = await deployAztecContracts(
rpcUrls,
Expand Down Expand Up @@ -67,5 +66,9 @@ export async function deployL1Contracts(
log(`Governance Address: ${l1ContractAddresses.governanceAddress.toString()}`);
log(`SlashFactory Address: ${l1ContractAddresses.slashFactoryAddress?.toString()}`);
log(`FeeAssetHandler Address: ${l1ContractAddresses.feeAssetHandlerAddress?.toString()}`);
log(`Initial funded accounts: ${initialFundedAccounts.map(a => a.toString()).join(', ')}`);
log(`Initial validators: ${initialValidators.map(a => a.toString()).join(', ')}`);
log(`Genesis block hash: ${genesisBlockHash.toString()}`);
log(`Genesis archive root: ${genesisArchiveRoot.toString()}`);
}
}
6 changes: 0 additions & 6 deletions yarn-project/cli/src/cmds/l1/deploy_l1_verifier.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,9 @@ export async function deployUltraHonkVerifier(
privateKey: string | undefined,
mnemonic: string,
pxeRpcUrl: string,
bbBinaryPath: string,
bbWorkingDirectory: string,
log: LogFn,
debugLogger: Logger,
) {
if (!bbBinaryPath || !bbWorkingDirectory) {
throw new InvalidOptionArgumentError('Missing path to bb binary and working directory');
}

const { publicClient, walletClient } = createL1Clients(
ethRpcUrls,
privateKey ?? mnemonic,
Expand Down
16 changes: 14 additions & 2 deletions yarn-project/cli/src/cmds/l1/deploy_new_rollup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import type { LogFn, Logger } from '@aztec/foundation/log';
import { getGenesisValues } from '@aztec/world-state/testing';

import { deployNewRollupContracts } from '../../utils/aztec.js';
import { getSponsoredFPCAddress } from '../../utils/setup_contracts.js';

export async function deployNewRollup(
registryAddress: EthAddress,
Expand All @@ -15,15 +16,18 @@ export async function deployNewRollup(
mnemonicIndex: number,
salt: number | undefined,
testAccounts: boolean,
sponsoredFPC: boolean,
json: boolean,
initialValidators: EthAddress[],
log: LogFn,
debugLogger: Logger,
) {
const config = getL1ContractsConfigEnvVars();

const initialFundedAccounts = testAccounts ? await getInitialTestAccounts() : [];
const { genesisBlockHash, genesisArchiveRoot } = await getGenesisValues(initialFundedAccounts.map(a => a.address));
const initialAccounts = testAccounts ? await getInitialTestAccounts() : [];
const sponsoredFPCAddress = sponsoredFPC ? await getSponsoredFPCAddress() : [];
const initialFundedAccounts = initialAccounts.map(a => a.address).concat(sponsoredFPCAddress);
const { genesisBlockHash, genesisArchiveRoot } = await getGenesisValues(initialFundedAccounts);

const { payloadAddress, rollup, slashFactoryAddress } = await deployNewRollupContracts(
registryAddress,
Expand All @@ -46,6 +50,10 @@ export async function deployNewRollup(
{
payloadAddress: payloadAddress.toString(),
rollupAddress: rollup.address,
initialFundedAccounts: initialFundedAccounts.map(a => a.toString()),
initialValidators: initialValidators.map(a => a.toString()),
genesisBlockHash: genesisBlockHash.toString(),
genesisArchiveRoot: genesisArchiveRoot.toString(),
slashFactoryAddress: slashFactoryAddress.toString(),
},
null,
Expand All @@ -55,6 +63,10 @@ export async function deployNewRollup(
} else {
log(`Payload Address: ${payloadAddress.toString()}`);
log(`Rollup Address: ${rollup.address}`);
log(`Initial funded accounts: ${initialFundedAccounts.map(a => a.toString()).join(', ')}`);
log(`Initial validators: ${initialValidators.map(a => a.toString()).join(', ')}`);
log(`Genesis block hash: ${genesisBlockHash.toString()}`);
log(`Genesis archive root: ${genesisArchiveRoot.toString()}`);
log(`Slash Factory Address: ${slashFactoryAddress.toString()}`);
}
}
Loading