UNPKG

lisk-framework

Version:

Lisk blockchain application platform

35 lines (34 loc) 1.68 kB
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 {};