hyperledger-labs / hyperledger-labs/SmartBFT

Do not change leader when doing reconfiguration

Open
#420 0 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Go
Stars
110
Forks
39
Avg merge
2h 33m
Merged PRs (30d)
3

Description

As the amount of nodes increases, **f** increases, so the likelihood of having nodes that are unreachable/crashed increases as well.

The leader ID is currently calculated as the index of the node in the position **v % n** when **v** is the view ID and **n** is the node count.
Due to the way we calculate this leader ID, the leader ID might change when we do a reconfiguration that adds or removes nodes.

If we change the leader ID but this node might be offline/unreachable at that time, it means that doing a reconfiguration might cause downtime (view change).

To circumvent this problem, I propose that we persist the leader ID in the view metadata, and:

- Increment modulo n this leader ID when we do a view change
- Persist this leader ID, when we do a reconfiguration, unless the leader itself is removed, and in that case we just pick the next leader ID.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by tracing how the leader ID is calculated from the view ID and node count, then inspect the view metadata and reconfiguration paths. Implementing this proposal is done when leader identity remains persistent across node additions or removals, advances on view changes, and selects the next leader when the current leader is removed.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
blockchain, distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.