这取自 OpenZeppelin 的 ERC20transferFrom
实现:
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;
}
在检查提款人( )津贴之前是否有理由_transfer
调用?msg.sender
如果先transferFrom
进行余量require
检查,是否仍能正常工作?