lisk-framework
Version:
Lisk blockchain application platform
35 lines (34 loc) • 1.68 kB
TypeScript
import { BlockHeader } from '@liskhq/lisk-chain';
import { BFTHeader } from '../types';
export declare enum ForkStatus {
IDENTICAL_BLOCK = 1,
VALID_BLOCK = 2,
DOUBLE_FORGING = 3,
TIE_BREAK = 4,
DIFFERENT_CHAIN = 5,
DISCARD = 6
}
interface Slots {
getSlotTime(slot: number): number;
getSlotNumber(timeStamp: number): number;
isWithinTimeslot(slot: number, time: number): boolean;
}
export declare const forgingSlot: (slots: Slots, block: BFTHeader) => number;
export declare const isBlockReceivedWithinForgingSlot: (slots: Slots, { timestamp, receivedAt }: BFTHeader) => boolean;
export declare const isLastAppliedBlockReceivedWithinForgingSlot: (slots: Slots, lastAppliedBlock: BFTHeader) => boolean;
export declare const isValidBlock: (lastBlock: BFTHeader, currentBlock: BFTHeader) => boolean;
export declare const isIdenticalBlock: (lastBlock: BFTHeader, currentBlock: BFTHeader) => boolean;
export declare const isDuplicateBlock: (lastBlock: BFTHeader, currentBlock: BFTHeader) => boolean;
export declare const isDoubleForging: (lastBlock: BFTHeader, currentBlock: BFTHeader) => boolean;
export declare const isTieBreak: ({ slots, lastAppliedBlock, receivedBlock, }: {
readonly slots: Slots;
readonly lastAppliedBlock: BFTHeader;
readonly receivedBlock: BFTHeader;
}) => boolean;
interface DifferentChainCheckHeader {
height: number;
maxHeightPrevoted: number;
}
export declare const isDifferentChain: (lastBlock: DifferentChainCheckHeader, currentBlock: DifferentChainCheckHeader) => boolean;
export declare const forkChoice: (blockHeader: BlockHeader, lastBlockHeader: BlockHeader, slots: Slots) => ForkStatus;
export {};