Utilisation de la gouvernance Dash

Dash’s Decentralized Autonomous Organization (DAO) is a novel voting and funding platform. This documentation introduces and details the theory and practice to use the system.

Comprendre le processus

Introduction

  • DAO consists of three components: Proposals, Votes, and Budgets

  • N’importe qui peut soumettre une proposition budgétaire en réglant des frais limités

  • Chaque masternode valide peut voter pour ou contre les propositions budgétaires, ou s’abstenir

  • Les propositions budgétaires approuvées deviennent des enveloppes budgétaires

  • Les enveloppes budgétaires sont payées directement depuis la blockchain aux propriétaires des propositions

Propositions budgétaires

  • Les propositions budgétaires sont une sollicitation de fonds

  • Proposals can be submitted by anyone for a fee of 1 Dash. The proposal fee is irreversibly destroyed on submission.

  • Les propositions budgétaires ne peuvent pas être modifiées après soumission

Votes

  • Les votes sont exprimés au moyen de l’adresse de vote enregistrée

  • L’adresse de vote peut être déléguée à une tierce partie

  • Les votes peuvent être modifiés à tout moment

  • Les votes sont décomptés tous les 16616 blocs (tous les 30,29 jours environ)

Enveloppes budgétaires

  • Les enveloppes budgétaires sont des propositions qui ont réuni un total net de votes « oui » égal ou supérieur à 10% de tous les votes possibles (par exemple, 448 sur 4480)

  • Les enveloppes budgétaires peuvent être annulées à tout moment si le total des votes (exprimés ou ré-exprimés) tombe sous le seuil minimal d’approbation

  • Les enveloppes budgétaires sont traitées (payées) dans l’ordre du nombre de votes « oui » soustrait du nombre de votes « non ». Les enveloppes les plus populaires sont prioritaires pour le paiement.

  • Environ 6176 dashs (en 2018) sont disponibles pour chaque cycle budgétaire, avec une diminution de 7,14% tous les 210240 blocs (soit environ tous les 383,25 jours).

Structure d’objet

Les informations suivantes sont nécessaires pour créer une proposition budgétaire :

  • proposal-name : nom de la proposition, unique, 20 caractères ou moins

  • url : adresse web d’une page créée par le proposeur ou d’un billet de forum contenant des informations détaillées sur la proposition budgétaire

  • payment-count : nombre de cycles pendant lequel la proposition budgétaire sollicite un paiement

  • block-start : début sollicité pour les paiements de la proposition budgétaire

  • dash-address : l’adresse Dash où seront versés les paiements de la proposition budgétaire

  • monthly-payment-dash : le montant mensuel du paiement sollicité

Durée de vie

  • Les propositions budgétaires deviennent actives un jour après leur soumission

  • Les propositions budgétaires restent visibles sur le réseau jusqu’à ce qu’elles soient désapprouvées, ou bien à la fin du dernier cycle de la proposition

  • L’approbation a lieu lorsque le nombre de votes « oui » moins celui de votes « non » est égal à 10% ou plus du nombre total de votes possibles.

  • La désapprobation a lieu lorsque le nombre de vites « non » moins celui de votes « oui » est égal à 10% ou plus du nombre total de votes possibles.

  • Le nombre total de votes possibles est celui des masternodes en ligne et détectables. Il peut être connu par la commande masternode count dans la console de débogage du portefeuille logiciel Dash Core. Un graphique du nombre total de masternodes peut être consulté ici

Modèles

Les deux modèles Microsoft Word suivants sont mis à disposition par l’équipe Dash Core pour faciliter les soumissions et les mises à jour de propositions budgétaires standardisées. Son utilisation est recommandée mais n’est pas obligatoire.

Cycles budgétaires

Pendant la préparation d’une proposition budgétaire, soyez bien conscient de la date du début du prochain cycle, et organisez-vous selon elle. Il est recommandé de choisir un bloc de début de paiement de votre proposition qui soit éloigné d’au moins un cycle dans le futur, afin que le débat puisse avoir lieu ainsi que le rassemblement de vos soutiens et votes. Veuillez noter que les votes ne seront plus décomptés 1662 blocs (environ 3 jours) avant le « superbloc ».

Hauteur de bloc

Date approximative

1212968

Thu Jan 30 02:38:52 UTC 2020

1229584

Sat Feb 29 09:43:54 UTC 2020

1246200

Mon Mar 30 16:48:56 UTC 2020

1262816

Wed Apr 29 23:53:58 UTC 2020

1279432

Sat May 30 06:59:00 UTC 2020

1296048

Mon Jun 29 14:04:02 UTC 2020

1312664

Wed Jul 29 21:09:04 UTC 2020

1329280

Sat Aug 29 04:14:06 UTC 2020

1345896

Mon Sep 28 11:19:08 UTC 2020

1362512

Wed Oct 28 18:24:10 UTC 2020

1379128

Sat Nov 28 01:29:12 UTC 2020

1395744

Mon Dec 28 08:34:14 UTC 2020

Le code source de ce calcul est disponible sur GitHub

Création de propositions budgétaires

Une fois que vous avez préparé le texte de votre proposition budgétaire et mis en place un site web ou un billet de forum, il sera temps de soumettre votre proposition budgétaire au vote, sur la blockchain. Toutes les tâches de création d’une proposition budgétaire peuvent être menées depuis la console du portefeuille logiciel Dash Core, mais plusieurs utilitaires avec une interface utilisateur ont été conçus pour simplifier cette procédure.

Générateur de proposition budgétaire Dash

Le générateur de proposition budgétaire Dash permet de créer des propositions budgétaires sur le réseau principal ou sur le réseau de test. À la première étape, vous devez saisir un nom bref, clair et unique pour la proposition, telle qu’elle apparaîtra sur la blockchain. Les noms de proposition budgétaire sont limités à 40 caractères. Vous pouvez ensuite fournir un lien vers le forum Dash ou vers DashCentral où votre proposition est décrite plus en détail (utilisez un service de raccourcissement d’URL si nécessaire), et vous devez indiquer le montant du paiement sollicité, le nombre de fois qu’il doit être versé, et la date du « superbloc » pour laquelle vous sollicitez le paiement. Cela vous permet de contrôler dans quel cycle budgétaire apparaîtra votre proposition, et cela vous donne un temps suffisant pour promouvoir votre proposition et familiariser les électeurs avec votre projet. Veuillez noter que le montant du paiement est fixé une fois pour toutes, et qu’il ne peut plus être modifié après soumission à la blockchain.

../_images/proposal-create.png
../_images/proposal-burn-prepare.png

Étapes 1 & 2 : Création de votre proposition budgétaire et préparation de la commande

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 1 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 1 DASH fee.

First unlock your wallet by clicking Settings > Unlock wallet, then open the console by clicking Window > 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

Étape 3 : Création de la transaction de proposition budgétaire et attente des 6 confirmations de l’identifiant de transaction

Une fois que les 6 confirmations de bloc ont eu lieu, une autre commande s’affichera pour soumettre l’objet de gouvernance préparé au réseau, en vue du vote. Copiez-collez cette commande, et votre identifiant d’objet de gouvernance apparaîtra comme suit :

../_images/proposal-submit.png
../_images/proposal-submit-console.png

Étape 4 : Soumission de l’objet de gouvernance au réseau

Vous pouvez utiliser cet identifiant pour suivre le vote sur la proposition budgétaire, jusqu’à ce que le cycle budgétaire se termine et que vous receviez votre paiement. Vous pouvez aussi soumettre l’identifiant à DashCentral pour revendiquer votre proposition budgétaire et activer le vote simplifié pour les masternodes, au moyen des services de vote de DashCentral.

Générateur de proposition budgétaire de DashCentral

DashCentral propose aussi un outil de création de propositions budgétaires, ou de revendication de propositions existantes afin que vous puissiez ajouter une description sur DashCentral et lancer le débat avec la communauté. Les étapes à suivre sont presque identiques à la procédure décrite ci-dessus, et la documentation est disponible ici.

Dash Core Wallet Console

Creating a proposal using the wallet console follows the same process as using the Dash budget proposal generator, but it requires several additional steps to manually construct the proposal governance object.

Assemble the proposal data

To prepare a proposal, put the proposal details such as name and payout address into a JSON object similar to the example shown below.

{
  "name": "Test-proposal_1",
  "payment_address": "yd5KMREs3GLMe6mTJYr3YrH1juwNwrFCfB",
  "payment_amount": 10,
  "url": "https://www.mydashtestproposal.com",
  "start_epoch": 1635750000,
  "end_epoch": 1636750000,
  "type": 1
}

Set the type field to 1 for all proposals.

The start_epoch and end_epoch fields are Unix epoch timestamps indicating the time range in which the proposal can receive payments. Typically you will set the start_epoch to approximately halfway between the superblock where payment is first desired and the preceding one. Set end_epoch to approximately 2 weeks after the superblock where the final payment is desired. You can use a site like https://www.epochconverter.com/ to convert the start and end dates to the epoch values for these fields.

Serialize the proposal data

The proposal information must be serialized to hex before it can be submitted to the network. Remove all spaces from the JSON object:

{"name":"Test-proposal_1","payment_address":"yd5KMREs3GLMe6mTJYr3YrH1juwNwrFCfB","payment_amount":10,"type":1,"url":"http://test.com","start_epoch":1635750000,"end_epoch":1636750000}

Convert the resulting JSON to its hex equivalent. Sites like https://codebeautify.org/string-hex-converter provide an easy way to do this:

7b226e616d65223a22546573742d70726f706f73616c5f31222c227061796d656e745f61646472657373223a227964354b4d52457333474c4d65366d544a597233597248316a75774e777246436642222c227061796d656e745f616d6f756e74223a31302c2274797065223a312c2275726c223a22687474703a2f2f746573742e636f6d222c2273746172745f65706f6368223a313633353735303030302c22656e645f65706f6368223a313633363735303030307d

Prepare the collateral transaction

Finally, open your Dash Core wallet console and use the gobject prepare command to complete the proposal preparation and submit the collateral transaction. See the Core developer documentation for additional details.

Avertissement

Running this command will create a transaction spending 1 DASH from the wallet as collateral for the proposal being created. Only run this command once you have verified all the proposal information. The transaction is not reversible once sent.

gobject prepare <parent-hash> <revision> <time> <data-hex>
  • parent-hash - set to 0

  • revision - set to 1

  • time - set to the current Unix epoch time (does not have to be precise)

  • data-hex - set to the hex string from the previous step

Example command:

gobject prepare 0 1 1636000000 7b226e616d65223a22546573742d70726f706f73616c5f31222c227061796d656e745f61646472657373223a227964354b4d52457333474c4d65366d544a597233597248316a75774e777246436642222c227061796d656e745f616d6f756e74223a31302c2274797065223a312c2275726c223a22687474703a2f2f746573742e636f6d222c2273746172745f65706f6368223a313633353735303030302c22656e645f65706f6368223a313633363735303030307d

The command will execute and respond with a transaction ID for the collateral payment:

9192fb57953baba168f685e32378aa6471061301a097598c68ef1a4c136c9ea3

Submit the proposal

Once the transaction has six confirmations, use the gobject submit command to submit the prepared governance object to the network for voting. See the Core developer documentation for additional details.

gobject submit <parent-hash> <revision> <time> <data-hex> <fee-txid>
  • parent-hash - use the same value as in the gobject prepare command

  • revision - use the same value as in the gobject prepare command

  • time - use the same value as in the gobject prepare command

  • data-hex - use the same value as in the gobject prepare command

  • fee-txid - the transaction ID returned by the gobject prepare command in the previous step

Example command:

gobject submit 0 1 1636000000 7b226e616d65223a22546573742d70726f706f73616c5f31222c227061796d656e745f61646472657373223a227964354b4d52457333474c4d65366d544a597233597248316a75774e777246436642222c227061796d656e745f616d6f756e74223a31302c2274797065223a312c2275726c223a22687474703a2f2f746573742e636f6d222c2273746172745f65706f6368223a313633353735303030302c22656e645f65706f6368223a313633363735303030307d 9192fb57953baba168f685e32378aa6471061301a097598c68ef1a4c136c9ea3

The command will execute and respond with a transaction ID for the proposal which can be used to track voting on the proposal:

3108b76c8735132a0b6de856b434a40d75924ba0a535c4a61be4dba0bf83263f

Voter sur les propositions budgétaires

Vous devez voter au moins trois jours avant la création du « superbloc », sinon votre vote ne sera pas décompté. La limite précise est 1662 blocs avant le « superbloc ».

Voting on DAO 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:

Pour savoir comment créer une proposition budgétaire, voir ici.

DashCentral

Beaucoup d’opérateurs de masternode stockent leur clé privée de masternode (protégée par mot de passe) sur DashCentral pour activer le vote simplifié depuis une interface utilisateur conviviale. La popularité de ce site en a fait un endroit habituel pour le débat sur les propositions budgétaires, après leur soumission au système de gouvernance. Pour voter depuis l’interface web DashCentral, ajoutez d’abord votre clé privée de masternode à votre compte, selon les instructions disponibles ici. Veuillez noter que la clé privée de masternode n’est pas la clé privée qui contrôle votre caution de 1000 dashs, il n’y a donc aucun risque de perdre votre caution. Un mot de passe distinct est obligatoire pour déverrouiller votre clé privée de masternode en vue de voter, donc le risque que le webmestre du site vote à votre place est très faible.

Quand vous êtes prêt à voter, allez sur la page des propositions budgétaires. Cliquez simplement pour afficher les propositions, puis cliquez selon votre choix sur Voter OUI, Voter ABSTENTION ou Voter NON.

../_images/vote-dashcentral.png

Interface de vote sur DashCentral

DashMasternodeTool (DMT)

Si vous avez démarré votre masternode depuis un portefeuille matériel au moyen de DashMasternodeTool (DMT), vous pouvez aussi utiliser cet utilitaire pour voter. Cliquez sur Outils > Propositions budgétaires et attendez le chargement de la liste des propositions. Vous pouvez facilement consulter l’état du vote sur chaque proposition budgétaire, et en sélectionner une affiche des détails dans l’onglet Détails de la partie inférieure de la fenêtre. Allez sur l’onglet Vote pour Voter Oui, Voter Non ou Voter Abstention directement depuis DMT.

../_images/vote-dmt.png

Interface de vote dans DMT

Portefeuille logiciel Dash Core ou masternode

If you started your masternode using the Dash Core Wallet (not recommended), you can vote manually from Window > 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

Veuillez noter que, pour voter directement depuis votre masternode, vous devrez préfixer la commande avec dash-cli, utilitaire qui se trouve en général dans le répertoire .dashcore. La commande devrait ressembler à cela

~/.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

Veuillez noter que cette commande enverra un vote pour tous les masternodes configurés dans dash.conf. Si vous avez plusieurs masternodes disposant chacun de son propre fichier « .conf », ou si vous souhaitez voter seulement avec certains de vos masternodes, vous devez changer la commande vote-many en vote. Si votre vote s’est bien passé, vous devriez voir un message de confirmation disant Vote réussi.

../_images/vote-dashcore.png

Vote depuis la console de débogage du portefeuille logiciel Dash Core

Vous pouvez aussi afficher une liste des propositions budgétaires au format JSON depuis la console, afin de copier-coller l’empreinte de la proposition pour voter, comme suit

gobject list

Délégation de votes

Les masternodes DIP003 disposent d’une clé de vote distincte, ce qui rend possible de déléguer votre pouvoir de vote à un représentant. Saisissez simplement une adresse Dash fournie par votre délégué au moment de l’enregistrement de votre masternode, ou bien mettez à jour votre enregistrement de masternode pour déléguer le vote d’un masternode déjà existant. Le portefeuille qui contrôle la clé privée liée à cette adresse émettra alors des votes au nom du propriétaire du masternode, simplement en suivant la procédure de vote Dash Core décrite ci-dessus. Aucune autre configuration n’est nécessaire.