Skip to main content

ActiveCorrectDriver

Trait ActiveCorrectDriver 

Source
pub trait ActiveCorrectDriver { }
Expand description

Assumption (An active correct driver). Some correct owner of the chain runs a ChainClient that, from some point on, repeatedly and without giving up calls ChainClient::process_pending_block (or an operation that does, such as ChainClient::execute_operations) with a block to propose, and holds the signing key for the owner it proposes as.

This assumption has no counterpart in most BFT protocols and is the single most important thing to understand about Linera’s liveness. A validator here never proposes a block and never advances a round on its own: it signs a timeout vote only when asked, through ChainInfoQuery::request_leader_timeout (see TimeoutVoteConditions), and there is no code path in linera_core::worker that constructs a BlockProposal. A microchain with no running client is not a chain that is slow; it is a chain that is stopped, by design.

In Round::Validator rounds the leaders are drawn from ChainManager::fallback_owners, which ChainManager::reset populates with the committee’s account keys — so the driver of a fallback round is a client run by a validator operator, still a client, and still assumed to exist.

Implementors§