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?