this is the consensus algorithm

tower bft is a custom implementation of PBFT (practical byzantine fault tolerance - practical bft)

3 phases:

  • pre-prepare
  • prepare
  • commit

solves 2 main things

  • safety
    • results are valid and identitical in all non-faulty nodes
  • liveness
    • nodes that dont fail always produce a result

safety guarantee is due to the deterministic nature since it’s executed on every node

liveness guarantee is due to the view-change process

network wont be stopped unless there are too many byzantine nodes

view-change allows nodes to switch leaders f they’re malicious or faulty

view-change happens when leader appears to have failed, so another node tries to take over by initiating an election process there are timeouts with this which regulate that process

tbft vs pbft: pbft has exponentially increasing timeouts compared to tbft which uses poh which provides a global source of time before consensus is reached

no messages are needed as poh itself enforces them

the procedure:

  • voting on a new block is restricted to a fixed time period ( | poh ticks / 1 slot )
    • ~400ms for one slot
  • every 400 ms, a potential rollback point occurs but

each new block thats voted on doubles the amount of timie the network would have to stall before unrolling the original vote

that’s how consensus works?