Files
openzeppelin-contracts/contracts/token/ERC20/IERC20.sol

74 lines
2.6 KiB
Solidity
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)
pragma solidity >=0.4.16;
/**
* @dev ERC-20 标准的接口,如 ERC 中定义的那样。
*/
interface IERC20 {
/**
* @dev 当 `value` 个代币从一个账户 (`from`) 转移到另一个账户 (`to`) 时发出。
*
* 注意 `value` 可能为零。
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev 当通过调用 {approve} 设置 `spender` 对 `owner` 的授权额度时发出。
* `value` 是新的授权额度。
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev 返回现存代币的数量。
*/
function totalSupply() external view returns (uint256);
/**
* @dev 返回 `account` 拥有的代币数量。
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev 从调用者的账户向 `to` 转移 `value` 数量的代币。
*
* 返回一个布尔值,指示操作是否成功。
*
* 发出 {Transfer} 事件。
*/
function transfer(address to, uint256 value) external returns (bool);
/**
* @dev 返回 `spender` 将被允许通过 {transferFrom} 代表 `owner` 花费的剩余代币数量。
* 默认情况下为零。
*
* 当调用 {approve} 或 {transferFrom} 时,此值会发生变化。
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev 将 `value` 数量的代币设置为 `spender` 对调用者代币的授权额度。
*
* 返回一个布尔值,指示操作是否成功。
*
* 重要:请注意,使用此方法更改授权额度会带来风险,即有人可能会因为不幸的交易顺序
* 同时使用旧的和新的授权额度。缓解这种竞争条件的一种可能解决方案是首先将 spender 的
* 授权额度减少到 0然后再设置所需的值
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* 发出 {Approval} 事件。
*/
function approve(address spender, uint256 value) external returns (bool);
/**
* @dev 使用授权机制从 `from` 向 `to` 转移 `value` 数量的代币。
* 然后从调用者的授权额度中扣除 `value`。
*
* 返回一个布尔值,指示操作是否成功。
*
* 发出 {Transfer} 事件。
*/
function transferFrom(address from, address to, uint256 value) external returns (bool);
}