___|  _ \   |  |    |   |_ _|\ \     / ____|
 |     |   |  |  |    |   |  |  \ \   /  __|
 |   | |   | ___ __|  ___ |  |   \ \ /   |
\____|\___/     _|   _|  _|___|   \_/   _____| 

 --- A GOPHER-LIKE INTERFACE FOR HIVE BLOCKCHAIN ---

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

BY: @bitcoinyo | CREATED: June 9, 2018, 1 p.m. | VOTES: 2 | PAYOUT: $0.00 | [ VOTE ]

주변에서 접하는 뉴스를 보면 암호화폐로 투표할 수 있다는 광고를 보게됩니다.

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

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

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

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

        setCandidate(0,"Kim","Keep The Rule!");
        setCandidate(1,"Lee","Be Free!");

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);
            }
        }

랜덤함수로 가상의 50표를 투표하고 시각화해 보았습니다.

[IMAGE: 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.");

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

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

[IMAGE: https://cdn.steemitimages.com/DQmXGEYKZiSaM6pfLNx6UyDWogWcU5HrpRg3k3gcJwrRPe8/Screen%20Shot%202018-06-09%20at%209.47.46%20PM.png]

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

        setVote(2, 1111); 

[IMAGE: 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/

TAGS: [ #dunkpay ] [ #solidity ] [ #smartcontract ] [ #vote ] [ #election ]

Replies

NO REPLIES FOUND.

[ BACK TO TRENDING ] [ BACK TO MENU ]
CMD>