For more information about Tenderbake and dynamic repeated consensus, see Tenderbake
For the TLA+ spec, see Tenderbake spec
This specification follows the design of Tenderbake laid out in Tendbake - A Solution to Dynamic Repeated Consenses for Blockchains. Liberal simplifications/abstractions are used to produce a tractable spec and will be explained below. As with all TLA+ specs, we specify the consensus protocol as an automaton (state machine).
The spec contains both correct and faulty processes. Correct processes follow the protocol while faulty processes behave arbitrarily. We describe the actions allowed by correct processes.
At the beginning of each round, a designated committee member, called the proposer, can propagate a new block to be preendorsed, then endorsed by the committee.
After a value has been proposed, the committee members signal their intention to "lock" on this value by boradcasting preendorsement messages.
If a member sees a quorum of preendorsement messages for a value, they broadcast an endorsement message for that value. If a member sees a quorum of endorsement messages for a value, they consider this value to be correct and add the block to their local chain.
Observation actions are only enabled for noncommittee processes, . The committee depends on the level, not all processes will be part of each committee. These observers simply handle the network messages and adjust any corresponding local information.
At any point in the execution of the state machine, it is possible for a correct process to timeout. When this occurs, the process pulls chains from all other processes.
- dynamic level comittees
- committes depend only on the level
- proposer depends on the round within the level
n >= 3f + 1
wheren
is the number of bakers (correct + faulty processes) andf
is the number of faulty bakers (processes)- all committee members have the ability to communicate with one another
- bakers do not maintain or exchange mempools
- chains are always pulled from all other processes (complete network topology)
The spec's properties can be found here. To verify these properties using TLC,
- Clone the repo
- From the Tenderbake directory (/consensus/Tenderbake), do
tlc MC_safety.tla