Skip to content

Plural Voting Model

Martin Benedikt Busch edited this page Jul 12, 2024 · 98 revisions

This page introduces the plural voting model currently used by Lexicon's plural voting tool, which uses a mechanism known as connection-oriented cluster match (COCM) which aims to prevent groups of voters with pre-existing relationships from colluding to manipulate a vote (see Miller et al. 2022) [1].

What issues does plural voting address?

Linear voting mechanisms allocate votes directly in proportion to the number each participant holds which is often measured as the number of a specific token held in a wallet. Often this results in participants with disproportionally many tokens having an undesirable control over the voting outcome. A challenge that Quadratic Voting (QV) addresses by mitigating these imbalances, but as a trade-off indroduces varius sybil issues. For example, the incentive to split token balances between multiple accounts. COCM enhances voting mechanisms by leveraging information about pre-existing relationships among voters, such as professional affiliations. This approach favors voting outcomes where votes are cast by people from various backgrounds, ensuring diverse perspectives are represented and preventing dominance by a single participant or group.

Example

Consider the following hypothetical vote distributions of 5 participants that vote on two distinct options (Option 1 and Option 2):

Option 1 Option 2
Voter 1 4 1
Voter 2 4 1
Voter 3 4 1
Voter 4 0 2
Voter 5 0 2

One can see that in terms of raw votes received Option 1 with 12 received votes clearly dominates Option 2 that received only 7 votes. Furthermore, Option 1 dominates Option 2 using the classic quadratic voting model. The quadratic score of Option 1 equals 6 ($\sqrt{4} + \sqrt{4} +\sqrt{4})$ while the quadratic score of Option 2 equals 5.828. Seems like a fair voting outcome. However, what if we told you that Voter 1, Voter 2, and Voter 3 know each other, for example, through their workplace and decided privately to allocate more votes to Option 1 then Option 2. Voter 4 and Voter 5 don not know each other. This results in the following group distribution:

  • Group 1: Voter 1, Voter 2, Voter 3
  • Group 2: Voter 4
  • Group 3: Voter 5

The plural voting model takes these pre-existing user relationships into account in the calcualtion of the voting outcome. Before going into the details of the model mechanics, lets have a look at the result first. The plurality score of Option 1 is 3.464 while the plurality score of Option 2 is 4.56. Therfore, the plurality score favours Option 2 even though it scores better on the traditional metrics. The plurality score punishes collusion by voters of Group 1 by discounting their influence on the vote outcomes. In other words, the plurality score favours votes spread accross distinct groups.

The Model

The following description and definition of the model is based on Miller et al. 2022 [1].

The model aims to take into account pre-existing relationships among voting agents. Imagine there are two groups, let's call them x and y. Instead of simply adding up the votes from each group, pre-existing relationships between agents in each group are taken into account to discount votes depending on the intensity of the relationships. For example, if an agent from group x is connected to an agent in group y in some way (e.g., they are work affiliates, or have shared financial interests), their vote is attenuated (discounted). This attenuation is calculated using the following function:

$$ \large{ K_{p}(i,h) = \begin{cases} \sqrt{v_{i,p}} & \quad \text{if } i \in h \text{ or } ∃j \in h \text{ such that } |T_i ∩ T_j| \geq 1 \\ v_{i,p} & \quad \text{otherwise } \end{cases} } $$

$K_{p}(i,h)$ denotes how much to discount an agent's vote contribution to project $p$ based on their connections to agents in the other group, where the number of votes of agent $i \in N$ is denoted by $v_{i,p}$. Furthermore, $T_i$ counts the number of groups of agent $i$. The first condition says that the number of votes of agent $i$ gets square rooted if agent $i$ is part of the group $h$ itself or if some member of $h$ has a relationship with agent $i$ through some other group.

The entire formula of the plural voting model that uses connection-oriented cluster match can be denoted as follows:

$$ \large{ score_{p} = \sqrt{\sum\limits_{\substack{i \in N}} v_{i, p} + \sum\limits_{\substack{g \in G}}\sum\limits_{\substack{h ≠ g}}\sqrt{\sum\limits_{\substack{i \in g}}\frac{K(i,h)}{|T_i|}}\sqrt{\sum\limits_{\substack{j \in h}}\frac{K(j,g)}{|T_j|}}} } $$

The formula consists of two parts. The first part adds up the number of votes of each agent for project $p$. The second term calculates the interactions between pairs of groups, but with votes discounted based on pre-existing agent relationships. Therefore, it's harder to collude for agents with known pre-existing relationships. In the case when each agent can only be part of one group, for example because the implementer of the underlying vote enforces it, the model simplifies to the following:

$$ \large{ score_{p} = \sqrt{\sum\limits_{\substack{i \in N}} v_{i, p} + \sum\limits_{\substack{g \in G}}\sum\limits_{\substack{h ≠ g}}\sqrt{\sum\limits_{\substack{i \in g}}v_{i,p}}\sqrt{\sum\limits_{\substack{j \in h}}v_{j,p}}} } $$

Essentially, the $K_{p}(i,h)$ becomes irrelevant when agents cannot be in muultiple groups at a time, as there are no inter-group relationships. In this scenario, the calculations are influenced solely by within-group relationships simply defined by agents being in the same group.

Examples

Although the concept is intuitive, the mechanics are perhaps not. The following simple example hopefully illustrates the mechanics of the model. There are three agents who all give $4$ votes each to a given project. As a baseline, let's calculate the score using quadratic voting, which is simply the sum of the square roots of the votes of each agent (i.e., 2 + 2 + 2 = 6). Under naïve quadratic voting, the 12 votes from the three agents would be discounted to a total of 6.

Strictly one group per agent

Under plural voting the relationships between agents are also taken into account. Let's assume the three agents are part of the following two groups:

  • group_0: [agent_0, agent_1]
  • group_1: [agent_2]

Given this information, the first term of the connection-oriented cluster match formula is calculated as follows. The first term denotes simply the sum of votes of each agent. As a result the first term equates to 12 (i.e. 4 + 4 + 4). For the second term, we need to sum over all pairs of groups that are not equal to each other.

First, we must sum over each group and for each group over all other groups. In this example this is straight forward as, for example, the only other group than group_0 is group_1. So lets start with group_0 where the other group is group_1. The only thing that needs to be done here is solving the sums correctly as vote annutations must not be considered as there exist no intra-group relationships between agents. Second, we must sum the votes for each interaction term, square roote them individualy, and then multiply them. The result is 5.656854249492381. Now we can go back to the beginning of the formula and do the calculation for group_1 (i.e. the second and last element of $G$). The following two json strings display each step of the calculation that can be taken as reference when recalculating the result:

First Sum: {'group_0': {'group_1': {'interaction_term1': {'agent_0': {'vote_attenuation': 4}, 'agent_1': {'vote_attenuation': 4}, 'interaction_term2': {'agent_2': {'vote_attenuation': 4}, 'sum_attenuated_votes_term1': 8.0, 'sqrt_sum_attenuated_votes_term1': 2.8284271247461903, 'sum_attenuated_votes_term2': 4.0, 'sqrt_sum_attenuated_votes_term2': 2.0, 'multiplied_interaction': 5.656854249492381}}

Second Sum: {'group_1': {'group_0': {'interaction_term1': {'agent_2': {'vote_attenuation': 4}, 'interaction_term2': {'agent_0': {'vote_attenuation': 4}, 'agent_1': {'vote_attenuation': 4}}, 'sum_attenuated_votes_term1': 4.0, 'sqrt_sum_attenuated_votes_term1': 2.0, 'sum_attenuated_votes_term2': 8.0, 'sqrt_sum_attenuated_votes_term2': 2.8284271247461903, 'multiplied_interaction': 5.656854249492381}}

Now we need to add the terms that we calculated. The first term of the formula 12 plus the second term 11.312 (5.656 + 5.656) which equates to 23.312. The last step is to take the square root of all terms to get the final plurality score of 4.828. Note that the plurality score is lower than the score under quadratic voting (i.e., 6) due to the fact that connection oriented cluster match discounts vote contributions given the intensity of relationships between agents.

Multiple groups per agent

Things become more complicated when agents can be in multiple groups.

  • group_0: [agent_0, agent_1]
  • group_1: [agent_1, agent_2]

As one can see agent_1 is now in group_0 and in group_1. However, the first term follows the exact same calculation as shown above and therefore equates to 12. For the second term, we need again to sum over all pairs of groups that are not equal to each other.

First, we must sum over each group and for each group over all other groups. So lets start with group_0 where the other group is group_1. For each agent within group_0 we must calculate $K(i,1)/T_i$. For both agents in group_0 the number of votes gets square rooted. For agent_0 the vote contribution gets square rooted becuase agent_0 has a releationship with agent_1 who is part of group_1. For agent_1 the vote contribution gets attenuated because agent_1 is part of group_1 herself. The same calculation must be done for the second interaction term from the perspective of each agent in group_1. The last step is to sum the attenuated votes for each interaction term, square roote them individualy, and then multiply them. The result is 2.9999999999999996. Now we can go back to the beginning of the formula and do the calculation for group_1 (i.e. the second and last element of $G$). Again, the following two json strings display each step of the calculation that can be taken as reference when recalculating the result:

First Sum: {'group_0': {'group_1': {'interaction_term1': {'agent_0': {'vote_attenuation': 2.0, 'num_groups': 1, 'vote_attenuation/num_groups': 2.0}, 'agent_1': {'vote_attenuation': 2.0, 'num_groups': 2, 'vote_attenuation/num_groups': 1.0}}, 'interaction_term2': {'agent_1': {'vote_attenuation': 2.0, 'num_groups': 2, 'vote_attenuation/num_groups': 1.0}, 'agent_2': {'vote_attenuation': 2.0, 'num_groups': 1, 'vote_attenuation/num_groups': 2.0}}, 'sum_attenuated_votes_term1': 3.0, 'sqrt_sum_attenuated_votes_term1': 1.7320508075688772, 'sum_attenuated_votes_term2': 3.0, 'sqrt_sum_attenuated_votes_term2': 1.7320508075688772, 'multiplied_interaction_terms': 2.9999999999999996}},

Second Sum: 'group_1': {'group_0': {'interaction_term1': {'agent_1': {'vote_attenuation': 2.0, 'num_groups': 2, 'vote_attenuation/num_groups': 1.0}, 'agent_2': {'vote_attenuation': 2.0, 'num_groups': 1, 'vote_attenuation/num_groups': 2.0}}, 'interaction_term2': {'agent_0': {'vote_attenuation': 2.0, 'num_groups': 1, 'vote_attenuation/num_groups': 2.0}, 'agent_1': {'vote_attenuation': 2.0, 'num_groups': 2, 'vote_attenuation/num_groups': 1.0}}, 'sum_attenuated_votes_term1': 3.0, 'sqrt_sum_attenuated_votes_term1': 1.7320508075688772, 'sum_attenuated_votes_term2': 3.0, 'sqrt_sum_attenuated_votes_term2': 1.7320508075688772, 'multiplied_interaction_terms': 2.9999999999999996}}}

Now we need to add the terms that we calculated. The first term of the formula 12 plus the second term 5.99 (2.999 + 2.999) which equates to 17.99. The last step is to take the square root of all terms to get the final plurality score of 4.24. Note that the plurality score is lower than the score under quadratic voting (i.e., 6) due to the fact that connection oriented cluster match discounts vote contributions given the intensity of relationships between agents.

References

[1] Miller, J., Weyl, E. G., & Erichsen, L. (2022). Beyond Collusion Resistance: Leveraging Social Information for Plural Funding and Voting. Available at SSRN 4311507.