solidity的投票示例代码

remix官网
remix在线编辑器/编译器,这是编写solidity语言的编辑器

  1. 旧版:https://ethereum.github.io/browser-solidity/#optimize=false&version=soljson-v0.4.24+commit.e67f0147.js

  2. 新版:https://remix.ethereum.org/#optimize=false&version=soljson-v0.4.24+commit.e67f0147.js

    pragma solidity ^0.4.0;
    contract Ballot {
    struct Voter {
    uint weight;
    bool voted;
    uint8 vote;
    address delegate;
    }
    struct Proposal {
    uint voteCount;
    }

         address chairperson;
         mapping(address => Voter) voters;
         Proposal[] proposals;
     
         /// Create a new ballot with $(_numProposals) different proposals.
         function Ballot(uint8 _numProposals) public {
             chairperson = msg.sender;
             voters[chairperson].weight = 1;
             proposals.length = _numProposals;
         }
     
         /// Give $(toVoter) the right to vote on this ballot.
         /// May only be called by $(chairperson).
         function giveRightToVote(address toVoter) public {
             if (msg.sender != chairperson || voters[toVoter].voted) return;
             voters[toVoter].weight = 1;
         }
     
         /// Delegate your vote to the voter $(to).
         function delegate(address to) public {
             Voter storage sender = voters[msg.sender]; // assigns reference
             if (sender.voted) return;
             while (voters[to].delegate != address(0) && voters[to].delegate != msg.sender)
                 to = voters[to].delegate;
             if (to == msg.sender) return;
             sender.voted = true;
             sender.delegate = to;
             Voter storage delegateTo = voters[to];
             if (delegateTo.voted)
                 proposals[delegateTo.vote].voteCount += sender.weight;
             else
                 delegateTo.weight += sender.weight;
         }
     
         /// Give a single vote to proposal $(toProposal).
         function vote(uint8 toProposal) public {
             Voter storage sender = voters[msg.sender];
             if (sender.voted || toProposal >= proposals.length) return;
             sender.voted = true;
             sender.vote = toProposal;
             proposals[toProposal].voteCount += sender.weight;
         }
     
         function winningProposal() public constant returns (uint8 _winningProposal) {
             uint256 winningVoteCount = 0;
             for (uint8 prop = 0; prop < proposals.length; prop++)
                 if (proposals[prop].voteCount > winningVoteCount) {
                     winningVoteCount = proposals[prop].voteCount;
                     _winningProposal = prop;
                 }
         }
     }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值