UNPKG

@lodestar/params

Version:

Chain parameters required for lodestar

79 lines (52 loc) 3.05 kB
# lodestar-params [![npm](https://img.shields.io/npm/v/@lodestar/types)](https://www.npmjs.com/package/@lodestar/types) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![Eth Consensus Spec v1.4.0](https://img.shields.io/badge/ETH%20consensus--spec-1.4.0-blue)](https://github.com/ethereum/consensus-specs/releases/tag/v1.4.0) ![ES Version](https://img.shields.io/badge/ES-2021-yellow) ![Node Version](https://img.shields.io/badge/node-22.x-green) > This package is part of [ChainSafe's Lodestar](https://lodestar.chainsafe.io) project Lodestar defines all constants and presets defined in the [Ethereum Consensus spec](https://github.com/ethereum/consensus-specs). This can be used in conjunction with other Lodestar libraries to interact with the Ethereum consensus. ## Installation ```sh npm install @lodestar/params ``` ## Usage The Lodestar params package contains several items used in all downstream Lodestar libraries: - Fork names - Constants - Presets ### Fork names Many downstream components are namespaced on fork names, or otherwise rely on knowing the fork names ahead of time. The Lodestar params package exports an enum `ForkName` the enumerates all known fork names. ```typescript import {ForkName} from "@lodestar/params"; // dummy data let forkName = "phase0"; switch (forkName) { case ForkName.phase0: case ForkName.altair: case ForkName.bellatrix: default: } ``` ### Constants All constants defined in the spec are exported verbatim. ```typescript import {GENESIS_SLOT} from "@lodestar/params"; ``` ### Presets Presets are defined in the spec as "constantish" and can only be configured at build-time. These are meant to be treated as constants, and indeed are treated as constants by all downstream Lodestar libraries. The default preset is `mainnet`. The only other preset defined is `minimal`, used only in testing environments. The active preset is exported under the `ACTIVE_PRESET` named export. ```typescript import {ACTIVE_PRESET, SLOTS_PER_EPOCH} from "@lodestar/params"; ``` The preset may be set in one of two ways: 1. by setting the `LODESTAR_PRESET` environment variable 2. by executing the `setActivePreset(preset: Preset)` function Important Notes: - Interacting with and understanding the active preset is only necessary in very limited testing environments, like for ephemeral testnets - The `minimal` preset is NOT compatible with the `mainnet` preset. - using `setActivePreset` may be dangerous, and only should be run once before loading any other libraries. All downstream Lodestar libraries expect the active preset to never change. - Preset values can be overridden by executing `setActivePreset(presetName: PresetName, overrides?: Partial<BeaconPreset>)` and supplying values to override. - The Lodestar CLI exposes `setActivePreset` through `--presetFile` flag which allows to override the active preset with custom values from file. ## License Apache-2.0 [ChainSafe Systems](https://chainsafe.io)