開發(fā)一個(gè)ERC20的智能合約,主要兩種方式,一種是使用remix來開發(fā),同時(shí)使用部署與發(fā)布;另一種是完全使用hardhat 與 ether.js在本地區(qū);
先說第一種,Remix,只要管寫智能合約就可以,不需要管EVM,不需要自己去創(chuàng)造網(wǎng)絡(luò)與區(qū)塊,不需要自己寫前端的代碼,和自動化測試代碼;所以特別適合小白,我就是使用這種方式連接本地網(wǎng)絡(luò)進(jìn)行重載ERC20然后進(jìn)行擴(kuò)展一點(diǎn)點(diǎn)能力,代碼如下:
//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);
? ? ?}
}
主要完成使用本地網(wǎng)絡(luò)(yard hardhat node;)+Remix中的hardhat provider 的方式,發(fā)布這個(gè)智能合約,然后進(jìn)行各種操作;
1、啟動本地網(wǎng)絡(luò) yarn hardhat node;

2、將remix 的環(huán)境改為hardhat provider,如下

3、編寫如下代碼,導(dǎo)入ERC20.sol的庫,然后需要設(shè)置name,symbol;限制只有“92266”的地址及由“92266”授權(quán)的spender才能進(jìn)行mint

4、部署時(shí)需要選擇TERC20,因?yàn)槭菍?dǎo)入ERC20,所以會有四個(gè)合約可以發(fā)布,注意選擇自己的合約。

5、發(fā)布時(shí),修改Name,和Symbol?

7、發(fā)布成功后,在執(zhí)行日志中,會提示name和Symbol的內(nèi)容;

8、選擇非授權(quán)的地址進(jìn)行mint時(shí),會提示“no”;


10、地址重新選擇回92266,執(zhí)行就成功;

給自己mint 99999


12、調(diào)用totalSupply有多少,就會顯示99999

13、然后測試approve






