I have a question regarding the options a honest or byzantine replicator node has about extending the current block tree.
- How does a honest replicator node extend the to his known block tree? (is this deterministic?)
- What options does a byzantine node have if he is the roundLeader? (including not sending at all?)
When looking at the example image below from the paper it explains that round k+3, times out, but the leader of that round has received at least 2f+1 votes but he is unable to send the QC to the next round reader. This means that round k does not get committed and the preferred round stays k. Now the next roundLeader forks at round k, this is allowed since the parent round_number of this proposal is at least k. Somewhere later k does get committed and then k+4 gets committed but I have many questions.
- What if round k never get committed but round k+4 does? Is this even possible since maybe money is spend in round k+4 that comes from round k?
- Could the proposer of round k+4 also choose to extend from round k+1? Its parent is also at least the preferred round.
- What would a honest roundLeader node choose to do?
- Is forking preferred?
- Can the forking go on forever without anything committing?
- I am correct that in the “happy path” there are no forks and the commit chain looks like a straight line from top to bottom?
- When the roundLeader from round k+3 is again the roundLeader in a later round he actually now has 2 QC’s that he can choose to embed in his next proposal, that of round k+2 and round k+6 for example.
Hopefully someone could answer this for me as I really want to understand this
And is there maybe another paper that explains this topic in more detail?