Skip to main content

Computing the Banzhaf Power Index for voters in the GR16 Round Structure Gitcoin Proposal

Published onMar 06, 2023
Computing the Banzhaf Power Index for voters in the GR16 Round Structure Gitcoin Proposal
·

Introduction

On the request of shawn16400, I computed the Banzhaf power index for voters in the GR16 Round Structure Gitcoin proposal, on Snapshot, in part, to aid in shawn16400’s development of his Gitcoin Decentralization Index, for further investigation of the application of the Banzhaf power index in a DAO context, and the applicability of DAO Index question BSP-001.

Question

What is the Banzhaf power index for voters that participated in the GR16 Round Structure proposal on Snapshot?

Methods

I calculated the Banzhaf power index in a jupyer notebook, in a Google Colab environment.

I queried Snapshot’s GraphQL API with the gql python library with the following query:

query Votes {
              votes (
                first: 1000
                skip: 0
                where: {
                  proposal: "0xecc9736dc4f9e6eb954b67a0d7301ecbcc48bbd5ad31fbd28f1e74ade500c479"
                }
                orderBy: "vp",
                orderDirection: desc
              ) {
                voter
                vp

              }
        }

The query returned the voter’s Ethereum address (voter) and voting power (vp) casted in the proposal in JSON.

I converted the JSON object into a Pandas DataFrame for ease of use.

I normalized the voting power by dividing each voter’s voting power by the total sum of voting power casted in the proposal, and then multiplying the result by 100. Thus, voting power was in the range of 0 to 100. I saved the normalized voting power into a new column, vp-int-normalized.

I tested three python libraries to compute the Banzhaf power index. I searched and found these libraries on pypi and Github by searching Banzhaf power index.

Libraries:

  1. power-bdd

  2. powerindices

  3. powerindex

I settled on the powerindex library because it outputted the expected results in general hypothetical situations, and it elicited the fewest errors in use.

I set the quota for the Banzhaf power index to 51% of the total voting power in the vp-int-normalized column.

I then used the powerindex library to compute the Banzhaf power index on the vp-int-normalized column, and saved the results in the Banzhaf_powerindex_module and Banzhaf_powerindex_module_percent columns.

Results

You can find the Banzhaf power index scores in the Banzhaf_powerindex_module and Banzhaf_powerindex_module_percent columns in the table below.

Results of the Banzhaf Power Index calculation

Discussion

I did not take into account the total Gitcoin token holder population, nor voters delegating their voting power to delegates.

I assumed a passing rate (i.e., quota) of 51% for the proposal (i.e., a simple majority).

After running through the Banzhaf power index on GR16 Round Structure, I realized that an additional question concerning the Banzhaf Index may be needed on the DAO Index, regarding having Banzhaf power index scores not lower than five percent (5%) for any member of the DAO, or within a range of 5 - 25% for each voter.

The number of small scores (i.e., probabilities less than 5%) was very high (682/687 or 99%), and a very worrying sign that the majority of voters participating in Gitcoin’s governance have little to no ability to sway a vote.

Feedback Requested

As always, thank you for reading this pub and getting to this part. I am looking for feedback on this pub on the applicabiltiy of the Banzhaf power index to DAOs and improvements in the methods.

If you have any feedback, please send a message to [email protected] or leave a comment below.


Appendix

  1. Snapshot GraphQL API

  2. GR16 Round Structure

Connections
A Supplement to this Pub
Comments
0
comment
No comments here
Why not start the discussion?