使用truffle+openzeppelin构建ERC20代币
昨天说不用truffle来着,想着remix蛮好的。
今天。 艾玛真香~
Error:Could not find artifacts for MetaCoin from any sources
原来migration文件夹下的js文件是需要排序的。
所以命名格式不能乱1_xx_xx.js后面随意。
后面几个报错就不说了,都是这种比较粗心的。
1.安装openzeppelin
在GitHub上这个已经0.6.0了,但是npm安装下来是0.4.x的。
npm install zeppelin-solidity
2.需要在truffle-config.js中配置版本
compilers: {
solc: {
version: "^0.4.24", // Fetch exact version from solc-bin (default: truffle's version)
// docker: true, // Use "0.5.1" you've installed locally with docker (default: false)
// settings: { // See the solidity docs for advice about optimization and evmVersion
// optimizer: {
// enabled: false,
// runs: 200
// },
// evmVersion: "byzantium"
// }
}
}
3.创建合约和对应js
pragma solidity ^0.4.24;
import "../node_modules/zeppelin-solidity/contracts/token/ERC20/StandardToken.sol";
contract coin is StandardToken {
string public name = "pcl";
string public symbol = "pcl";
uint8 public decimals = 18;
uint256 public INITIAL_SUPPLY = 888888;
constructor() public{
totalSupply();
balances[msg.sender] = INITIAL_SUPPLY;
}
}
//文件名:1_deploy_coin,因为我把初始文件删了。
var coin = artifacts.require("./coin.sol");
module.exports = function(deployer) {
deployer.deploy(coin);
};
4.编译和测试
编译:
truffle compile
再进入develop下(当然也可以进去在编译)
truffle develop
然后部署
migration
几个常用命令:
account //这个是直接打印出当前账户
migrate --reset //重新部署(不知道可以reset时候我就每次都要出去compile一遍。心态崩了。)
coin.deployed().then(t => con = t); //创建合约实例为con
con.func())//调用函数
con.func.call() //没有pure的时候需要call
听说Windows那个terminal好像很强:
https://github.com/microsoft/terminal