On-chain Voting Frequently Asked Questions (FAQ)

On-chain Voting Frequently Asked Questions (FAQ)

This document explains how you can vote on individual proposals, such as specific Mina Improvement Proposals (MIPs).

It also explains how the On-Chain Voting dashboard captures and displays the votes.

How do I vote?

A Mina account must send themselves a transaction, including each proposal’s keyword in the memo field, using a Mina wallet.

Each proposal will have specific keywords that will be used to vote.

  • To vote in favor of the proposal:
    • Enter keyword in the Memo field
  • To vote not in favor of (i.e. against) the proposal:
    • Enter no keyword in the Memo field

Example

If the keywords are yellow and no yellow

  • To vote in favor, enter yellow in the Memo field.
  • To vote against, enter no yellow in the Memo field.

Where do I see my vote?

Each on-chain voting proposal has its own voting dashboard. To view all Mina on-chain voting proposals visit the on-chain voting homepage.
Each dashboard shows the proposal name, a description, the Voting Period, start and end dates, and a status. You can select each proposal to view its dashboard.

The proposal status is defined as:

Not Started Voting Period has not begun. Clicking the proposal will direct to the voting dashboard that will be empty until voting starts.
In Progress In Progress Voting is taking place. Clicking the proposal will direct to the voting dashboard that will be populated with valid votes received to date.
In Review In Review Voting is over and the results are being verified. Clicking the proposal will direct to the voting dashboard that will be populated with all valid votes received during the Voting Period.
Completed Voting is over and results are verified. Clicking the proposal will direct to the voting dashboard that will show final results of the vote and all valid votes received during the Voting Period.

Multiple proposals can be voted on during the same Voting Period in the same way you vote for an individual proposal. For more details, refer to the section above: How do I vote?

Is my vote valid?

The votes in the above example are considered ‘valid’ because

  • they use the correct keywords
  • the keywords are spelled correctly
  • they are not duplicate votes
  • the were cast during the voting period

Please note that the exact spelling of the keywords is critical to ensure your vote is captured.
Please also note that the text is case insensitive.

‘Invalid’ votes are votes that are not valid. For example, if:

  • they do not use the correct keywords
  • the keywords are spelled incorrectly
  • they were not cast during the voting period

Both valid and invalid votes are recorded on-chain and can be viewed using Mina block explorers.

When using CLI with a memo that contains a space, the command line requires quotation marks around the memo. For example:

mina client send-payment \
-sender B62qp3Dsz8TrZ9hCrHYZVViUufwqkwqDhGH8S8jutcmXXXXXXXXXXXX \
-receiver B62qp3Dsz8TrZ9hCrHYZVViUufwqkwqDhGH8S8jutcmXXXXXXXXXXXX \
-fee 0.01 \
-amount 1 \
-memo “no yellow”

or

mina client send-payment \
-sender B62qp3Dsz8TrZ9hCrHYZVViUufwqkwqDhGH8S8jutcmXXXXXXXXXXXX \
-receiver B62qp3Dsz8TrZ9hCrHYZVViUufwqkwqDhGH8S8jutcmXXXXXXXXXXXX \
-fee 0.01 \
-amount 1 \
-memo yellow

*PLEASE NOTE: the quotation mark usage in the CLI memo field is only for memos containing a space. In the second example listed above, its memo only contains one word “yellow”, i.e., no space needed, and so it does not require a quotation mark.

Who can vote?

Any Mina account can vote in two ways:

  • using its tokens;
    or
  • delegating its tokens to another account that can vote in its stead weighted by the stake delegated to it.

Please note:

  • an account that is not delegating can vote with their token balance.
  • an account that is delegating can choose to allow their delegatee to vote on their behalf or the account can vote with their token balance without having to remove their delegated stake (‘un-delegate’).

Please also note that invalid votes will not display in the dashboard results.

Can I still vote if I have not delegated?

If an account has not delegated to another account, then it can still vote; its stake weight will by default be the account balance.

Can I still vote if I have delegated?

Yes! If an account has delegated to another account, then it can still vote; its stake weight will by default be the account balance. The account holder does not need to un-delegate, i.e remove the stake it has delegated to the other account.

If the delegatee also votes, then the account holder’s stake weight will be subtracted from the total stake delegated to it that is eligible to vote.

When can I vote?

The Voting Period for individual proposals will be announced in advance and will clearly show dates, epochs and slot numbers. Votes cast outside of the voting period will not be counted in the results.

Example

  • Voting for MIP1 must be performed between January X, EPOCH Y, SLOT Z and January XX, EPOCH YY, at the end of SLOT ZZ.

The time at which the vote transaction was recorded on-chain will be used to determine whether a vote was cast within the voting period. Please vote early to ensure your vote is included in the results.

Can I change my vote?

Yes. A Mina account can change its vote by sending a new, valid vote transaction during the Voting Period. Only the latest and valid vote will be counted in the results once.

Invalid votes will not be counted. Please note the following example:

  • I send a valid vote (vote#1)
  • I change my mind and vote again (vote#2)
    • however, this second vote is invalid, e.g. due to a typo
  • “vote#1” will be counted in the results because it is the most recent and valid vote.

All valid votes will display in the dashboard. Duplicate or older votes will not be displayed.

How can I change my vote if I have delegated to an account but I disagree with their vote?

If you have delegated to another account and you disagree with their vote, then you do not need to un-delegate. Please see the above question: ‘Can I still vote if I have delegated?’

Is this application open source?

Yes, the public repository is here: https://github.com/Granola-Team/mina-governance

How long will it take my vote to display in the dashboard?

The maximum wait time for a vote to display in the dashboard is 60 minutes from the time the transaction is sent.

If you do not see your vote within 60 minutes, please verify the spelling of the keyword. If the keyword is spelled incorrectly, please resend your transaction with the properly spelled keyword in the memo field.

Please note that invalid transactions are not displayed in the dashboard.

If the transaction was sent correctly and the vote does not display, please complete the feedback form.

Why can’t I see my vote in the dashboard?

Votes will display in the dashboard for transactions that are sent only to your own account. If you send a transaction to another account and try to vote, these votes will not display in the dashboard and not be counted in the results.

The dashboard displays only valid votes (see the ‘Is my vote valid?’ section above to explain the difference between valid and invalid votes).

What does Voting Status mean on the dashboard?

Green indicates that the block containing the voting transaction is in the canonical chain.

Yellow indicates that the block containing the voting transaction is pending and not currently in the canonical chain.

What does Total Votes mean on the dashboard?

Total votes is the sum of all valid votes per unique account recorded on-chain within the Voting Period.

How are the voting results calculated?

Voting results are weighted based on account stake: the more stake an account has, the more influence their vote has.

If an account is not delegating, then it can vote weighted by its stake, which is its account balance. For example, if account A has a balance of 1000 MINA and is not delegating, then its vote has a weight of 1000 MINA stake.

Alternatively, if an account delegates its vote, then this is weighted by its account stake. For example, if account A has a balance of 1000 MINA and then delegates to account B, then B can vote with its stake plus A’s 1000 MINA stake.

However, if A then also votes (having delegated), A’s vote is weighted by its account stake and the delegatee’s vote is weighted by its account stake. For example, if Account A has a balance of 1000 MINA and then delegates to account B but Account A decides to vote, then A’s vote will have a weight of 1000 MINA and B’s vote will have a weight of its stake minus A’s 1000 MINA.

Stake weight is obtained from the next finalized Staking Ledger which is available after block 290 of the next epoch.

Total Stake Amount: Retrieve the stake amount from the finalized Staking Ledger for each account

Total Stake Amount: Retrieve the stake amount from the finalized Staking Ledger for each account
Total Stake %: Account Stake Amount / Sum of all account Stake Amount
Total Yes Vote Amount: Sum Total Stake Amount for valid in favor votes
Total No Vote Amount: Sum Total Stake Amount for valid not in favor votes
Yes % Total Yes Vote Amount / (Total Yes Vote Amount + Total No Vote Amount)
No %: Total No Vote Amount / (Total Yes Vote Amount + Total No Vote Amount)

When will I see the final results?

After the Voting Period, there will be a Results Period when the votes will be tallied and results announced. The outcome of the vote will be decided based on specific criteria, according to each proposal. These criteria will be specified in advance of the vote.

Mina Foundation and its ecosystem partners, including O(1) Labs, are committed to decentralized governance through on-chain voting. Under certain circumstances voting may be cancelled or paused and run again if it is determined that the integrity of the voting process or results is compromised for technical or other reasons.

2 Likes

Thanks for the write up.

Is this going to be de-facto way for all future MIP voting going forward or is it a temporary solution? Depending if it impacts future voting, i think might be better if we change keywords to something similar to signalling bits, which can allow voting for multiple MIP’s in a single transaction and allow easier extraction of past votes.

Hi @hgedia, thanks for the feedback. This is an iterative process so ideas like yours are very valuable.
It may be that some MIPs are suited to other forms of community involvement, with On-Chain Voting as one of the tools MIP authors can make use of.
We’re very excited hear everyone’s thoughts and share what we’re working on. At the moment the Governance squad is quite small so once we’ve gained insights from this iteration we’ll be able to improve it and have a bit more time.
Thanks for the signalling bits info, I’ve added it to the suggestions tracker.

1 Like