以太坊作为全球最大的智能合约平台,为代币发行提供了强大而灵活的生态系统,无论是用于项目融资、社区激励、还是代表某种权益或资产,在以太坊上发行代币(通常指ERC-20标准的代币)是许多开发者和项目团队的必备技能,本文将为你提供一个详细、步骤清晰的指南,助你了解并完成在以太坊上发行代币的全过程。
为什么选择在以太坊发行代币?
在开始之前,了解以太坊发行代币的优势有助于你坚定信心:

发行以太坊代币前的准备工作
在敲下第一行代码之前,充分的准备至关重要:
明确代币的用途和目标:
确定代币标准:
准备开发环境:
获取以太币 (ETH):
部署智能合约到以太坊主网需要支付 Gas 费(矿工费),你需要一个拥有足够 ETH 的钱包来支付这些费用。
钱包软件:

如何在以太坊上发行ERC-20代币(步骤详解)
以下是基于 Hardhat 框架的 ERC-20 代币发行步骤:
创建项目并安装依赖
my-ethereum-token cd my-ethereum-token npm init -y
npm install --save-dev hardhat npx hardhat
在交互式提示中选择 "Create a basic sample project"(创建一个基本示例项目),并接受默认配置。
npm install @openzeppelin/contracts
编写智能合约
在 contracts 目录下,创建一个新的 Solidity 文件,MyToken.sol。
编写你的 ERC-20 代币合约,可以直接继承 OpenZeppelin 的 ERC20 合约,简化开发:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
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()); // 发行 100 万个代币,并考虑小数位数
}
}
name:代币全称,如 "My Awesome Token"。symbol:代币代码,如 "MAT"。_mint(msg.sender, 1000000 * 10**decimals()):在合约部署时,将 100 万个代币铸造(发行)给部署者(msg.sender)。decimals() 是代币的小数位数,通常为18(与ETH一致)。配置部署脚本
在 scripts 目录下,创建一个部署脚本,deploy.js:
async function main() {
const [deployer] = await ethers.getSigners();
console.log("Deploying contracts with the account:", deployer.address);
const MyToken = await ethers.getContractFactory("MyToken");
// 替换成你想要的代币名称和符号
const tokenName = "My Awesome Token";
const tokenSymbol = "MAT";
const myToken = await MyToken.deploy(tokenName, tokenSymbol);
await myToken.deployed();
console.log("MyToken deployed to:", myToken.address);
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
}); 编译和测试合约
编译合约:
npx hardhat compile
编译成功后,合约 ABI 和字节码会生成在 artifacts 目录下。
(可选但推荐)编写测试用例,确保合约逻辑正确:
npx hardhat test
部署合约到以太坊网络
你可以选择部署到以太坊主网、测试网(如 Sepolia, Goerli)或本地节点。
配置网络:
在 hardhat.config.js 中添加你想要部署的网络配置,包括 RPC URL 和私钥(注意:私钥切勿提交到代码仓库! 建议使用环境变量管理)。
添加 Sepolia 测试网配置:
require("@nomicfoundation/hardhat-toolbox");
require('dotenv').config();
/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
solidity: "0.8.20",
networks: {
sepolia: {
url: process.env.SEPOLIA_RPC_URL,
accounts: [process.env.PRIVATE_KEY],
},
},
}; 在项目根目录创建 .env 文件,存储 RPC URL 和私钥:
SEPOLIA_RPC_URL=https://sepolia.infura.io/v3/YOUR_INFURA_PROJECT_ID
PRIVATE_KEY=你的钱包私钥 部署合约:
npx hardhat run scripts/deploy.js --network sepolia
验证合约(可选但推荐)
为了增加合约的透明度和可信度,你可以在以太坊区块浏览器(如 Etherscan)上验证你的合约源代码。
npx hardhat flatten contracts/MyToken.sol 获取 flattened 代码)等信息。代币分发与流动性管理
transfer(address to, uint256 amount) 函数向早期投资者、团队成员或社区成员分发代币。免责声明:本文为转载,非本网原创内容,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如有疑问请发送邮件至:bangqikeconnect@gmail.com