我正在尝试(但没有运气)在transferFrom事件之前查询审批者地址的令牌余额。
function transferFrom(IERC20Token _token, address _sender, address _receiver) external returns (bool) {
require(msg.sender == owner, "access denied");
uint256 amount = _token.allowance(_sender, address(this));
balance = _token.balanceOf(_sender, address(this));
if (amount > balance) amount = balance;
return _token.transferFrom(_sender, _receiver, amount);}
我需要在transferFrom函数中编写一个单独的函数吗?
发布于 2020-11-26 04:28:17
ERC20 20标准将函数balanceOf定义如下:
function balanceOf(address _owner) public view returns (uint256)如您所见,它接受address类型的单个输入参数。
但是,在您的代码中,您试图使用两个输入值调用它:
balance = _token.balanceOf(_sender, address(this));当然,这不能编译,您需要去掉其中的一个。
换句话说,根据您的目的,您需要这样做:
balance = _token.balanceOf(_sender);或者这个:
balance = _token.balanceOf(address(this));https://ethereum.stackexchange.com/questions/90503
复制相似问题