在区块链世界中,以太坊作为全球最大的智能合约平台,为代币发行提供了成熟的技术生态,无论是社区项目、NFT、稳定币还是治理代币,绝大多数以太坊代币都遵循ERC(以太坊征求意见稿)标准发行,本文将以最主流的ERC-20代币( fungible token,同质化代币)为例,拆解从准备到上线的完整流程,并补充其他常见代币类型的区别,助你零基础掌握以太坊代币发行。
发行前的核心准备:明确目标与技术选型
在敲下第一行代码前,清晰的规划是避免“返工”的关键,需要明确三个核心问题:代币用途、代币标准、发行方式。
明确代币用途与经济模型
代币不是“空气”,其价值需要场景支撑,先问自己:
- 这枚代币用来做什么?(社区治理投票、平台内支付、NFT权益证明、项目生态激励等)
- 是否需要总量限制?是否需要增发/销毁机制?
- 是否需要预设特定地址(如团队地址、生态基金地址)的锁仓计划?
用途越具体,代币设计越合理,也越容易获得社区信任。
选择代币标准
以太坊的代币标准主要分为三类,根据需求选择:
- ERC-20:同质化代币,即每一枚代币完全相同(如SHIB、USDT),适用于支付、稳定币、社区积分等场景。这是最主流的选择,本文重点讲解。
- ERC-721:非同质化代币(NFT),每一枚代币独一无二(如CryptoPunks),适用于艺术品、收藏品、房产凭证等。
- ERC-1155:多代币标准,支持同质化与非同质化代币共存(如游戏内的道具、货币),适合游戏、元宇宙等复杂场景。
确定发行方式
代币发行可分为“自主发行”和“通过发行平台发行”:
- 自主发行:通过编写智能合约直接部署,灵活性高,但需要一定开发能力,适合有技术团队的项目。
- 发行平台:借助OpenZeppelin、CoinTool等第三方工具,通过可视化界面生成合约,适合零代码基础用户,但定制化较弱。
本文以“自主发行”为例,覆盖从代码到部署的全流程。
技术准备:开发环境与工具部署
编写智能合约需要以太坊开发环境,核心工具包括:Solidity(智能合约编程语言)、Remix IDE(在线开发工具)、MetaMask(钱包插件)。
安装必备工具
- MetaMask:浏览器钱包(支持Chrome、Firefox等),用于管理私钥、与以太坊网络交互、支付部署 gas 费,访问 metamask.io 下载安装,创建钱包并备份助记词(⚠️ 助记词即资产,切勿泄露!)。
- Remix IDE:在线集成开发环境(无需安装),支持智能合约编写、编译、测试、部署,访问 remix.ethereum.org 即可使用。
了解以太坊网络与Gas
以太坊上任何操作(如合约部署、转账)都需要支付“Gas”,即网络手续费,以ETH计价,Gas费由“Gas Limit”(最大 gas 量)和“Gas Price”(单位 gas 价格)决定:
- Gas Limit:预估操作消耗的 gas 量,部署ERC-20合约约需 200,000-500,000 gas(具体取决于代码复杂度)。
- Gas Price:单位 gas 的价格,用Gwei(1 ETH = 10^9 Gwei)表示,价格越高,交易被矿工打包越快(可通过 Etherscan Gas Tracker 查看实时建议价格)。
部署前需确保MetaMask中有足够的ETH(建议至少0.1 ETH,用于支付gas费)。
编写ERC-20代币智能合约(以Solidity为例)
ERC-20代币的核心功能由IERC20接口(定义标准方法)和ERC20合约(实现具体逻辑)构成,我们可以基于OpenZeppelin(以太坊安全合约库)的模板编写,避免重复造轮子且降低安全风险。
在Remix IDE中创建合约
- 打开Remix IDE,点击左侧“File”图标,创建新文件,命名为
MyToken.sol。 - 粘贴以下ERC-20合约代码(以OpenZeppelin 4.9.3版本为例):
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
contract MyToken is ERC20, Ownable {
constructor(string memory name, string memory symbol) ERC20(name, symbol) Ownable(msg.sender) {
// 代币总量:1亿,18位小数(以太坊标准)
_mint(msg.sender, 100000000 * 10**18);
}
}
代码解析
SPDX-License-Identifier: MIT:开源协议,声明合约可自由使用。pragma solidity ^0.8.20:指定Solidity编译器版本(0.8.20及以上,避免低版本漏洞)。import "@openzeppelin/contracts/token/ERC20/ERC20.sol":导入OpenZeppelin的ERC-20标准合约,包含totalSupply()、balanceOf()、transfer()等核心方法。import "@openzeppelin/contracts/access/Ownable.sol":导入所有权合约,限制mint()(增发)等方法仅合约所有者(部署者)可调用。contract MyToken is ERC20, Ownable:继承ERC-20和Ownable,获得代币功能与权限控制。constructor(string memory name, string memory symbol):构造函数,在部署时执行,用于设置代币名称(name)和符号(symbol)。_mint(msg.sender, 100000000 * 10**18):初始铸币,将1亿枚代币(18位小数,实际为1亿*10^18个最小单位)铸造给部署者(
msg.sender即MetaMask当前账户)。
自定义参数(可选)
可根据需求调整代码:
- 修改代币总量:将
100000000改为目标数值(如10亿:1000000000)。 - 增加小数位数:ERC-20标准支持0-18位小数,默认18位(如USDT有6位小数,需将
10**18改为10**6)。 - 添加预分配地址:在构造函数中增加
_mint(address1, amount1); _mint(address2, amount2);,为不同地址预设代币。
编译与测试合约:确保代码正确性
部署前必须编译合约,检查代码是否存在语法错误。
编译合约
- 在Remix IDE左侧点击“Solidity Compiler”图标(第二个)。
- 确认“Compiler Version”与代码中
pragma solidity版本一致(如0.8.20)。 - 点击“Compile MyToken.sol”,若无报错,下方会显示绿色对勾✅。
测试合约(可选)
如果需要更复杂的测试(如转账、授权),可使用Remix的“Deploy & Run Transactions”功能:
- 切换到“Deploy & Run Transactions”图标(第三个)。
- “ENVIRONMENT”选择“Remix VM (London)”——这是Remix内置的本地测试网络,无需真实ETH。
- “ACCOUNT”选择任意测试账户(默认有多个,每个有10000个测试ETH)。
- 点击“Deploy”部署合约到测试网络,测试功能无误后再部署到主网。
部署合约到以太坊主网
测试通过后,即可将合约部署到以太坊主网(正式上线的网络)。
连接MetaMask与主网
- 在Remix“Deploy & Run Transactions”界面,“ENVIRONMENT”选择“Injected Provider - MetaMask”(连接MetaMask钱包)。
- MetaMask会弹出窗口,确认连接当前网站(需在MetaMask中点击“连接”)。
- 确认网络为“Ethereum Mainnet”(主网),若显示“Goerli Testnet”等测试网络,需在MetaMask中手动切换到主网(点击右上角网络名称,选择“主网”)。
部署合约
- “CONTRACT”选择“MyToken - MyToken.sol”(下拉