目标
在本地测试环境发布 ERC20 代币,测试转账、查询。
开发环境:
- Truffle v4.1.14 框架
- Ganache 以太坊测试环境
- TutorialToken 打包好的 ERC20 示例,我们只需要写很少的代码即可,而且包含了前端页面
步骤
1. 创建项目
mkdir tokentest
cd tokentest
sudo npm install -g lite-server
# 下载安装 tutorialtoken
truffle unbox tutorialtoken
# 安装依赖 zeppelin-solidity
npm install zeppelin-solidity
truffle.js
module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 7545,
network_id: "*" // Match any network id
}
}
};
2. 代码
contracts/TutorialToken.sol
pragma solidity ^0.4.2;
import "zeppelin-solidity/contracts/token/ERC20/StandardToken.sol";
contract TutorialToken is StandardToken {
string public name = 'TutorialToken';
string public symbol = 'TT';
uint public decimals = 2;
uint public INITIAL_SUPPLY = 12000;
constructor() public{
totalSupply_ = INITIAL_SUPPLY;
balances[msg.sender] = INITIAL_SUPPLY;
}
}
3. 部署
迁移脚本 migrations/2_deploy_contracts.js
var TutorialToken = artifacts.require("./TutorialToken.sol");
module.exports = function(deployer) {
deployer.deploy(TutorialToken);
};
执行命令:
## 编译
$ truffle compile
## 部署
$ truffle migrate
4. 测试
修改 src/js/app.js 中的连接地址:
...
// 要改成测试网络的地址,Ganache 默认是'http://127.0.0.1:7545'
App.web3Provider = new Web3.providers.HttpProvider('http://127.0.0.1:7545');
...
启动:
npm run dev
会自动打开页面:
显示余额,可以转账。
测试转账,打开 Ganache 界面,找一个账户,比如拷贝第3个账户的地址,然后填到页面输入框,并填写转账金额,比如 1000:
提交后,页面显示的余额会自动改变。
我们到控制台中查看一下目标账户(第3个账户)的余额:
# 进入控制台
$ truffle console
# 获取合约实例
truffle(development)> TutorialToken.deployed().then(instance => token = instance)
# 查看默认账户余额
truffle(development)> token.balanceOf(web3.eth.coinbase)
BigNumber { s: 1, e: 3, c: [ 9000 ] }
# 查看目标账户余额
truffle(development)> token.balanceOf(web3.eth.accounts[2])
BigNumber { s: 1, e: 3, c: [ 3000 ] }
完成。