开发一个ERC20的智能合约,主要两种方式,一种是使用remix来开发,同时使用部署与发布;另一种是完全使用hardhat 与 ether.js在本地区;
先说第一种,Remix,只要管写智能合约就可以,不需要管EVM,不需要自己去创造网络与区块,不需要自己写前端的代码,和自动化测试代码;所以特别适合小白,我就是使用这种方式连接本地网络进行重载ERC20然后进行扩展一点点能力,代码如下:
//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract TERC20 is ERC20{
constructor(string memory name_,string memory symbol_) ERC20(name_,symbol_){
}
address caller = 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266;
address spender;
function setSpender(address s) public {
require(msg.sender==caller,"no");
spender =s;
}
function mint(address receiver,uint256 mount) public {
require((msg.sender==caller)||(msg.sender==spender),"no");
super._mint(receiver,mount);
}
}
主要完成使用本地网络(yard hardhat node;)+Remix中的hardhat provider 的方式,发布这个智能合约,然后进行各种操作;
1、启动本地网络 yarn hardhat node;
2、将remix 的环境改为hardhat provider,如下
3、编写如下代码,导入ERC20.sol的库,然后需要设置name,symbol;限制只有“92266”的地址及由“92266”授权的spender才能进行mint
4、部署时需要选择TERC20,因为是导入ERC20,所以会有四个合约可以发布,注意选择自己的合约。
5、发布时,修改Name,和Symbol
7、发布成功后,在执行日志中,会提示name和Symbol的内容;
8、选择非授权的地址进行mint时,会提示“no”;
10、地址重新选择回92266,执行就成功;
给自己mint 99999
12、调用totalSupply有多少,就会显示99999
13、然后测试approve