2024最新版,以太坊ERC20代币完整开发与部署指南(从零到上链)

默认分类 2026-02-27 1:00 4 0

引言:为什么选择ERC20?

在区块链的世界里,以太坊无疑是智能合约和代币发行的摇篮,ERC20(Ethereum Request for Comments 20)是以太坊上最著名、应用最广泛的代币标准,它定义了一套统一的接口(规则),使得所有遵循该标准的代币都能在以太坊生态中的钱包、交易所和DApp(去中心化应用)之间无缝流转,无论是项目方的融资代币(如早期的STO、IEO),还是社区积分、NFT的辅助代币,ERC20都扮演着不可或缺的角色。

本教程将带你一步步,从环境搭建到代码编写,再到最终的代币部署,手把手教你创建属于你自己的第一个以太坊ERC20代币。


第一步:准备工作——搭建你的开发环境

在开始编码之前,我们需要准备好三样核心工具:

  1. 代码编辑器: 推荐使用 Visual Studio Code (VS Code),它轻量且拥有丰富的插件生态。
  2. Node.js 和 npm: Solidity智能合约的编译和部署通常需要Node.js环境,请访问 Node.js官网 下载并安装LTS(长期支持)版本,安装完成后,打开终端或命令行工具,输入 node -vnpm -v 确认安装成功。
  3. 以太坊钱包: 你需要一个钱包来支付部署智能合约所需的Gas费用,并接收你创建的代币,推荐使用 MetaMask,请前往 MetaMask官网 安装浏览器插件,并按照提示创建好你的钱包。切记:妥善保管你的助记词,切勿泄露!

第二步:创建项目并安装必要框架

为了简化开发流程,我们将使用业界最流行的以太坊开发框架 Hardhat

  1. 创建项目文件夹: 在你的终端中,输入以下命令,创建一个新的项目文件夹并进入其中。

    mkdir my-erc20-token
    cd my-erc20-token
  2. 初始化Hardhat项目: 运行以下命令,Hardhat会自动为你生成一个标准化的项目结构。

    npx hardhat

    在交互式界面中,选择 Create a JavaScript project,然后一路回车(或根据你的需求选择),完成项目初始化。

  3. 安装OpenZeppelin合约库: OpenZeppelin是一个提供安全、审计过的智能合约库的组织,我们将使用他们的ERC20模板,这能极大地保证我们代币的安全性和标准性。

    npm install @openzeppelin/contracts

第三步:编写智能合约代码

让我们来编写代币的核心逻辑。

  1. 找到合约文件:contracts 文件夹下,你会看到一个 Lock.sol 文件,我们可以重命名它,或者直接创建一个新文件,MyToken.sol

  2. 编写合约代码: 打开 MyToken.sol 文件,输入以下代码,代码中已经包含了详细的注释,解释了每一部分的作用。

    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.20;
    // 导入OpenZeppelin提供的标准ERC20合约
    import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
    // 继承ERC20合约,我们的代币将拥有所有ERC20标准的功能
    contract MyToken is ERC20 {
        // 构造函数,在合约部署时自动执行一次
        // _name: 代币的全称,"My Awesome Token"
        // _symbol: 代币的代码,"MAT"
        constructor(string memory _name, string memory _symbol) ERC20(_name, _symbol) {
            // msg.sender 是部署合约的地址(也就是你)
            // _totalSupply 是你希望创建的代币总供应量
            // 这里我们创建 1,000,000 个代币,乘以 10 的 18 次方是因为以太坊中最小的单位是 Wei,
            // 1 个代币 = 10^18 Wei,这是ERC20标准的要求。
            _mint(msg.sender, 1000000 * 10**18);
        }
    }

第四步:编译和测试合约

在部署到真实的以太坊主网之前,我们必须先在本地环境中进行测试和编译。

  1. 配置测试网络: 打开 hardhat.config.js 文件,我们需要添加一个本地的测试网络配置,确保文件中包含以下内容(如果使用Hardhat默认模板,它应该已经存在):

    require("@nomicfoundation/hardhat-toolbox");
    /** @type import('hardhat/config').HardhatUserConfig */
    module.exports = {
      solidity: "0.8.20",
      networks: {
        hardhat: {
          // forking 可以让你模拟以太坊主网的环境进行测试
          forking: {
            url: `https://eth-mainnet.g.alchemy.com/v2/YOUR_ALCHEMY_API_KEY`, // 你可以替换成自己的Alchemy或Infura API Key
          },
        },
      },
    };
  2. 编译合约: 在终端中运行以下命令,Hardhat会根据 hardhat.config.js 的配置来编译你的 MyToken.sol 合约。

    npx hardhat compile

    如果看到 Compiled successfully,说明编译成功!编译后的合约文件会保存在 artifacts/contracts/MyToken.sol/MyToken.json

  3. 编写测试脚本(可选但推荐):test 文件夹下创建一个 my-token.test.js 文件,编写一些简单的测试用例来验证你的代币是否按预期工作。


第五步:部署合约到以太坊测试网

为了确保一切正常,我们先在测试网上(如 Sepolia)进行部署,测试网的ETH是免费的,你可以从“水龙头”网站获取。

  1. 配置测试网: 你需要获取一个测试网的RPC URL和私钥,推荐使用 AlchemyInfura 创建一个项目,获取Sepolia测试网的URL,从你的MetaMask钱包中,导出你的测试网账户的私钥警告:请勿在代码中直接使用主网私钥!)。

    hardhat.config.js 中添加Sepolia网络的配置:

    require("@nomicfoundation/hardhat-toolbox");
    /** @type import('hardhat/c
    随机配图
    onfig').HardhatUserConfig */ module.exports = { solidity: "0.8.20", networks: { hardhat: { forking: { url: `https://eth-mainnet.g.alchemy.com/v2/YOUR_ALCHEMY_API_KEY`, }, }, sepolia: { url: "https://eth-sepolia.g.alchemy.com/v2/YOUR_SEPOLIA_API_KEY", // 替换成你的Sepolia RPC URL accounts: ["YOUR_TESTNET_PRIVATE_KEY"], // 替换成你的测试网私钥 }, }, };
  2. 创建部署脚本:scripts 文件夹下,创建一个 deploy.js 文件,内容如下:

    async function main() {
      // 获取要部署的合约工厂
      const MyToken = await ethers.getContractFactory("MyToken");
      // 部署合约,并传入代币名称和代码
      const myToken = await MyToken.deploy("My Awesome Token", "MAT");
      // 等待部署完成
      await myToken.deployed();
      // 输出部署成功的消息,包含合约地址
      console.log("MyToken deployed to:", myToken.address);
    }
    main()
      .then(() => process.exit(0))
      .catch((error) => {
        console.error(error);
        process.exit(1);
      });
  3. 执行部署: 在终端中,运行以下命令,将合约部署到Sepolia测试网。

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

    等待交易确认后,终端会输出你的代币合约地址。恭喜!你的ERC20代币已经成功部署到区块链上了!


第六步:验证和测试你的新代币

  1. 在区块浏览器中查看: 复制上一步输出的合约地址,粘贴到 Etherscan Sepolia (https://sepolia.etherscan.io/) 中,你就能看到你的代币交易记录、合约代码等信息。

  2. 在MetaMask中添加代币:

    • 打开你的MetaMask钱包,确保网络切换到 "Sepolia Test Network"
    • 点击资产