Implementation of on chain voting for Dynamo Coin
Purpose
The purpose of on chain voting is to allow coin holders to express their approval of proposed changes to the Dynamo ecosystem. This implementation is consistent with the original proposal in the Dynamo whitepaper and represents one of the core mechanics of Dynamo — decentralized control of the project by community members.
Procedure
To create a change request, the proposer should create a document detailing the proposed change. The document may take any form, however it should include sufficient details on the change request so that community members can fully understand it and the Dynamo foundation can implement it.
Once the change request document is complete, the proposer should mint one or more NFTs which represent the supporting documents for the request.
The change request can then be logged in the Dynamo Foundation voting website at https://vote.dynamocoin.org/
The proposer must include the following data points:
- One or more NFT hashes which represent the minted proposal documents.
- A block height by which the proposal needs to be accepted for voting (e.g. put “on the ballot”)
- A block height by which the proposal needs to be voted on
- If the change request requires a consensus level change (Y/N)
- If the change request is an update to the voting rules (Y/N)
Upon submission of the change request, the system will generate a burn address for:
6. The burn addresses for YES and NO votes to ballot the proposal
7. The burn addresses for YES and NO votes to approve the proposal
The above 7 items will constitute the full change request.
Once the change request has been logged, the proposer is free to lobby for their change to be approved in whatever manner they see fit. The change request will be available on the Dynamo Foundation website as a “pending request” until the voting acceptance date has passed. If the proposal receives enough votes, it will be marked as “pending vote”; if not it will be marked “failed to ballot”. Community members will then be able to vote on the proposal. If the proposal receives sufficient votes, it will be adopted and the foundation will, to the best of its ability, act on the proposal.
Votes are cast by community members by sending 0.0001 DMO to the burn address specified in either item 6 or item 7 above.
In order for a proposed change to be put on the ballot, it must receive votes of at least 65% of the YES votes cast as of the time of the block height set forth in item 2 above. Votes are cast by sending 0.0001 DMO to the burn addresses specified in item 6 above. Votes are tallied by counting the value of the coins in each wallet for each YES or NO vote at the block height specified in item 2. The tallying will take place after 200 confirmations of the block height specified in item 2 in order to avoid issues with any forks.
If the proposal is balloted, community members must then vote by sending 0.0001 DMO to the burn addresses specified in item 7 above. Votes are tallied by counting the value of the coins in each wallet for each YES or NO vote at the block height specified in item 3. The tallying will take place after 200 confirmations of the block height specified in item 3 in order to avoid issues with any forks.
If the change involves a change to the consensus layer, the proposal must receive votes of at least 85% YES votes as of the block height specified in item 3. “Change to the consensus layer” means any change to the block header or block reward system or a change which requires a hard fork of the chain. Note that a change to consensus must be adopted by a majority of miners or a hard fork will result.
If the change involves a change to these rules (i.e. a change in how votes are cast, tabulated/counted, percentages required to pass, etc) then the proposal must receive votes of at least 75% YES votes as of the block height specified in item 3.
If the change involves neither a change to consensus, nor a change to these rules, then the proposal must receive votes of at least 66% YES votes as of the block height specified in item 3.
Percentages will be rounded to the nearest 0.01%. e.g. 6000 votes cast with 4655 YES and 1345 NO = 4655/6000 = 0.7758333 or 77.58%
The foundation may reject a proposal for only the following reasons:
- The NFT hashes supplied are invalid.
- The NFT hashes point to or contain data which is copyrighted in any jurisdiction or contain references to illegal content in any jurisdiction.
- The block height specified in item 2 above is less than 50,000 blocks in the future from the time of submission of the proposal (approx. 10 days)
- The block height specified in item 3 above is less than 50,000 blocks after the block height of item 2.
- The change request falsely states that it is not a consensus layer change when it is a consensus layer change.
- The change request falsely states that it is not a voting rule change when it is a voting rule change.
- In the sole discretion of the Foundation, the request is deemed as spam or an attempt to disrupt the voting system. Examples include submissions with empty NFT data, multiple submissions which are duplicates, especially where the intent appears to be to flood or DOS the voting system, nonsense submissions, such as NFTs which only contain images or submissions which ask the Foundation to take action which is clearly beyond the scope of its ability to perform. The Foundation will view all submissions as permissively as possible and only invoke this action when needed to preserve the integrity of the voting system.
Technical implementation
The Dynamo Foundation will create a website at https://vote.dynamocoin.org/ which will allow users to register new proposals and view current and past proposals. The foundation will create a tagged transaction which third parties can monitor for when new ballot items and new vote items are created.
Voting is performed by community members sending 0.0001 DMOto the burn addresses specified for each proposal. Sending of coins can be accomplished with any wallet or even the CLI.
The website will automatically tabulate and display vote results after 200 block confirmations. The website may display interim results, and users are free to create their own tools which perform chain and wallet analysis to view current results or audit past results.
FAQ
Is it possible for anyone to vote twice?
No. The system counts the number of coins in each wallet which submitted a vote as of a specific block. The system waits 200 confirmations after that block before counting the votes. It is impossible for any coins to be counted twice.
Is 1 coin = 1 vote fair?
As the whitepaper outlined, the purpose of community voting is to allow for anyone to contribute while preserving the economic value of the project. The belief is that innovation is stifled when only a small group of insiders control the technical or economic future of a project. Therefore, anyone, including people who own no coins, is allowed to propose a change. By allowing each community member to vote in proportion to the number of held coins, the project value is preserved because members will not vote on proposals which are deemed to generally harm the project.
Do I need to own coins to make a proposal?
Yes, you will need enough coins in order to mint NFTs which are placed on chain.
Does it matter how many coins I send to the burn address?
No, however you should only ever send 0.0001 DMO to the burn address. The amount of coins sent in the burn transaction has no impact on the vote outcome. Coins sent to the burn address are lost forever.
How do I get people to vote for my proposal?
Your proposal will appear on the Dynamo Foundation voting website which may be viewed by interested individuals. However you should be prepared to advocate for and advertise your proposal using social media channels such as Reddit, Discord, AMAs, etc.
What should I include in my proposal?
You should include as many details as are necessary for the foundation to take action on your change request. For example, if you have developed code which you want pulled into the main repo of a Foundation project, you should specify which repo, what the PR is and describe what the change is and why it benefits the project. If your request is to direct the Foundation to spend fiat or coins, you should include the amount, the recipients, the intended use of the funds and what benefit or return the project will receive.
How are the percentage of votes counted?
As of a specific block height, the balance of each voting wallet which cast a YES or NO vote is counted and divided by the total number of coins in all wallets which cast a vote. This will be rounded to the nearest 0.01%
Will the Dynamo Foundation vote on proposals?
No. Any foundation coins held in treasury from block rewards will not be used in voting.