HyperLiquid runs a custom BFT consensus protocol called HyperBFT, derived from HotStuff. It achieves sub-second block times with deterministic finality through a two-chain commit rule.Documentation Index
Fetch the complete documentation index at: https://hypernode-docs.polynode.dev/llms.txt
Use this file to discover all available pages before exploring further.
Block production
HyperLiquid produces blocks approximately every 0.07 seconds (70ms). Each block is proposed by a single validator selected through proposer rotation. The block production pipeline:- Transaction submission — users submit signed actions through the API
- Forwarding — non-leader validators forward transactions to the current leader
- Block proposal — the leader batches pending transactions into a
BlockProposemessage and broadcasts it to all validators - Voting — validators verify and vote on the proposed block
- Commitment — after two consecutive rounds of quorum votes, the block is committed
- Distribution — committed blocks are forwarded to non-validator nodes for state application
Transactions that are not included in a block remain pending for the next proposal cycle. Transactions that expire without being committed are dropped.
Two-chain commit rule
HyperBFT uses a two-chain commit rule derived from HotStuff BFT:- Byzantine fault tolerance — the system tolerates up to f Byzantine validators out of 3f+1 total
- O(n) communication complexity — linear message complexity per round, significantly better than classical PBFT
- Deterministic finality — once committed, a block cannot be reverted
- Fast confirmation — two rounds at ~70ms each means finality in roughly 140ms under normal conditions
CertifiedTwoChainCommit is the cryptographic proof that a block has been finalized through this process.
Consensus message types
The consensus layer uses several message types to coordinate block production:| Message | Purpose |
|---|---|
BlockPropose | Leader proposes a new block containing batched transactions |
BlockVote | Validators vote on a proposed block |
TxVote | Individual transaction voting (enables partial block acceptance) |
Timeout | Validator signals that the current round has timed out |
Tc | Timeout certificate — proof that enough validators timed out |
Heartbeat | Liveness signal from a validator |
HeartbeatAck | Acknowledgment of a heartbeat |
Qc | Quorum certificate with next proposer designation |
TxVote
Individual transaction voting is a newer addition to the consensus protocol. It enables several capabilities:- Partial block acceptance — validators can reject specific transactions while accepting the rest of the block
- Priority enforcement — validators verify that priority fee bids are honored correctly
- Censorship resistance — validators can flag transactions that were improperly excluded
- Ordering verification — ensures transaction ordering matches auction results
Proposer rotation
Validators take turns proposing blocks in a deterministic rotation. TheQc (quorum certificate) message includes a next_proposer field that designates which validator proposes the next block, along with a suspect field that can flag misbehaving proposers.
Under normal operation, the rotation cycles through the active validator set. If a proposer fails to produce a block within the timeout window, a Timeout message triggers a view change and the next validator in rotation takes over.
Validator roles
Leader (proposer)
Receives forwarded transactions, batches them into blocks, and broadcasts proposals. Rotates every round.
Voter
Validates proposed blocks, casts votes, and participates in quorum formation. All validators vote on every block they don’t propose.
Sentry
Non-validator nodes that connect to validators. Provides DDoS protection for the validator set by proxying connections.
Non-validator
Receives committed blocks and state updates after consensus. Serves read-only data to clients and applications.
Heartbeat system
Validators must continuously prove liveness through a heartbeat mechanism. The system tracks several metrics per validator:- Liveness detection — identifying validators that have gone offline or become unresponsive
- Performance monitoring — tracking latency trends to enforce quality-of-service standards
HeartbeatSnapshot fields
HeartbeatSnapshot fields
The consensus layer maintains a snapshot of heartbeat state:
| Field | Description |
|---|---|
validators_missing_heartbeat | Validators that have not sent a heartbeat within the expected window |
disconnected_validators | Validators with broken network connections |
heartbeat_statuses | Per-validator heartbeat state and latency metrics |
jailed_validators | Validators currently removed from the active set |
Heartbeat jailing configuration
The heartbeat system enforces both liveness AND performance standards through configurable thresholds:| Field | Purpose |
|---|---|
since_last_success | Time elapsed since last successful heartbeat |
last_ack_duration | Latency of the most recent heartbeat acknowledgment |
latency | Current measured latency |
latency_ema | Exponential moving average of latency over time |
HeartbeatSnapshot captures the full liveness picture at any point:
Jailing
Validators that fail to maintain liveness or performance standards are jailed — temporarily removed from the active validator set. Jailed validators cannot propose blocks or participate in voting until they are unjailed.Jailing triggers
There are two paths to jailing:- Missing heartbeats — a validator that stops sending heartbeat messages will be flagged and eventually jailed
- Latency threshold — if a validator’s exponential moving average (EMA) latency exceeds the
latency_ema_jail_threshold, it is jailed for poor performance
Jailing configuration
dry_run mode allows the network to tune jailing parameters without risking validator set instability.
Jail voting
Validators can also vote to jail other validators through theVoteJail action. This requires consensus — multiple validators must agree before a validator is forcibly jailed. This mechanism provides a social layer of accountability beyond automated heartbeat checks.
Jail state
The staking module tracks comprehensive jail state:| Field | Description |
|---|---|
jailed_signers | Set of currently jailed validator signing keys |
jail_vote_tracker | Tracks active jail votes and their progress |
jail_until | Earliest timestamp when a jailed validator can request unjail |
signer_to_last_manual_unjail_time | Cooldown tracking for manual unjail requests |
disabled_validators | Permanently disabled validators (beyond temporary jailing) |
disabled_node_ips | IP addresses blocked at the application level |
Unjailing
Jailed validators can request to be unjailed after thejail_until timestamp passes. The system tracks the last manual unjail time per signer to prevent rapid jail/unjail cycling.
Validators that are placed in the disabled_validators set are permanently removed and cannot unjail through the standard process.
Validator revenue
Validators earn revenue through block production and transaction processing. TheValidatorBroadcasterShare system distributes broadcaster revenue among validators, potentially weighted by their latency performance — creating an economic incentive to maintain low-latency infrastructure.