以太坊作为全球最大的智能合约平台,为去中心化应用(Dapps)和代币发行提供了强大的基础设施,无论是创建社区代币、治理代币,还是实用型代币,在以太坊上发行代币已经成为许多项目和开发者的首选,本文将为你提供一个详细的步骤指南,帮助你了解在以太坊上发行代币的全过程。
在开始之前,最重要的一步是清晰地定义你发行代币的目的,这将直接影响你选择的代币标准和技术方案。
根据目的,你需要选择合适的代币标准:

对于初次发行代币的开发者,ERC-20 是最常见和最基础的选择。
在以太坊上发行代币,你需要准备以下工具:
代币的核心是其智能合约代码,对于 ERC-20 代币,你可以选择自己从头编写,但更安全、更高效的方式是使用经过社区广泛审计的开源模板。
安装 Hardhat: 在你的终端中,创建一个新的项目目录并初始化 Hardhat:
mkdir my-erc20-token cd my-erc20-token npm init -y npm install --save-dev hardhat npx hardhat
按照提示选择 "Create a basic sample project"。
编写合约代码: Hardhat 会为你生成一个 contracts/ 目录,你可以修改默认的 Lock.sol,或者创建一个新的文件,MyToken.sol。
一个简单的 ERC-20 代币合约可以基于 OpenZeppelin 的库来编写,因为它提供了经过审计的安全标准实现。

安装 OpenZeppelin 合约:
npm install @openzeppelin/contracts
在 contracts/MyToken.sol 中编写你的合约:
// 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 和 symbol:你的代币名称和代号("My Awesome Token" 和 "MAT")。_mint():这是一个函数,用于创建新的代币并发送到指定地址,这里我们向合约的部署者(msg.sender)发送了 100 万个代币。10**decimals():ERC-20 标准允许代币有小数点,通常为 18 位,这部分代码确保了代币数量的正确计算。在部署之前,必须确保你的代码没有错误。
编译合约: 在终端中运行:
npx hardhat compile
如果成功,Hardhat 会在 artifacts/ 目录下生成编译后的合约字节码。
编写测试用例(推荐): 在 test/ 目录下,你可以编写测试脚本来验证你的合约功能是否按预期工作,测试代币是否被正确铸造和转移,使用 Hardhat 自带的 ethers.js 库可以轻松进行测试。
这是最关键的一步,意味着你的代币将正式在以太坊上存在。

配置网络: 在 hardhat.config.js 文件中,你需要配置要部署到的以太坊网络,对于主网,你需要:
修改 hardhat.config.js 文件如下:
require("@nomicfoundation/hardhat-toolbox");
require('dotenv').config();
const PRIVATE_KEY = process.env.PRIVATE_KEY;
const INFURA_URL = process.env.INFURA_URL;
/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
solidity: "0.8.20",
networks: {
sepolia: {
url: INFURA_URL,
accounts: [PRIVATE_KEY],
},
mainnet: { // 如果要直接部署到主网
url: INFURA_URL, // 使用主网的URL
accounts: [PRIVATE_KEY],
}
},
}; 创建一个 .env 文件来存储敏感信息:
PRIVATE_KEY=你的钱包私钥(不要带0x前缀)
INFURA_URL=你的Infura项目URL 编写部署脚本: 在 scripts/ 目录下创建一个部署脚本,deploy.js:
async function main() {
const MyToken = await ethers.getContractFactory("MyToken");
const myToken = await MyToken.deploy("My Awesome Token", "MAT");
await myToken.deployed();
console.log("MyToken deployed to:", myToken.address);
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
}); 执行部署: 在终端中运行部署脚本,并指定网络(先在测试网 Sepolia 上测试):
npx hardhat run scripts/deploy.js --network sepolia
如果一切顺利,终端会输出你的代币合约地址。请务必复制并安全保存这个地址!
测试成功后,你可以将 --network sepolia 改为 --network mainnet 来部署到以太坊主网。
部署后,你的智能合约代码是公开的,但任何人都可以查看,为了增加透明度和可信度,你应该将你的源代码与合约地址关联起来,这称为“验证”或“源码验证”。
免责声明:本文为转载,非本网原创内容,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如有疑问请发送邮件至:bangqikeconnect@gmail.com