create account

Solidity - 스마트컨트랙트로 투표 해보기 1편 by bitcoinyo

View this thread on: hive.blogpeakd.comecency.com
· @bitcoinyo · (edited)
Solidity - 스마트컨트랙트로 투표 해보기 1편
주변에서 접하는 뉴스를 보면 암호화폐로 투표할 수 있다는 광고를 보게됩니다.

투표에 사용하려면 남녀노소 이해하기 쉬워야 하는데 쉽게 구현이 가능한 일일까요.

선거일이 다가오는데 투표할 수 있는 스마트계약을 만들어 보았습니다.

https://ropsten.etherscan.io/address/0x6443e0136b122f2307db969d1adc939d3b14a57f#code

우선 가상의 후보 두명을 선출합니다.

```
        setCandidate(0,"Kim","Keep The Rule!");
        setCandidate(1,"Lee","Be Free!");
```
<br>Ms.Kim 은 규칙을 중요시 하는 후보이고 , Mr.Lee 는 자유를 선호하는 후보입니다.

```
        for (uint i=0; i< 50; i++) {
            uint8 randomNumber = random(i);
            if(randomNumber > 0){
                setVote(1, 1000 + i);
            }else
            {
                setVote(0, 1000 + i);
            }
        }
```
<br>랜덤함수로 가상의 50표를 투표하고 시각화해 보았습니다.

![Screen Shot 2018-06-09 at 8.56.22 PM.png](https://cdn.steemitimages.com/DQmXMC4dt5yX9yjkUySeexg4F76J98VKWz6prPMdFfDR6FB/Screen%20Shot%202018-06-09%20at%208.56.22%20PM.png)

https://www.dunkpay.com/vote-test/

랜덤함수를 사용했더니 골고루 표를 받은 것을 확인 할 수 있습니다.

생각해보니 두 후보를 마음에 들어하지 않는 기권표가 있을 수 있겠네요.

```
        setCandidate(2,"N/A","I HATE DHEM.");
```

<br>스마트컨트랙트를 실행하여 추가합니다.

잘 작동하는지 이제 투표권을 행사해 보려고 합니다.

![Screen Shot 2018-06-09 at 9.47.46 PM.png](https://cdn.steemitimages.com/DQmXGEYKZiSaM6pfLNx6UyDWogWcU5HrpRg3k3gcJwrRPe8/Screen%20Shot%202018-06-09%20at%209.47.46%20PM.png)

하단의 버튼을 누르면 계약이 실행됩니다.

```
        setVote(2, 1111); 
```

![Screen Shot 2018-06-09 at 9.11.32 PM.png](https://cdn.steemitimages.com/DQmS1wUpP6QxB4rfgo837BLRuchVp2Ft6Fp64omDxnK2RJV/Screen%20Shot%202018-06-09%20at%209.11.32%20PM.png)

https://ropsten.etherscan.io/tx/0x509fff804b98a6db51af9709aeba1b4eb0fcf676a62c04d019deb6af80a912a1

투표계약을 실행하니 얼마 후 50번째 칸에 무효표가 정상적으로 반영된 것을 확인 할 수 있습니다.

어서 빨리 실전에 도입되어서 공약을 안지키는 후보들을 실시간으로 계약파기 할 수 있었으면 좋겠습니다 ㅋㅋ

대통령선거에도 쓸 수 있을까요? 불행히도 솔리디티는 컨트랙트 주소당 2기가 미만의 업로드만 허용하고 있습니다.  (개선의 여지는 있습니다.)

이번 예제에서는 중복투표를 허용했고  투표자의 정보가 모두에게 공개되어 미완성의 투표계약 인 것 같습니다.

언제나 그랬듯이 다음 시간에 문제점을 개선해 보겠습니다 ~

투표 참여해보기 :

https://wwwdunkpay.com/vote-test/
👍  ,
properties (23)
authorbitcoinyo
permlink5djjex-solidity-1
categorydunkpay
json_metadata{"tags":["dunkpay","solidity","smartcontract","vote","election"],"image":["https://cdn.steemitimages.com/DQmXMC4dt5yX9yjkUySeexg4F76J98VKWz6prPMdFfDR6FB/Screen%20Shot%202018-06-09%20at%208.56.22%20PM.png","https://cdn.steemitimages.com/DQmXGEYKZiSaM6pfLNx6UyDWogWcU5HrpRg3k3gcJwrRPe8/Screen%20Shot%202018-06-09%20at%209.47.46%20PM.png","https://cdn.steemitimages.com/DQmS1wUpP6QxB4rfgo837BLRuchVp2Ft6Fp64omDxnK2RJV/Screen%20Shot%202018-06-09%20at%209.11.32%20PM.png"],"links":["https://ropsten.etherscan.io/address/0x6443e0136b122f2307db969d1adc939d3b14a57f#code","https://www.dunkpay.com/vote-test/","https://ropsten.etherscan.io/tx/0x509fff804b98a6db51af9709aeba1b4eb0fcf676a62c04d019deb6af80a912a1","https://wwwdunkpay.com/vote-test/"],"app":"steemit/0.1","format":"markdown"}
created2018-06-09 13:00:51
last_update2018-06-11 14:30:09
depth0
children0
last_payout2018-06-16 13:00:51
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length1,932
author_reputation2,600,275,468
root_title"Solidity - 스마트컨트랙트로 투표 해보기 1편"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id59,989,997
net_rshares894,292,806
author_curate_reward""
vote details (2)