---
# System prepended metadata

title: The latest gossip on BFT consensus

---

# The latest gossip on BFT consensus
- Link:: https://arxiv.org/pdf/1807.04938.pdf
- Introduction
    - [[Consensus]] is the most fundamental problem of distributed computing
    - SMT "State Machine Replication" is the guarantee that multiple replicas of computing stay in sync with each other.
        - State Machine Replication
- Definitions
    - Model
        - The paper considers a system of processes that communicate with each other by exchanging messages through a gossip protocol.
        - GST "Global Stabilization Time"
            - Global Stabilization Time
        - Gossip communication is sending a message in which all receivers (correct processes) will receive the message m before max{t,GST}+∆
    - State Machine Replication
        - States of different machines will not diverge. It is dependent on **Agreement** and **Order**. Agreement on the requests, and the order of the request. (Client requests in this case)
        - Client requests are transactions
    - Consensus
        - Tendemint uses Validity Predicate based Byzantine consensus that has three parts:
            - Agreement: No two correct processes decide on different values
            - Termination: All correct processes eventually decide on a value
            - Validity: A decided value is valid
- Tendermint Consensus Algorithm
    - The **total** voting power of faulty processes is n>3f, f is the faulty processes and n is the total processes of the whole system
    - There is a dedicated per "round proposer"
        - round proposer
    - There are 3 timeouts to prevent the algorithm from blocking.
        1. timeoutPropose
        2. timeoutPrevote
        3. timeoutPrecommit
    - Each round updates the timeout, to make the communication between correct processes timely and reliable:
        - $$timeoutX(r) =initTimeoutX + r*timeoutDelta$$
    - The processes exchange the following messages and steps:
        1. Proposal, message created by the "round proposer"
        2. Prevote, a vote on the proposed message
        3. Precommit, another vote on the proposed message
    - Every process maintains the following variables:
        - step
        - lockedValue
        - lockedRound
        - validValue
        - validRound
    - Termination mechanism
        - Uses "validValue" and "validRound" that are used by proposer.
        - Ensures that the values and rounds of a proposer get updated to all processes.
- Proof Of Tendermint Consensus Algorithmhttps://docs.tendermint.com/master/
