零基础也能写:Solidity 快速发行 ERC-20 代币全流程

·

从 DeFi 治理币到游戏内通证,ERC-20 已成为以太坊生态最主流的代币标准之一。本文将带你用 ERC-20Solidity智能合约 三大关键词完成一次“从零到主网”的深度实战,兼顾代码细节与消费场景,确保程序员与产品经理都能读得懂、上手快。


一、准备武器:开发环境 5 分钟搞定

  1. 安装开发工具

    • Node.js 18.0+
    • npm → npm install -g truffle
    • Ganache 或本地 Hardhat Network
    • Chrome + MetaMask(助记词请抄写离线保存)
  2. 配置钱包测试网
    把 MetaMask 网络切到「Goerli」, faucet 领水 0.2 ETH 即可开启 ERC-20代币 全流程。

二、拆解 ERC-20 标准:6 个必补函数 + 2 个提醒

函数用途触发场景
totalSupply()查看代币总量浏览器读合约
balanceOf(account)查指定地址余额钱包余额刷新
transfer(to, amount)直接转账用户 A 发给用户 B
approve(spender, amount)授权他人代花DEX 合约调用
transferFrom(from, to, amount)代理转账Uniswap 成交
allowance(owner, spender)查授权剩余额度UI 显示授权上限

::: tip 两个提醒


三、30 行代码跑通首个 Solidity 代币

以下为最安全写法,直接继承 OpenZeppelin 的 audited 代码,减少重新踩坑:

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

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract KittenCoin is ERC20 {
    constructor() ERC20("KittenCoin", "CAT") {
        // 铸造 100 万枚并全部发到部署者地址
        _mint(msg.sender, 1_000_000 * 10 ** decimals());
    }
}

部署脚本示例(Hardhat):

const hre = require("hardhat");
async function main() {
  const cat = await hre.ethers.deployContract("KittenCoin");
  await cat.waitForDeployment();
  console.log("Deployed at:", cat.target);
}

运行指令:

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

一键出合约地址后,复制到 Etherscan「Verify & Publish」填 Compiler 版本 0.8.19,即可完成公开源码。


四、进阶玩法:增发、销毁与权限控制

1. 可增发代币(Mintable)

沿用 OpenZeppelin 的 ERC20PresetMinterPauser:

contract MintableCAT is ERC20PresetMinterPauser {
    constructor() ERC20PresetMinterPauser("MintableCAT", "MCAT") {}
}

MINTER_ROLE 可授予 DAO 多签,避免单一地址作恶。

2. 通缩模型(燃烧机制)

在转账或卖出时进行 burn,减少 ERC-20 总供应量:

function _transfer(address from, address to, uint256 amount) internal override {
    uint256 burn = amount * 2 / 100; // 2% 燃烧
    super._transfer(from, address(0), burn);
    super._transfer(from, to, amount - burn);
}

3. 黑名单风控(黑名单映射)

根据合规需求扩展,将指定地址禁止转账。注意更新时做好事件记录防止争议。


五、本地测试 vs 主网部署:三套工具对比

👉 想零基础部署首个代币,点这里看完整实战手记与开源脚本


六、合规与安全:不能跳过的 3 个 Checklist

  1. 审计
    主网部署前提交 CertiK、SlowMist 等至少中级审计。
  2. 税务
    在新加坡或瑞士发行做白名单,避开多国重复征税。
  3. 法律声明
    智能合约中增加「非证券」及「非投资建议」注释,可降低监管风险。

常见问题 FAQ

Q1:为什么同一个合约,MetaMask 显示 18 位小数?
A:Solidity 内部全部用整数计算,钱包端自己除 10^decimals() 展示。如把 decimals 设为 0,1 枚即 1 个单位,价格波动剧烈,新手慎用。

Q2:可以只在 Remix 上部署直接去 Uniswap 吗?
A:可以,但 Remix 没有经过源代码验证,在 DEX 地址栏粘贴合约,区块浏览器会提示风险,导致流动性池无人问津。请至少通过 Etherscan 验证。

Q3:Gas 费太贵,有没有 Layer2 直接发行?
A:Arbitrum、Optimism 都已支持 ERC-20 代币,部署成本小于 1 USD;跨链桥到主网后,即可在所有 DEX 交易。

Q4:如何空投给 10,000 地址而不失效率?
A:使用「Merkle Tree 空投」+「签名领取」模式,用户自提省 Gas,还可防范机器人薅羊毛。


七、彩蛋:代币经济模型 5 步小脚本

  1. 总量 100%:铸造 100 万枚 CAT
  2. 流动性池 40% → 锁仓 2 年,合约Ownership 转时间锁。
  3. 团队 15% → 1 年 cliff、24 月线性释放。
  4. 空投 20% → 早期 NFT 持有者快照。
  5. 社区奖励 25% → DAO 治理每月提案投票决定。

👉 领取完整经济模型 Excel 模板与 Google 表格链接


写在最后
发行 ERC-20代币 的技术门槛已经越来越低,但真正的差距来自 产品定位社区共识。把代码开源到 GitHub,用中文 README 做入门教程,再提交一次审计报告,你的项目就能在开发者圈层迅速积累首批忠实用户。祝各位都在下一轮牛市里「写合约,发真币」。