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.
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
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.
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
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”
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.
Any Mina account can vote in two ways:
- using its tokens;
- delegating its tokens to another account that can vote in its stead weighted by the stake delegated to it.
- an account that is not delegating can vote with their token balance.
- an account that is delegating can vote but it will have zero weight so its vote will not be counted in the results.
Please also note that invalid votes will not display in the dashboard results.
If an account has not delegated to another account, then it can still vote; its stake weight will by default be the account balance.
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.
- 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.
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.
If you have delegated to another account and you disagree with their vote, then you can re-delegate by:
- delegating to an alternative account that is voting according to your preference;
- delegating to yourself by:
- sending a delegation transaction to yourself
- and then sending yourself a vote transaction with your preference
For example, imagine an account A, delegates their stake to another account, B, who then votes but A soon realizes that they disagree with B so A decides to delegate their stake to a third account, C, who votes but differently from B.
Account B vote counts based on their weighted stake at the end of the voting period, which will not include A’s stake.
Account C vote counts based on their weighted stake at the end of the voting period, which includes Account A’s stake
Please note that if you delegate to yourself and are not running a Block Producer node, then you will not receive rewards for one epoch. For example:
|Epoch A (voting period)||- You delegate away from the Block Producer that you normally delegate to|
|Epoch B||- You receive rewards from Epoch A
- You delegate back to the Block Producer that you normally delegate to
|Epoch C||- You receive no rewards because during Epoch A you delegated to yourself (rather than to the Block Producer that you normally delegate to)|
|Epoch D||- You receive rewards again because during Epoch B you delegated back (to the Block Producer that you normally delegate to)|
Re-delegation during the voting period will be captured in the finalised Staking Ledger that is created at the end of the voting period epoch.
If a re-delegation is in the finalised Staking Ledger, this re-delegation is counted in the stake weight of the account receiving the delegation even though the delegation will not take effect until a later epoch.
Please note that voting and staking are different in this way. The vote will show in the counted results but the re-delegation takes effect in a later epoch.
Yes, the public repository is here: https://github.com/Granola-Team/mina-governance
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.
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).
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.
Total votes is the sum of all valid votes per unique account recorded on-chain within the Voting Period.
Voting results are weighted based on account stake: the more stake an account has, then 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 balance. 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), then this direct vote has 0 weight since A has already delegated away its 1000 MINA stake. This 0 weighted vote will not be counted in the results.
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)|
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.