使用达世币管理系统#

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%的提案。(例如,在主节点总数达到4480的情况下取得448张赞成票。)

  • 如果提案获得的赞成票(投或重投的)不能满足上述要求,则无法成为预算提案。

  • 预算提案的优先赞助权(支付)按以下方法确定。以提案获得的赞成票减去反对票,差值越大的优先级别越高。

  • (在2018年)每个预算周期大约产生6176达世币的预算资金。这一数字会以每210240个区块(即383.25天)下降7.14%的速度递减。

对象结构#

创下提案需具备以下信息:

  • 提案名称:提案名称应是不超过20个字符的、独一无二的标签。

  • 链接:一个由提案发起人创建的页面或论坛网帖,其中包含有关提案的细节信息。

  • 支付周期:预算提案申请分多少次支付预算资金。

  • 支付起始时间:预算提案申请开始支付预算资金的时间。

  • 达世币地址:用于接收预算资金的地址。

  • 按月支付的达世币:预算提案申请按月支付的达世币金额。

留存时间#

  • 提案将在递交一天后予以激活。

  • 在提案获准通过、予以驳回或提案周期结束之前,提案都会在网络上保持可见状态。

  • 当提案获得的赞成票等于或大于总票数的10%,则提案获准通过。

  • 当提案获得的赞成票小于总票数的10%,则提案不予通过。

  • 总票数指的是在线统计的主节点数量,用户可以在Dash Core钱包的调试窗口运行``masternode count``命令来查询主节点数量。用户可以点击此处查看达世币主节点数量。

模板#

以下两个网址上的微软Word文档模板由Dash Core团队提供,可以帮助用户了解标准化的提案递交及更新流程。建议但不强制要求用户使用这两个模板:

预算周期#

在撰写提案时,发起人应当关注下一个预算周期并进行相应的规划。建议提案发起人将支付的起始时间设定在下一个周期,以便为社区讨论和获取支持预留时间。需要注意的是,超级块出现前的1662个区块(大约3天之内)不计票。

区块高度

大致时间

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钱包的控制台执行所有有关创建预算提案的操作,但其它工具也可以通过用户界面简化创建流程。

达世币预算提案生成器#

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:创建提案交易并等待交易ID的6次确认#

一旦完成6次确认,用户将会看到另一个命令。借助这个命令,用户将准备好的管理对象递交到网络并等待投票。复制并粘贴这个命令,用户将会看到如下所示的管理对象ID:

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

步骤4:将管理对象提交到网络上#

用户可以使用管理对象ID来跟进提案的投票情况,直到提案周期终结且用户收到赞助资金。用户还可以使用这个管理对象ID在DashCentral上递交提案,并借助DashCentral的投票服务简化主节点投票流程。

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

为预算提案投票#

用户必须在超级块产出的三天前为提案投票,否则投票将不计入结果。准确来说,投票须在超级块创建前的1662个区块前完成。

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:

如需了解如何创建提案的更多信息,请查看此处

DashCentral#

很多主节点的运营者都将由密码保护的主节点私钥存储到DashCentral,以便使用简单的投票流程和用户友好的界面。这个网站日益流行,成为了社区成员探讨新提案的最佳平台。如需从DashCentral网页界面上进行投票,用户首先要点击此处并根据操作指南将主节点私钥添加到个人账户。请注意,主节点私钥和掌管1000达世币的主节点保证金的私钥并不相同,因此个人的保证金不存在丢失的风险。如果想要解锁投票所需的主节点私钥,用户需要用到一个独立的密码,这样才能将网站运营商冒名顶替用户投票的风险降到最低。

如果已经做好了投票的准备,用户可以前往预算提案页面完成投票。用户只需点击浏览提案,再选择赞成反对弃权

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

DashCentral的投票界面#

达世币主节点工具(以下简称DMT)#

如果用户通过DMT和硬件钱包来管理主节点,那么用户也可以使用DMT来完成投票。点击 工具 > 提案 并等待提案名单下载。用户可以轻松查阅各个提案的投票状态,只需点击窗口下半部分的 详细信息 标签就可以阅读提案的具体细节了。用户还可以直接将 投票 标签切换到 赞成反对弃权

../../../_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 才能以某些主节点的名义投票。如果投票成功,用户将看到一条确认消息,显示 投票成功

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

通过Dash Core钱包的调试控制台投票#

用户还可以借助控制台查看JSON格式的提案列表,并复制和粘贴提案哈希值来完成投票。具体操作如下所示:

gobject list

委托投票#

Masternodes feature a key designated only for voting, 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.