Sử dụng cơ chế Quản trị 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.

Tìm hiểu về quy trình#

Giới thiệu#

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

  • Bất cứ ai cũng có thể đăng một đề xuất với một khoản phí nhỏ

  • Mỗi masternode có thể bỏ phiếu ủng hộ, phản đối hoặc không ý kiến cho các đề xuất

  • Những đề xuất được chấp thuận sẽ trở thành các ngân sách

  • Ngân sách được trả trực tiếp từ blockchain cho người lập đề xuất

Các đề xuất#

  • Các đề xuất yêu cầu được cấp phát ngân sách

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

  • Đề xuất không thể thay đổi lại được một khi nó được đăng lên.

Bỏ phiếu#

  • Bỏ phiếu sử dụng qua các địa chỉ bỏ phiếu đã được đăng ký

  • Địa chỉ bỏ phiếu có thể uỷ nhiệm cho một bên thứ ba

  • Việc bỏ phiếu cũng có thể được thay đổi ở bất cứ thời gian nào

  • Các phiếu bầu được tính cứ mỗi 16616 khối (xấp xỉ 30.29 ngày)

Ngân sách#

  • Ngân sách là các đề xuất mà nhận được tổng số vote YES ít nhất bằng 10% tổng số khả năng bỏ phiếu (ví dụ đạt 448 trên tổng số 4480)

  • Ngân sách có thể bị huỷ bỏ tại bất kỳ thời điểm nào nếu tổng số phiếu (bỏ phiếu hoặc bỏ phiếu lại) dưới ngưỡng được chấp nhận.

  • Ngân sách được xử lý (chi trả) theo cách lấy số phiếu đồng ý - YES trừ đi số phiêu không đồng ý - NO. Ưu tiên thanh toán cho những đề xuất có nhiều bỏ phiếu ủng hộ hơn.

  • Có xấp xỉ 6176 dash (trong năm 2018) dành cho mỗi chu kỳ ngân sách, khoảng một tháng, ngân sách này giảm dần 7.14% cứ mỗi 210240 block (xấp xỉ 383.25 ngày)

Cấu trúc đối tượng#

Thông tin sau đây là cần thiết để tạo một Đề xuất:

  • proposal-name: là một tiêu đề không trùng nhau, dài không quá 20 ký tự

  • url: là trang web do người lập đề xuất tạo hoặc một chủ đề trên diễn đàn có chứa thông tin cụ thể về đề xuất

  • payment-count: số chu kỳ thanh toán mà đề xuất này muốn được chi trả

  • block-start: đề xuất yêu cầu bắt đầu thanh toán từ block thứ bao nhiêu

  • dash-address: là địa chỉ để nhận tiền cho đề xuất

  • monthly-payment-dash: số tiền của mỗi lần thanh toán cho từng tháng

Sự nhất quán#

  • Đề xuất sẽ được kích hoạt một ngày sau khi đăng lên

  • Các đề xuất vẫn sẽ hiển thị trên mạng lưới đến tận khi hoặc là nó không còn được chấp nhận hoặc kết thúc chu kỳ thanh toán cuối cùng.

  • Chấp thuận xảy ra khi những phiếu YES trừ đi những phiếu NO đạt ít nhất 10% trên tổng số lượng phiếu bầu.

  • Không chấp thuận xảy ra khi số phiếu bầu NO trừ đi số phiếu bầu YES ít nhất bằng 10% tổng số lượng phiếu bầu.

  • Tổng số phiếu bầu có thể là số masternode đang online và đáp ứng đủ điều kiện, nó có thể xem bằng cách chạy lệnh masternode count trong cửa sổ Debug của ví Dash Core. Một biểu đồ về tổng số masternode có thể tìm thấy ở đây

Các mẫu#

Những định dạng mẫu cho Microsoft Word sau đây từ Dash Core Group sẽ giúp chúng ta chuẩn hoá những mẫu đề xuất và được thường xuyên cập nhật. Bạn nên sử dụng những mẫu này, nhưng nó không phải là bắt buộc.

Các chu kỳ ngân sách#

Khi chuẩn bị một đề xuất, hãy chú ý khi nào thì chu kỳ tới sẽ đến và lập kế hoạch cho phù hợp. Bạn nên chọn kỳ thanh toán cho đề xuất ít nhất trước một chu kỳ thanh toán để có thời gian cho thảo luận và thu hút đủ sự hỗ trợ và bỏ phiếu ủng hộ. Hãy chú ý rằng các phiếu sẽ không được kiểm trong vòng 1662 khối (khoảng 3 ngày) trước khi siêu khối được ra.

Độ cao khối

Ngày dự kiến

1212968

Thứ 5 Ngày 30 tháng giêng 2020 02:38:52 UTC

1229584

Thứ 7 ngày 29 tháng 2 năm 2020 09:43:54 UTC

1246200

Thứ 2 ngày 30 tháng 3 năm 2020 16:48:56 UTC

1262816

Thứ 4 ngày 29 tháng 4 năm 2020 23:53:58 UTC

1279432

Thứ 7 ngày 30 tháng 5 năm 2020 06:59:00 UTC

1296048

Thứ 2 ngày 29 tháng 6 năm 2020 14:04:02 UTC

1312664

Thứ 4 ngày 29 tháng 7 năm 2020 21:09:04 UTC

1329280

Thứ 7 ngày 29 tháng 8 năm 2020 04:14:06 UTC

1345896

Thứ 2 ngày 28 tháng 9 năm 2020 11:19:08 UTC

1362512

Thứ 4 ngày 28 tháng 10 năm 2020 18:24:10 UTC

1379128

Thứ 7 ngày 28 tháng 11 năm 2020 01:29:12 UTC

1395744

Thứ 2 ngày 28 tháng 12 năm 2020 08:34:14 UTC

Bạn có thể xem mã nguồn của tính toán này tại đây GitHub gist

Tạo các đề xuất#

Một khi bạn đã chuẩn bị những nội dung cho đề xuất của bạn và thiết lập một website hoặc bài viết trên diễn đàn, thì đây là thời điểm để bạn đăng đề xuất của mình lên blockchain để cho mọi người bỏ phiếu. Trong khi tất cả các công việc liên quan đến việc tạo đề xuất xin ngân sách đều có thể thực hiện từ cửa sổ lệnh trên ví Dash Core, thì có vài công cụ cung cấp một giao diện trực quan hơn được phát triển để làm đơn giản tiến trình xin cấp vốn này.

Công cụ sinh Đề xuất Ngân sách của 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

Bước 1 & 2: Tạo đề xuất và chuẩn bị câu lệnh#

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

Bước 3: Tạo giao dịch đề xuất và đợi cho giao dịch có 6 xác thực và lấy mã giao dịch#

Sau khi đã có đủ 6 xác thực, thì lệnh khác sẽ sẵn sàng để gửi đối tượng quản trị đã chuẩn bị đến mạng cho việc biểu quyết. Hãy copy và dán lệnh này, và mã ID của đối tượng quản trị của bạn sẽ xuất hiện giống như sau:

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

Bước 4: Gửi đối tượng quản trị lên mạng lưới Dash#

Bạn có thể dùng mã ID này để theo dõi việc bỏ phiếu của đề xuất đến khi ngân sách được khép lại và bạn nhận được khoản thanh toán. Bạn cũng có thể đăng mã lên DashCentral để đề xuất của mình có thể được bỏ phiếu bởi các chủ masternode là thành viên trên DashCentral bằng cơ chế bỏ phiếu đơn giản với dịch vụ bỏ phiếu của DashCentral.

Công cụ sinh Đề xuất của DashCentral#

DashCentral cũng có các công cụ để tạo đề xuất ngân sách, hoặc trình bày những đề xuất đã được tạo và bạn có thể bổ sung thêm các phần mô tả trên DashCentral và để cộng đồng có thể bắt đầu thảo luận về nó. Các bước tiến hành cũng gần giống với thủ tục được mô tả ở trên đây và tài liệu của nó thì bạn có thể tìm thấy ở đây.

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.

Cảnh báo

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

Bỏ phiếu cho các đề xuất#

Bạn phải bỏ phiếu ít nhất ba ngày trước khi siêu khối được tạo nếu không thì phiếu của bạn sẽ không được tính. Chính xác thì hạn chót là 1662 khối trước siêu khối.*

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:

Thông tin về làm thế nào để tạo một đề xuất, xem tại đây.

DashCentral#

Rất nhiều người vận hành masternode lưu khoá riêng của họ với tài khoản được bảo vệ bởi mật khẩu trên DashCentral để có thể bỏ phiếu nhanh và đơn giản với giao diện trực quan. Sự phổ biến của website này làm cho nó trở thành một nơi nhiều người thảo luận về các đề xuất sau khi nó được đăng lên hệ thống quản trị. Để bỏ phiếu trên giao diện web của DashCentral, đầu tiên bạn cần nhập khoá riêng của masternode của bạn trong tài khoản theo hướng dẫn ở đây. Chú ý rằng khoá riêng của masternode không phải là khoá riêng để kiểm soát 1000 DASH, như vậy nếu có rủi ro đánh mất khoá riêng cũng không làm bạn bị mất 1000 DASH đặt cọc cho masternode. Đặt mật khẩu riêng cho khoá riêng của masternode để cho bỏ phiếu, và như vậy cũng giảm rủi ro cho việc người vận hành website này sử dụng khoá riêng của bạn xuống mức tối thiểu.

Khi bạn đã sẵn sàng bỏ phiếu, hãy vào trang ngân sách đề xuất. Chỉ cần click vào để xem các đề xuất rồi click vào một trong các tuỳ chọn Vote YES, Vote ABSTAIN or Vote NO.

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

Giao diện bỏ phiếu trên DashCentral#

Dash Masternode Tool (DMT)#

Nếu bạn khởi động masternode của bạn từ ví cứng sử dụng DMT, bạn cũng có thể sử dụng công cụ đó để bỏ phiếu. Bấm vào Tools > Proposals và đợi cho danh sách các đề xuất được tải. Bạn có thể dễ dàng nhìn thấy tình trạng bỏ phiếu của mỗi một đề xuất và chọn một đề xuất để xem thông tin chi tiết trong trang Details ở phần bên dưới của cửa sổ. Chuyển sang trang Vote để Vote Yes, Vote No or Vote Abstain một cách trực tiếp từ DMT.

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

Giao diện bỏ phiếu trên DMT#

Ví Dash Core hoặc 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

Chú ý rằng việc bỏ phiếu trực tiếp từ masternode của bạn, bạn cần có thêm tiền tố vào câu lệnh với dash-cli, chương trình thường được thấy trong thư mục .dashcore. Câu lệnh sẽ có dạng giống như sau:

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

Chú ý lệnh này sẽ kích hoạt việc bỏ phiếu từ tất cả các masternode được cấu hình trong file dash.conf. Nếu bạn có nhiều masternode và mỗi masternode một file .conf riêng, hoặc nếu bạn muốn bỏ phiếu chỉ với một vài masternode nào đó, bạn phải thay đổi câu lệnh từ vote-many thành vote. Nếu việc bỏ phiếu của bạn thành công, bạn sẽ thấy thông báo xác nhận việc đó có dạng như sau Voted successfully.

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

Bỏ phiếu từ cửa sổ lệnh debug trong ví Dash Core#

Bạn cũng có thể xem danh sách các đề xuất theo định dạng JSON từ bảng điều khiển để copy và dán mã băm của đề xuất cho việc bỏ phiếu theo cách sau:

gobject list

Uỷ nhiệm bỏ phiếu#

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.