klaytn / klaytn

Official Go implementation of the Klaytn protocol
GNU Lesser General Public License v3.0
380 stars 187 forks source link

Quorum Calculation Issue #2023

Closed jiseongnoh closed 12 months ago

jiseongnoh commented 1 year ago

Describe the bug The current quorum calculation method is 2F+1 where F is the maximum number of byzantine nodes. However, this formula does not hold for the network with 4x+1 validators, which might cause chain splits due to the incorrect quorum size. The correct formula should be Ceil(2 * valSet.Size())/3, to comply with the BFT principles.

How to reproduce please refer to https://github.com/klaytn/klaytn/blob/dev/consensus/istanbul/core/handler_test.go#L619

Expected behavior

Attachments

Environment (please complete the following information)

Additional context A hard fork is required to implement the correct quorum calculation.

exalate-issue-sync[bot] commented 1 year ago

Exalate commented: Issue Created by: jiseongnoh