hotstuff icon indicating copy to clipboard operation
hotstuff copied to clipboard

Pipelining

Open leandernikolaus opened this issue 2 years ago • 3 comments

This implements pipelining for chained hotstuff. Pipelined blocks still form a single chain, but need not include the certificate for their direct parent.

Commit rule is updated to commit requests if there is a depth 3 confirmation chain and all intermediate blocks are confirmed as well.

leandernikolaus avatar Oct 03 '22 07:10 leandernikolaus

Looks like some of the tests are failing now. Please take a look.

meling avatar Oct 04 '22 14:10 meling

In 7e59d24 I revised the approach. Now the synchronizer has both a currentView and nextView. currentView is advanced on receiving a TC or QC, while nextView is advanced on receiving a block if it lies within the pipeline. This makes the system run more stable since it no longer reacts to individual timeouts. However, the consensus module now no longer proposes blocks only in the current view but needs to receive a view, in which it should propose. This also required updates to Twins. Based on my analysis and testing, without pipelining, nextView and currentView should always coincide.

leandernikolaus avatar Oct 13 '22 10:10 leandernikolaus

@leandernikolaus I tried to merge master into this branch (locally) in an attempt to resolve the conflicts. However, the current synchronizer no longer has a leafBlock field and LeafBlock() method, it wasn't clear to me what needed to be done. This was removed in this commit. Could you try to resolve the conflicts, or let me know what needs to be done to get this back into a good shape. Or let me know if this no longer makes sense to merge.

meling avatar May 04 '23 23:05 meling