Fixing safety and liveness in consensus
majecty opened this issue · 2 comments
majecty commented
Problem 1 - safety: Header verifier does not verify any signatures in a header.
Problem 2 - liveness: A peer does not send its commit to other peers.
How to solve them.
- In Tendermint check a header's signatures when it is needed.
- When a header is imported, Tendermint checks the header and update the best block if needed.
- Add a message that contains a height's finalized block and precommits.
majecty commented
I found that Tendermint does not use the best proposal header. So safety does not have any problem.
I'm implementing "Commit message" in Tendermint(#1770). It will fix the liveness issue.
Scenario
- A's tendermint height is 17, B's tendermint height is 18.
- A sends "Commit request" to B
- B sends "Commit" to A
- A moves to height 17's Commit state.