//摘自:https://solidity-cn.readthedocs.io/zh/develop/solidity-by-example.html#
//案例:投票
//结构:为每个投票表决创建一份合约,为每个选项提供简称,最后合约创建者赋予每个地址投票权
//投票人可以选择本人投票,也可选择委托他人
//投票时间结束时,winningProposal()将返回的票最多的提案
pragma solidity ^0.4.22;
//(投票,投票用纸)
/// @title 委托投票
contract Ballot {
// 这里声明了一个新的复合类型用于稍后的变量
// 它用来表示一个选民
struct Voter {
uint weight; // 计票的权重
bool voted; // 若为真,代表该人已投票
address delegate; // 被委托人
uint vote; // 投票提案的索引
}
// 提案的类型
struct Proposal {
bytes32 name; // 简称(最长32个字节)
uint voteCount; // 得票数
}
address public chairperson;
// 这声明了一个状态变量,为每个可能的地址存储一个 `Voter`。
mapping(address => Voter) public voters;
// 一个 `Proposal` 结构类型的动态数组
Proposal[] public proposals;
//部署合约时需要向此构造函数提交一个由多个提案名构成的数组
/// 为 `proposalNames` 中的每个提案,创建一个新