[英]ERC20 token contract: does approve function need to check caller balance?
我正在阅读 ERC20.sol 源代码。 有一个关于批准 function 的问题。
function _approve(
address owner,
address spender,
uint256 amount
) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
在function中,它需要owner.= address(0)和spender?= address(0):我只是想知道我们应该在函数中进行金额检查吗? 如:
require(amount <= _balances[owner]);
谢谢。
我们应该在 function 中检查金额吗?
没有。 批准 function 仅允许第三方消费者代表您使用您的代币。 您只需允许某人或智能合约使用您的 ERC20 代币。 这并不意味着他们可以花费无限的代币。
假设您让智能合约花费 1000 个 ERC20 代币。 该智能合约将能够代表您从您的余额中花费多达 1000 个代币。 但前提是您有足够的余额进行交易。 因此,允许的智能合约可以调用 transferFrom 方法,并且只有在您有足够的余额并且允许智能合约花费足够的代币时,才能将您的代币发送到另一个钱包。
所以不,你不必在批准时检查钱包是否有足够的余额,因为只有在转移代币时才需要这个条件。
希望这些信息有用:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.