0.前言
上一节我们讲到了开发智能合约的准备工作,以及在线编程平台remix
智能合约(1)
这一节讲解如何开发、发行一个代币,并具备包括代币铸造mint,转账transfer和销毁burn功能,并确保合约拥有者owner的权限。
1.代码编写
我们使用代码生成工具完成代码编写,生成网址如下:
ERC20代码生成网址
也可以直接复制下面代码到remix,代码如下:
c
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";
contract MyToken is ERC20, ERC20Burnable, Ownable, ERC20Permit {
constructor(address initialOwner)
ERC20("MyToken", "MTK")//此处表示代币的名称和缩写
Ownable(initialOwner)
ERC20Permit("MyToken")
{}
function mint(address to, uint256 amount) public onlyOwner {
_mint(to, amount);
}
}
本文重点放在理解ERC20的术语含义和工作过程中
2.功能解释
在remix虚拟机完成部署后,会出现下列外部可见的函数
黄色代表这些函数需要写入区块链,需要交易费用gas,
蓝色则代表这些函数仅读取数据,无需交易费用gas.
mint
首先是mint铸造功能
输入地址和铸造数量即可向当前账户铸造名为"my token"的代币100个
查询余额发现账号增加了100代币
transfer
其次是transfer转账功能,
向另一个地址转账20个代币,
查询余额发现只剩80代币
查询被转帐的账户,发现余额成功转入20代币。
burn
销毁代币burn,
在余额足够的情况下,可以直接使用burn函数销毁自己名下的代币,此处我们使用剩余80代币的账户,销毁20代币
查询余额,可见剩余60代币,说明销毁成功。
totalSupply
总体供应量,用于查询全区块链剩余的代币总量,由于我们铸造了100代币,又销毁了20代币,所以当前全网剩余80代币,其中A账户60代币,B账户20代币。