Использование Управления 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.

Понимание процесса#

Введение#

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

  • Каждый может выдвинуть предложение, заплатив небольшую комиссию

  • Каждая активная мастернода может отдать свой голос за или против предложения, или же воздержаться

  • Одобренные предложения приобретают статус бюджетов

  • Бюджеты выплачиваются владельцу предложения непосредственно из блокчейна

Предложения#

  • Предложения это запросы на получение средств

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

  • Поданное предложение не подлежит изменению

Голосования#

  • Голосование происходит через зарегистрированный адрес для голосования

  • Адрес для голосования можно передать третьему лицу

  • Мастерноды могут изменить свой голос в любое время

  • Голоса подсчитываются каждые 16616 блоков (примерно 30.29 дней)

Бюджеты#

  • Бюджеты это предложения, которые получили общее число голосов «за» большее либо равное 10% всех возможных голосов (например 448 из 4480)

  • Бюджеты могут быть обнулены в любое время, если общее число голосов «за» (поданных изначально или изменённых в последствии) упадёт за пределы, установленные для статуса «одобренного» предложения

  • Бюджеты обрабатываются (выплачиваются) в зависимости от разницы между голосами «за» и «против». Более популярные бюджеты получают приоритетную выплату.

  • Приблизительно 6176 DASH (в 2018 г) доступно в каждом бюджетном цикле, но эта сумма будет уменьшаться на 7,14% каждые 210240 блоков (примерно 383,25 дня).

Структура предмета#

Для создания предложения необходима следующая информация:

  • proposal-name: название должно быть уникальным, менее 20 символов

  • url: веб-страница, созданная для предложения или пост на форуме, имеющий в себе подробную информацию о предложении

  • payment-count: на протяжении скольких циклов это предложение запрашивает выплаты

  • block-start: время начала выплат по предложению

  • dash-address: адрес для получения выплат по предложению

  • monthly-payment-dash: сумма, запрашиваемая в месяц

Продолжительность#

  • Предложения получают статус активных через один день после подачи

  • Предложения будут видимы в сети до тех пор пока не потеряют поддержку или не будет достигнут последний цикл выплат

  • Одобрение предложения происходит, когда разница между голосами «да» и «нет» равна или более 10% от всех доступных голосов.

  • Отклонение происходит, когда разница между голосами «нет» и «да» равна или более 10% от всех доступных голосов.

  • Общее число доступных голосов считается по количеству работающих в сети и отвечающих на запросы мастернод. Это число можно увидеть, запустив команду «masternode count» в окне отладки кошелька Dash Core. Гафик общего числа мастернод можно найти здесь

Заготовки#

Для стандартизации процесса подачи и обновления бюджетных предложений Dash Core Group подготовила два шаблона Microsoft Word. Их использование рекомендовано, но не обязательно.

Бюджетные циклы#

При подготовке предложения, осведомитесь, когда начнётся следующий цикл и действуйте в нужное время. Рекомендуется выбирать блок начала выплат по предложению как минимум через один цикл вперёд, для предоставления времени на обсуждение, набор поддержки и голосование. Обратите внимание, что голоса перестанут подсчитываться за 1662 блока (примерно 3 дня) перед суперблоком.

Block height

Approximate date

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

Вы можете посмотреть исходный код подсчётов на GitHub gist

Создание предложений#

Как только вы подготовите текст вашего предложения и создадите веб-сайт или пост на форуме, то наступит время подачи вашего предложения в блокчейн для голосования. Все действия по созданию бюджетного предложения могут быть выполнены из консоли кошелька Dash Core, но для облегчения процедуры были разработаны несколько инструментов с пользовательским интерфейсом.

Создатель бюджетных предложений 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

Шаги 1 и 2: Создание вашего предложения и подготовка команд#

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

Шаг 3: Создание транзакции предложения и ожидание 6 подтверждений ID транзакции#

Когда выйдет подтверждение 6-го блока, появится ещё одна команда для подачи подготовленного объекта управления в сеть на голосование. Скопируйте и вставьте эту команду и появится ваш ID управления:

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

Шаг4: Подача объекта управления в сеть#

Вы можете использовать этот ID, чтобы следить за процессом голосования до тех пор, пока не закроется бюджет и вам не поступит выплата. Дополнительно, вы можете отправить ID в DashCentral, чтобы подтвердить себя как владельца предложения и использовать там упрощённый процесс голосоввания мастернод.

Создатель бюджетных предложений DashCentral#

На DashCentral тоже имеется инструментарий для создания бюджетных предложений или работы с уже созданными предложениями, вы можете создать его описание на DashCentral и начать обсуждение с сообществом. Необходимые шаги почти одинаковы с описанными выше. Документация доступна здесь.

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.

Предупреждение

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

Голосование по предложениям#

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.

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:

Для информации о том, как создать предложение посмотрите here.

DashCentral#

Для упрощённого процесса голосования с удобным интефейсом многие операторы мастернод хранят свои защищенные паролем приватные ключи на DashCentral. Популярность этого сайта сделала его привычным местом для обсуждения предложений после подачи их в систему управления. Для голосования через веб-интерфейс DashCentral, сначала добавьте в ваш профиль приватный ключ мастерноды по инструкции, предложенной здесь. Обратите внимание, что приватный ключ мастерноды не является ключем, который контролирует 1000 DASH, поэтому риска утери вашей суммы, обеспечивающей мастерноду нет. Для разблокирования приватного ключа к голосованию мастерноды необходим отдельный пароль, таким образом риск того, что за вас проголосует оператор сайта минимален.

Когда вы будете готовы проголосовать, проследуйте на страницу бюджетных предложений. На предложения можно нажимать для просмотра, далее следует нажать Vote YES, Vote ABSTAIN или Vote NO.

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

Интерфейс голосований на DashCentral#

Dash Masternode Tool (DMT)#

Если вы запустили мастерноду из физического кошелька, используя DMT, то с помощью этого инструмента тоже можно проводить голосование. Нажмите Tools > Proposals и дождитесь, пока загрузится список предложений. Статус голосования по каждому предложению виден сразу, а выбор предложения покажет подробности во вкладке Details в нижней части окна. Чтобы проголосовать напрямую из DMT, перейдите во вкладку Vote, чтобы Vote Yes, Vote No или Vote Abstain.

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

Интерфейс голосования в DMT#

Кошелёк Dash Core или мастернода#

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

Обратите внимание, что для голосования напрямую из мастерноды, перед командой будет необходим префикс dash-cli, его легко можно найти в попке .dashcore. Команда должна быть похожа на следующую:

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

Обратите внимание, что эта команда активирует голос всех мастернод, сконфигурированных в dash.conf. Если у вас несколько мастернод и у каждой есть свой .conf файл, или если вы хотите проголосовать лишь некоторыми из ваших мастернод, то необходимо изменить команду с vote-many на vote. Если ваш голос успешно прошёл, то появится подтверждающее сообщение Voted successfully.

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

Голосование через консоль отладки в кошельке Dash Core#

Список предложений так же доступен в формате JSON из консоли, для голосования туда можно скопировать и вставить хэш предложения следющим образом:

gobject list

Делегирование права голоса#

У мастернод DIP003 есть отдельный ключ для голосования, благодаря которому владелец может передать право голоса своему представителю. Просто введите адрес Dash, предоставленный делегатом, при регистрации мастерноды, или обновите регистрацию вашей уже работающей мастерноды, чтобы передать право голоса. Тогда кошелёк, который контролирует приватный ключ этого адреса, будет голосовать за владельца этой мастерноды согласно Процедуре голосования Dash Core, которая описана выше. Никаких других настроек не требуется.