Using GoByte Governance

GoByte’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
  • Each valid masternode can vote for, against or abstain 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 GBX. The proposal fee is irreversibly destroyed on submission.
  • Proposals cannot be altered once submitted

Votes

  • Votes are cast using the registered voting address
  • The voting address can be delegated to a third party
  • Votes can be changed at any time
  • Votes are counted every 17280 blocks (approx. 30 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 21,780 GBX (in 2020) are available for each budget cycle, decreasing by 8.333% 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
  • gobyte-address: the address to receive proposal payments
  • monthly-payment-gobyte: 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 GoByte 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 GoByte 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 1728 blocks (approximately 3 days) prior to the superblock.

Block height Approximate date
552960 Fri Aug 21 02:38:52 UTC 2020
570240 Sun Sep 20 09:43:54 UTC 2020
587520 Wed Oct 21 16:48:56 UTC 2020
604800 Fri Nov 20 23:53:58 UTC 2020
622080 Mon Dec 21 06:59:00 UTC 2020
639360 Wed Jan 20 14:04:02 UTC 2020
656640 Mon Feb 21 21:09:04 UTC 2020
673920 Sun Mar 21 04:14:06 UTC 2020
691200 Tue Apr 20 11:19:08 UTC 2020
708480 Fri May 21 18:24:10 UTC 2020
725760 Sun Jun 20 01:29:12 UTC 2020
743040 Wed Jul 21 08:34:14 UTC 2020

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 GoByte Core wallet console, several tools providing a user interface have been developed to simplify this procedure.

GoByte Budget Proposal Generator

The GoByte 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 GoByteCentral 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 GoByte Core wallet to prepare your budget proposal governance object. Running this command will cost you 5 GBX, 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 GBX is available in your wallet. Many budget proposals request reimbursement of the 5 GBX 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 GoByteCentral to claim your proposal and enable simplified voting for masternodes using GoByteCentral voting services.

GoByteCentral Proposal Generator

GoByteCentral also includes a tool to create budget proposals, or claim existing proposals so you can add a description on GoByteCentral 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 1728 blocks before the superblock.

Voting on DGBB proposals is an important part of operating a masternode. Since masternodes are heavily invested in GoByte, 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.

GoByteCentral

Many masternode operators store their password-protected masternode private key on GoByteCentral 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 GoByteCentral 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 GBX 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.

governance/img/vote-gobytecentral.png

Voting interface on GoByteCentral

GoByte Masternode Tool (GMT)

If you started your masternode from a hardware wallet using GMT, 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 GMT.

governance/img/vote-dmt.png

Voting interface in GMT

GoByte Core wallet or masternode

If you started your masternode using the GoByte Core Wallet (not recommended), you can vote manually from Tools > Debug console, or directly from your masternode via SSH using gobyte-cli. First click on the proposal you want to vote on at either GoByteCentral or GoByte 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 GoByte Ninja (or GoByteCentral). The voting code for GoByte Core Wallet is as follows:

gobject vote-many 05c89f3a615bdfd7cbbbbd62938ef79e9c0e958e8145dcc998e91e1c0f8fafa3 funding yes
gobject vote-many 05c89f3a615bdfd7cbbbbd62938ef79e9c0e958e8145dcc998e91e1c0f8fafa3 funding no
gobject vote-many 05c89f3a615bdfd7cbbbbd62938ef79e9c0e958e8145dcc998e91e1c0f8fafa3 funding abstain

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

~/.gobytecore/gobyte-cli gobject vote-many 05c89f3a615bdfd7cbbbbd62938ef79e9c0e958e8145dcc998e91e1c0f8fafa3 funding yes
~/.gobytecore/gobyte-cli gobject vote-many 05c89f3a615bdfd7cbbbbd62938ef79e9c0e958e8145dcc998e91e1c0f8fafa3 funding no
~/.gobytecore/gobyte-cli gobject vote-many 05c89f3a615bdfd7cbbbbd62938ef79e9c0e958e8145dcc998e91e1c0f8fafa3 funding abstain

Note this command will trigger a vote from all masternodes configured in gobyte.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-gobytecore.png

Voting from the debug console in GoByte 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

Delegating votes

DIP003 masternodes feature a separate voting key, which makes it possible to delegate your vote to a representative. Simply enter a GoByte address provided by the delegate when registering your masternode, or update your masternode registration to delegate the vote of a running masternode. The wallet controlling the private key to this address will then cast votes on behalf of this masternode owner simply by following the GoByte Core voting procedure described above. No further configuration is required.