区块链 智能合约 投票应用

智能合约实现了一个自动化且透明的投票应用。

投票发起人可以发起投票,将投票权赋予投票人;投票人可以自己投票,或将自己的票委托给其他投票人;任何人都可以公开查询投票的结果。

1. 智能合约代码

智能合约结构体


创建投票

赋予投票权

委托投票权

进行投票


查询获胜方案


结构体类型Solidity中的合约(contract)类似面向对象编程语言中的类。

图片发自简书App


address类型

图片发自简书App


状态变量

合约中的状态变量会长期保存在区块链中。通过调用合约中的函数,这些状态变量可以被读取和改写。

本例中声明了3个状态变量:chairperson、voters、proposals:

·address public chairperson:投票发起人,类型为address;

·mapping(address=>Voter)public voters:所有投票人,类型为address到Voter的映射;

·Proposal[]public proposals:所有提案,类型为动态大小的Proposal数组。

3个状态变量都使用了public关键字,使得变量可以被外部访问(即通过消息调用)。

事实上,编译器会自动为public的变量创建同名的getter函数,供外部直接读取。

状态变量还可设置为internal或private。internal的状态变量只能被该合约和继承该合约的子合约访问,private的状态变量只能被该合约访问。状态变量默认为internal。

图片发自简书App


将上述关键状态信息设置为public能够增加投票的公平性和透明性。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容