:2026-03-01 21:57 点击:7
以太坊作为全球最大的智能合约平台,其最强大的功能之一便是允许任何人创建自己的数字代币,无论是用于社区治理、项目融资,还是构建去中心化应用(DApp)的内部经济系统,掌握以太坊代币开发都已成为区块链开发者的必备技能,本文将为您提供一份详尽的、从零开始的以太坊代币开发操作指南,带您一步步亲手铸造出属于自己的第一个代币。
在开始编码之前,我们需要准备几个核心工具:
安装 Hardhat: 打开您的终端,运行以下命令:
mkdir my-eth-token cd my-eth-token npm init -y npm install --save-dev hardhat
以太坊上的代币几乎都遵循 ERC20 标准,这是一个技术标准,它定义了一套统一的接口和规则,确保了不同代币之间的互操作性,这意味着任何支持 ERC20 的钱包或交易所都能无缝兼容您的代币。
初始化 Hardhat 项目: 在项目根目录下运行:
npx hardhat
在交互式命令行中,选择 Create a JavaScript project,然后一路回车即可。
编写合约代码:
Hardhat 会自动创建一个 contracts 目录,在此目录下,创建一个名为 MyToken.sol 的新文件,并粘贴以下代码:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;
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());
}
}
代码解析:
SPDX-License-Identifier 和 pragma solidity 是标准的合约头部声明。import "@openzeppelin/contracts/token/ERC20/ERC20.sol";:我们直接导入 OpenZeppelin 库中的 ERC20 合约,这是一个经过社区广泛审计、安全可靠的实现,极大地降低了开发风险。contract MyToken is ERC20:我们的 MyToken 合约将继承 ERC20 的所有功能,如转账、授权、查询余额等。constructor:这是合约的构造函数,只在合约部署时执行一次。_mint(msg.sender, 1000000 * 10**decimals()):这是核心铸造逻辑。_mint() 是 ERC20 合约提供的函数,用于创建新的代币。msg.sender 是部署合约的地址,我们将所有代币铸造给部署者自己。1000000 * 10**decimals():ERC20 标准要求代币有最小单位(如以太坊的 wei)。decimals() 返回小数位数(默认为18),10**decimals() 1e18,我们总共铸造 1,000,000 个代币,精确到小数点后18位。安装 OpenZeppelin 和测试库: 在终端中运行:
npm install @openzeppelin/contracts npm install --save-dev @nomicfoundation/hardhat-toolbox
然后修改 hardhat.config.js 文件,加入 @nomicfoundation/hardhat-toolbox 插件:
require("@nomicfoundation/hardhat-toolbox");
/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
solidity: "0.8.19",
};
编译合约: 在终端运行:
npx hardhat compile
如果成功,Hardhat 会在 artifacts 目录下生成编译后的合约字节码。
好的代码离不开测试,Hardhat 提供了强大的测试功能,在 test 目录下,创建 myToken.test.js 文件:
const { expect } = require("chai");
const { ethers } = require("hardhat");
describe("MyToken", function () {
it("Should deploy and mint the correct amount of tokens", async function () {
const [owner] = await ethers.getSigners();
const Token = await ethers.getContractFactory("MyToken");
const myToken = await Token.deploy("My Awesome Token", "MAT");
await myToken.waitForDeployment();
const ownerBalance = await myToken.balanceOf(owner.address);
expect(await myToken.totalSupply()).to.equal(ownerBalance);
expect(ownerBalance).to.equal(1000000 * 10**18);
});
});
运行测试:
npx hardhat test
如果测试通过,说明您的合约逻辑正确。
在将合约部署到主网(真实的以太坊网络)之前,我们通常先在测试网(如 Sepolia)上进行演练,测试网上的 ETH 没有真实价值,可以免费获取。
获取测试网 ETH: 访问 Sepolia Faucet 等网站,将您的 MetaMask 钱包地址粘贴进去,获取一些测试用的 Sepolia ETH。
配置 Hardhat 连接测试网:
在 hardhat.config.js 中添加 Sepolia 网络配置:
require("@nomicfoundation/hardhat-toolbox");
require('dotenv').config(); // 用于安全地存储私钥
/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
solidity: "0.8.19",
networks: {
sepolia: {
url: `https://eth-sepolia.g.alchemy.com/v2/${process.env.ALCHEMY_API_KEY}`, // 使用 Alchemy 或 Infura 的节点URL
accounts: [process.env.PRIVATE_KEY] // 部署者的私钥
}
}
};
.env 文件,将您的私钥和 API Key 存储在其中,并在项目根目录创建 .gitignore 文件,确保 .env 文件不会被上传到代码仓库。部署脚本:
在 scripts 目录下,创建 deploy.js 文件:
async function main() {
const MyToken = await hre.ethers.getContractFactory("MyToken");
const myToken = await MyToken.deploy("My Awesome Token", "MAT");
await myToken.waitForDeployment();
console.log("MyToken deployed to:", myToken.target);
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});
执行部署: 在终端运行:
npx hardhat run scripts/deploy.js --network sepolia
如果部署成功,终端会输出您的代币合约地址。请务必妥善保存这个地址!
验证合约(可选但推荐): 为了让任何人都可以在 Etherscan 等区块浏览器上查看您的合约源代码,您需要验证它,访问 Etherscan,找到您的合约,点击 "Verify and Publish" 按钮,然后按照提示输入您的合约源代码和编译信息即可。

与您的代币交互:
本文由用户投稿上传,若侵权请提供版权资料并联系删除!