/ethereum-voting-dapp

ethereum voting dapp

Primary LanguageSolidity

πŸ—³ ethereum voting dapp

ethereum 기반 voting dappμž…λ‹ˆλ‹€.

πŸ—³ Directory

β”œβ”€β”€ contracts/
β”‚ β”œβ”€β”€ artifacts/ - contract 정보 (abi, binary λ“±)
β”‚ └── Voting.sol - voting contract
β”‚
β”œβ”€β”€ README.md - λ¦¬λ“œλ―Έ(프리뷰, 배포링크, μ½”λ“œμ»¨λ²€μ…˜)
└── package.json - μ‚¬μš© package λͺ©λ‘

πŸ—³ Implement

contract κ΅¬ν˜„ (Voting.sol)

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;

contract Voting {
    bytes32[] public candidateList; // ν›„λ³΄μž 리슀트
    mapping(bytes32 => uint8) public votesReceived; // 각 ν›„λ³΄μž ν•΄μ‹œν˜• λ“ν‘œμˆ˜ (kim -> 10)

    constructor(bytes32[] memory candidateNames) {
        candidateList = candidateNames;
    }

    /**
    function 총 3개

    1. voteForCandidate : νŠΉμ • ν›„λ³΄μžμ—κ²Œ νˆ¬ν‘œν•˜λ©΄ λ“ν‘œμˆ˜ + 1 λ˜λŠ” ν•¨μˆ˜
    2. totalVotesFor(읽기 μ „μš©) : 각 ν›„λ³΄μžμ˜ 전체 λ“ν‘œμˆ˜
    3. validCandidate(읽기 μ „μš©) : ν›„λ³΄μž λ¦¬μŠ€νŠΈμ— μ‘΄μž¬ν•˜λŠ” ν›„λ³΄μžμΈμ§€ μœ νš¨μ„± 검사
     */

    function voteForCandidate(bytes32 candidate) public {
        require(validCandidate(candidate));
        votesReceived[candidate] += 1;
    }

    function totalVotesFor(bytes32 candidate) public view returns (uint8) {
        require(validCandidate(candidate));
        return votesReceived[candidate];
    }

    function validCandidate(bytes32 candidate) public view returns (bool) {
        for (uint256 i = 0; i < candidateList.length; i++) {
            if (candidateList[i] == candidate) {
                return true;
            }
        }
        return false;
    }
}

πŸ—³ Commit Emoji

emoji commit message when to use it
πŸŽ‰ Start ν”„λ‘œμ νŠΈ μ‹œμž‘
✨ Feat μƒˆλ‘œμš΄ κΈ°λŠ₯ μΆ”κ°€
πŸ› Fix 버그 μˆ˜μ •
♻️ Refactor μ½”λ“œ λ¦¬νŒ©ν„°λ§
πŸ’„ Style μŠ€νƒ€μΌ μΆ”κ°€ 및 μ—…λ°μ΄νŠΈ
πŸ“¦ Chore νŒ¨ν‚€μ§€ μΆ”κ°€ 및 μ—…λ°μ΄νŠΈ
πŸ“š Docs κ·Έ μ™Έ λ¬Έμ„œ μΆ”κ°€ 및 μ—…λ°μ΄νŠΈ