You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
If a node does not propose or proposes invalid blocks, the chain slows down because in order to progress we need to wait for a view change after minimum 12s.
We seek to temporarily suspend offline nodes until they come online to minimise their impact on consensus.
Proposal 1
Suspend:
Each replica tracks proposal misses for each validator member. A proposal miss is detected from a dummy block reaching commit phase(5). In this case a counter is incremented. On propose, a proposer checks for any missed proposal counts that exceed a threshold (MISSED_PROPOSAL_SUSPEND_THRESHOLD) and proposes Command::Suspend(vn_index) in the next block.
Once that block is committed, anytime is_suspended_vn(leader_index(cur_view)) the view is immediately progressed to the next view and the normal leader failure procedure applies (1).
Notes:
This could be implemented as the nodes immediately sending a NEWVIEW to the next leader, or
the leader(cur_view + 1) could immediately propose a new block with a dummy parent.
For each of these "forced" dummy blocks, the missed_proposal count is increased (should there be an upper bound?)
Updating counts at the commit phase is easiest as we don't have to keep fork-dependent count data
Resume
As votes are received from the suspended node, the missed_proposal count is decremented. Once it reaches 0, a proposer MUST propose Command::Resume(vn_index). Since the counts are only updated on commit blocks, all non-faulty validators have the same counts(1).
Once the resume block has been committed, the validator is reinstated into the round and continues as normal.
Notes:
We may want to provide some proof of this in the block, for example, a hash of validator PKs and their corresponding non-zero missed proposal count.
The text was updated successfully, but these errors were encountered:
Background
If a node does not propose or proposes invalid blocks, the chain slows down because in order to progress we need to wait for a view change after minimum 12s.
We seek to temporarily suspend offline nodes until they come online to minimise their impact on consensus.
Proposal 1
Suspend:
Each replica tracks proposal misses for each validator member. A proposal miss is detected from a dummy block reaching commit phase(5). In this case a counter is incremented. On propose, a proposer checks for any missed proposal counts that exceed a threshold (MISSED_PROPOSAL_SUSPEND_THRESHOLD) and proposes
Command::Suspend(vn_index)
in the next block.Once that block is committed, anytime
is_suspended_vn(leader_index(cur_view))
the view is immediately progressed to the next view and the normal leader failure procedure applies (1).Notes:
leader(cur_view + 1)
could immediately propose a new block with a dummy parent.Resume
As votes are received from the suspended node, the missed_proposal count is decremented. Once it reaches 0, a proposer MUST propose
Command::Resume(vn_index)
. Since the counts are only updated on commit blocks, all non-faulty validators have the same counts(1).Once the resume block has been committed, the validator is reinstated into the round and continues as normal.
Notes:
The text was updated successfully, but these errors were encountered: