元宇宙之小白开发(23) -- 开发一个ERC20的智能合约

开发一个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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容