Skip to main content

BoundedCatchUp

Trait BoundedCatchUp 

Source
pub trait BoundedCatchUp: CertifiedBlockIsAvailable + BoundedRecovery { }
Expand description

Caveat (Catch-up is not time-bounded). The work a node must do to reach a chain’s tip is proportional to the number of blocks it must replay, which is the height above the chain’s latest checkpoint — and nothing in the protocol bounds that distance.

The mechanism to bound it exists. A block whose sole transaction is SystemOperation::Checkpoint publishes the chain’s execution state as a blob; Client::bootstrap_chain_from_checkpoint installs it and resumes downloading from that height, so the blocks below are never replayed. ChainWorkerState::reset_and_reexecute_chain uses the same shortcut, replaying only from latest_checkpoint_height.

Nothing schedules it. ChainClient::checkpoint is invoked from one place in the workspace, the linera CLI. There is no policy, no interval, and no protocol rule requiring a chain to checkpoint — so on a chain that never does, catch-up is linear in the chain’s whole history and BoundedRecovery cannot be discharged for a node that has fallen far behind.

This is the sharp edge of an otherwise-clean property: CertifiedBlockIsAvailable says a recovering or joining node can reach the tip; making that quick is a deployment obligation resting on checkpoint frequency that the protocol does not enforce.

Implementors§