74 lines
2.6 KiB
Solidity
74 lines
2.6 KiB
Solidity
// 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);
|
||
}
|