@@ -15,6 +15,84 @@ web2转型web3,希望学习测试与开发
1515## Notes
1616
1717<!-- Content_START -->
18+ # 2025-08-19
19+
20+ ### ** 核心**
21+
22+ ### ** ` IERC20 ` **
23+
24+ ``` solidity
25+ import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
26+ ```
27+
28+ ERC 中定义的 ERC-20 标准接口。
29+
30+ 函数
31+
32+ - [ ` totalSupply() ` ] ( https://docs.openzeppelin.com/contracts/5.x/api/token/erc20#IERC20-totalSupply-- )
33+ - [ ` balanceOf(account) ` ] ( https://docs.openzeppelin.com/contracts/5.x/api/token/erc20#IERC20-balanceOf-address- )
34+ - [ ` transfer(to, value) ` ] ( https://docs.openzeppelin.com/contracts/5.x/api/token/erc20#IERC20-transfer-address-uint256- )
35+ - [ ` allowance(owner, spender) ` ] ( https://docs.openzeppelin.com/contracts/5.x/api/token/erc20#IERC20-allowance-address-address- )
36+ - [ ` approve(spender, value) ` ] ( https://docs.openzeppelin.com/contracts/5.x/api/token/erc20#IERC20-approve-address-uint256- )
37+ - [ ` transferFrom(from, to, value) ` ] ( https://docs.openzeppelin.com/contracts/5.x/api/token/erc20#IERC20-transferFrom-address-address-uint256- )
38+
39+ 事件
40+
41+ - [ ` Transfer(from, to, value) ` ] ( https://docs.openzeppelin.com/contracts/5.x/api/token/erc20#IERC20-Transfer-address-address-uint256- )
42+ - [ ` Approval(owner, spender, value) ` ] ( https://docs.openzeppelin.com/contracts/5.x/api/token/erc20#IERC20-Approval-address-address-uint256- )
43+
44+ ### ** ` totalSupply() → uint256 ` external**
45+
46+ 返回存在的代币的值。
47+
48+ ### ** ` balanceOf(address account) → uint256 ` external**
49+
50+ 返回 ` account ` 拥有的代币的值。
51+
52+ ### ** ` transfer(address to, uint256 value) → bool ` external**
53+
54+ 将 ` value ` 数量的代币从调用者的帐户移动到 ` to ` 。
55+
56+ 返回一个布尔值,指示操作是否成功。
57+
58+ 发出一个 [ ` transfer ` ] ( https://docs.openzeppelin.com/contracts/5.x/api/token/erc20#IERC20-transfer-address-uint256- ) 事件。
59+
60+ ### ** ` allowance(address owner, address spender) → uint256 ` external**
61+
62+ 返回 ` spender ` 将被允许代表 ` owner ` 通过 [ ` transferFrom ` ] ( https://docs.openzeppelin.com/contracts/5.x/api/token/erc20#IERC20-transferFrom-address-address-uint256- ) 花费的剩余代币数量。 默认情况下,此值为零。
63+
64+ 当调用 [ ` approve ` ] ( https://docs.openzeppelin.com/contracts/5.x/api/token/erc20#IERC20-approve-address-uint256- ) 或 [ ` transferFrom ` ] ( https://docs.openzeppelin.com/contracts/5.x/api/token/erc20#IERC20-transferFrom-address-address-uint256- ) 时,此值会发生变化。
65+
66+ ### ** ` approve(address spender, uint256 value) → bool ` external**
67+
68+ 将 ` value ` 数量的代币设置为 ` spender ` 在调用者的代币上的 allowance。
69+
70+ 返回一个布尔值,指示操作是否成功。
71+
72+ | | |
73+ | --- | --- |
74+ | | 请注意,使用此方法更改 allowance 会带来风险,即有人可能会因不幸的事务排序而同时使用旧 allowance 和新 allowance。 缓解这种竞争状况的一种可能的解决方案是首先将 spender 的 allowance 减少到 0,然后再设置所需的值:https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 |
75+
76+ 发出一个 [ ` Approval ` ] ( https://docs.openzeppelin.com/contracts/5.x/api/token/erc20#IERC20-Approval-address-address-uint256- ) 事件。
77+
78+ ### ** ` transferFrom(address from, address to, uint256 value) → bool ` external**
79+
80+ 使用 allowance 机制将 ` value ` 数量的代币从 ` from ` 移动到 ` to ` 。 然后从调用者的 allowance 中扣除 ` value ` 。
81+
82+ 返回一个布尔值,指示操作是否成功。
83+
84+ 发出一个 [ ` transfer ` ] ( https://docs.openzeppelin.com/contracts/5.x/api/token/erc20#IERC20-transfer-address-uint256- ) 事件。
85+
86+ ### ** ` Transfer(address indexed from, address indexed to, uint256 value) ` event**
87+
88+ 当 ` value ` 个代币从一个帐户(` from ` )移动到另一个帐户(` to ` )时发出。
89+
90+ 请注意,` value ` 可能为零。
91+
92+ ### ** ` Approval(address indexed owner, address indexed spender, uint256 value) ` event**
93+
94+ 当通过调用 [ ` approve ` ] ( https://docs.openzeppelin.com/contracts/5.x/api/token/erc20#IERC20-approve-address-uint256- ) 设置 ` owner ` 的 ` spender ` 的 allowance 时发出。 ` value ` 是新的 allowance。
95+
1896# 2025-08-18
1997
2098# ERC-20学习
0 commit comments