Использование Управления Dash#
Децентрализованная автономная организация (DAO) Dash - это новая платформа для голосования и финансирования. В данной документации представлены и подробно описаны теория и практика использования этой системы.
Понимание процесса#
Введение#
DAO состоит из трех компонентов: Предложения, Голосования и Бюджеты
Каждый может выдвинуть предложение, заплатив небольшую комиссию
Каждая активная мастернода может отдать свой голос за или против предложения, или же воздержаться
Одобренные предложения приобретают статус бюджетов
Бюджеты выплачиваются владельцу предложения непосредственно из блокчейна
Предложения#
Предложения это запросы на получение средств
Каждый может подать предложение, заплатив комиссию в 1 DASH. В момент подачи эта комиссия необратимо сжигается.
Поданное предложение не подлежит изменению
Голосования#
Голосование происходит через зарегистрированный адрес для голосования
Адрес для голосования можно передать третьему лицу
Мастерноды могут изменить свой голос в любое время
Голоса подсчитываются каждые 16616 блоков (примерно 30.29 дней)
Бюджеты#
Бюджеты это предложения, которые получили общее число голосов «за» большее либо равное 10% всех возможных голосов (например 448 из 4480)
Бюджеты могут быть обнулены в любое время, если общее число голосов «за» (поданных изначально или изменённых в последствии) упадёт за пределы, установленные для статуса «одобренного» предложения
Бюджеты обрабатываются (выплачиваются) в зависимости от разницы между голосами «за» и «против». Более популярные бюджеты получают приоритетную выплату.
Приблизительно 7919 DASH (в 2024 г) доступно в каждом бюджетном цикле, но эта сумма будет уменьшаться на 7,14% каждые 210240 блоков (примерно 383,25 дня).
Структура предмета#
Для создания предложения необходима следующая информация:
proposal-name: a unique label, 40 characters or less
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
Создание предложений#
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 (GUI or console) or the Dash Budget Proposal Generator.
Кошелёк Dash Core#
Dash Core Wallet includes a built-in graphical interface for creating governance proposals directly from the Governance tab. This provides a user-friendly alternative to using external web tools or manual console commands. To use this feature, your wallet must be unlocked and contain sufficient balance to cover the 1 DASH proposal fee plus a small transaction fee.
Accessing the Governance tab#
Open your Dash Core Wallet and click on the Governance tab. This displays a list of existing proposals and provides a Create Proposal button in the upper right corner.
The Governance tab showing existing proposals and the Create Proposal button#
Creating a new proposal#
Click the Create Proposal button to open the proposal creation dialog. Enter your proposal details:
Proposal name: A unique identifier
URL: Link to detailed proposal information (use a URL shortener if needed)
Payment address: The Dash address that will receive payments
Payment amount: Amount requested per payment cycle
First payment date: Select the superblock date for the first payment
# of payments: Number of payment cycles requested
The dialog displays the total amount requested and notes the 1 DASH proposal fee that will be burned. Click Next when all fields are complete.
Entering proposal details in the creation dialog#
Validating the proposal#
The wallet will generate and display your proposal data in JSON format along with the proposal hash. Review the information carefully to ensure accuracy.
Click Validate to check the format of the proposal data. If the data is valid, click Next to proceed to the next step. Otherwise, click Back to adjust your proposal data.
Validating the proposal JSON and hash#
Preparing the proposal fee#
Предупреждение
The following step will create a transaction burning 1 DASH as the proposal submission fee. This transaction is irreversible once broadcast. Verify all proposal details are correct before proceeding.
After validation, you will see a screen prompting you to prepare and burn the 1 DASH proposal fee. This fee is required to prevent spam and is permanently removed from circulation. Click Prepare proposal to create the fee transaction.
Proposal fee burn preparation screen#
Click Yes on the confirmation dialog to broadcast the fee transaction.
Confirmation dialog for burning the proposal fee#
The transaction ID will be generated and displayed in the TxID field.
Transaction ID generated for the proposal fee#
Waiting for confirmations#
The wallet will display the confirmation progress for your fee transaction. One confirmation is required before you can submit the proposal to the network. After the first confirmation, click the Next button to move to the proposal submission screen.
Waiting for confirmations (1 of 6)#
Submitting the proposal#
Click Submit Proposal to broadcast your governance object to the network.
Submitting proposal with 5 of 6 confirmations#
If successful, a message will be displayed with your proposal ID. Click OK to close the message.
Proposal successfully submitted to the network#
The proposal ID will also be shown on the submission screen. The proposal ID can be used to track voting on the proposal.
Proposal submitted with proposal ID shown#
Примечание
You can submit your proposal ID to DashCentral to claim ownership and enable simplified voting for masternodes using DashCentral voting services.
Создатель бюджетных предложений 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.
Шаги 1 и 2: Создание вашего предложения и подготовка команд#
Далее, создатель предложений выдаст вам команду, которую необходимо запустить в консоли вашего кошелька Dash Core для подготовки объекта вашего бюджетного предложения. Запуск этой команды будет стоить вам 1 DASH, которые «сожгутся», это означает, что они будут навсегда удалены из денежной массы. Такая единоразовая плата защищет систему управления от «спама» из предложений, плохо продуманных предложений или пользователей, действующих из недобросовестных побуждений. Так же будет взята небольшая комиссия за транзакцию, поэтому проследите, чтобы в кошельке было чуть более 1 DASH. Многие бюджетные предложения запрашивают возмещение потраченных 1 DASH.
В первую очередь разблокируйте кошелёк, нажав Settings > Unlock wallet, далее откройте консоль, нажав на Window > console и скопируйте сгенерированную команду. Появится ID транзакции. Скопируйте и вставьте его в окно ответа создателя предложений. Как только вы это сделаете, то система покажет полоску прогресса с ожиданием 6 необходимых подтверждений:
Шаг 3: Создание транзакции предложения и ожидание 6 подтверждений ID транзакции#
Когда выйдет подтверждение 6-го блока, появится ещё одна команда для подачи подготовленного объекта управления в сеть на голосование. Скопируйте и вставьте эту команду и появится ваш ID управления:
Шаг4: Подача объекта управления в сеть#
Вы можете использовать этот ID, чтобы следить за процессом голосования до тех пор, пока не закроется бюджет и вам не поступит выплата. Дополнительно, вы можете отправить ID в DashCentral, чтобы подтвердить себя как владельца предложения и использовать там упрощённый процесс голосоввания мастернод.
Консоль кошелька Dash Core#
Создание предложения с помощью консоли кошелька происходит так же, как и при использовании генератора бюджетных предложений Dash, но при этом требуется несколько дополнительных шагов для ручного создания объекта управления предложением.
Сбор данных по предложению#
Чтобы подготовить предложение, поместите данные о предложении, такие как имя и адрес выплаты, в объект JSON, подобный приведенному ниже примеру.
{
"name": "Test-proposal_1",
"payment_address": "yd5KMREs3GLMe6mTJYr3YrH1juwNwrFCfB",
"payment_amount": 10,
"url": "https://www.mydashtestproposal.com",
"start_epoch": 1635750000,
"end_epoch": 1636750000,
"type": 1
}
Установите поле тип в значение 1 для всех предложений.
Поля start_epoch и end_epoch представляют собой временные метки Unix epoch, указывающие на диапазон времени, в котором заявка может получать платежи. Обычно значение start_epoch устанавливается примерно на полпути между суперблоком, в котором впервые требуется произвести платеж, и предыдущим. Задайте end_epoch примерно через 2 недели после суперблока, в котором желателен последний платеж. Для преобразования начальной и конечной дат в значения эпох для этих полей можно воспользоваться сайтом типа https://www.epochconverter.com/.
Сериализация данных предложения#
Перед отправкой в сеть информация о предложении должна быть сериализована в шестнадцатеричный формат. Удалите все пробелы из объекта JSON:
{"name":"Test-proposal_1","payment_address":"yd5KMREs3GLMe6mTJYr3YrH1juwNwrFCfB","payment_amount":10,"type":1,"url":"http://test.com","start_epoch":1635750000,"end_epoch":1636750000}
Преобразуйте полученный JSON в его HEX эквивалент. Сайты типа https://codebeautify.org/string-hex-converter предоставляют простой способ сделать это:
7b226e616d65223a22546573742d70726f706f73616c5f31222c227061796d656e745f61646472657373223a227964354b4d52457333474c4d65366d544a597233597248316a75774e777246436642222c227061796d656e745f616d6f756e74223a31302c2274797065223a312c2275726c223a22687474703a2f2f746573742e636f6d222c2273746172745f65706f6368223a313633353735303030302c22656e645f65706f6368223a313633363735303030307d
Prepare the fee transaction#
Finally, open your Dash Core wallet console and use the gobject prepare
command to complete the proposal preparation and submit the fee
transaction (a 1 DASH coin burn). See the Core developer documentation for additional details.
Предупреждение
Running this command will create a transaction burning 1 DASH from the wallet as the proposal fee. This burn is irreversible. 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- установить на0revision- установить на1time- установить на текущее UNIX время эпохи (но не обязательно точно)data-hex- устанавливается в HEX строку из предыдущего шага
Пример команды:
gobject prepare 0 1 1636000000 7b226e616d65223a22546573742d70726f706f73616c5f31222c227061796d656e745f61646472657373223a227964354b4d52457333474c4d65366d544a597233597248316a75774e777246436642222c227061796d656e745f616d6f756e74223a31302c2274797065223a312c2275726c223a22687474703a2f2f746573742e636f6d222c2273746172745f65706f6368223a313633353735303030302c22656e645f65706f6368223a313633363735303030307d
The command will execute and respond with a transaction ID for the fee burn:
9192fb57953baba168f685e32378aa6471061301a097598c68ef1a4c136c9ea3
Отправить предложение#
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- использовать то же значение, что и в командеgobject prepare.revision- использовать то же значение, что и в командеgobject prepare.time- используется то же значение, что и в командеgobject prepare.data-hex- использовать то же значение, что и в командеgobject prepare.fee-txid- идентификатор транзакции, полученный командойgobject prepareна предыдущем шаге
Пример команды:
gobject submit 0 1 1636000000 7b226e616d65223a22546573742d70726f706f73616c5f31222c227061796d656e745f61646472657373223a227964354b4d52457333474c4d65366d544a597233597248316a75774e777246436642222c227061796d656e745f616d6f756e74223a31302c2274797065223a312c2275726c223a22687474703a2f2f746573742e636f6d222c2273746172745f65706f6368223a313633353735303030302c22656e645f65706f6368223a313633363735303030307d 9192fb57953baba168f685e32378aa6471061301a097598c68ef1a4c136c9ea3
Команда выполнится и выдаст в ответ идентификатор транзакции для предложения, который может быть использован для отслеживания голосования по данному предложению:
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.
Голосование по предложениям Dash DAO является важной частью управления мастернодой. Поскольку владельцы мастернод вложили в сеть Dash большие средства, то ожидается, что они каждый месяц критически оценивают предложения и голосуют в соответствии со своим представлением о пользе для сети. Каждая мастернода может проголосовать за предложение лишь единожды, но может изменить свой голос до конца голосования. Доступны следующие сайты и инструменты для просмотра и организации предложений и голосования:
Для информации о том, как создать предложение посмотрите here.
DashCentral#
Для упрощённого процесса голосования с удобным интефейсом многие операторы мастернод хранят свои защищенные паролем приватные ключи на DashCentral. Популярность этого сайта сделала его привычным местом для обсуждения предложений после подачи их в систему управления. Для голосования через веб-интерфейс DashCentral, сначала добавьте в ваш профиль приватный ключ мастерноды по инструкции, предложенной здесь. Обратите внимание, что приватный ключ мастерноды не является ключем, который контролирует 1000 DASH, поэтому риска утери вашей суммы, обеспечивающей мастерноду нет. Для разблокирования приватного ключа к голосованию мастерноды необходим отдельный пароль, таким образом риск того, что за вас проголосует оператор сайта минимален.
Когда вы будете готовы проголосовать, проследуйте на страницу бюджетных предложений. На предложения можно нажимать для просмотра, далее следует нажать Vote YES, Vote ABSTAIN или Vote NO.
Интерфейс голосований на DashCentral#
Dash Masternode Tool (DMT)#
Если вы запустили мастерноду из физического кошелька, используя DMT, то с помощью этого инструмента тоже можно проводить голосование. Нажмите Tools > Proposals и дождитесь, пока загрузится список предложений. Статус голосования по каждому предложению виден сразу, а выбор предложения покажет подробности во вкладке Details в нижней части окна. Чтобы проголосовать напрямую из DMT, перейдите во вкладку Vote, чтобы Vote Yes, Vote No или Vote Abstain.
Интерфейс голосования в DMT#
Кошелёк Dash Core или мастернода#
Если вы запустили свой мастернод с помощью кошелька Dash Core Wallet (не рекомендуется), вы можете проголосовать вручную из Window > Console или непосредственно с вашего мастернода через SSH с помощью dash-cli. Сначала щелкните на предложении, за которое вы хотите проголосовать, на сайте DashCentral или Dash Ninja. Под описанием предложения вы увидите команду для ручного голосования. Скопируйте и вставьте эту команду, изменив ее при необходимости. В качестве примера можно привести предложение от Dash Ninja (или DashCentral). Код голосования для кошелька Dash Core Wallet выглядит следующим образом:
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.
Голосование через консоль отладки в кошельке Dash Core#
Список предложений так же доступен в формате JSON из консоли, для голосования туда можно скопировать и вставить хэш предложения следющим образом:
gobject list
Делегирование права голоса#
Мастерноды имеют ключ, предназначенный только для голосования, что позволяет делегировать свой голос представителю. Для делегирования голоса работающего мастернода достаточно ввести Dash-адрес, указанный делегатом при регистрации мастернода или обновлении регистрации мастернода. Кошелек, контролирующий приватный ключ этого адреса, будет голосовать от имени владельца этого мастернода, просто следуя описанной выше процедуре голосования Dash Core. Никакой дополнительной настройки не требуется.