【发布时间】:2021-06-17 07:20:25
【问题描述】:
代码看起来正确,在转账前批准令牌,但失败并出现错误:“转账金额超过消费限额” 发件人帐户的代币余额超过要求。
有什么想法吗? 合约:https://rinkeby.etherscan.io/address/0x2a855c479b14443489963eef90ad449ecdf40cf5#writeContract
pragma solidity ^0.7.0;
interface IERC20 {
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
function approve(address spender, uint256 amount) external returns (bool);
function transfer(address recipient, uint256 amount) external returns (bool);
}
contract FundTokenContract {
address public owner;
constructor(){
owner = msg.sender;
}
modifier OnlyOwner() {
require(msg.sender == owner, "Only owner can call this function.");
_;
}
function fundToken(address tokenAddress, uint amount ) external {
require(amount > 0);
IERC20(tokenAddress).approve(address(this), amount);
IERC20(tokenAddress).transferFrom(msg.sender ,address(this), amount);
}
function withdrawToken(address _tokenAddress, address _recipient, uint _amount) public OnlyOwner returns (bool){
IERC20(_tokenAddress).transfer(_recipient, _amount);
return true;
}
}
【问题讨论】:
-
请编辑您的问题并分享
tokenIn函数approve()和transferFrom()及其依赖项。使用您问题中的当前代码,无法重现(和解决)您的问题。 -
您好,已更新,请查看rinkeby地址
标签: transactions ethereum solidity metamask