使用 Solidity 语言编写智能合约创建一个投票平台的代码
时间: 2023-03-31 07:01:33 浏览: 146
Solidity智能合约语言.pdf
你好,以下是使用 Solidity 语言编写智能合约创建一个投票平台的代码:
pragma solidity ^.4.24;
contract Voting {
// 投票选项
struct Option {
string name; // 选项名称
uint voteCount; // 投票数
}
// 投票信息
struct Ballot {
string name; // 投票名称
Option[] options; // 投票选项
mapping(address => bool) hasVoted; // 是否已投票
}
Ballot[] public ballots; // 投票列表
// 创建投票
function createBallot(string _name, string[] _optionNames) public {
Ballot memory newBallot = Ballot({
name: _name,
options: new Option[](_optionNames.length)
});
for (uint i = ; i < _optionNames.length; i++) {
newBallot.options[i] = Option({
name: _optionNames[i],
voteCount:
});
}
ballots.push(newBallot);
}
// 投票
function vote(uint _ballotIndex, uint _optionIndex) public {
Ballot storage ballot = ballots[_ballotIndex];
require(!ballot.hasVoted[msg.sender], "您已经投过票了");
Option storage option = ballot.options[_optionIndex];
option.voteCount++;
ballot.hasVoted[msg.sender] = true;
}
// 获取投票结果
function getBallotResult(uint _ballotIndex) public view returns (string[], uint[]) {
Ballot storage ballot = ballots[_ballotIndex];
string[] memory optionNames = new string[](ballot.options.length);
uint[] memory voteCounts = new uint[](ballot.options.length);
for (uint i = ; i < ballot.options.length; i++) {
Option storage option = ballot.options[i];
optionNames[i] = option.name;
voteCounts[i] = option.voteCount;
}
return (optionNames, voteCounts);
}
}
阅读全文