Understanding the Governance System

Dash’s Decentralized Governance by Blockchain (DGBB) is a novel voting and funding platform. This documentation introduces and details the theory and practice to use the system.


Understanding the process


Introduction

  • DGBB consists of three components: Proposals, Votes, and Budgets
  • Anyone can submit a proposal for a small fee
  • Masternode owners can cast for, against or abstain votes on proposals
  • Approved proposals become budgets
  • Budgets are paid directly from the blockchain to the proposal owner



Proposals

  • Proposals are a request to receive funds
  • Proposals can be submitted by anyone for a fee of 5 Dash. The proposal fee is irreversibly destroyed on submission.
  • Proposals cannot be altered once submitted



Votes

  • Votes are cast by masternode owners
  • Votes can be changed at any time
  • Votes are counted every 16616 blocks (approx. 30.29 days)



Budgets

  • Budgets are proposals which receive a net total of yes votes equal to or greater than 10% of the total possible votes (for example over 448 out of 4480)
  • Budgets can be nullified at any time if vote totals (cast or re-cast) fall below the approval threshold
  • Budgets are processed (paid) in order of yes minus no votes. More popular budgets get payment priority.
  • Approximately 6176 dash (in 2018) are available for each budget cycle, decreasing by 7.14% every 210240 blocks (approx. 383.25 days).



Object structure

The following information is required to create a proposal:

  • proposal-name: a unique label, 20 characters or less
  • url: a proposer-created webpage or forum post containing detailed proposal information
  • payment-count: how many cycles the proposal is requesting payment
  • block-start: the requested start of proposal payments
  • dash-address: the address to receive proposal payments
  • monthly-payment-dash: the requested payment amount



Persistence

  • Proposals become active one day after submission
  • Proposals will remain visible on the network until they are either disapproved or the proposal’s last payment-cycle is reached
  • Approval occurs when yes votes minus no votes equals 10% or more of the total available votes.
  • Disapproval occurs when no votes minus yes votes equals 10% or more of the total available votes.
  • The total available votes is the count of online and responding masternodes and can be seen by running the command masternode count in the Dash Core wallet debug window. A graph of the total masternode count can be found here



Templates

The following two Microsoft Word templates are available from Dash Core Group to help facilitate standardized proposal submission and updates. Usage is recommended, but not required.




Budget cycles

When preparing a proposal, be aware of when the next cycle will occur and plan accordingly. It is recommended to choose your proposal payment start block at least one cycle in the future to allow time for discussion and gathering support and votes. Note that votes will no longer be tallied 1662 blocks (approximately 3 days) prior to the superblock.


Block heightApproximate date
747720Tue Oct 3 20:17:56 UTC 2017
764336Fri Nov 3 03:22:58 UTC 2017
780952Sun Dec 3 10:28:00 UTC 2017
797568Tue Jan 2 17:33:02 UTC 2018
814184Fri Feb 2 00:38:04 UTC 2018
830800Sun Mar 4 07:43:06 UTC 2018
847416Tue Apr 3 14:48:08 UTC 2018
864032Thu May 3 21:53:10 UTC 2018
880648Sun Jun 3 04:58:12 UTC 2018
897264Tue Jul 3 12:03:14 UTC 2018
913880Thu Aug 2 19:08:16 UTC 2018
930496Sun Sep 2 02:13:18 UTC 2018
947112Tue Oct 2 09:18:20 UTC 2018
963728Thu Nov 1 16:23:22 UTC 2018
980344Sat Dec 1 23:28:24 UTC 2018
996960Tue Jan 1 06:33:26 UTC 2019


You can view the source code for this calculation at this GitHub gist



Creating proposals

Once you have prepared the text of your proposal and set up a website or forum post, it is time to submit your proposal to the blockchain for voting. While all tasks involved with creating a budget proposal can be executed from the Dash Core wallet console, several tools providing a user interface have been developed to simplify this procedure.


Dash Budget Proposal Generator

The Dash Budget Proposal Generator supports creating budget proposals on both mainnet and testnet. In the first step, you must enter a short, clear and unique name for the proposal as it will appear on the blockchain. Proposal names are limited to 40 characters. You can then provide a link to the forum or DashCentral where your proposal is described in more detail (use a URL shortening service if necessary), as well as select the amount of payment you are requesting, how often the payment should occur, and the superblock date on which you are requesting payment. This allows you to control in which budget period your proposal will appear, and gives you enough time to build support for your proposal by familiarising voters with your project. Note that the payment amount is fixed and cannot be modified after it has been submitted to the blockchain.

_images/proposal-create.png

_images/proposal-burn-prepare.png

Steps 1 & 2: Creating your proposal and preparing the command


Next, the proposal generator will provide you with a command to run from the console of your Dash Core wallet to prepare your budget proposal governance object. Running this command will cost you 5 DASH, which will be “burnt” or permanently removed from circulation. This one-time fee protects the governance system from becoming overwhelmed by spam, poorly thought out proposals or users not acting in good faith. A small transaction fee is charged as well, so make sure slightly more than 5 DASH is available in your wallet. Many budget proposals request reimbursement of the 5 DASH fee.

First unlock your wallet by clicking Settings > Unlock wallet, then open the console by clicking Tools > Debug console and paste the generated command. The transaction ID will appear. Copy and paste this into the proposal generator response window. As soon as you do this, the system will show a progress bar as it waits for 6 confirmations as follows:

_images/proposal-burn-console.png

_images/proposal-burn-confirming.png

Step 3: Creating the proposal transaction and waiting for 6 confirmations of the transaction ID


Once 6 block confirmations exist, another command will appear to submit the prepared governance object to the network for voting. Copy and paste this command, and your governance object ID will appear as follows:

_images/proposal-submit.png

_images/proposal-submit-console.png

Step 4: Submitting the governance object to the network


You can use this ID to track voting on the proposal until the budget closes and you receive your payout. You can also submit the ID to DashCentral to claim your proposal and enable simpified voting for masternodes using DashCentral voting services.



DashCentral Proposal Generator

DashCentral also includes a tool to create budget proposals, or claim existing proposals so you can add a description on DashCentral and begin discussion with the community. The steps to be taken are almost identical to the procedure described above, and documentation is available here.




Voting on proposals

You must vote at least three days before the superblock is created or your vote will not be counted. The exact deadline is 1662 blocks before the superblock.

Note that if you do not operate a masternode, you may still be able to vote on DashBoost proposals. See https://www.dashboost.org for more information.

Voting on DGBB proposals is an important part of operating a masternode. Since masternodes are heavily invested in Dash, they are expected to critically appraise proposals each month and vote in a manner they perceive to be consistent with the best interests of the network. Each masternode may vote once on each proposal, and the vote can be changed at any time before the voting deadline. The following sites and tools are available to view and manage proposals and voting:

For information on how to create a proposal, see here.


DashCentral

Many masternode operators store their password-protected masternode private key on DashCentral to enable simple voting with a user-friendly interface. The popularity of this site has made it a common place for discussion of the proposals after they are submitted to the governance system. To vote from the DashCentral web interface, first add your masternode private key to your account according to the instructions here. Note that the masternode private key is not the same as the private key controlling the 1000 DASH collateral, so there is no risk of losing your collateral. A separate password is required to unlock the masternode private key for voting, so the risk of the site operator voting in your name is minimal.

When you are ready to vote, go to the budget proposals page. Simply click to view the proposals, then click either Vote YES, Vote ABSTAIN or Vote NO.

_images/vote-dashcentral.png

Voting interface on DashCentral




Dash Masternode Tool (DMT)

If you started your masternode from a hardware wallet using DMT, you can also use the tool to cast votes. Click Tools > Proposals and wait for the list of proposals to load. You can easily see the voting status of each proposal, and selecting a proposal shows details on the Details tab in the lower half of the window. Switch to the Vote tab to Vote Yes, Vote No or Vote Abstain directly from DMT.

_images/vote-dmt.png

Voting interface in DMT




Dash Core wallet or masternode

If you started your masternode using the Dash Core Wallet (not recommended), you can vote manually from Tools > Debug console, or directly from your masternode via SSH using dash-cli. First click on the proposal you want to vote on at either DashCentral or Dash Ninja. You will see a command for manual voting below the proposal description. Copy and paste the command and modify it as necessary. As an example, take this proposal from Dash Ninja (or DashCentral). The voting code for Dash Core Wallet is as follows:



gobject vote-many 6ed7418455e07f4b30b99f0d4a24a2b83282e12b26fe3415673ecbea04ff6c9d funding yes
gobject vote-many 6ed7418455e07f4b30b99f0d4a24a2b83282e12b26fe3415673ecbea04ff6c9d funding no
gobject vote-many 6ed7418455e07f4b30b99f0d4a24a2b83282e12b26fe3415673ecbea04ff6c9d funding abstain



Note that to vote from your masternode directly, you need to prefix the command with dash-cli, which is usually found in the .dashcore folder. The command should be similar to the following:



~/.dashcore/dash-cli gobject vote-many 6ed7418455e07f4b30b99f0d4a24a2b83282e12b26fe3415673ecbea04ff6c9d funding yes
~/.dashcore/dash-cli gobject vote-many 6ed7418455e07f4b30b99f0d4a24a2b83282e12b26fe3415673ecbea04ff6c9d funding no
~/.dashcore/dash-cli gobject vote-many 6ed7418455e07f4b30b99f0d4a24a2b83282e12b26fe3415673ecbea04ff6c9d funding abstain



Note this command will trigger a vote from all masternodes configured in dash.conf. If you have multiple masternodes each with its own .conf file, or if you want to vote with only some of your masternodes, you must change the command from vote-many to vote. If your vote was successful, you should see a confirmation message reading Voted successfully.

_images/vote-dashcore.png

Voting from the debug console in Dash Core Wallet


You can also view a list of proposals in JSON format from the console to copy and paste the proposal hash for voting as follows:



gobject list







8 Steps to a Successful Proposal

Proposals in the Dash governance system are subject to voting by masternodes. So, like any voting, you need to convince the voters that your proposal should pass. Here are some key points to consider in every proposal:

Keep your proposal clear
Your proposal should have a clear title, followed by a short and simple description of the objectives. Explain early in your proposal exactly how it will benefit the Dash network, how much Dash you are requesting, how you arrived at this value, and finally who you are and how you plan to do the work. Masternodes should be able to immediately get an idea of what you are proposing from the first few lines of your proposal.
Run a pre-proposal discussion
Get feedback from the community before you post your proposal to the blockchain. A discussion period of around two weeks will help you find out if someone has proposed something similar in the past, and whether it succeeded or failed. There are pre-proposal channels on the forum and Dash Nation Discord, and Reddit also attracts a lot of views - consider the discussion on these channels to be the research phase of your proposal. Later, you can post a link to the forum discussion when your proposal goes live to show you are including community feedback in your work.
Manage your identity and reputation
The Dash community is one of the network’s strongest features, and newcomers are always welcome. However, because of the way proposals work, there needs to be reasonable trust that the work promised in the proposal will be completed if it passes. If you are new, consider starting with a smaller proposal first to prove your ability to deliver on time and budget. Attaching your real name or Keybase identity to a proposal also helps build trust. If you are a making a large proposal, get a team together and nominate (or hire) one person to serve as community liaison, since posting from multiple accounts can be confusing.
Run an enthusiastic campaign for your proposal
Proposals with a video or website have a far greater chance of succeeding! Uploading a video gives your proposal a human touch and a chance to convey your enthusiasm in a way that isn’t always possible in text. Post your video to the forum and DashCentral, become a regular on Discord or run a webinar to explain the proposal and answer questions. Put some work in before you ask for funding to demonstrate your involvement with Dash - but don’t be annoying and spam many channels asking for votes.
Demonstrate your commitment to the network
If you are asking for a significant investment to start up or expand a for-profit business built on Dash, you need to explain why and for how long this funding is required, and what you are offering in return. It can be very helpful to show you have skin in the game by matching the contribution provided in Dash with funds from your own business or investors. Equity or exclusivity agreements can be reached with Dash Core Group, Inc., but must be clarified in writing before the proposal is posted.
Post your proposal early and make yourself available for questions
The voting window closes 1662 blocks (or just under 3 days) before the superblock. To give the masternode operators enough time to consider, discuss and vote on your proposal, you must post it well in advance of the voting deadline - it’s better to wait for the next superblock than to rush! Most masternodes will see your proposal for the first time once it appears on the blockchain or when you claim it on DashCentral. The first few hours of discussion between masternode owners typically bring up a lot of questions and can be critical to influence opinion and voting, so make yourself available during this time.
Keep the community updated when your proposal passes
Your proposal should include details of how you plan to keep the community and network informed of your work. Meet your commitments and post regular reports so your output is clear, and make yourself available on social channels to answer questions. Remember, your ability to pass future proposals depends on your demonstrated ability to deliver and communicate.
Consider arrangements for large requests
If you are requesting a significant amount of funding, there is an understandable concern that you will deliver on your promises to the network. Reach out to trusted intermediaries such as Dash Core Group, Inc. or Green Candle, Inc. in advance for advice on escrow, and make the conditions for escrow release public and part of the proposal. If your proposal is so large that uses a significant percentage of the budget, there is a risk that approving your proposal will bump smaller proposals out of the budget. Consider breaking your proposal into smaller monthly payments instead.

See this documentation for specific instructions on how to create a proposal when you are ready. Good luck!

For an example of good reporting, reputation management and use of a video to request funding in a pre-proposal, see this video from Amanda B. Johnson’s extremely popular DASH: Detailedproposal:

A few additional points:

  1. It is currently not possible to pay a budget proposal to a multisig address, or to change the payment address after the proposal is posted to the blockchain.
  2. To avoid accusations of favouritism and inside trading, Dash Core cannot promote your proposal for you. If your proposal is an integration, reach out to the business development team in advance. Once your product is live, it may be possible to announce it from Dash Core channels.
  3. If your proposal is for news, promotion or marketing, make sure you synchronise your efforts with major existing organisations such as Dash Force News or marketing firms contracted by Dash Core.
  4. You are responsible for your own planning to hedge against price volatility. If your proposal involves significant payments to third parties in fiat currency, reach out to Dash Core Group, Inc.or Green Candle, Inc. for advice on escrow, price maintenance, converting currencies and hedging against volatility.
  5. For the same reason, it is not recommended to request funding for period of longer than three months. Masternodes don’t want to see and vote on the same proposal without updates several months in a row, and price volatility makes it a risky proposition both to the network and yourself.
  6. Before entering your budget proposal on the blockchain, check how many proposals already exist for the current budget cycle. If it is likely to become very crowded or if some proposals are requesting a significant portion of the budget, voting is likely to be very competitive with weaker projects being forced out of the budget, even if they collect sufficient votes to pass the 10% threshold. See here for more details.