@lodestar/beacon-node
Version:
A Typescript implementation of the beacon chain
64 lines • 2.34 kB
JavaScript
import { PrefixedRepository, decodeNumberForDbKey, encodeNumberForDbKey } from "@lodestar/db";
import { NUMBER_OF_COLUMNS } from "@lodestar/params";
import { isGloasDataColumnSidecar, ssz } from "@lodestar/types";
import { isGloasDataColumnSidecarBytes } from "../../util/multifork.js";
import { Bucket, getBucketNameByValue } from "../buckets.js";
const COLUMN_INDEX_BYTE_SIZE = 2;
const SLOT_BYTE_SIZE = 8;
/**
* DataColumnSidecarsRepository
* Used to store `finalized` DataColumnSidecars
*
* Indexed data by `slot` + `columnIndex`
*/
export class DataColumnSidecarArchiveRepository extends PrefixedRepository {
constructor(config, db) {
const bucket = Bucket.allForks_dataColumnSidecarsArchive;
// Type won't be used since we select it dynamically based on fork
const type = ssz.fulu.DataColumnSidecar;
super(config, db, bucket, type, getBucketNameByValue(bucket));
}
/**
* Id is hashTreeRoot of unsigned BeaconBlock
*/
getId(value) {
return value.index;
}
encodeValue(value) {
if (isGloasDataColumnSidecar(value)) {
return ssz.gloas.DataColumnSidecar.serialize(value);
}
return ssz.fulu.DataColumnSidecar.serialize(value);
}
decodeValue(data) {
if (isGloasDataColumnSidecarBytes(data)) {
return ssz.gloas.DataColumnSidecar.deserialize(data);
}
return ssz.fulu.DataColumnSidecar.deserialize(data);
}
encodeKeyRaw(prefix, id) {
return Buffer.concat([
encodeNumberForDbKey(prefix, SLOT_BYTE_SIZE),
encodeNumberForDbKey(id, COLUMN_INDEX_BYTE_SIZE),
]);
}
decodeKeyRaw(raw) {
return {
prefix: decodeNumberForDbKey(raw, SLOT_BYTE_SIZE),
id: decodeNumberForDbKey(raw.slice(SLOT_BYTE_SIZE), COLUMN_INDEX_BYTE_SIZE),
};
}
getMaxKeyRaw(prefix) {
return Buffer.concat([
encodeNumberForDbKey(prefix, SLOT_BYTE_SIZE),
encodeNumberForDbKey(NUMBER_OF_COLUMNS - 1, COLUMN_INDEX_BYTE_SIZE),
]);
}
getMinKeyRaw(prefix) {
return Buffer.concat([
encodeNumberForDbKey(prefix, SLOT_BYTE_SIZE),
encodeNumberForDbKey(0, COLUMN_INDEX_BYTE_SIZE),
]);
}
}
//# sourceMappingURL=dataColumnSidecarArchive.js.map