If I understand this correctly, when a voting is initiated, there's a ballot that holds all the values for which the network is voting on, and it gets propagated to other nodes through the consensus. But who is responsible for creating the ballot? Wouldn't that person have to ability to manipulate the ballot in his favor? For example, create a ballot that with two options: "send me $100" and "send me $99.99"?

1 Answer 1


I think you are conflating the ballot and the candidate value chosen by the ballot. The candidate value (which includes a set of transactions) is selected using a nomination protocol that typically randomly chooses one node's candidate value based on the node's importance in the system. However, it's possible there are multiple candidate values nominated, in which case they are "combined" by taking the value with the biggest transaction set and breaking ties by the hash value itself.

In more detail, the candidate value is a StellarValue in Stellar-ledger.x, and it includes a set of transactions. Transactions are multicast on an overlay network, and each validator has its own idea of what transactions to include in the next ledger. (Mostly these will be the same transactions everywhere, but due to propagation delays not everyone may have heard of every transaction.)

So then each node picks a highest priority node whose value it will nominate. Priority is determined using a hash of the node public keys, but in a way that tends to ignore nodes that are not very important because they only appear in a small fraction of a node's quorum slices. The values that are confirmed nominated are deterministically combined (as described above) to choose one value for the balloting phase. If balloting kicks off too soon and different nodes have different values, then they will converge at a later ballot counter.

  • can you elaborate this a bit more with an example? And how does the transactions get record into the candidate value in the first place?
    – B.Li
    Sep 18, 2018 at 20:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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