10

I setup a small 3 node network that is using BABE and GRANDPA. When all 3 nodes are connected, it can produce blocks and finalize them. When 2 of the 3 nodes are connected, it can produce blocks but NOT finalize them.

How can I configure GRANDPA so that blocks can be finalized when 2 of the 3 nodes are connected?

0

1 Answer 1

10

You can't do that in any safe manner. Every BFT consensus algorithm requires the total number of nodes to be at least 3f + 1 where f is the number of faulty nodes. In your case you have one faulty node, which means that the whole system should have at least 4 nodes, where 1 is faulty and the other 3 are healthy. With 3 nodes, no faulty node is tolerated.

In case you're interested in this here's the seminal paper on this topic: The Byzantine Generals Problem - Leslie Lamport, Robert Shostak, and Marshall Pease

3
  • 1
    If you ever wondered why he called it the Byzantine generals problem, he tells us here: youtube.com/watch?v=SXt3-iZpQQc&t=9060s
    – Squirrel
    Mar 18, 2022 at 9:35
  • Ok, got it. I do want 3 available validators because we are testing this, but we can create 4, or I guess 2 GRANDPA authorities and 3 BABE authorities. Will try this, thanks!
    – Max
    Mar 18, 2022 at 13:11
  • If this answered your question you should consider accepting the response :)
    – André
    Mar 18, 2022 at 16:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.