:2026-03-30 21:39 点击:7
在区块链的世界里,以太坊无疑是智能合约和代币发行的摇篮,ERC20(Ethereum Request for Comments 20)是以太坊上最著名、应用最广泛的代币标准,它定义了一套统一的接口(规则),使得所有遵循该标准的代币都能在以太坊生态中的钱包、交易所和DApp(去中心化应用)之间无缝流转,无论是项目方的融资代币(如早期的STO、IEO),还是社区积分、NFT的辅助代币,ERC20都扮演着不可或缺的角色。
本教程将带你一步步,从环境搭建到代码编写,再到最终的代币部署,手把手教你创建属于你自己的第一个以太坊ERC20代币。
在开始编码之前,我们需要准备好三样核心工具:
node -v 和 npm -v 确认安装成功。为了简化开发流程,我们将使用业界最流行的以太坊开发框架 Hardhat。
创建项目文件夹: 在你的终端中,输入以下命令,创建一个新的项目文件夹并进入其中。
mkdir my-erc20-token cd my-erc20-token
初始化Hardhat项目: 运行以下命令,Hardhat会自动为你生成一个标准化的项目结构。
npx hardhat
在交互式界面中,选择 Create a JavaScript project,然后一路回车(或根据你的需求选择),完成项目初始化。
安装OpenZeppelin合约库: OpenZeppelin是一个提供安全、审计过的智能合约库的组织,我们将使用他们的ERC20模板,这能极大地保证我们代币的安全性和标准性。
npm install @openzeppelin/contracts
让我们来编写代币的核心逻辑。
找到合约文件:
在 contracts 文件夹下,你会看到一个 Lock.sol 文件,我们可以重命名它,或者直接创建一个新文件,MyToken.sol。
编写合约代码:
打开 MyToken.sol 文件,输入以下代码,代码中已经包含了详细的注释,解释了每一部分的作用。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
// 导入OpenZeppelin提供的标准ERC20合约
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
// 继承ERC20合约,我们的代币将拥有所有ERC20标准的功能
contract MyToken is ERC20 {
// 构造函数,在合约部署时自动执行一次
// _name: 代币的全称,"My Awesome Token"
// _symbol: 代币的代码,"MAT"
constructor(string memory _name, string memory _symbol) ERC20(_name, _symbol) {
// msg.sender 是部署合约的地址(也就是你)
// _totalSupply 是你希望创建的代币总供应量
// 这里我们创建 1,000,000 个代币,乘以 10 的 18 次方是因为以太坊中最小的单位是 Wei,
// 1 个代币 = 10^18 Wei,这是ERC20标准的要求。
_mint(msg.sender, 1000000 * 10**18);
}
}
在部署到真实的以太坊主网之前,我们必须先在本地环境中进行测试和编译。
配置测试网络:
打开 hardhat.config.js 文件,我们需要添加一个本地的测试网络配置,确保文件中包含以下内容(如果使用Hardhat默认模板,它应该已经存在):
require("@nomicfoundation/hardhat-toolbox");
/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
solidity: "0.8.20",
networks: {
hardhat: {
// forking 可以让你模拟以太坊主网的环境进行测试
forking: {
url: `https://eth-mainnet.g.alchemy.com/v2/YOUR_ALCHEMY_API_KEY`, // 你可以替换成自己的Alchemy或Infura API Key
},
},
},
};
编译合约:
在终端中运行以下命令,Hardhat会根据 hardhat.config.js 的配置来编译你的 MyToken.sol 合约。
npx hardhat compile
如果看到 Compiled successfully,说明编译成功!编译后的合约文件会保存在 artifacts/contracts/MyToken.sol/MyToken.json。
编写测试脚本(可选但推荐):
在 test 文件夹下创建一个 my-token.test.js 文件,编写一些简单的测试用例来验证你的代币是否按预期工作。
为了确保一切正常,我们先在测试网上(如 Sepolia)进行部署,测试网的ETH是免费的,你可以从“水龙头”网站获取。
配置测试网: 你需要获取一个测试网的RPC URL和私钥,推荐使用 Alchemy 或 Infura 创建一个项目,获取Sepolia测试网的URL,从你的MetaMask钱包中,导出你的测试网账户的私钥(警告:请勿在代码中直接使用主网私钥!)。
在 hardhat.config.js 中添加Sepolia网络的配置:
require("@nomicfoundation/hardhat-toolbox");
/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
solidity: "0.8.20",
networks: {
hardhat: {
forking: {
url: `https://eth-mainnet.g.alchemy.com/v2/YOUR_ALCHEMY_API_KEY`,
},
},
sepolia: {
url: "https://eth-sepolia.g.alchemy.com/v2/YOUR_SEPOLIA_API_KEY", // 替换成你的Sepolia RPC URL
accounts: ["YOUR_TESTNET_PRIVATE_KEY"], // 替换成你的测试网私钥
},
},
};
创建部署脚本:
在 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
等待交易确认后,终端会输出你的代币合约地址。恭喜!你的ERC20代币已经成功部署到区块链上了!
在区块浏览器中查看: 复制上一步输出的合约地址,粘贴到 Etherscan Sepolia (https://sepolia.etherscan.io/) 中,你就能看到你的代币交易记录、合约代码等信息。
在MetaMask中添加代币:
本文由用户投稿上传,若侵权请提供版权资料并联系删除!