Hello, I am currently working on a university paper about the decentralization of IC governance and I am looking for a way to understand it better. One important metric for this would be the potential maximum voting power for each neuron. That means the voting power a neuron would have if all his followers voted the same way as he does. To do this, I need to know the total delegated amount from all followers for each neuron. I was wondering if anyone knows of a list of followers for a neuron or if there has been any progress on implementing this metric since a year ago when there was a post about it on the forum View total follower voting power of neuron with overall positive responses. If anyone can provide any information or clues on how to do this, I would greatly appreciate it and I would be happy to include you in my research paper as well. Thank you in advance.
Hi @Chad ,
Lara here from the NNS team.
There is currently no metric that allows you to extract this information from the governance canister.
One thing that you can do to get an idea of the effective voting power that a neuron exercises including all its followers is to look at the voting history on the dashboard.
Looking at a random proposal (e.g. this one) you can see the steps in added yes or no votes which indicates how much voting power was “sent together”, i.e., as an effect of one vote (see bottom right).
Also note that a neuron can follow different neurons for different topics. Conversely this means that a neuron has different followers and thus a different potential “maximum voting power” for each proposal topic.
I hope this helps!
Thanks so much for your response, @lara.
I’m really intrigued by the spikes in voting history. Is it possible to query the entire voting history for a proposal? If we had access to timestamps, it would be possible to identify the neurons that vote at the same time as “known neurons.” Unfortunately, the official API doesn’t seem to have a call for voting history (Public Dashboard API). However, I’ve come across this website, ICSCAN, which has some interesting information like the total votes of each neuron and their voting history. Do you know how to access this information?
I’m also curious about why governance participation is still less than 50% for most proposals. IC seems to incentivize participation quite a bit and there’s an easy delegation feature, so why aren’t more neurons voting? Is it because of how the default delegation is configured? I’d love to hear your thoughts on IC governance and any suggestions for how you think it could be improved. Thanks again!
@lara I am also wondering, how the Voting Participation is calculated on the Dashboard. Is it the percentage of the total voting power that has been voted on a given day?
What about the Overall Voting Participation?
Is there an API to query those values?
Thanks!
AFAIK voting logs are quickly discarded because they take up a lot of space. The dashboard and similar services have to scrape the votes shortly before or very quickly after a proposal ends and then save that data off-chain. Known neurons are a bit different AFAIR - I think they have the last ~100 votes cached before they are discarded.
Hello. I am from the dashboard team, and I will try to answer your questions related to the API.
The dashboard team highly encourages using v3 of the public dashboard API. You can see all of the available endpoints here: Public Dashboard API.
I’m really intrigued by the spikes in voting history. Is it possible to query the entire voting history for a proposal? If we had access to timestamps, it would be possible to identify the neurons that vote at the same time as “known neurons.” Unfortunately, the official API doesn’t seem to have a call for voting history (Public Dashboard API). However, I’ve come across this website, ICSCAN , which has some interesting information like the total votes of each neuron and their voting history. Do you know how to access this information?
I think the answer depends on what you are looking for. We do show on the dashboard a voting history graph that can be seen on a proposal detail page:Proposal: 104231 - ICP Dashboard.
This is tracked through the following endpoint: https://ic-api.internetcomputer.org/api/v3/proposals/104231/tallies.
We track neuron ballots as well (most recent 100): https://ic-api.internetcomputer.org/api/v3/neurons/{neuron_id}/recent-ballots
And known neurons ballots (since becoming a known neuron):
https://ic-api.internetcomputer.org/api/v3/known-neurons/{neuron_id}/ballots
For a more visual approach, you can see how a neuron votes by looking at the neuron’s detail page:
​​https://dashboard.internetcomputer.org/neuron/2490857570016391405 (not known neuron)
https://dashboard.internetcomputer.org/neuron/14231996777861930328 (known neuron)
Ballots do not have timestamps currently in the governance canister, so we cannot provide that information through the API.
We track two rates: governance and overall. The participation rate is calculated using the total voting power for all settled proposals on a given day.
The API endpoint can be found here: https://ic-api.internetcomputer.org/api/v3/nns/participation-rate.
Thank you @0x5279616e and @Severin for the valuable insights on IC governance. I have a question regarding the proposal Proposal: 104231 - IC Dashboard, the API returns a “data” array with only two objects https://ic-api.internetcomputer.org/api/v3/proposals/104231/tallies, it does not show all the votes. How can I get all the votes for a proposal? Additionally, why is there no voter’s neuron ID for every vote, there are only the known neuron ids. I know it is already possible to query the voting history by a neuron ID. Is it also possible to query the governance canister for information about the voters? Is there any documentation about querying the governance canister? Thanks!
If you’re asking if the NNS Governance canister provides a list of how every neuron voted on a certain proposal, the answer is no. It’s not even possible yet to get a list of all neuron IDs from the Governance canister.
For SNS the data is much more open, and there you can get a list of how every neuron voted on a certain proposal. For example, the attached screenshot shows part of the response to a call to get_proposal
35 on the SNS-1 Governance canister, though I think the ballots[]
are garbage collected once a proposal is decided.
For SNS, the followees of a neuron are also public.
In the very beginning neurons had default following set for all topics. At some point this was reset for a few topics such as governance to incentivise more decentralization (by that time new known neurons were available).
probably due to this there are some inactive neurons which never adjusted following.