Usar la governanza de 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.

Entendiendo el proceso#

Introducción#

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

  • Cualquiera puede enviar una propuesta por una pequeña comisión

  • Cada nodo maestro valido puede votar a favor o en contra o neutral a las propuestas.

  • Las propuestas aprobadas se convierten en presupuestos

  • Los presupuestos se pagan directamente desde la cadena de bloques al propietario de la propuesta

Propuestas#

  • Las propuestas son una solicitud para recibir fondos

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

  • Las propuestas no pueden ser alteradas una vez enviadas

Votos#

  • Votos son emitidos usando las direcciones registradas para voto

  • Las direcciones de votos que pueda delegar a un tercero

  • Los votos se pueden cambiar en cualquier momento

  • Los votos se cuentan cada 16616 bloques (aproximadamente cada 30.29 días)

Presupuestos#

  • Los presupuestos son propuestas que reciben un total neto de votos afirmativos igual o superior al 10% del total de votos posibles (por ejemplo, más de 448 de 4480)

  • Los presupuestos pueden anularse en cualquier momento si el total de votos (emitidos o reemitidos) cae por debajo del umbral de aprobación.

  • Los presupuestos se procesan (pagan) en orden votos de sí menos no. Los presupuestos más populares obtienen prioridad de pago.

  • Aproximadamente 6176 dash (en 2018) están disponibles para cada ciclo presupuestario, disminuyendo en un 7.14% cada 210240 bloques (aproximadamente cada 383.25 días).

Estructura de objeto#

Se requiere la siguiente información para crear una propuesta:

  • nombre-de-la-propuesta: una etiqueta única, de 20 caracteres o menos

  • url: una página web creada por la persona que hace la propuesta o una publicación en el foro que contiene información detallada de la propuesta

  • Recuento-de-pagos: cuántos ciclos de pago solicita la propuesta

  • inicio-de-bloque: el inicio solicitado de los pagos de la propuesta

  • dirección-de-dash: la dirección para recibir los pagos de la propuesta

  • pago-mensual-de-dash: el monto de pago solicitado

Persistencia#

  • Las propuestas se activan un día después de la presentación

  • Las propuestas permanecerán visibles en la red hasta que se desaprueben o hasta que se alcance el último ciclo de pago de la propuesta.

  • La aprobación se produce cuando la suma de los votos afirmativos menos los votos negativos equivale al 10% o más del total de votos disponibles.

  • La desaprobación se produce cuando la suma de los votos negativos menos los votos positivos equivale al 10% o más del total de votos disponibles.

  • El total de votos disponibles es el recuento de todos los masternodes en línea que responden y que pueden verse ejecutando el comando masternode count en la ventana de depuración de la billetera Dash Core. Se puede encontrar un gráfico del recuento total de los masternodes aquí

Plantillas#

Las siguientes dos plantillas de Microsoft Word están disponibles desde Dash Core Group para ayudar a facilitar el envío y la presentación de propuestas estandarizadas. Se recomienda el uso, pero no es obligatorio.

Ciclos presupuestarios#

Al preparar una propuesta, ten en cuenta cuándo se producirá el próximo ciclo y planifica en consecuencia. Se recomienda elegir el bloque de inicio de pago de la propuesta al menos un ciclo en el futuro para dar tiempo a la discusión y obtener soporte y votos. Ten en cuenta que los votos ya no serán contados en 1662 bloques (aproximadamente 3 días) antes del superbloque.

Altura del bloque

Fecha aproximada

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

Puedes ver el código fuente para este cálculo en GitHub gist

Crear propuestas#

Una vez que hayas preparado el texto de tu propuesta y configurado un sitio web o una publicación en el foro, es hora de enviar tu propuesta a la cadena de bloques para votar. Si bien todas las tareas relacionadas con la creación de una propuesta de presupuesto se pueden ejecutar desde la consola de la billetera Dash Core, se han desarrollado varias herramientas que proporcionan una interfaz de usuario para simplificar este procedimiento.

Generador de Propuestas de Presupuesto de Dash#

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

Pasos 1 y 2: Crea tu propuesta y prepara el comando#

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

Paso 3: crear la transacción de propuesta y esperar 6 confirmaciones de la identificación de transacción#

Una vez que existen 6 confirmaciones de bloque, aparecerá otro comando para enviar el objeto preparado de gobvernanza a la red para votar. Copia y pega este comando, y tu identificación de objeto de governanza aparecerá de la siguiente manera:

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

Paso 4: enviar el objeto de governanza a la red#

Puedes usar esta identificación para seguir la votación de la propuesta hasta que cierre el presupuesto y recibas tu pago. También puedes enviar la identificación a DashCentral para reclamar tu propuesta y permitir una votación simplificada para los masternodes utilizando los servicios de votación de DashCentral.

Generador de Propuestas de DashCentral#

DashCentral también incluye una herramienta para crear propuestas de presupuesto, o reclamar propuestas existentes para que puedas agregar una descripción en DashCentral y comenzar la discusión con la comunidad. Los pasos a seguir son casi idénticos al procedimiento descrito anteriormente, y la documentación está disponible aquí.

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.

Advertencia

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

Votar por las propuestas#

Debes votar al menos tres días antes de que se cree el superbloque o tu voto no se contará. La fecha límite exacta es 1662 bloques antes del superbloque.

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:

Para obtener información sobre cómo crear una propuesta, consulta aquí.

DashCentral#

Muchos operadores de masternodes almacenan sus llaves privadas protegidas por contraseña en DashCentral para permitir una votación simple con una interfaz fácil de usar. La popularidad de este sitio lo ha convertido en un lugar común para el debate de las propuestas una vez que se han enviado al sistema de governanza. Para votar desde la interfaz web de DashCentral, primero agrega tu llave privada del masternode a tu cuenta de acuerdo con las instrucciones aquí descritas. Ten en cuenta que la llave privada del masternode no es lo mismo que la llave privada que controla la garantía de 1000 DASH, por lo que no hay riesgo de perder tu garantía. Se requiere una contraseña diferente para desbloquear la llave privada del masternode para votar, por lo que el riesgo de que el operador del sitio vote a tu nombre es mínimo.

Cuando estés listo para votar, vaya a la página propuestas de presupuesto. Haz click para ver las propestas, luego haz click para Votar SI, Votar Abstenerse o Votar NO.

../../../_images/vote-dashcentral.png

Interfaz de votación en DasCentral#

Herramienta de Dash Masternode (DMT)#

Si iniciaste tu masternode desde una billetera de hardware usando DMT, también puedes usar la herramienta para emitir votos. Haz click en Herramientas > Propuestas y espera a que se cargue la lista de propuestas. Puedes ver fácilmente el estado de votación de cada propuesta y seleccionar una propuesta para mostrar los detalles en la pestaña Detalles en la mitad inferior de la ventana. Pasa a la pestaña Votar para Votar SI, Votar No o Votar Abstenerse directamente de DMT.

../../../_images/vote-dmt.png

Interfaz de votación en DMT#

Billetera Dash Core o 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

Ten en cuenta que para votar desde tu masternode directamente, debes prefijar el comando con dash-cli, que generalmente se encuentra en la carpeta .dashcore. El comando debería ser similar al siguiente:

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

Ten en cuenta que este comando desencadenará un voto de todos los masternodes configurados en dash.conf. Si tienes múltiples masternodes cada uno con su propio archivo .conf, o si deseas votar solo con algunos de tus masternodes, debes cambiar el comando de vote-many a vote. Si tu voto fue exitoso, deberías ver un mensaje de confirmación que dice Votado con éxito.

../../../_images/vote-dashcore.png

Votar desde la consola de depuración en la billetera Dash Core#

También puedes ver una lista de propuestas en formato JSON desde la consola para copiar y pegar el hash de la propuesta para votar de la siguiente manera:

gobject list

Delegar votos#

DIP003 masternodes feature a separate voting key, which makes it possible to delegate your vote to a representative. Simply enter a Dash 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 Dash Core voting procedure described above. No further configuration is required.