@lodestar/beacon-node
Version:
A Typescript implementation of the beacon chain
30 lines (26 loc) • 1.09 kB
text/typescript
import {ChainForkConfig} from "@lodestar/config";
import {DatabaseController, Repository} from "@lodestar/db";
import {Slot, ssz} from "@lodestar/types";
import {bytesToInt} from "@lodestar/utils";
import {Bucket, getBucketNameByValue} from "../buckets.js";
/**
* Slot to slot ranges that ensure that block range is fully backfilled
*
* If node starts backfilling at slots 1000, and backfills to 800, there will be an entry
* 1000 -> 800
*
* When the node is backfilling if it starts at 1200 and backfills to 1000, it will find this sequence and,
* jump directly to 800 and delete the key 1000.
*/
export class BackfilledRanges extends Repository<Slot, Slot> {
constructor(config: ChainForkConfig, db: DatabaseController<Uint8Array, Uint8Array>) {
const bucket = Bucket.backfilled_ranges;
super(config, db, bucket, ssz.Slot, getBucketNameByValue(bucket));
}
decodeKey(data: Buffer): number {
return bytesToInt(super.decodeKey(data) as unknown as Uint8Array, "be");
}
getId(_value: Slot): number {
throw new Error("Cannot get the db key from slot");
}
}