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.