hyperledger-labs / hyperledger-labs/SmartBFT
Do not change leader when doing reconfiguration
- 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