在区块链的世界里,以太坊凭借其智能合约功能,成为了发行代币(通常指基于以太坊的代币)最流行、最灵活的平台之一,无论是用于项目众筹、社区治理,还是作为生态内的 utility 代币,在以太坊上发币都是许多开发者和项目方的首选,本文将为你详细拆解在以太坊上发行代币的全过程,从基础概念到实操步骤,助你轻松上手。

了解以太坊代币标准:ERC
在开始之前,我们需要明白以太坊上的代币通常遵循一定的“标准”,以确保它们与以太坊生态系统中的钱包、交易所和其他服务兼容,最常见的标准有:
对于大多数初学者和项目而言,ERC-20 是首选,本文将主要围绕 ERC-20 代币的发行进行讲解。
发行以太坊代币的准备工作
在动手编写代码之前,你需要做好以下准备:
明确代币用途和属性:
安装必要的开发工具:
npm install -g truffle 安装。选择开发环境:
创建 ERC-20 代币智能合约
ERC-20 代币的核心是其智能合约,你可以选择以下两种方式之一来创建:

使用 OpenZeppelin 标准合约库(推荐)
OpenZeppelin 是一个开源的智能合约库,提供了经过审计的安全标准模板,包括 ERC-20 代币的实现,使用它可以大大减少安全漏洞的风险。
安装 OpenZeppelin:如果你使用 Truffle 项目,在项目目录下运行 npm install @openzeppelin/contracts。
编写合约代码: 创建一个新的 Solidity 文件,MyToken.sol,然后编写如下代码:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract MyToken is ERC20 {
constructor(string memory name, string memory symbol) ERC20(name, symbol) {
_mint(msg.sender, 1000000 * 10 decimals()); // 发行 1,000,000 枚代币,假设小数位数为 18
}
}
SPDX-License-Identifier:许可证标识。pragma solidity ^0.8.0;:指定 Solidity 编译器版本。import "@openzeppelin/contracts/token/ERC20/ERC20.sol";:导入 OpenZeppelin 的 ERC20 合约。contract MyToken is ERC20:定义一个名为 MyToken 的合约,继承自 ERC20。constructor:构造函数,在合约部署时调用,这里我们传入代币名称和符号,并在构造函数中调用 _mint 函数向合约部署者(msg.sender)发行指定数量的代币。1000000 * 10 decimals() 表示发行 100 万代币,乘以 10^decimals() 是因为 OpenZeppelin 的 ERC20 默认小数位数为 18,你需要根据你的总供应量和小数位数调整计算方式,如果总供应量是 1,000,000,小数位数 18,那么就是 1000000 * 10**18。从零开始编写简单的 ERC-20 合约(不推荐初学者)

这种方式需要你实现 ERC-20 标准的所有接口函数(如 totalSupply, balanceOf, transfer, transferFrom, approve, allowance 等),代码量较大且容易出错,除非你有特殊需求,否则不建议采用。
编译智能合约
使用 Remix IDE:
MyToken.sol 代码粘贴到 "File Explorers" 标签页。使用 Truffle:
contracts 目录下放置你的 MyToken.sol。truffle-config.js 中配置编译器版本等。truffle compile 命令,编译成功后,生成的 ABI(应用二进制接口)和字节码会保存在 build/contracts 目录下。部署智能合约到以太坊网络
部署合约需要支付 gas 费,建议先在测试网(如 Ropsten, Goerli, Sepolia)进行测试,确认无误后再部署到主网。
准备测试网 ETH:
从官方水龙头(faucet)获取测试网 ETH,Goerli 水龙头:https://goerlifaucet.com/(注意:水龙头可能有每日限额或需要完成某些任务)。
配置 MetaMask:
在 MetaMask 中添加测试网络(如 Goerli Test Network),并导入你获取测试网 ETH 的账户。
部署合约:
使用 Remix IDE:
使用 Truffle:
创建一个迁移脚本(migrations script),2_deploy_contracts.js,放在 migrations 目录下:
const MyToken = artifacts.require("MyToken");
module.exports = function (deployer) {
deployer.deploy(MyToken, "My Awesome Token", "MAT");
}; 连接到测试网:truffle console --network <network_name>(truffle console --network goerli)。
在控制台中运行:migrate --network <network_name>,Truffle 会自动执行迁移脚本并部署合约。
免责声明:本文为转载,非本网原创内容,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如有疑问请发送邮件至:bangqikeconnect@gmail.com