로메오의 블로그

[DApp] 후보자 등록, 확인하기 본문

Backend/Python & Blockchain

[DApp] 후보자 등록, 확인하기

romeoh 2019. 7. 6. 19:10
반응형

/constracts/Election.sol

pragma solidity ^0.5.0;

contract Election {
    
    // 후보자 모델
    struct Candidate {
        uint id;
        string name;
        uint voteCount;
    }

    // 후보자 기호 변수
    uint public candidatesCount;

    // 후보자 반환하기
    mapping(uint => Candidate) public candidates;

    // 후보자 등록하기
    function addCandidate (string memory _name) public {
        candidatesCount++;
        candidates[candidatesCount] = Candidate(candidatesCount, _name, 0);
    }

    // constructor
    constructor() public {
    }
}

/migrations/2_deploy_contracts.js

var Election = artifacts.require("./Election.sol");

module.exports = function(deployer) {
  deployer.deploy(Election);
};

truffle migrate

$ truffle migrate --reset

--reset 옵션을 붙여주면 개발용 local 블록체인에서 데이터를 초기화 할 수 있습니다.

 

migrate 할때마다 Gas Price로 소모된 비용을 확인 할 수 있고,

이것은 Ganache에서 ETH가 소진된것을 확인 할 수 있습니다.

truffle console

$ truffle console
truffle(development)> Election.deployed().then(i => app = i)

Election을 deploy하고 app 변수에 할당합니다.

후보자 등록하기

truffle(development)> app.addCandidate('romeoh')

romeoh 라는 후보자를 등록했습니다.

truffle(development)> app.candidates(1)

등록된 후보자를 확인할 수 있습니다.

몇 명 더 등록해보겠습니다.

truffle(development)> app.addCandidate('doraemong')
truffle(development)> app.addCandidate('pororo')

truffle(development)> app.candidates(2)
truffle(development)> app.candidates(3)

truffle(development)> app.candidates(99)

99번에는 데이터가 없는것도 알 수 있습니다.

 

후보자 갯수 읽어오기

truffle(development)> app.candidatesCount()

3명이 등록된것을 알 수 있습니다.

 

후보자 정보 확인하기

truffle(development)> app.candidates(1).then(c => romeoh = c)
truffle(development)> romeoh

romeoh 라는 변수에 1번 후보자를 할당했습니다.

truffle(development)> romeoh[0]
truffle(development)> romeoh[1]
truffle(development)> romeoh[2]
truffle(development)> romeoh.id
truffle(development)> romeoh.voteCount
truffle(development)> romeoh.voteCount.toNumber()

후보자의 정보를 확인 할 수 있습니다. (struct model)

 

Web3 

블록체인에 배포할때 마다 우리는 가스를 소모하게 됩니다.

이 정보는 web3 명령으로 확인 할 수 있습니다.

truffle(development)> web3

truffle(development)> web3.eth

truffle(development)> web3.eth.getAccounts()

계정 정보를 확인할 수 있습니다.

반응형
Comments