在区块链的世界里,代币(Token)是构建去中心化应用(DApps)、进行社区融资和实现数字资产化的重要工具,以太坊作为最智能合约平台,其上发行的代币大多遵循ERC20标准,本文将带你一步步了解如何编写一个基础的ETH发币合约(即ERC20代币合约)。

什么是ERC20标准

ERC20是以太坊社区提出的一个代币标准接口(Interface),它定义了一套规则和函数,使得所有遵循该标准的代币都能在以太坊生态中无缝兼容,比如支持主流的钱包(MetaMask)、交易所等,主要包括以下核心函数和事件:

  • 函数 (Functions):
    • name(): 返回代币名称,"MyToken"。
    • symbol(): 返回代币符号,"MTK"。
    • decimals(): 返回代币小数位数,通常为18。
    • 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): 查询某个地址被授权花费的代币数量。
  • 事件 (Events):
    • Transfer(address indexed from, address indexed to, uint256 value): 代币转移事件。
    • Approval(address indexed owner, address indexed spender, uint256 value): 授权事件。

准备工作:开发环境搭建

在编写合约之前,你需要准备以下工具和环境:

  1. Solidity 编译器:Solidity是以太坊智能合约的编程语言,你可以使用 Remix IDE(在线,无需安装)或本地安装 solc (Solidity Compiler)。
  2. 以太坊钱包:如MetaMask,用于测试和部署合约,以及管理私钥。
  3. 测试网ETH:在以太坊测试网(如Ropsten, Goerli, Sepolia)上部署合约需要消耗ETH作为Gas费,你可以通过水龙头(Faucet)获取测试网ETH。
  4. 文本编辑器:如VS Code,配合Solidity插件(如Hardhat或Truffle的插件)能提供更好的开发体验。

对于初学者,Remix IDE 是最友好的选择,它集成了编译、部署、测试等功能。

编写一个简单的ERC20代币合约

下面是一个基于OpenZeppelin库的ERC20代币合约示例,OpenZeppelin是一个提供安全、可审计的智能合约库的社区,强烈建议在实际开发中使用,以避免安全漏洞。

步骤1:在Remix IDE中创建新文件

打开Remix IDE,点击左侧文件图标,创建一个新文件,MyToken.sol

步骤2:编写合约代码

// 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) {
        // 在部署时向合约创建者(msg.sender)发行100万个代币
        // 假设小数位数为18,所以100万 * (10 ** 18) = 1000000 * 10^18
        _mint(msg.sender, 1000000 * 10**decimals());
    }
}

代码解析:

  1. // SPDX-License-Identifier: MIT随机配图