mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
| contract Ballot {
 | |
| 	mapping(address => bool) canVote;
 | |
| 	mapping(address => uint) voteCount;
 | |
| 	mapping(address => bool) voted;
 | |
| 	function getVoteCount(address addr) public returns (uint retVoteCount) {
 | |
| 		return voteCount[addr];
 | |
| 	}
 | |
| 	function grantVoteRight(address addr) public {
 | |
| 		canVote[addr] = true;
 | |
| 	}
 | |
| 	function vote(address voter, address vote) public returns (bool success) {
 | |
| 		if (!canVote[voter] || voted[voter]) return false;
 | |
| 		voted[voter] = true;
 | |
| 		voteCount[vote] = voteCount[vote] + 1;
 | |
| 		return true;
 | |
| 	}
 | |
| }
 | |
| // ----
 | |
| // getVoteCount(address): 0 -> 0
 | |
| // getVoteCount(address): 1 -> 0
 | |
| // getVoteCount(address): 2 -> 0
 | |
| // vote(address,address): 0, 2 -> false
 | |
| // getVoteCount(address): 0 -> 0
 | |
| // getVoteCount(address): 1 -> 0
 | |
| // getVoteCount(address): 2 -> 0
 | |
| // grantVoteRight(address): 0 ->
 | |
| // grantVoteRight(address): 1 ->
 | |
| // vote(address,address): 0, 2 -> true
 | |
| // getVoteCount(address): 0 -> 0
 | |
| // getVoteCount(address): 1 -> 0
 | |
| // getVoteCount(address): 2 -> 1
 | |
| // vote(address,address): 0, 1 -> false
 | |
| // getVoteCount(address): 0 -> 0
 | |
| // getVoteCount(address): 1 -> 0
 | |
| // getVoteCount(address): 2 -> 1
 | |
| // vote(address,address): 2, 1 -> false
 | |
| // getVoteCount(address): 0 -> 0
 | |
| // getVoteCount(address): 1 -> 0
 | |
| // getVoteCount(address): 2 -> 1
 | |
| // grantVoteRight(address): 2 ->
 | |
| // vote(address,address): 2, 1 -> true
 | |
| // getVoteCount(address): 0 -> 0
 | |
| // getVoteCount(address): 1 -> 1
 | |
| // getVoteCount(address): 2 -> 1
 |