不使用框架搭建投票Dapp

一、开发环境

  • Ganache
  • Remix
  • web3.js

二、编写智能合约

pragma solidity ^0.5.0;

contract Voting {

  mapping (bytes32 => uint8) public votesReceived;

  bytes32[3] public candidateList;

  constructor() public {
    candidateList[0] = 'Rama';
    candidateList[1] = 'Nick';
    candidateList[2] = 'Jose';
  }

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

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

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

三、编译智能合约

不使用框架搭建投票Dapp_第1张图片

四、开启本地节点

不使用框架搭建投票Dapp_第2张图片

五、部署智能合约

  • 选择web3 provider
  • 点击deploy部署

不使用框架搭建投票Dapp_第3张图片

  • 部署成功后,复制下合约地址以及abi

不使用框架搭建投票Dapp_第4张图片

六、web3.js与合约交互

  • index.html



  Hello World DApp
  


  

A Simple Hello World Voting Application

Candidate Votes
Rama
Nick
Jose
Vote
  • 效果如下

不使用框架搭建投票Dapp_第5张图片

 

 

 

 

 

 

你可能感兴趣的:(以太坊,智能合约,solidity,区块链)