Skip to content

基于 Hardhat + OpenZeppelin 的自定义 ERC20 代币项目,支持 Mint、Burn、Owner 管理和批量增发功能,已支持 Sepolia 测试网部署和 Etherscan 验证。

Notifications You must be signed in to change notification settings

zane3412/erc20-token-hardhat2

Repository files navigation

MyToken ERC20 项目

基于 Hardhat + OpenZeppelin 的自定义 ERC20 代币项目,支持 Mint、Burn、Owner 管理和批量增发功能,已支持 Sepolia 测试网部署和 Etherscan 验证。


📌 功能特性

  • 标准 ERC20 代币
  • 支持销毁代币(Burnable)
  • 支持 Owner 增发代币(Mintable)
  • 支持批量 Mint
  • 部署完成后可自动 Etherscan 验证源码
  • 可通过测试脚本进行转账、授权、transferFrom 等操作

📂 项目结构

.
├── contracts/
│   └── MyToken.sol        # ERC20 合约
├── scripts/
│   └── deploy.js          # 部署脚本,自动验证
├── test/
│   └── test-token.js      # 测试合约交互脚本
├── hardhat.config.js      # Hardhat 配置文件
└── package.json

⚙️ 环境准备

  1. 安装 Node.js(>=18 推荐)
  2. 安装依赖:
npm install
  1. 配置环境变量(使用 enc-env 管理):
  • PRIVATE_KEY:部署钱包私钥
  • ALCHEMY_KEY:Alchemy API Key
  • ETHERSCAN_API_KEY:Etherscan API Key

📝 合约说明

contracts/MyToken.sol

// 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";

contract MyToken is Ownable, ERC20, ERC20Burnable {
    constructor(uint256 initialSupply) ERC20("MyToken", "MTK") Ownable(msg.sender) {
        _mint(msg.sender, initialSupply * 10 ** decimals());
    }

    function mint(address to, uint256 amount) public onlyOwner {
        _mint(to, amount);
    }
}

功能

  • mint(address to, uint256 amount):仅 Owner 可调用,增发代币
  • 内置 burn 方法,可销毁持有代币

⚙️ Hardhat 配置

hardhat.config.js

require("@nomicfoundation/hardhat-toolbox");
require("@chainlink/env-enc").config();
require("@nomicfoundation/hardhat-verify");

const privateKey = process.env.PRIVATE_KEY;
const alchemyKey = process.env.ALCHEMY_KEY;
const etherscanKey = process.env.ETHERSCAN_API_KEY;

module.exports = {
  solidity: "0.8.28",
  networks: {
    sepolia: {
      url: `https://eth-sepolia.g.alchemy.com/v2/${alchemyKey}`,
      accounts: [privateKey],
    },
  },
  etherscan: {
    apiKey: etherscanKey
  }
};

🚀 部署合约

运行部署脚本:

npx hardhat run scripts/deploy.js --network sepolia

部署脚本功能:

  1. 部署 MyToken 合约
  2. 自动调用 Etherscan 验证源码(verify:verify)
  3. 控制台输出合约地址

🧪 测试合约交互

运行测试脚本:

node test/test-token.js

测试内容:

  • 查询余额
  • 转账 100 个代币给其他账户
  • 授权和 transferFrom(Addr2 从 Owner 转账)
  • 批量增发 10 个代币给 Addr1 和 Addr2
  • 查询最终余额

📊 Etherscan 验证效果截图

(在此粘贴一张 Etherscan 验证成功截图,展示 Verified 标志和合约源码)


📌 依赖安装

npm install

主要依赖:

  • @openzeppelin/contracts
  • @nomicfoundation/hardhat-toolbox
  • @nomicfoundation/hardhat-verify
  • @chainlink/env-enc

Etherscan 验证效果截图 Etherscan 验证效果截图

About

基于 Hardhat + OpenZeppelin 的自定义 ERC20 代币项目,支持 Mint、Burn、Owner 管理和批量增发功能,已支持 Sepolia 测试网部署和 Etherscan 验证。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published