Web-3.0(Solidity)ERC-20

🚀 发行自己的加密货币(ERC-20 代币)

你可以使用 Solidity 编写 ERC-20 智能合约 来发行自己的加密货币,然后部署到 以太坊(Ethereum)BNB/Polygon 等 EVM 兼容链

📌 1. ERC-20 代币是什么?

ERC-20 是 以太坊标准代币协议 ,适用于 DApp、DeFi、ICO 等应用

它定义了一些标准函数,例如:

  • totalSupply() 👉 代币总供应量
  • balanceOf(address) 👉 查询地址余额
  • transfer(address, amount) 👉 代币转账
  • approve() & transferFrom() 👉 允许代理转账(如 DEX、质押)

ERC-20 适用于创建自己的 Token,如 USDT、UNI、SHIBA

📌 2. 编写 ERC-20 代币智能合约

创建 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 数量的代币

📌 3. 在 Remix IDE 部署(测试网 & 主网)

✅ 方法 1:本地测试(免费)

  1. 打开 Remix IDE
  2. 新建 MyToken.sol,粘贴 Solidity 代码
  3. 编译合约
    • 选择 Solidity Compiler(🛠️)
    • 版本 0.8.0+
    • 点击 Compile
  4. 部署合约
    • 选择 "JavaScript VM (London)"(本地虚拟机,免费)
    • 输入初始供应量 (如 1000000
    • 点击 "Deploy"
  5. 测试代币
    • 运行 totalSupply(),查看总供应量
    • 运行 balanceOf(你的地址),查看余额

本地测试,不消耗 ETH!


✅ 方法 2:以太坊测试网(Goerli / Sepolia)

  1. 获取测试 ETH
  2. MetaMask 连接测试网
    • 切换到 Goerli / Sepolia
  3. 在 Remix 选择 Injected Provider
    • 选择 Injected Provider - MetaMask
    • 点击 Deploy
    • MetaMask 确认交易
  4. 获取代币地址
    • 在 Remix 终端找到合约地址
    • 添加到 MetaMask,查看你的代币

测试网部署,使用测试 ETH,完全免费!


✅ 方法 3:以太坊主网 / BNB / Polygon(需要 ETH 交 Gas 费)

  1. 准备 ETH / BNB / MATIC
    • 以太坊(Ethereum):需要 ETH
    • BNB Chain(BSC):需要 BNB
    • Polygon(MATIC):需要 MATIC
  2. 选择 Injected Provider
    • 连接 MetaMask(主网)
  3. 部署合约
    • Deploy 合约(需要 Gas 费)
    • 交易完成后,查看合约地址
  4. 添加代币到 MetaMask
    • 复制合约地址
    • 在 MetaMask "导入代币" 并粘贴地址
    • 你的代币将出现在 MetaMask 钱包中

适用于正式上线,但需要真 ETH / BNB!

📌 4. 交互 & 空投代币

如果你想给别人发送你的代币 ,可以调用 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 费 ❌ |

相关推荐
henujolly21 小时前
what`s pos
区块链
傻小胖1 天前
solana开发者训练营第1课:区块链基础
区块链
老蒋每日coding2 天前
从零构建 IPFS 上传流水线:NFT 元数据去中心化实战指南
区块链
qq_368019662 天前
区块链生态参与方概述
区块链
devmoon2 天前
Polkadot Hub 智能合约中的账户体系
web3·区块链·智能合约·polkadot
OpenMiniServer2 天前
2026年资源定价失控、金融信用退化与产业链大出清
金融·区块链
珠海西格2 天前
远动通信装置为何是电网安全运行的“神经中枢”?
大数据·服务器·网络·数据库·分布式·安全·区块链
葫三生2 天前
存在之思:三生原理与现象学对话可能?
数据库·人工智能·神经网络·算法·区块链
软件工程小施同学2 天前
区块链论文速读 CCF A--TDSC 2025 (5)
区块链
lead520lyq2 天前
Ethers.js发布合约及查询合约
开发语言·后端·区块链