On-Chain Voting Frequently Asked Questions (FAQ)
UPDATED: 2024-11-4 (@Joaquin)
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.
What is On-Chain Voting
On-Chain Voting (OCV) is a decentralized governance mechanism where network participants with a certain amount of MINA participate in decision-making processes, such as protocol upgrades and other governance actions. In this system, the weight of a user’s vote is often proportional to the amount of MINA they have staked. This ensures that those with a larger stake in the network have a greater say in its governance.
The voting takes place directly on the blockchain, providing transparency, security, and immutability for the results.
How to prepare your tokens for a vote?
On-Chain Voting (OCV) calculates wallet balances two epochs before the voting epoch. Your account must be included in the current staking ledger during the voting period, meaning you can’t create new accounts just for voting. For example, if voting occurs in Epoch X, the staking ledger is finalized in Epoch X-2. This helps prevent last-minute manipulation.
To check epoch dates, use this link: MinaScan Time Machine.
Example:
For voting in Epoch 12 (Nov 30 to Dec 15), tokens should be in your wallet’s account by the end of Epoch 10 (Nov 15) and stay there for at least 290 slots (around 10 hours) post-Epoch 10 to ensure they’re recorded in the snapshot. After that, you can move the tokens again, you don’t need to keep them in the wallet after the snapshot.
How do I vote?
To vote, send a transaction to yourself using a Mina wallet, including the proposal’s keyword in the memo field.
- Receiver Address: Same as Sender Address
- Amount: At least 1 MINA.
- Memo field:
- To vote in favor: Enter the proposal’s keyword in the Memo field
- To vote against: Enter “no [keyword]” in the Memo field
Example:
If the keywords are “yellow” and “no yellow”:
- To vote in favor, enter “yellow.”
- To vote against, enter “no yellow.”
Can I vote on multiple proposals in a single transaction?
You can vote on multiple proposals during the same voting period by sending one transaction per proposal. Each vote will use the same account balance.
Example:
You have 500 MINA and want to vote YES on yellow and NO on blue.
Send a transaction for MIP5:
- Receiver Address: Same as Sender Address
- Amount: 1
- Memo: yellow
Send a second transaction for MIP6:
- Receiver Address: Same as Sender Address
- Amount: 1
- Memo: no blue
Your 500 MINA will be counted for both votes.
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:
Status | Description |
---|---|
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. |
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.
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: GitHub - MinaFoundation/mina-on-chain-voting: Mina On-Chain Voting
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.
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 %: | 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.