Federated Voting is defined as a method used by the SCP to agree on statements. Participants make the statements. Two sets of messages are exchanged between nodes in a network. The sub-division of the two message rounds are done into agreement states. Unknown, accepted, and confirmed are the agreement states.
The federated voting process becomes more complicated due to the accommodation of open membership. Initial Voting, Acceptance, Ratification, and Confirmation are the four stages of the federated voting process.
In the Initial Voting stage, nodes give their votes for a statement which is valid according to the nodes. They will not give their votes for a statement which is contradictory according to them. A node can change its vote.
In the Acceptance stage, a node can accept a statement in the situation where it has not accepted a contradictory statement or a v-blocking set of nodes (present in quorum slices with the node) vote for accepting the statement. A v-blocking set is defined as a group of nodes which intersects with other quorums.
In the Ratification stage, everyone in a quorum votes with the objective to accept a statement. The nodes will ratify the statement due to their voting.
In the confirmation stage, if the processing of a sufficient threshold of messages is done, then the system will be able to agree on a statement. Acceptance messages are propagated by nodes from nodes within their quorum only. Other nodes can be influenced by these messages with the objective to accept the message in the situation where a different initial message was accepted by them. Confirming the message requires the broadcasting of a round of confirmation messages.
The voting mechanism can be mapped out effectively than before with the help of some excellent resources provided by Stellar. A “Galactic Consensus” graphic is provided by Stellar for a broader overview. A useful blog post is also provided Stellar.