该合约为原创合约,性能要求如下
在⼀定工夫能进⾏投票超过工夫投票截⽌,并投同意票超过 50% 则为通过。
- 使⽤ safeMath 库,使⽤ Owner 第三⽅库
- 领有参加投票权的⽤户在创立合约时确定
- Voter 构造 要有工夫戳、投票是否批准等;
- struct 构造体
Proposal 提案
提案编号、提案工夫、提案内容、提案⼈、提案截⽌工夫、后果等。 - Voter 投票
投票工夫、态度等(也能够减少委托投票) - 性能(必要性能)
- vote 投票
getResult 后果 - 事件
Vote
Result 产⽣后果
首先咱们来测试其性能
1. 抉择三个投票账户进行部署
2. 各函数性能概述
constructor: 构造函数用于初始化合约。接管一个蕴含初始选民地址的数组,将这些地址增加到
eligibleVoters 映射中,示意这些地址是适合的选民。
submitProposal: 提交提案的函数。只有适合的选民能力提交提案。该函数创立一个新的提案对象,将其存储在 proposals 映射中。
vote: 进行投票的函数。只有适合的选民能力投票,且投票工夫必须在提案截止工夫之前。投票后果存储在 votes 映射中,并更新提案的赞成和拥护数量。
getResult: 获取提案后果的函数。只有在投票截止工夫之后能力调用该函数。计算赞成票的百分比,并判断提案是否通过,而后更新提案的状态并触发相应的事件。
getNextProposalId: 公有函数,用于生成下一个提案的惟一标识符。在示例中,它总是返回 1,理论利用中可能须要更简单的逻辑 3. 提交提案
4. 投票
账号 1,2,3 别离投票 5. 依据提案查看后果未点击 getResult
点击 getResult
6. 依据用户地址查看用户投票状况
版权申明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协定,转载请附上原文出处链接和本申明。
原文链接:https://blog.csdn.net/2302_77339802/article/details/134370557
文章起源:CSDN 博主「发愣 …」
文章原题目:《Solidity 案例详解(四)投票智能合约》
旨在流传区块链相干技术,如有侵权请与咱们分割删除。