How to implement proper voting?

We’re thinking of including a governance and voting function directly into the wallet. An important question though is: should non-staked or non-locked tokens count in any vote? It seems to me like voting should really only be open to parties that have long-term skin in the game, with locked tokens at least X months into the future. Thoughts?


That makes perfect sense for governance decisions regarding the network I think.

For lower impact polls created just for collecting opinions though (“do you like A or B better?”), I think there should be a lower barrier to entry for voting.


Absolutely agree that only locked tokens should be able to participate in governance decisions.

1 Like

Agreed. Using staking to verify a stake in the network for governance proposals makes perfect sense, but we should support additional use cases for more casual polls as well.

I think if someone wants to have a 24 hr poll, then they should be able to sign a message with their private key to throw their weight behind their vote. We should try to support this where the weight could come from either AVAX or another asset such as NFTs to support different types of polls.

Sharing three images here as food for thought on governance.



Only staked tokens should be able to vote. I think forum polls should be voted on using a signed msg and the staked balance of that account at the time of the polls creation. I think on-chain votes should only count staked avax at the time of creation of the on-chain vote. Only staked avax, nothing else.

Maybe you can expand more on why nft are used/needed I don’t understand.

If you only used staked AVAX, then people are bound to the staking rules of minimum staking period and amounts in order to be able to participate in voting schemes.

If someone wants to launch a public poll with n participants. Then they can issue an NFT to each participant. The participants can then vote by signing with a key that controls one of those NFTs.

You could create similar use cases with non-AVAX assets and lock them for the duration of the poll or just calculate the weight behind each vote at some specific point in time. Ie. at the end of the poll, tally the votes by taking all of the signed messages and calculate the weight of some asset owned by those addresses at a specific point in time. This will be made easier on the X chain with the introduction of epochs.

Yes isn’t that the point? People with a stake in avalanche voting on issues that affect the avalanche network.

Why would people be voting on avalanche issues with tokens other than avax? Or are you talking about voting on upgrades to some x-chain asset?

I’m agreeing with you that staked AVAX should be required to vote on Avalanche network governance proposals, and also saying that if we are going to implement this functionality, then it shouldn’t be too much of an additional lift to support similar polling mechanisms for other use cases. Ie. somebody wants to run a poll among n people.


I think, One NFT token can be sent to each validator by taking snapshots for validators. The TX ID of the NFT is entered for voting. In addition, the APY rate calculated for the validators staking for a long time (1 year) can be reflected in the vote weight in parallel.

If you permit a little digression, I’ve implemented a trustless voting system on Stellar earlier this year & took the time to review several voting systems. (not anything specific to blockchains, I’m speaking about “real-world” voting rules)

Many of them exist and they are not equal. In particular, not all voting systems are equally fair & robust. (All politic aside, will you be surprised to learn that the majority voting we’re used to in most countries is one of the easier to manipulate?)

It turns out there’s a whole scientific discipline studying this issue with people devoting part of their lives to figure out the best systems. I believe that’s worth learning from, especially when working on governance.

In my case, I chose to implement “Majority Judgment”, which I described here and implemented there.

If it may help, feel free to ask any question that may come to mind.


I like the idea of majority judgement, was it weitghted by stake or amount owned as well (to average the grades)?

As for Kevin’s question, I do believe only staked $AVAX for a set amount of time (say at least 6 months?) should be considered for major governance decisions, and open forum votes for other decisions (where there should be a possibility to allow only holders by signing a message etc…)

1 Like

Solid work, thanks for sharing.

1 Like

Only staked coins should partake in governance decisions, locked or unlocked. We have seen a lot of governance exploits lately from voting without lockups, plus I think that the incentives for requiring staked collateral to vote are just better aligned overall.

Not only do I think that the coins should be required to be staked, but only node operators should be able to cast a vote. If you delegate your coins, you delegate your votes.

1 Like

wow very nice ideas here.

1 Like

Let all holders vote but give higher weighting to staked tokens. 1 to1.5 years staked - 100% weighting. 1 month staked - 8.33% weighting etc

1 Like

No, it wasn’t, but adding this feature is trivial and will fit nicely.

1 Like

I dont think it’s appropriate for non-staked/locked tokens to play in the voting.

Only issue i have with “at least X months into future” is that if the staking period expires I will have to wait another X months before I can vote again.

How about carrying a weight? ie. tokens staked longer hold more weight than tokens staked a shorter time.

1 Like

If the vote will have a direct automatic result on-chain, I think that only staked AVAX should be counted. (and votes will have a different weight based on the amount of avax)

But, it is ok to give a way to the devs to ask an opinion from everyone on the network.

So, there should be a way to vote even from not-staked avax holders, that will somehow show a result visible to the devs.

Again, this last thing about the vote from not-staked avax should only be used to show a signal to devs.

Anyway, devs should understand that some of those not-staked avax can be sold just after the vote … :slight_smile:

So, there should be a way to vote from both staked avax holders and not-staked avax holders, but only staked avax should have a direct result on on-chain automatic changes.

Both staked and not staked avax can anyway give votes for any proposal from devs (or even someone else)

Maybe there should be a way to propose polls directly on-chain from avax holders…

1 Like