首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >混合:当调用IERC20 transferFrom时,所需气体超过允许量。

混合:当调用IERC20 transferFrom时,所需气体超过允许量。
EN

Ethereum用户
提问于 2020-09-02 06:56:59
回答 1查看 988关注 0票数 0

当我使用fransferFrom接口( erc20 interface,IERC20)调用erc20时,会出现一个错误:“所需气体超过允许量(10000000)或总是失败的事务”。

我事先为合同做了准备。

这是一个叫transferFrom的合同。

代码语言:javascript
运行
复制
pragma solidity ^0.6.7;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract TokenSale {

    address public token_address;

    constructor(address _token_address) public {
        token_address = _token_address;
    }
    
    function sendEtherFromDeposit(address _token_supplyer) public returns(bool success) { 
        require(IERC20(token_address).allowance(_token_supplyer, address(this)) >= 10000, "insufficient allowance amount");
        IERC20(token_address).transferFrom(address(this), msg.sender, 1000);
        success = true;
    }
    
}

我的代码有什么问题吗?你能给我点建议吗?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2020-09-02 23:48:28

您目前正在尝试从契约本身发送令牌,而不是从_token_supplyer (我认为这是您打算做的事情)发送令牌。transferFrom的第一个参数指定要发送令牌的地址,因此如果将其设置为address(this),则令牌尝试从契约发送令牌,但由于没有设置备抵或合同没有足够的余额而失败。

如果将_token_supplyer指定为第一个参数,则它将工作:

代码语言:javascript
运行
复制
IERC20(token_address).transferFrom(_token_supplyer, msg.sender, 1000);

令牌契约可以检查_token_supplyer是否允许通过检查msg.sender来使用令牌。您不需要在transferFrom中指定契约地址本身。

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/87125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档