在区块链世界,以太坊作为支持智能合约的领先平台,让任何人都能通过“铸币”(即发行代币)参与生态建设,无论是社区项目、NFT藏品还是治理代币,掌握以太坊代币铸造流程都是开发者和创业者的必备技能,本文将以“以太坊铸币教程图纸”的形式,拆解从环境搭建到代币上线的完整步骤,带你轻松上手。
前置准备:铸币前的“工具清单”
在开始铸币前,需完成以下基础配置,确保后续操作顺畅:
-
钱包安装与配置
- 选择支持以太坊的钱包:MetaMask(浏览器插件,推荐新手)、Trust Wallet(移动端)或硬件钱包(如Ledger,安全性更高)。
- 创建钱包:记录好助记词(12-24个单词),这是找回钱包的唯一凭证,切勿泄露或丢失。
- 获取钱包地址:钱包创建后,会生成以太坊地址(以
0x开头,42位字符),后续接收代币和交互需要用到。
-
获取测试网ETH(新手必选)
- 以太坊主网转账成本高,建议先在测试网(如Goerli、Sepolia)练习。
- 获取测试ETH:访问水龙头网站(如
faucet.goerlifund.info),输入钱包地址免费领取测试ETH,用于支付Gas费。
-
开发环境安装
- Node.js:下载并安装LTS版本(推荐v16+),用于运行开发工具。
- 代码编辑器:VS Code(安装Solidity插件,支持智能合约高亮)。
- Truffle框架:通过
npm install -g truffle全局安装,用于编译、部署智能合约。
核心步骤:智能合约编写与部署
以太坊代币的核心是ERC标准智能合约,最常用的是ERC-20(同质化代币)和ERC-721(非同质化代币,即NFT),本文以ERC-20为例,拆解合约编写与部署流程。
步骤1:创建项目目录
mkdir my-ethereum-token cd my-ethereum-token truffle init # 初始化Truffle项目结构
项目目录会生成contracts/(存放合约代码)、migrations/(部署脚本)、test/(测试文件)等文件夹。
步骤2:编写ERC-20代币合约
打开contracts/目录,删除默认的Migrations.sol,新建MyToken.sol,编写以下代码:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; // 引入OpenZeppelin标准ERC-20合约
contract MyToken is ERC20 {
constructor(string memory name, string memory symbol) ERC20(name, symbol) {
_mint(msg.sender, 1000000 * 10**18); // 初始铸造100万代币,18位小数(符合以太坊标准)
}
}
代码解析:
@openzeppelin/contracts:第三方库,提供经过审计的标准合约,避免安全漏洞(需通过npm install @openzeppelin/contracts安装)。constructor:构造函数,在合约部署时执行,用于设置代币名称(name)、符号(symbol)及初始供应量。_mint:铸造代币的核心函数,参数为接收地址和数量(10**18是ERC-20标准的小数位数,如铸造1代币需传入1 * 10**18)。
步骤3:编写部署脚本
打开migrations/目录,新建2_deploy_token.js,编写部署脚本:
const MyToken = artifacts.require("MyToken");
module.exports = function (deployer) {
deployer.deploy(MyToken, "My Ethereum Token", "MET"); // 部署时传入代币名称和符号
};
步骤4:编译与部署合约
-
编译合约:
truffle compile
成功后,
build/contracts/目录会生成MyToken.json(合约的ABI接口和字节码)。 -
配置网络:
- 打开
truffle-config.js,添加测试网配置(以Goerli为例):module.exports = { networks: { goerli: { provider: () => new HDWalletProvider( "YOUR_MNEMONIC", // 替换为钱包助记词 "https://goerli.infura.io/v3/YOUR_INFURA_PROJECT_ID" // 替换为Infura项目ID(注册infura.io获取) ), network_id: 5, gas: 5000000, confirmations: 2, timeoutBlocks: 200, skipDryRun: true } }, compilers: { solc: { version: "0.8.0" } } };

- 打开