开发实例二
投票DApp
当你第一次打开Remix就会看到一个Ballot的合约,这是关于投票的示例,但是并不完善,下面我们来一步步的改进它。
鉴于已经是本书的第二个实例,因此基本概念不会在赘述,进度相对于实例一会快一些。
梳理思路
假设该智能合约里有一个投票项目,分为红方蓝方,每个投票者只能投一票并且要交保证金,当投票截止日期到了时合约owner会触发结算方法,公布结果的同时退还保证金。
因此合约里应该有针对红蓝的计数器、可供外部调用的投票方法、可供外部调用的查询票数统计方法、owner触发投票结束方法、退款方法。整体流程如下图:
锁定编译版本
这样的源代码文件不会使用早于版本0.4.0的编译器进行编译,并且它也不适用于从版本0.5.0开始的编译器(这个条件是使用^添加的)。要注意版本声明时 “^” 的意思。
// 不建议
pragma solidity ^0.4.0;
// 建议
pragma solidity 0.4.4;
如建议的那一句所示,我们指定了编译版本,因为在这个版本下我们测试最多,能保证质量。