ETH 链发行自定义 ERC20 代币完整操作文档


基于Remix 在线 IDE+MetaMask 钱包,零本地开发环境,新手可完整落地;采用 OpenZeppelin 安全标准 ERC20 合约,支持测试网预部署、主网正式发币、合约验证、钱包添加代币全套流程。

风险提示:发行代币、上交易所、募资相关行为需遵守各国法律法规;主网部署消耗真实 ETH,合约上线前务必完成安全审计。

一、前置准备工具

1. MetaMask 浏览器钱包

  1. Chrome/Firefox 商店安装 MetaMask 插件,创建钱包并离线备份 12 位助记词,严禁泄露私钥;
  2. 网络切换:
    • 测试网:Sepolia(免费测试 ETH,无真实成本,推荐先测试)
    • 主网:Ethereum Mainnet(部署消耗真实 ETH)
  3. 获取 Gas 燃料:
    • Sepolia 测试网:水龙头网站领取免费测试 ETH,部署合约约消耗 0.01~0.02 测试 ETH;
    • 以太坊主网:交易所充值 ETH,部署 ERC20 合约 Gas 消耗约 0.05~0.1 ETH(随链上拥堵浮动)。

2. Remix Solidity IDE(在线编辑器)

浏览器打开官网:https://remix.ethereum.org,无需安装本地环境。

3. 代币参数提前确定(部署前必填)

表格

参数说明通用规范
Token Name代币全称Eco Green Coin
Symbol代币简称3~4 位大写字母,如EGC
Decimals代币小数位统一 18(ETH、主流代币标准)
Total Supply代币总发行量数值后补 18 个 0,1 亿代币 = 100000000000000000000000000

二、标准安全 ERC20 合约代码(OpenZeppelin)

新建文件MyToken.sol,复制以下代码,内置铸造、销毁、暂停安全功能,无溢出漏洞GitHub。

solidity

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

// 引入OpenZeppelin安全库
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/security/Pausable.sol";

contract MyToken is ERC20, ERC20Burnable, Ownable, Pausable {
    // 构造函数:部署时传入代币名称、代号、总供应量
    constructor(
        string memory name,
        string memory symbol,
        uint256 initialSupply
    ) ERC20(name, symbol) Ownable(msg.sender) {
        _mint(msg.sender, initialSupply); // 全部代币铸造给部署者钱包
    }

    // 紧急暂停所有转账(仅合约拥有者可操作)
    function pause() public onlyOwner {
        _pause();
    }

    // 解除转账暂停
    function unpause() public onlyOwner {
        _unpause();
    }

    // 增发代币(仅拥有者,可按需关闭此功能)
    function mint(address to, uint256 amount) public onlyOwner {
        _mint(to, amount);
    }

    // 转账前置校验:暂停状态禁止转账
    function _update(address from, address to, uint256 value) internal override whenNotPaused {
        super._update(from, to, value);
    }
}

三、合约编译操作步骤

  1. Remix 左侧「文件浏览器」新建MyToken.sol,粘贴上述完整代码;
  2. 左侧切换至「Solidity 编译器」:
    • Compiler 版本选择0.8.20(与合约 pragma 匹配);
    • 开启「Auto compile 自动编译」;
    • 点击「Compile MyToken.sol」,出现绿色对勾即编译成功,红色报错需修正代码CSDN博…。
  3. 编译成功后自动生成 ABI、Bytecode,用于链上部署。

四、部署代币合约(核心步骤)

步骤 1:配置部署环境

左侧切换「部署 & 运行交易」面板:

  1. Environment 环境下拉选择 Injected Provider – MetaMask
  2. MetaMask 弹窗授权 Remix 连接钱包,确认当前网络为 Sepolia 测试网(优先测试);
  3. Contract 合约下拉选中MyToken

步骤 2:填写代币参数并部署

在部署输入框按顺序填入代币全称、代币符号、总发行量

示例:"Eco Green Coin","EGC",100000000000000000000000000

  1. 点击「Deploy 部署」,MetaMask 弹出交易确认窗口;
  2. 自定义 Gas 费用:链上拥堵时调高 Gas Price,避免交易打包失败;
  3. 点击确认,等待区块打包确认(测试网约 10~30 秒,主网 1~5 分钟)。

步骤 3:保存合约地址

交易确认成功后,部署面板会显示已部署合约,复制合约地址0x...,妥善保存,后续添加钱包、验证合约、DEX 上币均需要。

五、合约源代码验证(Etherscan)

部署完成后,必须验证合约源代码,浏览器可查看合约逻辑,是代币公信力基础:

  1. 打开 Etherscan 对应网络页面(Sepolia 测试网 / 以太坊主网);
  2. 搜索框输入代币合约地址,进入合约页面;
  3. 切换「Contract – 验证合约」,填写信息:
    • 编译器版本:0.8.20;
    • 开源协议:MIT;
    • 上传完整 MyToken.sol 源码;
  4. 提交验证,几分钟后显示「Contract Verified」完成验证。

六、MetaMask 钱包添加自定义代币

  1. 打开 MetaMask 插件,切换至「资产」页面,点击「导入代币」;
  2. 代币合约地址粘贴部署时保存的0x开头地址;
  3. 自动识别代币符号、小数位,点击「导入」;
  4. 返回资产列表,即可查看持有的全部代币余额,支持转账、授权操作。

七、代币基础功能操作(Remix 交互面板)

部署成功后,Remix 部署面板会出现合约交互按钮,常用功能:

  1. totalSupply():查询代币总发行量;
  2. balanceOf(address):输入钱包地址,查询对应地址代币余额;
  3. transfer(to, amount):代币转账,输入接收地址、转账数量;
  4. burn(amount):销毁自身持有代币,减少总供应量;
  5. mint(to, amount):增发代币(仅部署钱包可调用);
  6. pause():紧急冻结全部转账(仅合约拥有者)。

八、测试网→主网完整迁移流程

  1. 先在 Sepolia 测试网完整走完:编译→部署→验证→钱包添加代币→转账测试;
  2. 确认合约无逻辑漏洞、转账 / 销毁 / 增发功能正常;
  3. MetaMask 切换网络为「Ethereum Mainnet」,确保钱包内有充足 ETH 支付 Gas;
  4. 重复第三、四章节编译、部署步骤,部署至以太坊主网;
  5. 主网合约部署完成后,同步完成 Etherscan 源码验证。

九、常见问题与故障排查

  1. 部署交易一直 pending(未打包) 解决:重新发起部署,调高 Gas Price;测试网水龙头补充测试 ETH,确保钱包余额充足。
  2. 合约编译红色报错 解决:检查 Solidity 版本与代码 pragma 匹配;网络正常加载 OpenZeppelin 依赖库。
  3. MetaMask 无法识别代币 解决:确认合约地址复制无误;合约已部署成功且区块确认完成。
  4. 调用 mint/pause 提示报错 解决:仅部署合约的钱包(合约拥有者)可调用管理员权限函数,其他地址无操作权限。

十、合规与安全补充说明

  1. 安全审计:主网正式上线前,必须委托第三方区块链安全公司审计合约代码,避免漏洞盗币;
  2. 法律合规:严禁发行代币开展非法募资、ICO;各国对加密资产监管政策不同,发行前需确认本地合规要求;
  3. 私钥安全:部署代币的钱包私钥、助记词离线存储,不联网备份;不要向任何人泄露私钥,避免代币被盗。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注