区块链学习笔记:投票智能合约 之 授权与投票

in HIVE CN 中文社区3 years ago (edited)

这次需要增加两个功能函数,分别为授权和投票。

对于授权,有以下3个要求,

1、只有只有投票发起者才有权限为别人授权

2、被授权者从未投过票

3、被授权者没有被授权过

而对于投票,则要求比较简单,

1、不能重复投票

来尝试继续编写下代码,如下图,

001.jpeg

编译没有问题。

来测试下,

002.jpeg

这里可能有人要问我,之前那个参数那里,不是要输入32 byte long 的吗?
哦,案例上是那样写的,但我感觉太麻烦了,于是将byte32[] 修改成为string[]类型了,所以就可以直接输入string数组。

ps,先前教程上说solidity没有string的数组类型,但我尝试了下是可以的,不知道是不是之前旧版本没有,而新版本增加这个功能了?
我个人觉得,鉴于solidity是强类型语言,如果没有一些基本的如string数组支持,光是变量之间的转换,确是很不方便的。

输入要授权的地址,测试OK,然后查询下,

003.jpeg

正确。

切换账户身份,从发起者切换成普通用户,试着投票下,见如下图,

004.jpeg

发现数组为0的该地址账户,
weight =1 ;
voted 为true;

一切都很顺利。

不要迷信教程,教程也不一定都对,很可能因为各种原因,教程有些地方会过时或出错,又或者新版本弃用了旧的写法等,这个时候就需要勤动手,多思考,真正理解意思,而不是生搬硬套。

Sort:  

不要迷信教程,教程也不一定都对,很可能因为各种原因,教程有些地方会过时或出错,又或者新版本弃用了旧的写法等,这个时候就需要勤动手,多思考,真正理解意思,而不是生搬硬套 - 嗯,还是要多加摸索和学习,精益求精~

先转发下,有空再来研究。谢谢伟哥的分享。