Skip to content

Latest commit

 

History

History
41 lines (33 loc) · 2.56 KB

File metadata and controls

41 lines (33 loc) · 2.56 KB

Defining a Consensus Quorum Set

The quorum_set section of the network.toml defines which nodes you trust. The quorum set is used to determine whether a sufficient set of nodes in the network agree on a value for you to also cast a vote in agreement. This is the process of solving the Byzantine Agreement Problem.

The quorum_set is a recursive structure which includes the following for each set:

Quorum Set Component Value Function
Threshold Integer Defines the number of members of the set which must cast a vote for your node to be convinced and also vote in agreement.
Members A list of peers or sets. A member of a quorum set can be a peer or another quorum set.
Member Type Node or InnerSet Defines which type of quorum set member.
Member Args Args to construct either a Node or InnerSet member of the quorum set.

If Node, then the arg is the address and port of the node.

If InnerSet, then the args are threshold and members.

Example Quorum Sets

Two-of-three simple majority:

quorum_set = { threshold = 2, members = [
  { type = "Node", args = "peer1.test.mobilecoin.com:443" },
  { type = "Node", args = "peer2.test.mobilecoin.com:443" },
  { type = "Node", args = "peer3.test.mobilecoin.com:443" },
] }

Two-of-three, where one member is an InnerSet quorum set:

quorum_set = { threshold = 2, members = [
  { type = "Node", args = "peer1.test.mobilecoin.com:443" },
  { type = "Node", args = "peer2.test.mobilecoin.com:443" },
  { type = "InnerSet", args = { 
      threshold: 2,
      members = [
         { type = "Node", args = "peer3.test.mobilecoin.com:443" },
         { type = "Node", args = "peer4.test.mobilecoin.com:443" },
         { type = "Node", args = "peer5.test.mobilecoin.com:443" },
     ]}
   }
] }