以太坊作为全球领先的智能合约平台,其上的ERC20代币标准成为了发行可替代代币(如稳定币、功能型代币等)的黄金标准,无论是初学者还是有一定经验的开发者,掌握ERC20代币的开发都是进入区块链领域的重要一步,本文将带你从零开始,一步步完成一个ERC20代币的开发、测试和部署。
什么是ERC20代币
ERC20(Ethereum Request for Comments 20)是一个以太坊代币的技术标准,它定义了一套接口(Interface),使得所有符合该标准的代币都能在以太坊生态中统一交互,就像比特币在每个钱包中都能以相同的方式显示和交易一样,ERC20代币也可以在任何支持ERC20标准的钱包、交易所和DApp中使用。
ERC20标准要求代币合约必须实现以下基本函数(至少):
name(): 返回代币的完整名称,如 "MyToken"。
symbol(): 返回代币的简称,通常2-3个字符,如 "MTK"。
decimals(): 返回代币的小数位数,用于分割代币,如18位表示可以分割到1e-18。
totalSupply(): 返回代币的总供应量。
balanceOf(address _owner): 返回指定地址的代币余额。
transfer(address _to, uint256 _value): 向指定地址转移代币。
transferFrom(address _from, address _to, uint256 _value): 从指定地址转移代币(通常需要授权)。
>
-
启动Ganache
打开Ganache桌面应用,点击 "QUICKSTART" 按钮,它会启动一个本地区块链,并提供10个测试账户,每个账户有100个ETH(默认),记下其中一个账户的RPC Server地址(如 HTTP://127.0.0.1:7545)和私钥(用于后续测试)。
-
配置Truffle连接Ganache
打开 truffle-config.js 文件,添加以下配置(如果还没有的话):
module.exports = {
networks: {
development: {
host: "127.0.0.1", // Localhost (default: none)
port: 7545, // Standard Ethereum port (default: none)
network_id: "*", // Any network (default: none)
},
},
compilers: {
solc: {
version: "0.8.0", // 指定Solidity编译器版本,与合约中一致
}
}
};
注意:port 要与Ganache中显示的端口一致,network_id 通常可以设置为 或 5777(Ganache默认网络ID)。
-
创建部署脚本
打开 migrations/ 目录,创建一个新的部署脚本文件,2_deploy_contracts.js:
const MyToken = artifacts.require("MyToken");
module.exports = function (deployer) {
deployer.deploy(MyToken, "My Awesome Token", "MAT");
};
代码解释:
artifacts.require("MyToken") 获取编译好的合约对象。
deployer.deploy(MyToken, "My Awesome Token", "MAT") 部署合约,并传入构造函数所需的参数(代币名称和简称)。
-
执行部署
在项目根目录终端中,运行以下命令:
truffle migrate --network development
如果成功,你会看到部署过程,以及合约部署后的地址,记下这个地址,后续会用到。