智能合约
编程语言:Solidity
以太坊智能合约的 demo,实现了一个简单的投票系统,具体代码如下:
pragma solidity >=0.4.22 <0.7.0;
contract Voting {
mapping (bytes32 => uint8) public votesReceived;
bytes32[] public candidateList;
constructor(bytes32[] memory candidateNames) public {
candidateList = candidateNames;
}
function totalVotesFor(bytes32 candidate) view public returns (uint8) {
require(validCandidate(candidate));
return votesReceived[candidate];
}
function voteForCandidate(bytes32 candidate) public {
require(validCandidate(candidate));
votesReceived[candidate] += 1;
}
function validCandidate(bytes32 candidate) view public returns (bool) {
for(uint i = 0; i < candidateList.length; i++) {
if (candidateList[i] == candidate) {
return true;
}
}
return false;
}
}
上述智能合约实现了一个简单的投票系统。构造函数用于初始化候选人列表,通过 mapping 映射将候选人名称与其得票数建立关联。通过函数 totalVotesFor 可以返回指定候选人的当选票数,函数 voteForCandidate 可以将某位候选人的得票数加一,函数 validCandidate 用于验证候选人名称是否在候选人列表中。
这只是一个简单的 demo,实际应用的智能合约需要更加完善的逻辑和安全性检查。同时实际开发中还需要考虑 gas 费用、合约存储空间等问题。