@lodestar/params
Version:
Chain parameters required for lodestar
79 lines (52 loc) • 3.05 kB
Markdown
# lodestar-params
[](https://www.npmjs.com/package/@lodestar/types)
[](https://opensource.org/licenses/Apache-2.0)
[](https://github.com/ethereum/consensus-specs/releases/tag/v1.4.0)


> 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 /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)