demo.sol(投票合约案例):
pragma solidity ^0.4.21;
pragma experimental ABIEncoderV2;
contract VoteContract {
// 投票人
struct Voter {
uint voteNumber; // 投票给第几个候选人
bool isVoted; // 是否投过票
uint weight; // 投票权重,初始值为1,被委托后,权重增加
address delegate; // 指定代理人(委托别人帮自己投票)。 (帮自己投票的人)
}
// 候选人
struct Candidate {
string name; // 候选人名字
uint voteCount; // 获得的投票数
}
address public admin; // 管理员,负责创建合约,授权地址为投票人。
Candidate[] public candidates; // 候选人集合。 数组下标表示第几号候选人。
mapping(address => Voter) public voters; // 投票人集合
// 构造函数。 (部署合约时,需要传入候选人的姓名列表)
constructor(string[] candidatesNames) public {
admin =