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 费 ❌ |

相关推荐
能源革命1 小时前
区块链在能源行业的创新
区块链·能源
Anna_Tong12 小时前
HSM能为区块链、IoT等新兴技术提供怎样的保护?
物联网·区块链·iot·数据加密·hsm
艾思科蓝 AiScholar2 天前
【EI会议推荐】人工智能、电子信息、智能制造、机器人、自动化、控制科学、机械制造等计算机领域多主题可选!
大数据·运维·人工智能·神经网络·自动化·区块链·制造
第十六年盛夏.2 天前
solidity高阶 -- 线性继承
区块链·智能合约
FrancyZhou2 天前
10 Hyperledger Fabric 介绍
区块链·fabric
软件工程小施同学2 天前
区块链论文速读A会-SECURITY 2024 OpenZeppelin中的漏洞检测 附ppt
区块链
第十六年盛夏.2 天前
solidity高阶 -- 继承
区块链·智能合约
花花花13 天前
技术 · 创作 · 生活 | 我的 2024 全面复盘
笔记·学习·web3·去中心化·区块链·github·sui
币圈小菜鸟3 天前
Gaea项目的挑战与机遇:去中心化AI平台的未来发展
人工智能·去中心化·区块链