mirror of
https://github.com/luxfi/consensus.git
synced 2026-09-24 00:26:58 +00:00
- Add context extension methods for uptime and node info - Add NoOpCalculator for uptime in test contexts - Update locked calculator with proper interface compliance - Remove experimental quasar event horizon duplicates - Add TypeScript/NAPI SDK bindings for consensus - Update Rust bindings and tests
163 lines
5.2 KiB
TypeScript
163 lines
5.2 KiB
TypeScript
/* tslint:disable */
|
||
/* eslint-disable */
|
||
|
||
/* auto-generated by NAPI-RS */
|
||
|
||
/** Block status */
|
||
export const enum BlockStatus {
|
||
Unknown = 0,
|
||
Processing = 1,
|
||
Rejected = 2,
|
||
Accepted = 3
|
||
}
|
||
/** Vote type */
|
||
export const enum VoteType {
|
||
/** Preference vote during sampling */
|
||
Preference = 0,
|
||
/** Commit vote for finalization */
|
||
Commit = 1,
|
||
/** Cancel/reject vote */
|
||
Cancel = 2
|
||
}
|
||
/** Complete Quasar consensus configuration */
|
||
export interface QuasarConfig {
|
||
/** Sample/committee size (default: 20) */
|
||
k: number
|
||
/** Fixed threshold ratio 0.5-0.8 (default: 0.69 = 69%) */
|
||
alpha: number
|
||
/** Consecutive rounds for finality (default: 20) */
|
||
beta: number
|
||
/** Round timeout in milliseconds (default: 100) */
|
||
roundTimeoutMs: number
|
||
/** Enable FPC adaptive thresholds (default: true) */
|
||
enableFpc: boolean
|
||
/** Minimum FPC threshold (default: 0.5) */
|
||
thetaMin: number
|
||
/** Maximum FPC threshold (default: 0.8) */
|
||
thetaMax: number
|
||
/** PRF seed for FPC (32-byte hex, optional) */
|
||
fpcSeed?: string
|
||
/** Base luminance in lux (default: 100.0) */
|
||
baseLuminance: number
|
||
/** Maximum luminance (default: 1000.0) */
|
||
maxLuminance: number
|
||
/** Minimum luminance (default: 10.0) */
|
||
minLuminance: number
|
||
/** Success multiplier (default: 1.1) */
|
||
successMultiplier: number
|
||
/** Failure multiplier (default: 0.9) */
|
||
failureMultiplier: number
|
||
/** Network timeout in milliseconds (default: 5000) */
|
||
networkTimeoutMs: number
|
||
/** Max message size in bytes (default: 2MB) */
|
||
maxMessageSize: number
|
||
/** Max outstanding polls (default: 10) */
|
||
maxOutstanding: number
|
||
/** Security level: 2=Low, 3=Medium, 5=High (default: 3) */
|
||
securityLevel: number
|
||
/** Enable quantum-resistant signatures (default: true) */
|
||
quantumResistant: boolean
|
||
/** Enable GPU acceleration (default: true) */
|
||
gpuAcceleration: boolean
|
||
}
|
||
/** Block data for consensus */
|
||
export interface Block {
|
||
/** Block ID (32-byte hex string) */
|
||
id: string
|
||
/** Parent block ID (32-byte hex string) */
|
||
parentId: string
|
||
/** Block height */
|
||
height: number
|
||
/** Block payload (hex-encoded) */
|
||
payload: string
|
||
/** Block timestamp (Unix milliseconds) */
|
||
timestamp: number
|
||
}
|
||
/** Vote on a block */
|
||
export interface Vote {
|
||
/** Block ID being voted on (hex string) */
|
||
blockId: string
|
||
/** Vote type (0=Preference, 1=Commit, 2=Cancel) */
|
||
voteType: number
|
||
/** Voter node ID (hex string) */
|
||
voter: string
|
||
/** Optional signature (hex string) */
|
||
signature?: string
|
||
}
|
||
/** Generate a random 32-byte block ID */
|
||
export declare function generateBlockId(): string
|
||
/** Create default Quasar configuration (production) */
|
||
export declare function defaultConfig(): QuasarConfig
|
||
/** Create testnet configuration (lower thresholds for testing) */
|
||
export declare function testnetConfig(): QuasarConfig
|
||
/** Create mainnet configuration (production settings) */
|
||
export declare function mainnetConfig(): QuasarConfig
|
||
/** Get SDK version */
|
||
export declare function version(): string
|
||
/** Compute FPC threshold for given parameters */
|
||
export declare function fpcThreshold(phase: number, k: number, thetaMin: number, thetaMax: number): number
|
||
/** Block identifier (32-byte hex string) */
|
||
export declare class BlockId {
|
||
constructor(hexString: string)
|
||
/** Create zero ID (genesis parent) */
|
||
static zero(): BlockId
|
||
toHex(): string
|
||
toBytes(): Array<number>
|
||
isZero(): boolean
|
||
}
|
||
/** Node identifier (32-byte hex string) */
|
||
export declare class NodeId {
|
||
constructor(hexString: string)
|
||
toHex(): string
|
||
toBytes(): Array<number>
|
||
}
|
||
/**
|
||
* FPC (Fast Probabilistic Consensus) threshold selector
|
||
*
|
||
* Computes phase-dependent thresholds using PRF-based selection.
|
||
* Formula: α(phase, k) = ⌈θ(phase) · k⌉
|
||
*/
|
||
export declare class FpcSelector {
|
||
/** Create a new FPC selector with given theta range */
|
||
constructor(thetaMin: number, thetaMax: number, seedHex?: string | undefined | null)
|
||
/** Get the threshold for a given phase and k */
|
||
threshold(phase: number, k: number): number
|
||
/** Get theta value for a phase (between theta_min and theta_max) */
|
||
theta(phase: number): number
|
||
}
|
||
/**
|
||
* Lux Quasar Consensus Engine for TypeScript/Node.js
|
||
*
|
||
* Thread-safe consensus engine with native performance.
|
||
* Implements complete Quasar consensus with:
|
||
* - Wave: Threshold voting with FPC support
|
||
* - FPC: Fast Probabilistic Consensus
|
||
* - Photon: Light-based validator sampling
|
||
* - Focus: Confidence accumulation
|
||
* - Quasar: Post-quantum finality
|
||
*/
|
||
export declare class ConsensusEngine {
|
||
/** Create a new consensus engine with configuration */
|
||
constructor(config: QuasarConfig)
|
||
/** Start the consensus engine */
|
||
start(): void
|
||
/** Stop the consensus engine */
|
||
stop(): void
|
||
/** Add a block to the consensus */
|
||
addBlock(block: Block): void
|
||
/** Record a vote on a block */
|
||
recordVote(vote: Vote): void
|
||
/** Check if a block has been accepted */
|
||
isAccepted(blockId: string): boolean
|
||
/** Get the status of a block */
|
||
getStatus(blockId: string): BlockStatus
|
||
/** Process multiple votes in batch (optimized) */
|
||
recordVotesBatch(votes: Array<Vote>): number
|
||
/** Add a validator to the engine */
|
||
addValidator(nodeId: string, weight: number): void
|
||
/** Get the current configuration */
|
||
getConfig(): QuasarConfig
|
||
/** Get current block height */
|
||
getHeight(): number
|
||
}
|