本文详尽介绍了ERC-20代币标准,包括其定义、使用方式、Solidity必需的函数以及可选的扩展功能。文章结构清晰,内容丰富,适合开发者理解并创建ERC-20代币。
以太坊生态系统包含多种标准,它们表示从创建到部署的 智能合约 功能。最常见的标准包括 ERC-20、ERC-721、ERC-777 和 ERC-1155,每个标准都有其主要目标。
本文定义了 ERC-20 代币,给出了一些它们的用途,并概述了开发人员需要使用的一些 Solidity 编程语言中的强制函数,以保持与标准的一致。如果你希望使用 Solidity 创建自己的 ERC-20 代币,本文中的指导和定义将帮助你更好地理解该如何做。
ERC-20 是一种流行的与以太坊或 EVM 兼容区块链兼容的可替代加密货币代币。 它作为一种数字资产,可以在区块链上表示任何内容,从而为多种用例提供灵活性。
此预设智能合约包含一个特定的接口,使其能够用作开发的技术标准。开发人员可以利用 ERC-20 代币及其相关代币规则,以获得更轻松的开发者体验。像 Uniswap 和 SushiSwap 等流行的去中心化交易协议都利用 ERC-20 代币标准作为基础构件,以实现无缝的兼容性和其生态系统的集成。
由于 ERC-20 代币没有限制它可以表示的内容,因此它可以超越典型的加密货币(即 ETH)。作为一项要求,ERC-20 资产是可替代的、可转移的,并且可以限制最大供应量。这在创建奖励、实物对象、公司股份等方面非常有用。
为标准化代币开发而设计,ERC-20 代币可以在以太坊区块链上表示任何可替代资产。通过提供几个变量来表示特定资产(例如名称、符号和供应量),任何人都可以启动具有标准行为和接口的 ERC-20 代币。
ERC-20 代币是可替代的,因为每个代币都与其他代币完全相等。由于没有与任何单个代币相关的特殊权利或行为,因此 ERC-20 代币之间的价值平等使它们在作为交换媒介、货币、投票权和质押等应用中非常有用。
ERC-20 代币标准为可替代代币引入了一种特定的方法,确保它们都具有相似的属性。
自 2015 年提案 以来,ERC-20 代币标准的发展允许其他协议、平台和开发人员创建可以使用任何符合标准的代币的智能合约,而无需为每种新代币创建特殊逻辑。智能合约的标准化增强了开发过程,并进而极大地惠及整个加密生态系统。
ERC-20 标准包含一组必须在每个标准实现中存在的方法和事件,包括转移价值、查询地址余额和检索其他元数据的方法。
理解 Solidity 语言的差异性和如何使用函数的实际知识可以加速你成为 Solidity 开发人员的旅程,帮助你 在以太坊上创建 ERC-20 代币。
totalSupply 方法表示代币的当前流通总供应量。以下是示例:
function totalSupply() external view returns (uint256);
balanceOf 方法计算特定钱包地址中包含的代币数量。以下是示例:
function balanceOf(address account) external view returns (uint256);
transfer 方法将代币从一个地址发送到另一个地址,发送方是交易的发起者。以下是示例:
function transfer(address recipient, uint256 amount) external returns (bool);
approve 方法允许另一个地址代表你花费代币。这在与需要访问你代币的智能合约交互时非常有用。approve 方法的一个热门用例是去中心化交易所。以下是示例:
function approve(address spender, uint256 amount) external returns (bool);
transferFrom 方法在与 approve 方法一起使用时非常有效。批准某人支出你的代币后,他们可以将你的账户的代币 transferFrom 至另一个账户以完成交易。这在去中心化交易所中是一个很好的用例。以下是示例:
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
allowance 方法表示一个地址可以代表另一个地址消费的金额。以下是示例:
function allowance(address owner, address spender) external view returns (uint256);
名称、符号和小数都是作为 ERC-20 代币合约基础接口扩展的可选函数。 尽管这些函数不是强制的,但它们提供了有助于理解其目标的附加细节。这个 核心接口 可以作为对智能合约进行额外定制和扩展的基础。
名称是一个人类可读的名称,定义了合约的目的。以下是示例:
string public constant name = "ERC20Basic";
符号是可以用来表示代币的人类可读的简标,类似于 ETH、BTC 等。以下是示例:
string public constant symbol = "ERC";
小数定义了货币最小单位的面值。通常为 18,和以太币的面值相同(以太币的最小单位是 wei: 一以太币是 1e18 wei)。
uint8 public constant decimals = 18;balances (owner_address => balance_amount)
ERC-20 数据结构例如余额和限额的表格,有助于在区块链上组织和实施操作。
内部代币余额表用于跟踪钱包地址的总拥有量。每次转移都从一个余额中扣除并添加到另一个余额中。
mapping(address => uint256) balances;
内部代币限额表用于跟踪钱包地址的委托支出。使用 嵌套映射,主键是代币拥有者的地址,该地址映射到一个支出地址,并提供了可以支出的委托金额。
function allowance(address owner, address spender) external view returns (uint256);
ERC-20 标准是从以太坊生态系统中出现的最重要标准,因为它在最重要的智能合约协议中被广泛采用和使用。作为开发人员,强烈建议你花时间了解这一标准,并部署自己的 ERC-20 代币。
- 原文链接: alchemy.com/overviews/er...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!