6 发行一个ERC20 Token
// https://learnweb3.io/courses/9a3fafe4-b5eb-4329-bdef-97b2aa6aacc1/lessons/7296fe93-c7c0-4ea6-a986-ddb40274227f
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol";
// “is” means 是ERC20的一个实例instance 可以理解成继承
contract LW3Token is ERC20 {
// 类似于构造函数 在合约第一次部署时被执行
// 后面这个ERC20是我们继承的ERC20合约的构造函数,因此我们需要用得到的_name _symbol为它初始化
constructor(string memory _name, string memory _symbol) ERC20(_name, _symbol) {
// 在部署的时候为当前的主人(发起transaction的address)制造一些tokens
// 注意solidity中不支持浮点数(小数),他的计数方式是相对于最小数的描述方式:如ERC20 tokens默认为18位,这里的10*10**18代表的是10 full tokens
_mint(msg.sender, 10 * 10 ** 18);
}
}
// 部署在Goerli上后(也可选用其他测试网)可以去https://goerli.etherscan.io/ 查看(复制合约地址进行搜索)
// 查看metamask钱包会发现刚刚发行的个人代币并没有显示出来,
// 这是因为一般只有有名的那几个ERC20代币会被自动检测,像个人发行的这种只能手动添加
// ?为什么显示为0呢
原来是由于.sol文件名和里面的contract名不一致(编译并不会报错)
修改后成功显示10