实现一个真正可用的艾西欧(上)

艾西欧在去年火遍了大江南北。各种艾西欧也是层出不穷,作为韭菜的我也随波逐流的参加了一些艾西欧,结果可想而知,现在已经腿斩了,回本遥遥无期啊。艾西欧有风险,参加需谨慎啊。

在参加艾西欧的过程中,我们应该也听过很多新鲜名词,什么“软顶”,“硬顶”。这对于刚进来的新韭菜来说完全不懂啊,我也是网上查了下,才明白什么意思。那么什么是“软顶”,什么是“硬顶”呢? 其实用代码来理解是非常简单的。

上一篇我们简单的实现了一个艾西欧,那个艾西欧肯定是不能上线用的,token的数量都没有限制(当然也不会有人给这样的艾西欧转ETH吧)可以无限增发,也没有测试。那么一个可以用的艾西欧应该要如何来写呢?

首先对于一个可以真正使用的艾西欧应该满足什么条件呢?我觉得应该要满足下面几点:

  1. 要根据筹集到的ETH增发相应的Token,当然可以设定筹集的最小值和最大值。当筹集的ETH没有达到最小值的时候,退还给参与艾西欧的投资者。当筹集的ETH达到最大值得时候,不再接受ETH。
  2. 支持预售。
  3. 可以给参与预售的人一定的折扣。
  4. 安全,没有bug。

在实现这么一个艾西欧的智能合约之前,我们需要使用到的工具:

  1. nodejs 8 和 npm
  2. Truffle 框架
  3. Ganache
  4. Open Zeppelin
  5. MetaMask

安装 Node js

这个应该很简单了,就不在介绍。

安装Truffle

Truffle 给我们提供了一种非常方便的方式来构建我们的智能合约。npm install -g truffle 直接安装就可以。

安装 Ganache

Ganache可以让你在自己的电脑上运行一个私有以太坊。这也是我们后面会发布合约运行测试用例要用到的链。上篇文章我们提到 Ganache-cli,这次我们使用的Ganache的客户端,Truffle默认的也是Truffle客户端,当然要使用Ganache-cli 也是可以的,只需修改下端口就行。直接到Ganache官网下载安装即可。安装后运行,一个私有的以太坊就在内存中运行起来了。

初始化项目

首先给我的艾西欧项目取一个名字,我就随便取了叫WebCrowdsale,同时发布的Token叫WebCoin

现在在我们的电脑上新建一个文件夹叫WebCrowdsale, 打开命令行,进入WebCrowdsale

在命令行执行 truffle init 初始化我们的项目。命令执行成功后,会看到生成了几个文件夹和一些文件:

WebCrowdsale/
     contracts/
     migrations/
     test/
     truffle.js
     truffle-config.js

其中 contracts是我们编写智能合约的目录, migrations是我们编写发布智能合约的目录, test 是测试目录,truffle.js 是truffle的配置文件。当我们编译我们的智能合约后,会生成一个build目录,就是放我们编译后文件的目录。

安装 Open Zeppelin

我们不应该重复造轮子,特别是涉及到钱的时候。重新造的轮子可能会存在一些未知的bug,导致程序出问题,而引起不必要的损失。在写智能合约的时候,要保持代码的简洁,代码越少越好。代码越少bug也会减少。

OpenZeppelin提供了ERC20 Token和 Crowdsale的模板给大家用,同时它为这些模板编写了测试完备的测试用例,这在很大程度上保证了代码的安全。所以我会在基于OpenZeppelin的基础上编写我们的艾西欧代码。

安装OpenZepplin。 命令行执行npm install [email protected]

我使用的是OpenZepplin的1.5.0的版本,在安装成功后,我们可以在node_modules/zeppelin-solidity 目录中查看提供的模板代码。

这次就写到这了,所有的都写出来,文章会很长,大家看的也累,所以决定分开三篇来写。这篇算是准备,下一篇写代码,最后一篇写如何发布到Ropsten测试网。

在继续之前,建议大家先去看下OpenZepplin中的合约代码,这对于后面编写自己的智能合约会有很大帮助。

你可能感兴趣的:(实现一个真正可用的艾西欧(上))