美文网首页
区块链 智能合约 投票应用

区块链 智能合约 投票应用

作者: 酷酷de熊 | 来源:发表于2018-04-02 10:36 被阅读0次

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

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

    1. 智能合约代码

    智能合约结构体

    创建投票

    赋予投票权

    委托投票权

    进行投票

    查询获胜方案

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

    区块链 智能合约 投票应用

    address类型

    区块链 智能合约 投票应用

    状态变量

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

    本例中声明了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。

    区块链 智能合约 投票应用

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

    相关文章

      网友评论

          本文标题:区块链 智能合约 投票应用

          本文链接:https://www.haomeiwen.com/subject/ytuthftx.html