이전 기사에서 Qtum의 분산 형 통치 프로토콜 (DGP)에 대한 간단한 개요를 제공했으며 Qtum의 현재 상태에 대해 설명했습니다. DGP를보다 정확하고 기술적으로 살펴보기 위해 Qtum regtest 환경에서 DGP를 보여주는 비디오 자습서를 만들었습니다. 이 튜토리얼에서는 Qtum의 창립자 중 한 명인 Neil Mahi가 DGP를 실행하는 데 필요한 일련의 명령을 수행 할 것입니다. 각 단계에서 우리가하고있는 일, 그것이 의미하는 바, 명령을 이해하는 방법을 통해 여러분을 인도 할 것이며, 여러분이 집에서 따라갈 수 있고 그렇게 할 수 있습니다.
우리는 :
(동영상은 현재 DNT를 준수하지 않는 YouTube에서 호스팅되며 '여기에 동영상을 보려면'표시 포함 '을 클릭하고 그렇지 않으면 YouTube에서 다음을 시청하십시오 : https://youtu.be/UhHzJcRkl6s )
https://www.youtube.com/watch?v=UhHzJcRkl6s&feature=youtu.be
동영상의 링크는 다음과 같습니다.
최소 가스 가격에 대한 현명한 계약은 다음과 같습니다.
pragma solidity ^ 0.4.8;
계약 minGasPrice {
uint32 [1] _minGasPrice = [
satoshis의 80 // min 가스 가격
];
함수 getMinGasPrice () 상수는 (uint32 [1] _gasPrice) {
return _minGasPrice;
}
}
다음은 스마트 계약의 바이트 코드입니다.
6080604052602060405190810160405280605060ff16815250600090600161002892919061003b565b5034801561003557600080fd5b5061010e565b8260016007016008900481019282156100ca5791602002820160005b8382111561009857835183826101000a81548163ffffffff021916908360ff1602179055509260200192600401602081600301049283019260010302610057565b80156100c85782816101000a81549063ffffffff0219169055600401602081600301049283019260010302610098565b505b5090506100d791906100db565b5090565b61010b91905b8082111561010757600081816101000a81549063ffffffff0219169055506001016100e1565b5090565b90565b61015f8061011d6000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633fb5881914610046575b600080fd5b34801561005257600080fd5b5061005b610099565b6040518082600160200280838360005b8381101561008657808201518184015260208101905061006b565b5050505090500191505060405180910390f35b6100a1610110565b6000600180602002604051908101604052809291908260018015610106576020028201916000905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116100c95790505b5050505050905090565b6020604051908101604052806001906020820280388339808201915050905050905600a165627a7a72305820521e4650ac723cc5046bec623cccc3af87ea598afb5b367d50fbf75c55afa1230029
다음은 16 진수의 DGP 스마트 계약 함수입니다.
bf5f1e83 : addAddressProposal (주소, uint256)
e9944a81 : alreadyVoted (주소, 주소 [])
19971cbd : changeValueProposal (uint256, uint256)
850d9758 : getAddressesList (uint256)
3a32306c : getArrayNonNullLength (주소 [])
0c83ebac : getCurrentOnVoteAddressProposal (uint256, uint256)
5f302e8b : getCurrentOnVoteStatus (uint256, uint256)
4364725c : getCurrentOnVoteValueProposal (uint256)
f9f51401 : getCurrentOnVoteVotes (uint256, uint256)
15341747 : getParamAddressAtIndex (uint256)
27e35746 : getParamCount ()
8a5a9d07 : getParamHeightAtIndex (uint256)
f769ac48 : getParamsForBlock (uint256)
1ec28e0f : getRequiredVotes (uint256)
6b102c49 : isAdminKey (주소)
7b993bf3 : isGovKey (주소)
4cc0e2bc : removeAddressProposal (주소, uint256)
6fb81cbb : setInitialAdmin ()
bec171e5 : tallyAdminVotes (주소 [])
4afb4f11 : tallyGovVotes (주소 [])
다음은 비디오에서 사용한 명령입니다.
1 초기 관리자로 ADMIN1 설정
./qtum-cli sendtocontract 0000000000000000000000000000000000000082 6fb81cbb 0 250000 0.0000004 $ ADMIN1
2 블록 생성
./qtum-cli generate 1
3 ADMIN2를 admin으로 추가하는 제안서를 추가하면 관리에 필요한 최소 투표 수가 여전히 0이고 제안서를 작성하면 투표에 직접 투표 할 수 있으므로 직접 승인됩니다
./qtum-cli sendtocontract 00000000000000000000000000000000000082 bf5f1e830000000000000000000000 / REPLACE-WITH-ADMIN2-HEX / 00000000000000000000000000000000000000000000000000000000000000 0 250000 0.0000004 $ ADMIN1
4 블록 생성
./qtum-cli generate 1
5 경영진에 대해 2 개의 관리자 투표를 요구하는 제안을 추가하면 관리에 필요한 최소 투표 수가 여전히 0이고 제안서를 작성하면 투표에 직접 투표 할 수 있으므로 직접 승인됩니다
./qtum-cli sendtocontract 00000000000000000000000000000000000082 19971cbd00000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000002 0 250000 0.0000004 $ ADMIN1
6 블록 생성
./qtum-cli generate 1
7 ADMIN3을 admin으로 추가하는 제안 추가
./qtum-cli sendtocontract 00000000000000000000000000000000000082 bf5f1e830000000000000000000000 / REPLACE-WITH-ADMIN3-HEX / 00000000000000000000000000000000000000000000000000000000000000 0 250000 0.0000004 $ ADMIN1
8 블록 생성
./qtum-cli generate 1
9 두 번째 관리자를 사용하여 제안서에 투표하십시오.
./qtum-cli sendtocontract 00000000000000000000000000000000000082 bf5f1e830000000000000000000000 / REPLACE-WITH-ADMIN3-HEX / 00000000000000000000000000000000000000000000000000000000000000 0 250000 0.0000004 $ ADMIN2
10 블록 생성
./qtum-cli generate 1
11 GOVERNANCE1을 거버넌스 키로 추가하라는 제안 추가
./qtum-cli sendtocontract 00000000000000000000000000000000000082 bf5f1e83000000000000000000000000 / REPLACE-WITH-GOVERNANCE1-HEX / 00000000000000000000000000000000000000000000000000000000000001 0 250000 0.0000004 $ ADMIN1
12 블록 생성
./qtum-cli generate 1
13 세 번째 관리자를 사용하여 제안서에 투표하십시오
./qtum-cli sendtocontract 00000000000000000000000000000000000082 bf5f1e83000000000000000000000000 / REPLACE-WITH-GOVERNANCE1-HEX / 0000000000000000000000000000000000000000000000000000000000000001 0 250000 0.0000004 $ ADMIN3
14 블록 생성
./qtum-cli generate 1
15 GOVERNANCE2를 두 번째 거버넌스 키로 추가하라는 제안 추가
./qtum-cli sendtocontract 00000000000000000000000000000000000082 bf5f1e83000000000000000000000000 / REPLACE-WITH-GOVERNANCE2-HEX / 00000000000000000000000000000000000000000000000000000000000001 0 250000 0.0000004 $ ADMIN1
16 블록 생성
./qtum-cli generate 1
17 두 번째 관리자를 사용하여 제안서에 투표하십시오.
./qtum-cli sendtocontract 00000000000000000000000000000000000082 bf5f1e830000000000000000000000 / REPLACE-WITH-GOVERNANCE2-HEX / 00000000000000000000000000000000000000000000000000000000000001 0 250000 0.0000004 $ ADMIN2
18 블록 생성
./qtum-cli generate 1
19 Admins 중 하나를 사용하여 DGP 매개 변수 값에 대해 2 개의 관리자 투표를 요구하는 제안서 작성 주소 제안 제안 추가 허용
./qtum-cli sendtocontract 00000000000000000000000000000000008282 19971cbd00000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000 0 250000 0.0000004 $ ADMIN1
20 블록 생성
./qtum-cli generate 1
21 두 번째 관리자를 사용하여 제안서에 투표하십시오.
./qtum-cli sendtocontract 00000000000000000000000000000000000082 19971cbd00000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000 0 250000 0.0000004 $ ADMIN2
22 블록 생성
./qtum-cli generate 1
23 관리자 중 한 명이 DGP 매개 변수 값에 대해 거버넌스 파티를 1 개 제안하도록 제안서를 작성하여 주소 제안서를 수락합니다
./qtum-cli sendtocontract 00000000000000000000000000000000000082 19971cbd0000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001 0 250000 0.0000004 $ ADMIN1
24 블록 생성
./qtum-cli generate 1
25 두 번째 관리자를 사용하여 제안서에 투표하십시오.
./qtum-cli sendtocontract 00000000000000000000000000000000000082 19971cbd0000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000001 0 250000 0.0000004 $ ADMIN2
26 블록 생성
./qtum-cli generate 1
27 Admins 중 하나를 사용하여 계약서 주소 $ CONTRACT를 사용하여 새 DGP 매개 변수 값 주소를 추가하는 제안서를 작성하십시오
./qtum-cli sendtocontract 00000000000000000000000000000000000082 bf5f1e830000000000000000000000 / REPLACE-WITH-CONTRACT-ADDR / 00000000000000000000000000000000000000000000000000000000000002 0 250000 0.0000004 $ ADMIN1
28 블록 생성
./qtum-cli generate 1
29 두 번째 관리자를 사용하여 제안서에 투표하십시오.
./qtum-cli sendtocontract 00000000000000000000000000000000000082 bf5f1e830000000000000000000000 / 계약 대체 주소 / 00000000000000000000000000000000000000000000000000000000000002 0 250000 0.0000004 $ ADMIN2
30 블록 생성
./qtum-cli generate 1
31 거버넌스 키 중 하나를 사용하여 제안서에 투표하십시오.
./qtum-cli sendtocontract 00000000000000000000000000000000000082 bf5f1e830000000000000000000000 / REPLACE-WITH-CONTRACT-ADDR / 00000000000000000000000000000000000000000000000000000000000002 0 250000 0.0000004 $ GOVERNANCE1
32 블록 생성
./qtum-cli generate 1
https://blog.qtum.org/qtum-decentralized-governance-protocol-video-demo-b2e16fda8e6d