Hướng dẫn: Khởi tạo DAC riêng của bạn trên Mạng Thử Nghiệm Jungle với eosDAC

in eos •  9 months ago  (edited)

Nguồn: https://steemit.com/dac/@eosdac/tutorial-launching-your-own-dac-on-the-jungle-test-network-with-eosdac

Tương lai phi tập trung. Giá trị lâu dài sẽ được tạo ra và duy trì bởi các cộng đồng và hiệu ứng mạng lưới của họ. Các hệ thống tập trung được kiểm soát bởi những người không được bầu chọn sẽ ngày càng trở thành một mô hình cũ kỹ và cứng nhắc so với các thực thể năng động, nơi mà mọi người tham gia đóng góp có tiếng nói của mình và những người tạo ra giá trị được tưởng thưởng dựa theo sự đồng thuận của cộng đồng, được thể hiện thông qua các người giám hộ được bầu chọn.

Đây là những gì eosDAC đang làm việc để xây dựng nó.

Thật sự đáng khích lệ khi tôi thường nhận được liên lạc từ mọi người trong thế giới tiền kỹ thuật số. Họ hứng thú đến những gì eosDAC đang làm và những người đã tạo ra các DAC riêng của họ bằng cách sử dụng công nghệ mã nguồn mở của chúng tôi. Hai lý do tồn tại của nó là việc trở thành nhà sản xuất khối EOS thuộc sở hữu của cộng đồng và là Người Kích Hoạt DAC. Phiên bản tương lai cho việc Kích Hoạt DAC bao gồm một Nhà Máy Sản Xuất DAC, nơi mà bất kỳ ai cũng có thể khởi tạo các DAC riêng của họ chỉ bằng một vài cú click chuột. Chúng tôi vẫn chưa hoàn thành công việc, và nó cần hàng đống công việc để tinh giản quá trình tự động hóa các tùy chỉnh, tạo tài khoản, thiết lập các tác vụ hợp đồng, và điều chỉnh các quyền hạn, nhưng rồi cuối cùng chúng tôi cuối sẽ hoàn thành nó.

Mục tiêu đầu tiên của chúng tôi là hoàn thành Bộ Công Cụ Thành Viên eosDAC để có đầy đủ các chức năng cần thiết để vận hành một DAC với một công cụ phi tập trung dễ dàng sử dụng. Khi chúng tôi mở chức năng bỏ phiếu bầu Người Giám Hộ cách đây hai tháng, tôi đã viết một bài viết miêu tả các tài khoản EOS chính dùng để vận hành DAC cùng với thư viện Github liên quan: Chức Năng Bỏ Phiếu Bầu Ứng Viên Giám Hộ Đã Mở!. Tôi đã nghĩ về các chi tiết liên quan đến nó gần đây với một bài viết mô tả cái cách mà Steem có thể tổ chức chính nó như một DAC: SteemDAC: Một kế hoạch mà chúng ta có thể bắt đầu ngay hôm nay để phi tập trung hóa sự quản trị của Steem.

Hầu hết các phần đều có sẵn để cho bất kỳ ai sử dụng như những gì mà chúng tôi đã làm đến nay để khởi tạo DAC riêng của họ. Mặc dù điều này sẽ dễ dàng hơn rất nhiều trong tương lai với Nhà Máy Sản Xuất DAC, tôi đã nhận ra rằng nó có thể có ích để mô tả các phần liên quan cho đến nay cho những ai rất hào hứng đến việc này đến mức không thể chờ đợi trước khi tiến hành thử nghiệm với DAC riêng của họ.

Cập nhật: Tôi tiếp tục bài viết này với một video ghi lại đầy đủ quá trình hướng dẫn này để bạn có thể xem tại đây:

 

Bắt đầu nào!

Sau đây là hướng dẫn cho bạn để có thể khởi tạo DAC riêng của bạn ngay bây giờ bằng cách sử dụng những gì mà chúng tôi đã xây dựng cho đến giờ. Một trong những khía cạnh mạnh mẽ và hữu ích nhất của một DAC là việc quyền hạn được phân phối cho các người giám hộ được bầu chọn. Tài khoản chính của eosDAC là dacauthority, bạn có thể xem tại đây: https://bloks.io/account/dacauthority 

Hướng dẫn này sẽ hướng dẫn bạn mọi thứ, từ lúc bắt đầu đến lúc kết thúc, để tạo ra tài khoản ủy quyền DAC của riêng bạn, cùng với tất cả các tài khoản khác và các hợp đồng thực thi các chức năng của DAC.

Hướng dẫn này được thực hiện trên máy Mac, tuy nhiên bất kỳ máy tính nào có hệ điều hành dựa trên Unix cũng sẽ hoạt động tốt.

Để bắt đầu, hãy tạo ra một thư mục project (để làm mọi thứ dễ dàng hơn, bạn có thể sao chép các dòng lệnh này và chạy chúng cùng một lúc): 

mkdir TestDAC
cd TestDAC

Chọn phiên bản EOS mà bạn muốn làm việc, xây dựng và cài đặt nó (việc này sẽ mất chút ít thời gian). 

git clone https://github.com/EOS-Mainnet/eos.git
cd eos
git checkout mainnet-1.5.1
git submodule update --init --recursive
./eosio_build.sh -s EOS
sudo ./eosio_install.sh

Nếu bạn không có các công cụ hay thư viện cần thiết trên máy tính của mình được cần để xây dựng các thư viện này, hãy kiểm tra tập tin readme trên Github EOS.

Bạn cũng sẽ cần eosio.cdt để biên dịch các hợp đồng của bạn: 

cd ..
git clone https://github.com/EOSIO/eosio.cdt.git
cd eosio.cdt
git checkout v1.4.1
git submodule update --init --recursive
./build.sh
sudo ./install.sh

Chúng ta hãy thiết lập một vài tập lệnh để giữ cho mọi thứ được lưu trong thư mục này. Điều chỉnh nó theo thư mục bắt đầu của riêng bạn. Tạo keosd.sh như sau trong thư mục TestDAC: 

#!/bin/bash

cwd=$(pwd)
$cwd/eos/build/bin/keosd --wallet-dir $cwd --http-server-address localhost:8900 "[email protected]"

Thiết lập thực thi và chạy nó: 

chmod +x keosd.sh
./keosd.sh

Trong của sổ terminal mới, tạo một tập lệnh để chạy cleos để kết nối với mạng thử nghiệm Jungle. Tạo jungle.sh như sau: 

#!/bin/bash

cwd=$(pwd)
$cwd/eos/build/bin/cleos --url http://jungle2.cryptolions.io:80/ "[email protected]"

Và sử dụng nó để tạo ví: 

chmod +x jungle.sh 
./jungle.sh wallet create --to-console;
Creating wallet: default
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
"PW5................................................"

Lưu mật khẩu ví này trong trình quản lý mật khẩu hay một số vị trí lưu trữ an toàn khác.

Tạo và lưu một cặp key EOS mà chúng ta sẽ sử dụng để tạo ra các tài khoản của mình trên mạng thử nghiệm Jungle. 

./jungle.sh create key --to-console
Private key: 5K..................................................
Public key: EOS6vuK27d4R1vqQmNQc1b7PjGLZ3cNABtD9HEDtPuyXdZKFkwirc

Tiếp theo, hãy vào mạng thử nghiệm Jungle và tạo ra các tài khoản khác nhau mà chúng ta cần để chạy DAC. Chúng ta sẽ bắt đầu với tài khoản ủy quyền: https://monitor.jungletestnet.io/#account Tôi sẽ hiển thị tên vị dụ mà tôi đã sử dụng, nhưng vì chúng đã được sử dụng trên Jungle, bạn sẽ cần sử dụng tên riêng của mình. Trong suốt hướng dẫn này, chỉ cần thay thế tài khoản được liệt kê ở đây bằng tài khoản bạn đã tạo ra.

lukedacauth1

Chúng tôi cũng cần một tài khoản token chứa tất cả các token và mã thành viên:

lukedactoken

Tài khoản giám hộ xử lý bỏ phiếu bầu giám hộ và hơn thế nữa:

lukedaccusto

Tài khoản DAC chính nắm giữ các nguồn quỹ của DAC:

lukedachold1

Và tài khoản đa chữ ký là nơi mà các đề xuất công việc sẽ được quản lý:

lukedacmulti

Bạn sẽ cần tạo các biến thể của riêng mình cho các tên tài khoản này, chỉ cần nhớ rằng chúng phải dài 12 ký tự và không thể bao gồm bất kỳ ký hiệu nào, mà chỉ có các chữ cái và số từ 1 đến 5.

Nhấn vào nguồn tài nguyên của mạng thử nghiệm Jungle cho mỗi tài khoản để đảm bảo rằng bạn có đủ EOS cần thiết cho RAM, CPU, và Bandwidth: 

https://api.monitor.jungletestnet.io/#faucet

Trong suốt hướng dẫn này, thay thế tên các tài khoản của bạn khi cần thiết.

Bây giờ hãy mở khóa ví của bạn, nhập private key, mua một ít RAM, và ký gửi một ít CPU/Bandwidth cho mỗi tài khoản (đảm bảo rằng keosd.sh vẫn đang chạy): 

./jungle.sh wallet unlock
./jungle.sh wallet import
./jungle.sh system buyram lukedactoken lukedactoken "30.000 EOS"
./jungle.sh system delegatebw lukedactoken lukedactoken "10.000 EOS" "50.000 EOS"
./jungle.sh system buyram lukedacmulti lukedacmulti "30.000 EOS"
./jungle.sh system delegatebw lukedacmulti lukedacmulti "10.000 EOS" "50.000 EOS"
./jungle.sh system buyram lukedachold1 lukedachold1 "30.000 EOS"
./jungle.sh system delegatebw lukedachold1 lukedachold1 "10.000 EOS" "50.000 EOS"
./jungle.sh system buyram lukedaccusto lukedaccusto "30.000 EOS"
./jungle.sh system delegatebw lukedaccusto lukedaccusto "10.000 EOS" "50.000 EOS"
./jungle.sh system buyram lukedacauth1 lukedacauth1 "30.000 EOS"
./jungle.sh system delegatebw lukedacauth1 lukedacauth1 "10.000 EOS" "50.000 EOS"

Nếu thực hiện trên mạng chính, bạn sẽ cần điều chỉnh những con số đó dựa trên nhu cầu thật sự của mình.

Tiếp theo, chúng ta sẽ tiến hành biên dịch và thiết lập mã nguồn các hợp đồng cho các tài khoản này: 

mkdir daccontracts
cd daccontracts
git clone https://github.com/eosdac/eosdactoken.git
git clone https://github.com/eosdac/daccustodian.git
git clone https://github.com/eosdac/dacmultisigs.git

Bạn không cần phải sửa đổi bất cứ thứ gì trên hợp đồng token, vì vậy bạn có thể đặt nguyên trạng của nó (điều chỉnh đường dẫn và tên tài khoản nếu cần): 

./jungle.sh set contract lukedactoken /Users/lukestokes/Documents/workspace/eosDAC/TestDAC/daccontracts/eosdactoken/output/jungle/eosdactokens -p lukedactoken

Hiện tại có một số điều chỉnh mà chúng ta phải thực hiện cho tài khoản daccustodian, nhưng trong tương lai, điều này có lẽ sẽ không cần thiết.

Sửa đổi daccustodian/daccustodian.hpp:

Thay thế name authaccount = "dacauthority"_n; bằng name authaccount = "lukedacauth1"_n;

(nên sử dụng tên tài khoản bạn đã tạo ra trong suốt hướng dẫn này)

Sửa đổi tập lệnh biên dịch jungle: 

diff --git a/output/jungle/compile.sh b/output/jungle/compile.sh
index 8b180ff..8889d3b 100755
--- a/output/jungle/compile.sh
+++ b/output/jungle/compile.sh
@@ -1,5 +1,5 @@
#!/usr/bin/env bash

-eosio-cpp -DTOKENCONTRACT='"kasdactokens"' -DTRANSFER_DELAY=20 -o output/jungle/daccustodian/daccustodian.wasm daccustodian.cpp
+eosio-cpp -DTOKENCONTRACT='"lukedactoken"' -DTRANSFER_DELAY=20 -o output/jungle/daccustodian/daccustodian.wasm daccustodian.cpp

eosio-abigen daccustodian.hpp -contract daccustodian -output output/jungle/daccustodian/daccustodian.abi

và chạy nó từ thư mục TestDAC/daccontracts/daccustodian: 

./output/jungle/compile.sh

Tiếp theo, thiết lập nó từ thư mục TestDAC: 

./jungle.sh set contract lukedaccusto /Users/lukestokes/Documents/workspace/eosDAC/TestDAC/daccontracts/daccustodian/output/jungle/daccustodian -p lukedaccusto 

Tiếp theo, chúng ta sẽ biên dịch hợp đồng  dacmultisigs từ TestDAC/daccontracts/dacmultisigs: 

./output/jungle/compile.sh 

Thiết lập hợp đồng từ thư mục TestDAC: 

./jungle.sh set contract lukedacmulti /Users/lukestokes/Documents/workspace/eosDAC/TestDAC/daccontracts/dacmultisigs/output/jungle/dacmultisigs -p lukedacmulti 

Cấu hình

Bây giờ hãy bắt đầu cấu hình mọi thứ.

Các DAC bị ràng buộc bởi Hiến Pháp mà các thành viên đồng ý với nó. Bạn có thể lưu trữ Hiến Pháp của bạn ở bất cứ đâu, tuy nhiên thiết kế hiện tại lưu trữ nó trên Github và sử dụng mã hash để xác minh sự toàn vẹn của nó. Bạn nên xem xét các tư vấn pháp lý của riêng mình về những gì mà Hiến Pháp của bạn nên bao gồm, nhưng chỉ dành cho mục đích thử nghiệm, tôi sẽ tạo nhánh và sao chép Hiến Pháp hiện tại của eosDAC và sửa đổi nó một chút.

Sau khi tạo nhánh trên Github, 

git clone [email protected]:lukestokes/constitution.git
cd constitution
sed -i -- 's/eosDAC/TestDAC/g' constitution.md
git diff
git add .
git commit -m "Using TestDAC as an example"
git push

Lấy mã hash md5 từ Hiến Pháp của bạn thông qua: 

md5 constitution.md

Sử dụng nó và tập tin thô (với cam kết cụ thể mà bạn vừa thực hiện) để tạo một tập tin terms.json trong thư mục TestDAC (điều quan trọng là có được liên kết THÔ đến tập tin): 

echo '["https://raw.githubusercontent.com/lukestokes/constitution/50de655bf59656d317222dedeb3c417358a0ecd9/constitution.md", "a2022da6e770e0b2c3e5d3a10a560dc9"]' > terms.json 

Và thiết lập các điều khoản trên tài khoản: 

./jungle.sh push action lukedactoken newmemterms terms.json -p lukedactoken 

Nếu ví của bạn đang khóa, bạn có thể mở khóa nó bằng cách ./jungle.sh wallet unlock 

Bạn có thể xác thực rằng các điều khoản đã được cập nhật bằng cách sử dụng một công cụ tra cứu khối: https://jungle.bloks.io/account/lukedactoken

Nhấn vào Contract, Contract Tables, và rồi memberterms

Bây giờ cập nhật cấu hình token: 

echo "[lukedaccusto]" > token_config.json 
./jungle.sh push action lukedactoken updateconfig token_config.json -p lukedactoken 

Tạo và phát hành token DAC của riêng bạn. Trong ví dụ này, tôi đang sử dụng TESTDAC. Lưu ý rằng bạn chỉ có thể làm điều này một lần, do vậy đừng làm hỏng nó. :)

./jungle.sh push action lukedactoken create '["lukedactoken", "10000000000.0000 TESTDAC", 0]' -p lukedactoken 
./jungle.sh push action lukedactoken issue '["lukedactoken", "1000000000.0000 TESTDAC", "Issue"]' -p lukedactoken

Lấy tập tin cấu hình của bạn cho DAC:

echo '[["35000.0000 TESTDAC", 5, 12, 60, "lukedacauth1", "lukedachold1", "", 1, 15, 3, 10, 9, 7, 7776000, "50.0000 EOS"]]' > dac_config.json

Các giá trị trong dac_config.json theo các cài đặt sau:

(lockupasset) 
(maxvotes)
(numelected)
(periodlength)
(authaccount)
(tokenholder)
(serviceprovider)
(should_pay_via_service_provider)
(initial_vote_quorum_percent)
(vote_quorum_percent)
(auth_threshold_high)
(auth_threshold_mid)
(auth_threshold_low)
(lockup_release_time_delay)
(requested_pay_max)

Để hiểu đầy về về cách các tham số này được sử dụng, bạn có thể cần phải đọc Hiến Pháp và mã nguồn. Hiện tại, chúng tôi sẽ gắn với các giá trị tương tự như những gì eosDAC đang sử dụng. Việc này có thể được cập nhật sau khi cần thiết. 

Hãy thiết lập cấu hình của chúng ta: 

./jungle.sh push action lukedaccusto updateconfig dac_config.json -p lukedacauth1 

Lưu ý: các quyền trên lệnh gọi này có một chút độc đáo ở chỗ hợp đồng được thiết kế như hiện tại yêu cầu tài khoản lukedacauth1, do đó chúng ta phải thực hiện các sửa đổi sớm hơn. Điều này sẽ được cải thiện trong phiên bản tương lai để thiết lập ban đầu có thể được ủy quyền bởi _self. 

Thiết lập Giao Diện Bộ Công Cụ

Được rồi! Bây giờ chúng ta sẵn sàng kết nối các công cụ giao diện đến với các tài khoản hợp đồng của DAC. Tạo nhánh thư viện https://github.com/eosdac/eosdactoolkit và thực hiện tất cả các tùy chỉnh của riêng bạn: 

git clone [email protected]:lukestokes/eosdactoolkit.git 
cd eosdactoolkit/eosdac-material/src
git checkout dev
grep -lr --exclude-dir=".git" -e "eosDAC" . | xargs sed -i '' -e 's/eosDAC/TestDAC/g' git commit -a -m "Replacing eosDAC with TestDAC"
git push 

Theo dõi readme tại đây để bắt đầu: https://github.com/eosdac/eosdactoolkit/tree/master/eosdac-material

Thực hiện các thay đổi vào tập tin cấu hình jungle như vầy: 

diff --git a/eosdac-material/src/statics/config.jungle.json b/eosdac-material/src/statics/config.jungle.json
index 5b4bd96..fc0f04b 100644
--- a/eosdac-material/src/statics/config.jungle.json
+++ b/eosdac-material/src/statics/config.jungle.json
@@ -3,16 +3,16 @@
    "chainId": "e70aaab8997e1dfce58fbfac80cbbb8fecec7b99cf982a9444273cbc64c41473",
    "name": "jungle2",
    "default_node": "http://jungle2.cryptolions.io:80",
-    "authorityAccount": "dacauthority",
+    "authorityAccount": "lukedacauth1",

    "tokenContracts":{
      "eosio.token":[{"token": "EOS", "decimals": 4 }],
-      "kasdactokens":[{"token": "KASDAC", "decimals": 4}]
+      "lukedactoken":[{"token": "TESTDAC", "decimals": 4}]
    },

    "tokenContract": {
-      "name": "kasdactokens",
-      "token": "KASDAC",
+      "name": "lukedactoken",
+      "token": "TESTDAC",
      "decimals": 4,
      "totalSupply": 1000000000.0000
    },
@@ -22,12 +22,12 @@
      "decimals": 4
    },
    "custodianContract": {
-      "name": "dacelections",
-      "memo": "dacelections",
+      "name": "lukedaccusto",
+      "memo": "lukedaccusto",
      "enable_voting" : true
    },
    "msigContract":{
-      "name": "dacmultisigs"
+      "name": "lukedacmulti"
    },
    "systemContract": {
      "name": "eosio"
@@ -35,7 +35,7 @@
  },
  "api": {
    "bpNodeApiUrl": "https://eosdac.io/topnodes.json",
-    "memberClientApiUrl": "http://ns3119712.ip-51-38-42.eu:3000"
+    "memberClientApiUrl": "http://localhost:3000"
  },

Lưu lại và gửi lên các thay đổi đó: 

git diff 
git commit -a -m "Updating jungle config for our own needs."
git push 

Từ thư mục eosdac-material, cài đặt những gì bạn cần và chạy máy chủ dev (lưu ý: sử dụng tập triển khai sẽ xóa bất kỳ thay đổi cục bộ nào mà bạn chưa ủy thác với git): 

cd eosdac-material 
yarn install
cd ..
./deploy-eosdac-material.sh jungle dev true 

Nếu bạn đã cấu hình Scatter cho mạng thử nghiệm Jungle rồi thì bạn có thể thêm tài khoản [email protected] vào đó để chuyển token qua lại khi cần để thử nghiệm thêm. 

Xin chúc mừng! Bạn đã hoàn thành một chặng đường dài cho đến giờ. Thưởng cho mình một ly bia hay đồ uống bạn thích nào!

Thiết Lập Trình Theo Dõi Chuỗi và API của chúng ta

Bây giờ chúng ta hãy làm Trình Theo Dõi Hồ Sơ hoạt động. Đầu tiên, bắt đầu một bản sao cục bộ của mongod trong cửa sổ riêng của nó:

mongod

Sau đó chuyển sang scraper. Công cụ này theo dõi chuỗi Jungle cho hồ sơ thành viên và lưu chúng vào mongodb để chúng có thể dễ dàng được truy cập bởi bộ công cụ thành viên sau này.

git clone [email protected]:lukestokes/Actionscraper-rpc.git
cd Actionscraper-rpc
git checkout dev

Chỉnh sửa watchers/config.jungle.js nếu cần:

diff --git a/watchers/config.jungle.js b/watchers/config.jungle.js
index afc7af6..647ef86 100644
--- a/watchers/config.jungle.js
+++ b/watchers/config.jungle.js
@@ -7,17 +7,17 @@ const config = {

    db: {
        mongoUrl: 'mongodb://localhost:27017/',
-        dbName: 'eosdac'
+        dbName: 'testdac'
    },

    contracts:{
-        custodian: 'dacelections',
-        token: 'kasdactokens',
-        msig: 'dacmultisigs'
+        custodian: 'lukedaccusto',
+        token: 'lukedactoken',
+        msig: 'lukedacmulti'
    }

}

Cài đặt cấu hình của bạn và khởi động trình theo dõi:

yarn install
cp watchers/config.jungle.js watchers/config.js
node watcher_custodian.js

Trên máy chủ sản xuất khối, bạn sẽ muốn sử dụng tập lệnh start.sh và pm2, nhưng chỉ cần chạy nó thông qua node là đủ cho thử nghiệm của chúng ta.

Bây giờ chúng ta có trình theo dõi hoạt động để tìm kiếm các thay đổi của hồ sơ, chúng ta cần có một API hoạt động cho bộ công cụ thành viên để tương tác bằng cách phân nhánh https://github.com/eosdac/memberclient-api:

git clone [email protected]:lukestokes/memberclient-api.git 
cd memberclient-api 

Thay đổi tập tin cấu hình khi cần và sao chép nó vào config.json

diff --git a/config.example.json b/config.example.json
index ab85c52..86ae7f8 100644
--- a/config.example.json
+++ b/config.example.json
@@ -14,7 +14,7 @@
  },

  "db": {
-    "name": "eosdac",
+    "name": "testdac",
    "url": "mongodb://localhost:27017/eosdac"
  },
cp config.example.json config.json
node api_endpoint.js 

Tiếp theo, chúng ta sẽ sửa đổi các quyền trên tất cả các tài khoản này để mọi thứ sẽ được kiểm soát bởi lukedacauth1, tài khoản này sẽ có các quyền được cập nhật mỗi khi một giai đoạn mới thay đổi.

Sử dụng tập lệnh cấp quyền mạng thử nghiệm tại đây: https://github.com/eosdac/DACtools/blob/master/eosdac-testnet/permissions.sh chúng ta có thể thiết lập mọi thứ chúng ta cần.

Đầu tiên, hãy thiết lập một số tập quyền: :

echo '{
   "threshold" : 1,
   "keys" : [],
   "accounts": [{"permission":{"actor":"lukedacauth1", "permission":"active"}, "weight":1}],
   "waits": []
}' > resign.json

echo '{
   "threshold": 2,
   "keys": [],
   "accounts": [
       {"permission":{"actor":"lukedacauth1", "permission":"med"}, "weight":2},
       {"permission":{"actor":"lukedaccusto", "permission":"eosio.code"}, "weight":1}
   ],
   "waits": [{"wait_sec":3600, "weight":1}]
}' > daccustodian_transfer.json

echo '{
   "threshold": 1,
   "keys": [{"key":"EOS6vuK27d4R1vqQmNQc1b7PjGLZ3cNABtD9HEDtPuyXdZKFkwirc", "weight":1}],
   "accounts": [
       {"permission":{"actor":"lukedaccusto", "permission":"eosio.code"}, "weight":1}
   ],
   "waits": []
}' > dacauthority_owner.json

echo '{
   "threshold": 1,
   "keys": [{"key":"EOS6vuK27d4R1vqQmNQc1b7PjGLZ3cNABtD9HEDtPuyXdZKFkwirc", "weight":1}],
   "accounts": [
       {"permission":{"actor":"lukedacauth1", "permission":"high"}, "weight":1}
   ],
   "waits": []
}' > dacauthority_active.json


Bây giờ chúng ta có thể cập nhật mọi thứ:

# These have to be set now because they are required in daccustodian_transfer.json
# These permissions are set in new period to the custodians with each configured threshold
./jungle.sh set account permission lukedacauth1 high EOS6vuK27d4R1vqQmNQc1b7PjGLZ3cNABtD9HEDtPuyXdZKFkwirc owner -p [email protected]
./jungle.sh set account permission lukedacauth1 med EOS6vuK27d4R1vqQmNQc1b7PjGLZ3cNABtD9HEDtPuyXdZKFkwirc high -p [email protected]
./jungle.sh set account permission lukedacauth1 low EOS6vuK27d4R1vqQmNQc1b7PjGLZ3cNABtD9HEDtPuyXdZKFkwirc med -p [email protected]
./jungle.sh set account permission lukedacauth1 one EOS6vuK27d4R1vqQmNQc1b7PjGLZ3cNABtD9HEDtPuyXdZKFkwirc low -p [email protected]

# resign dactokens account to [email protected]
./jungle.sh set account permission lukedactoken active ./resign.json owner -p [email protected]
./jungle.sh set account permission lukedactoken owner ./resign.json '' -p [email protected]

# resign dacmultisigs account to [email protected]
./jungle.sh set account permission lukedacmulti active ./resign.json owner -p [email protected]
./jungle.sh set account permission lukedacmulti owner ./resign.json '' -p [email protected]

# resign dacowner account to [email protected], must allow timelocked transfers
# from [email protected]
# daccustodian_transfer.json allows the contract to make transfers with a time delay, or
# [email protected] without a time delay.  dacowner must have permission in xfer to transfer tokens
./jungle.sh set account permission lukedachold1 xfer ./daccustodian_transfer.json active -p [email protected]
./jungle.sh set action permission lukedachold1 eosio.token transfer xfer -p [email protected]
# Resign eosdacthedac
./jungle.sh set account permission lukedachold1 active ./resign.json owner -p [email protected]
./jungle.sh set account permission lukedachold1 owner ./resign.json '' -p [email protected]

# Create xfer permission and give it permission to transfer TESTDAC tokens
./jungle.sh set account permission lukedaccusto xfer ./daccustodian_transfer.json active -p [email protected]
./jungle.sh set action permission lukedaccusto lukedactoken transfer xfer -p [email protected]
# Resign daccustodian
./jungle.sh set account permission lukedaccusto active ./resign.json owner -p [email protected]
./jungle.sh set account permission lukedaccusto owner ./resign.json '' -p [email protected]

# Allow high to call any action on daccustodian
./jungle.sh set action permission lukedacauth1 lukedaccusto '' high -p [email protected]
# These 2 actions require a medium permission
./jungle.sh set action permission lukedacauth1 lukedaccusto firecust med -p [email protected]
./jungle.sh set action permission lukedacauth1 lukedaccusto firecand med -p [email protected]
# Allow one to call the multisig actions
./jungle.sh set action permission lukedacauth1 lukedacmulti '' one -p [email protected]
# set [email protected] to point to [email protected]
./jungle.sh set account permission lukedacauth1 active ./dacauthority_active.json owner -p [email protected]
# Only run this once you are done making any code changes:
#./jungle.sh set account permission lukedacauth1 owner ./dacauthority_owner.json '' -p [email protected]

Ở ví dụ trên, chúng ta giữ khóa owner và active phòng trường hợp có lỗi trong mã và bạn không thể thanh chóng nhận được yêu cầu đa chữ ký cùng lúc để sửa nó, nhưng bạn sẽ muốn xóa các khóa khỏi dacauthority_active.json và dacauthority_owner.json và chạy lệnh cuối cùng đó.

Bây giờ bạn có thể vào và sử dụng các tài khoản mạng thử nghiệm Jungle để đăng ký ứng viên giám hộ và bỏ phiếu. Chúng sẽ cần token TESTDAC để bạn có thể chuyển chúng qua lại như sau:

 ./jungle.sh transfer -c lukedactoken lukedactoken testdaccust1 "50000.0000 TESTDAC" "" -p lukedactoken 

Để khởi chạy DAC và gọi giai đoạn mới, bạn sẽ cần đầy đủ 12 người giám hộ, vì vậy bạn có thể tạo một nhóm trên Jungle như sau:

testdaccust1
testdaccust2
testdaccust3
testdaccust4
testdaccust5
testdaccus11
testdaccus12
testdaccus13
testdaccus14
testdaccus15

Chỉ cần dùng

 ./jungle.sh create key --to-console 

Để tạo ra một khóa cho chúng sử dụng. Bạn có thể sử dụng giao diện Scatter và bộ công cụ thành viên của bạn hoặc bạn có thể thực hiện mọi việc qua cleos.

Để đăng ký thành viên, ký gửi token TESTDAC, chỉ định chính bạn là một ứng viên giám hộ, và bỏ phiếu bầu cho chính bạn thông qua cleos bạn sử dụng mã hash Hiến Pháp mà chúng ta đã lưu ở trên (đảm bảo rằng bạn nhập khóa bạn cần với ./jungle.sh wallet import) như sau:

./jungle.sh push action lukedactoken memberreg '["testdaccust1", "a2022da6e770e0b2c3e5d3a10a560dc9"]' -p testdaccust1
./jungle.sh transfer -c lukedactoken testdaccust1 lukedaccusto "35000.0000 TESTDAC" "lukedaccusto" -p testdaccust1
./jungle.sh push action lukedaccusto nominatecand '["testdaccust1", "1.0000 EOS"]' -p testdaccust1
./jungle.sh push action lukedaccusto votecust '["testdaccust1",["testdaccust1"]]' -p testdaccust1

Giả sử chúng ta có 12 ứng viên giám hộ ở đây, bạn có thể gọi một giai đoạn mới để thực sự mở khóa DAC:

./jungle.sh push action lukedaccusto newperiod '{"message":"New Period"}' -p testdaccus15

Và nó đây! Bây giờ bạn có một DAC riêng của mình để thử nghiệm!

Bạn nên xem các quyền trong tài khoản cập nhật authority của bạn như sau:

Làm gì đó mới mẻ nào, tiếp tục và tùy chỉnh bộ công cụ thành viên 1 chút bằng cách thay đổi một số màu sắc: 

diff --git a/eosdac-material/src/css/themes/common.variables.styl b/eosdac-material/src/css/themes/common.variables.styl
index a04237f..0c48881 100644
--- a/eosdac-material/src/css/themes/common.variables.styl
+++ b/eosdac-material/src/css/themes/common.variables.styl
@@ -15,8 +15,8 @@
// to match your app's branding.
@import "core-override.variables.styl"

-$primary   = #4a1289
-$secondary = #26A69A
+$primary   = #1a9c41
+$secondary = #076a61
$tertiary  = #555

$neutral   = #E0E1E2
@@ -25,12 +25,12 @@ $negative  = #DB2828
$info      = #31CCEC
$warning   = #F2C037

-$dark      = #272B35
+$dark      = #2b3527
$p-light   = #7c41ba
$dark2     = #1E2128
$dimwhite  = rgba(255,255,255,0.6)

-$body-background = #272B35
+$body-background = #2b3527
$body-color = #ffffff
$modal-body-color = $white
$modal-background = $dark2

Và thêm một hình ảnh logo khác (hãy chắc chắn sao chép hình ảnh vào thư mục statics/img):

diff --git a/eosdac-material/src/layouts/default.vue b/eosdac-material/src/layouts/default.vue
index b7e7ecf..8d51a3b 100644
--- a/eosdac-material/src/layouts/default.vue
+++ b/eosdac-material/src/layouts/default.vue
@@ -7,7 +7,7 @@
        <q-icon v-else name="icon-menu-9" />
      </q-btn>
      <q-toolbar-title class="text-white q-pl-none">
-        < img src="statics/img/icon-signet-eosdacmemberclient175x48.svg" style="height:48px;" :title="$t('default.member_client')">
+        < img src="statics/img/do_you_want_to_build_a_dac.jpg" style="height:48px;" :title="$t('default.member_client')">
      </q-toolbar-title>
      <div class="xs-hide sm-hide md-hide" >
        <MenuDropdown class="no-pointer-events animate-fade" v-if="getAccountName && getRegistered && getTokenBalance" iconColor="white" :label="$t('default.member_status')" :statusLabel="1" :sublabel="$t('default.registered')" icon="icon-role-3" /> 

(Lưu ý: khoảng trống được thêm sau "<" ở trên nên bị xóa đi. Nó được bao gồm vì lỗi này.)

Đây là kết quả:

Và đây! Xin chúc mừng! Bạn đã tạo ra một Cộng Đồng Tự Trị Phi Tập Trung của riêng bạn trên mạng thử nghiệm Jungle! Việc chỉnh sửa bộ công cụ thành viên liên quan đến việc tìm hiểu một chút về Material Design, Quasar framework, và Vue.js. Bạn cũng cần điều chỉnh cài đặt cho DAC của bạn bằng cách có nhiều hay ít hơn 12 người giám hộ, thay đổi số lượng bỏ phiếu, và hơn thế nữa.

Chúng tôi mong muốn nhận được phản hồi của bạn về điều này khi bạn bắt đầu sử dụng nó để tổ chức và trao quyền lại cho các cộng đồng của chính bạn. Để hỗ trợ công việc đang diễn ra này, vui lòng bỏ phiếu bầu cho nhà sản xuất khối EOS eosdacserver hoặc sử dụng một proxy hỗ trợ chúng tôi. Chúng tôi cũng thật sự muốn thấy nhiều DAC được khởi tạo và phát hành các token mà họ tạo ra dành cho thành viên eosDAC (hiện tại chỉ có hơn 1.900 tài khoản) đã hỗ trợ chúng tôi và biến điều này thành hiện thực. Cám ơn bạn!

Luke cùng với sự hợp tác và làm việc đáng kinh ngạc từ Michael, Dallas, Piecesnbits, Nod74, và nhiều người nữa.

Hãy bỏ phiếu cho eosdacserver


Đăng ký bản tin của chúng tôi để nhận thông báo và theo dõi chúng tôi trên các nền tảng mạng xã hội yêu thích của bạn:

Steemit | Discord | Telegram | Facebook | Twitter | Google-plus | Github | Instagram | Linkedin | Medium | Reddit | YouTube | Weibo| VK| Bihu

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

I just resteemed your post!

Why? @eosbpnews aggregates updates of active EOS BPs and conveniently serves them in one place!


This service is provided by @eosoceania. If you think we are doing useful work, consider supporting us with a vote :)
For any inquiries/issues please reach out on Telegram or Discord.