---
title: "ERC-20 代币与 Solidity 完全指南（2025）"
description: "Solidity ERC20 标准是什么、如何运作，以及何时使用"
---

# ERC-20 代币与 Solidity 完全指南（2025）

[Ethereum 生态系统](https://www.alchemy.com/dapps/ecosystem/ethereum)包含多种标准，用于描述[智能合约](https://www.alchemy.com/overviews/solidity-smart-contract)从创建到部署的各项功能。最常见的标准是 ERC-20、ERC-721、ERC-777 和 ERC-1155，每种标准都有各自的主要用途。

本文将定义 ERC-20 代币，介绍其部分用途，并概述开发者为符合该标准需要使用的[一些 Solidity 编程语言中的强制性函数](https://www.alchemy.com/overviews/solidity-functions)。如果你想使用 [Solidity](https://www.alchemy.com/overviews/solidity) 创建自己的 ERC-20 代币，本文中的准则和定义将帮助你更好地理解具体做法。

## **什么是 ERC-20 代币？**

**ERC-20 是一种流行的同质化加密货币代币，兼容 Ethereum 或 EVM 兼容的区块链。** 它是一种数字资产，可以代表链上的任何事物，因而适用于多种使用场景。

这一预设的智能合约包含一个特定接口，使其能够作为开发的技术标准使用。开发者可以利用 ERC-20 代币及其相关的代币规则，获得更简便的开发体验。像 [Uniswap](https://www.alchemy.com/dapps/uniswap) 和 SushiSwap 这样的主流去中心化交易所协议，都以 ERC-20 代币标准作为构建模块，以实现与其生态系统的无缝兼容和集成。

### **ERC-20 代币有哪些用途？**

**由于 ERC-20 代币对其所代表的内容没有限制，它可以超越典型的加密货币（例如 ETH）的范畴。作为一项要求，ERC-20 资产必须是同质化的、可转移的，并且可以设定最大供应量上限。这在创建奖励、实物资产、公司股份等场景中非常有用。**

ERC-20 代币旨在使代币开发标准化，可以代表 Ethereum 区块链上任何同质化资产。只需提供几个变量来描述某项特定资产（例如名称、符号和供应量），任何人都可以发行具有标准行为和接口的 ERC20 代币。

ERC-20 代币是同质化的，因为每一枚代币都与其他任何一枚完全相等。由于没有任何代币拥有特殊权利或行为，这种价值上的对等使得 ERC-20 代币适用于诸如交换媒介、货币、投票权和质押等应用场景。

### **为什么 ERC-20 代币标准很重要？**

ERC-20 代币标准为同质化代币引入了一种特定方法，确保它们都具有相似的属性。

自 [2015 年提出](https://eips.ethereum.org/EIPS/eip-20)以来，ERC-20 代币标准的发展使得其他协议、平台和开发者能够创建智能合约，使用任何遵循该标准的代币，而无需为每个新代币编写专门的逻辑。智能合约的标准化提升了开发流程，进而使整个加密生态系统受益匪浅。

## **所有 ERC-20 代币必须具备哪些 Solidity 函数？**

**ERC-20 标准包含一组必须存在于每个标准实现中的方法和事件，包括转移价值、查询地址余额以及获取其他元数据的方法。**

理解 Solidity 语言的各项特性，并掌握如何使用函数来[在 Ethereum 上创建 ERC-20 代币](https://www.alchemy.com/docs/reference/token-api-overview)的实操知识，能够加快你成为 Solidity 开发者的进程。

### **1. totalSupply**

_totalSupply_ 方法表示代币当前的流通总供应量。示例如下：

### **2. balanceOf**

_balanceOf_ 方法计算特定钱包地址中所持有的代币数量。示例如下：

### **3. Transfer**

_transfer_ 方法将代币从一个地址发送到另一个地址，发送方即交易的发起方。示例如下：

### **4. Approve**

_approve_ 方法允许另一个地址代表你花费代币。在与需要访问你的代币的智能合约交互时，这项功能非常有用。_approve_ 方法的一个常见用例是去中心化交易所。示例如下：

### **5. transferFrom**

_transferFrom_ 方法与 _approve_ 方法配合使用效果最佳。一旦你批准某人花费你的代币，对方就可以通过一笔交易将代币从你的账户 _transferFrom_ 到另一个账户。一个典型用例是去中心化交易所。示例如下：

### **6. Allowance**

_allowance_ 方法表示一个地址可以代表另一个地址花费的额度。示例如下：

## **所有 ERC-20 代币中哪些 Solidity 函数是可选的？**

**名称、符号和小数位数都是可选函数，作为 ERC-20 代币合约基础接口的扩展。** 尽管这些函数不是必须的，但它们能为合约提供有助于理解其用途的附加信息。这一[核心接口](https://www.alchemy.com/overviews/solidity-interface)可以作为智能合约进一步定制和扩展的基础。

### **1. Name**

name 是一个人类可读的名称，用于说明合约的用途。示例如下：

### **2. Symbol**

symbol 是代币的人类可读代号，用于表示该代币，类似于 ETH、BTC 等。示例如下：

### **3. Decimals**

decimals 定义了该货币最小单位的精度。最常见的值是 18，这与 ether 的精度相同（[ether 的最小单位是 wei](https://www.alchemy.com/gwei-calculator)：1 ether 等于 1e18 wei）。

## **什么是 ERC-20 数据结构？**

诸如余额表和授权额度表这样的 ERC-20 数据结构，有助于组织和实现链上的各项操作。

### **Balances**

内部余额表用于跟踪某个钱包地址的总持有量。每笔转账都是从一个余额中扣除，并添加到另一个余额中。

### **Allowances**

内部授权额度表用于跟踪某个钱包地址所委托的支出额度。通过[嵌套映射](https://www.alchemy.com/overviews/solidity-mapping)，以代币所有者的地址作为主键，映射到某个花费者地址，并提供其被委托可花费的额度。

## **开始使用 Alchemy 构建**

ERC-20 标准是 Ethereum 生态系统中最重要的标准，它被广泛采用，并应用于最重要的智能合约协议中。作为开发者，强烈建议你花时间深入了解这一标准，并部署属于自己的 ERC-20 代币。

要[了解 ERC-20 代币](https://www.alchemy.com/overviews/learn-solidity)以及其他 Solidity 编程基础知识，欢迎报名参加 Alchemy University 的 Ethereum 开发者训练营。
