UNPKG

@lodestar/beacon-node

Version:

A Typescript implementation of the beacon chain

33 lines (28 loc) 1.38 kB
import {ChainForkConfig} from "@lodestar/config"; import {DatabaseController, Repository} from "@lodestar/db"; import {LightClientHeader, ssz} from "@lodestar/types"; import {getLightClientHeaderTypeFromBytes} from "../../util/multifork.js"; import {Bucket, getBucketNameByValue} from "../buckets.js"; /** * Block headers by block root. Until finality includes all headers seen by this node. After finality, * all non-checkpoint headers are pruned from this repository. * * Used to prepare light client updates */ export class CheckpointHeaderRepository extends Repository<Uint8Array, LightClientHeader> { constructor(config: ChainForkConfig, db: DatabaseController<Uint8Array, Uint8Array>) { // Pick some type but won't be used const bucket = Bucket.lightClient_checkpointHeader; super(config, db, bucket, ssz.altair.LightClientHeader, getBucketNameByValue(bucket)); } // Overrides for multi-fork encodeValue(value: LightClientHeader): Uint8Array { return this.config.getPostAltairForkTypes(value.beacon.slot).LightClientHeader.serialize(value); } decodeValue(data: Uint8Array): LightClientHeader { return getLightClientHeaderTypeFromBytes(this.config, data).deserialize(data); } getId(value: LightClientHeader): Uint8Array { return this.config.getPostAltairForkTypes(value.beacon.slot).LightClientHeader.hashTreeRoot(value); } }