UNPKG

@chainsafe/lodestar-config

Version:

Chain configuration required for lodestar

57 lines 2 kB
import { GENESIS_EPOCH, ForkName, SLOTS_PER_EPOCH, ForkSeq } from "@chainsafe/lodestar-params"; import { ssz } from "@chainsafe/lodestar-types"; export * from "./types.js"; export function createIForkConfig(config) { const phase0 = { name: ForkName.phase0, seq: ForkSeq.phase0, epoch: GENESIS_EPOCH, version: config.GENESIS_FORK_VERSION, }; const altair = { name: ForkName.altair, seq: ForkSeq.altair, epoch: config.ALTAIR_FORK_EPOCH, version: config.ALTAIR_FORK_VERSION, }; const bellatrix = { name: ForkName.bellatrix, seq: ForkSeq.bellatrix, epoch: config.BELLATRIX_FORK_EPOCH, version: config.BELLATRIX_FORK_VERSION, }; /** Forks in order order of occurence, `phase0` first */ // Note: Downstream code relies on proper ordering. const forks = { phase0, altair, bellatrix }; // Prevents allocating an array on every getForkInfo() call const forksAscendingEpochOrder = Object.values(forks); const forksDescendingEpochOrder = Object.values(forks).reverse(); return { forks, forksAscendingEpochOrder, forksDescendingEpochOrder, // Fork convenience methods getForkInfo(slot) { const epoch = Math.floor(slot / SLOTS_PER_EPOCH); // NOTE: forks must be sorted by descending epoch, latest fork first for (const fork of forksDescendingEpochOrder) { if (epoch >= fork.epoch) return fork; } return phase0; }, getForkName(slot) { return this.getForkInfo(slot).name; }, getForkSeq(slot) { return this.getForkInfo(slot).seq; }, getForkVersion(slot) { return this.getForkInfo(slot).version; }, getForkTypes(slot) { return ssz.allForks[this.getForkName(slot)]; }, }; } //# sourceMappingURL=index.js.map