UNPKG

@lodestar/config

Version:

Chain configuration required for lodestar

34 lines (29 loc) 1.15 kB
import {ACTIVE_PRESET} from "@lodestar/params"; import {defaultChainConfig} from "./default.js"; import {ChainConfig} from "./types.js"; export * from "./default.js"; export {chainConfigFromJson, chainConfigToJson, deserializeBlobSchedule, specValuesToJson} from "./json.js"; export * from "./types.js"; /** * Create an `ChainConfig`, filling in missing values with preset defaults */ export function createChainConfig(input: Partial<ChainConfig>): ChainConfig { const config = { // Set the config first with default preset values ...defaultChainConfig, // Override with input ...input, }; // Set SLOT_DURATION_MS if SECONDS_PER_SLOT is provided but SLOT_DURATION_MS is not. // This is to provide backward compatibility until Gloas is live if (input.SLOT_DURATION_MS === undefined) { config.SLOT_DURATION_MS = config.SECONDS_PER_SLOT * 1000; } // Assert that the preset matches the active preset if (config.PRESET_BASE !== ACTIVE_PRESET) { throw new Error( `Can only create a config for the active preset: ACTIVE_PRESET=${ACTIVE_PRESET} PRESET_BASE=${config.PRESET_BASE}` ); } return config; }