4-1,ETH代币开发

在本节,我们使用Geth+Truffle来进行快速代币开发并使用Mist+MetaMask进行测试。

Prerequisition:

安装Node.js:

Node.js可从如下网站下载:

https://nodejs.org/zh-cn/download/
http://nodejs.cn/download/

安装truffle:

使用如下命令:

npm install -g truffle

Truffle简介:

Truffle是一套基于Javascript语言的Solidity 本地开发框架,其特点如下(来自官方):
首先对客户端做了深度集成。开发,测试,部署一行命令都可以搞定。不用再记那么多环境地址,繁重的配置更改,及记住诸多的命令。
它提供了一套类似maven或gradle这样的项目构建机制,能自动生成相关目录,默认是基于Web的。当前这个打包机制是自定义的,比较简陋,不与当前流行打包方案兼容。但自已称会弃用,与主流兼容,好在它也支持自定义打包流程。
提供了合约抽象接口,可以直接通过var meta = MetaCoin.deployed();拿到合约对象后,在Javascript中直接操作对应的合约函数。原理是使用了基于web3.js封装的Ether Pudding工具包。简化开发流程。
提供了控制台,使用框架构建后,可以直接在命令行调用输出结果,可极大方便开发调试。
提供了监控合约,配置变化的自动发布,部署流程。不用每个修改后都重走整个流程。

正文:

1,首先,运行第三节的命令启动Geth客户端,开始挖矿;

网上很多教程讲了Truffle+gananche,truffle+ethereumjs-testrpc 来做开发,基本大同小异。

启动挖矿之后开始准备开发工作。

启动Node.js客户端或者CMD命令行:,

2,创建Token文件夹,此处名称为KevinToken

mkdir KevinToken

3,进入 文件夹:

cd KevinToken

 4,使用truffle的unbox命令下载tutorialtoken这个项目作为范例,创建ERC20代币智能合约的骨架

truffle unbox tutorialtoken

中间可能由于网络问题下载失败,多试几次。

出现如下结果表示成功:


5,安装第三方library:zeppelin-solidity

npm install zeppelin-solidity

Zeppelin是一种构建安全智能合约的开源架构,与truffle集成,是一个事实上的业界标准库,基于zeppelin可以很快的开发出代币。


6,上述步骤完成之后就可以开发智能合约,编写如下智能合约到KevinToken/contracts目录中。

pragma solidity 0.4.24;
import 'zeppelin-solidity/contracts/token/ERC20/StandardToken.sol';

contract KevinToken is StandardToken {
	string public name = "KevinToken";
	string public symbol = "K";
	uint8 public decimals = 4;
	uint public INITIAL_SUPPLY = 2550000000;
function KevinToken() public {
	totalSupply_ = INITIAL_SUPPLY;
	balances[msg.sender] = INITIAL_SUPPLY;
}
}

从代码中可以看到,此合约继承了Zppelin-solidity中的StandardToken合约,在StandardToken合约中已经定义了所有的操作,因此此合约只需要做几个简单的定义(有兴趣可以查看StandarToken合约及其父合约定义):

  • Token名称:“KevinToken”
  • Token标识:“K”;
  • Token精度为:4位;
  • 初始供应量和总供应链都为255000个,即不需要挖矿。

7,编写deploy脚本:2_deploy_contracts.js用于在区块链中部署合约,保存至KevinToken/migrations目录中

var KevinToken = artifacts.require("./KevinToken.sol");
module.exports = function(deployer){
deployer.deploy(KevinToken);
}

合约及部署文件编写完毕。

8,编译智能合约

truffle.cmd compile

9,部署智能合约

truffle.cmd migrate

可以看到以下部署内容,同时在Geth客户端可以看到有不同的transaction产生。此处还执行了一个已经存在的migration合约主要是为了防止合约的重复部署。

至此,合约开发完毕,下一步就可以进行测试代币是否工作完好。

猜你喜欢

转载自blog.csdn.net/fpx157/article/details/80707266
4-1