你可以使用 Solidity 编写 ERC-20 智能合约 来发行自己的加密货币,然后部署到 以太坊(Ethereum) 或 BNB/Polygon 等 EVM 兼容链。
ERC-20 是 以太坊标准代币协议,适用于 DApp、DeFi、ICO 等应用。
它定义了一些标准函数,例如:
totalSupply()
代币总供应量balanceOf(address)
查询地址余额transfer(address, amount)
代币转账approve()
& transferFrom()
允许代理转账(如 DEX、质押)✅ ERC-20 适用于创建自己的 Token,如 USDT、UNI、SHIBA。
创建 MyToken.sol
,粘贴以下代码:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract MyToken is ERC20 {
constructor(uint256 initialSupply) ERC20("MyToken", "MTK") {
_mint(msg.sender, initialSupply * (10 ** uint256(decimals())));
}
}
代码解析
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
使用 OpenZeppelin ERC-20 标准库ERC20("MyToken", "MTK")
代币名称 MyToken
,符号 MTK
_mint(msg.sender, initialSupply * (10 ** uint256(decimals())));
生成 initialSupply
数量的代币MyToken.sol
,粘贴 Solidity 代码Solidity Compiler
(️)0.8.0+
Compile
"JavaScript VM (London)"
(本地虚拟机,免费)1000000
)"Deploy"
totalSupply()
,查看总供应量balanceOf(你的地址)
,查看余额✅ 本地测试,不消耗 ETH!
Injected Provider - MetaMask
Deploy
✅ 测试网部署,使用测试 ETH,完全免费!
Injected Provider
Deploy
合约(需要 Gas 费)✅ 适用于正式上线,但需要真 ETH / BNB!
如果你想给别人发送你的代币,可以调用 transfer()
:
contract MyToken is ERC20 {
constructor(uint256 initialSupply) ERC20("MyToken", "MTK") {
_mint(msg.sender, initialSupply * (10 ** uint256(decimals())));
}
// 空投代币
function airdrop(address recipient, uint256 amount) public {
require(balanceOf(msg.sender) >= amount, "Not enough tokens");
_transfer(msg.sender, recipient, amount);
}
}
调用:
await contract.airdrop("0xRecipientAddress", ethers.utils.parseUnits("100", 18));
方式 | 环境 | 是否收费 |
---|
本地测试(Remix VM) | JavaScript VM | 免费 ✅ |
以太坊测试网(Goerli / Sepolia) | 测试网 | 免费(需测试 ETH) ✅ |
以太坊主网 / BSC / Polygon | 真实区块链 | 需要 ETH / BNB 交 Gas 费 ❌ |