:2026-02-23 15:48 点击:6
在区块链的世界里,以太坊(Ethereum)无疑是最具影响力的平台之一,它不仅支持智能合约的部署与执行,更催生了代币经济的繁荣,对于许多开发者和项目方而言,在以太坊上发行自己的代币是一个常见且重要的需求,本文将深入探讨如何通过编写代码(主要是Solidity语言)在以太坊上发行一个符合ERC20标准的代币。
为什么选择以太坊发行代币?
以太坊作为第一个支持图灵完备智能合约的区块链平台,其优势显著:
准备工作:开发环境搭建
在开始编写发币代码之前,你需要准备以下开发环境:
核心步骤:编写并部署ERC20代币合约
ERC20代币的核心是一份Solidity智能合约,下面我们将以一个简化的ERC20代币为例,讲解编写和部署过程。
编写Solidity合约代码
ERC20标准定义了以下必须实现的接口函数(事件可选但推荐):
name() - 返回代币名称symbol() - 返回代币符号decimals() - 返回代币小数位数totalSupply() - 返回代币总供应量balanceOf(address owner) - 查询指定地址的代币余额transfer(address to, uint256 amount) - 转移代币transferFrom(address from, address to, uint256 amount) - 从指定地址转移代币(通常需要授权)approve(address spender, uint256 amount) - 授权某个地址可以花费你的代币allowance(address owner, address spender) - 查询某个地址被授权的代币数量还需实现 Transfer 和 Approval 事件。
下面是一个使用OpenZeppelin标准库(推荐使用,因其经过审计且安全可靠)编写的简单ERC20代币合约示例 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()); // 初始供应量1000000,默认18位小数
}
}
代码解释:
SPDX-License-Identifier: MIT:指定许可证。pragma solidity ^0.8.20;:指定Solidity编译器版本。import "@openzeppelin/contracts/token/ERC20/ERC20.sol";:导入OpenZeppelin的ERC20标准实现,避免重复造轮子且保证安全性。contract MyToken is ERC20:我们的合约继承自OpenZeppelin的ERC20合约。constructor(string memory name, string memory symbol) ERC20(name, symbol):构造函数,用于初始化代币名称(name)和符号(symbol),并调用父类ERC20的构造函数。_mint(msg.sender, 1000000 * 10**decimals());:在合约部署时,向合约部署者(msg.sender)铸造1000000个代币。10**decimals()是为了考虑小数位数,默认ERC20是18位小数,所以实际总供应量是1000000 * 10^18。编译合约
如果你使用Truffle或Hardhat,只需在项目根目录下运行相应的命令(如 truffle compile 或 npx hardhat compile),框架会自动找到你的 .sol 文件并使用 solc 进行编译,编译成功后,会生成ABI(应用程序二进制接口)和字节码(Bytecode)。
部署合约
部署合约需要使用以太坊账户(由私钥控制)对交易进行签名并广播到以太坊网络。
使用Truffle部署:
在 migrations 目录下创建一个迁移脚本,2_deploy_contracts.js:
const MyToken = artifacts.require("MyToken");
module.exports = function (deployer) {
deployer.deploy(MyToken, "My Awesome Token", "MAT");
};
配置 truffle-config.js 连接到测试网或主网。
运行 truffle migrate --network <your_network_name>(--network goerli)进行部署。
使用Hardhat部署:
在 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);
});
配置 hardhat.config.js 连接到测试网或主网。
运行 npx hardhat run scripts/deploy.js --network <your_network_name> 进行部署。
部署成功后,你会得到合约的地址,这就是你代币在以太坊网络上的唯一标识。
验证与交互(可选但推荐)

重要注意事项
通过以太坊发行
本文由用户投稿上传,若侵权请提供版权资料并联系删除!