투표 앱용 스마트 계약

투표를 위한 스마트 계약

후드
스마트 계약은 블록체인 네트워크에서 데이터를 저장하고 가져오는 방법입니다. 블록체인 네트워크에서 데이터를 저장하고 가져오는 기능을 처리하는 코드를 작성하는 구문입니다. 오늘 이야기에서는 사용자가 후보자에게 투표할 수 있는 스마트 계약을 개발할 것입니다. 또한 후보자가 받은 총 투표 수를 제공합니다.

시작하기
프로젝트 설정 방법, 실행 및 컴파일 방법 등에 대해서는 자세히 설명하지 않겠습니다. 설정을 생성하는 대신 논리를 테이블로 가져오겠습니다. 설정을 처리하기 위해 github 리포지토리를 추가하겠습니다.

논리
모든 사용자는 자신의 주소를 사용하여 한 번 투표할 수 있습니다.
후보자 목록 추적(선거에 입후보한 사람)
각 후보가 받은 총 투표 수를 추적합니다.
스마트 계약
투표 스마트 계약을 정의하는 3가지 방법 -

각 후보자가 받은 총 투표 수를 계산합니다.
후보자가 유효한지 여부를 확인합니다.
투표가 완료되면 후보 투표 수에 투표를 추가합니다.

데이터 구조
저장하는 데 필요한 것은 두 가지뿐입니다. 하나는 선거에 누가 서 있는지이고 두 번째는 그/그녀가 받은 표 수입니다. 물론 누가 누구에게 투표했는지, 투표 타임스탬프 추적 등과 같은 더 많은 값을 저장할 수 있습니다.

mapping(address => uint256) public votesReceived
// votesReceived is an object storing candidate votes counts
address[] public candidateList
// candidateList is an array of candidates address standing in the election


이러한 일이 쉬워지고 우리가 후보 목록을 배열에 대한 매핑 데이터 구조로 정의한 이유는 O(1) 시간에 더 기술적인 시간 내에 투표 수를 가져오기 위한 것입니다.

행동 양식
요구 사항에 따라 투표를 추가하고 총 투표 수를 반환해야 합니다.

투표 수
투표 수를 가져오려면 후보 주소가 필요하고 지도 데이터 구조를 사용하여 O(1) 시간에 총 투표를 가져올 것입니다.

function fetchVotes(address memory candidate) view returns(uint){
 return candidateList[candidate];
}


투표 추가
투표를 추가하려면 모든 사용자가 한 표만 가질 수 있기 때문에 후보의 투표 수를 1씩 늘리면 됩니다.

function addVote(address candidate) public{
 return votesReceived[candidate] +=1;
}


확인
사용자가 올바른 후보에게 투표하고 있는지 확인하기 위해 후보 사용자가 후보 목록에서 사용할 수 있는지 간단히 확인합니다. 그렇지 않은 경우 투표 후보는 유효한 후보가 아닙니다.

function validCandidate(){
   for(uint i= 0; i < candidateList.length; i++){
     if(candidateList[i] == candidate){
       return isCandidateValid = true;
     }else {
       return isCandidateValid = false;
    }
 };


논리 부분은 끝났습니다. 아래는 투표를 위한 스마트 계약의 전체 코드 요지입니다.

Code repository

안전모 또는 트러플 선택을 처리할 수 있습니다. 둘 다 스마트 계약을 작성하고 배포하기 위한 환경/프레임워크입니다. 중요한 것은 논리 부분과 데이터 구조이며 환경 설정, 플러그인 및 마이그레이션에 대해 너무 자세히 설명하는 이유입니다.

결론
오늘은 여기까지입니다. 다음 작업은 이를 중심으로 UI를 만들고 ether.js 및 web3.js를 사용하여 스마트 계약을 UI와 연결하는 방법입니다. 나는 같은 새로운 이야기를 다룰 것입니다. 그러니 계속 지켜봐주시고 좋은 하루 보내세요, 여러분.

우리 웹사이트 iHateReading || ||

좋은 웹페이지 즐겨찾기