【发布时间】:2021-06-03 15:36:53
【问题描述】:
这取自 OpenZeppelin 的 ERC20 transferFrom 实现:
function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
uint256 currentAllowance = _allowances[sender][_msgSender()];
require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
_approve(sender, _msgSender(), currentAllowance - amount);
return true;
}
在检查提款人 (msg.sender) 限额之前调用 _transfer 是否有原因?
如果先检查余量require,transferFrom 是否仍能正常工作?
【问题讨论】:
标签: ethereum solidity openzeppelin