Weighing votes by Mana in FPC

Generally in our voting mechanisms the voting weight of a node should include factors such as reputation or mana. Here we want to restrict ourselves to weighing a nodes vote by its mana in the FPC mechanism. There are multiple ways of doing this, and the most obvious I can see are :

  1. uniform random selection of a quorum, where the probability to select a node is weight by its mana. There are also multiple nuances such as what to do, if a node is selected twice (can happen if its weight is large).
  2. randomly selecting a node and weighing its vote afterwards.

Are there any obvious reason against any of those two ?

Suppose that p proportion of the manna is pledged to nodes holding opinion 1. Then in 1), the chances that a node will switch to 1 is P(B(k,p)>\tau k) where tau is the threshold for the round. Is the same true for 2)?

We (@darcy.camargo) ran the math and the only way to ensure mana to voting power linearity (which I value above all else, as you know) is to:

  1. Select nodes into a quorum with probability proportional to their mana.
  2. Allow repetitions, and count votes multiple times if a node is selected more than once.
  3. Do not weigh votes once inside the quorum.

One more nuance: you have to also include yourself in the candidates list.

I’ll recreate the math with Darcy next time we meet (hopefully this week). By the way this is a general result for any “fair” voting algorithm, which might mean it’s interesting outside of IOTA as well (I believe I’ve seen some inaccuracies in this in other protocols, but can’t recall specifics).

1 Like

That would be very cool to see!

Pasting here some comments from #r-internal:

Darcy Camargo [12:23 PM]
[…] Basically we defined a metric of voting power and checked if it was linear/sublinear/superlinearBasically we defined a metric of voting power and checked if it was linear/sublinear/superlinear
Olivia Saa [2:28 PM]
If we are not weighting the votes, isnt just about calculating:
(average number of votes received from a node with mana = p)/(total number of votes received)?
Then it would be
(1/k)sum_{i=1}^{k} (iP(having i links with this node))
= (1/k) sum_{i=1}^{k} (i
C(k,i)p^i(1-p)^(k-i)) = p
nodes with mana p have voting power p
[…] were you trying to check if this algorithm would gives us linearity or were you trying to prove that this is the only algorithm that guarantees linearity?
Alon Gal [2:48 PM]
option b

Olivia Saa [3:28 PM]
if you dont weight the peering, it would never be linear. Take the case where you have 99 nodes with 0 mana and 1 node with all the mana. No matter which (reasonable) definition of voting power you use, the voting power of the large node wont be 1. That’s because not all the nodes will peer with him, then any average you’ll take will give you something < 1.
So, linear => weight the peering
So let us start considering all the algorithms that weight the peering. We have already shown that weighting the peering + not weighting the votes = linear. Now we need a good definition of voting power to prove that weighting the peering + weighting the votes = not linear (unless we use some super weird weights on the votes)