首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从合同提供的ERC20理由中转移:“調用:转让金额超过备抵

从合同提供的ERC20理由中转移:“調用:转让金额超过备抵
EN

Ethereum用户
提问于 2020-10-16 00:22:47
回答 1查看 908关注 0票数 0

有什么问题吗?

代码语言:javascript
复制
pragma solidity ^0.6.0;
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/proxy/Initializable.sol";
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol";
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/SafeMath.sol";
contract Test {
    using SafeMath for uint256;
    IERC20 public toke;
    function f(IERC20 _token)public{
        toke=_token;
    }

    function y(address u,uint256 i)public{
        toke.approve(msg.sender,i);
        toke.transferFrom(msg.sender,u,i);
        
    }
    
}

处理GLDToken.transferFrom错误: VM错误:还原。还原事务已恢复到初始状态。合同提供的理由:"ERC20:转移金额超过备抵额“。调试事务以获得更多信息。

EN

回答 1

Ethereum用户

发布于 2020-10-16 07:43:42

使用toke.approve(msg.sender, i),您将批准msg.sender从您的合同中转移令牌。

使用toke.transferFrom(msg.sender, u, i),您将尝试从msg.sender传输令牌。

总之,您应该使用approve(yourContractAddress, i)帐户执行msg.sender

附带注意:您不希望您的代码工作,因为如果这样做了,那么就意味着任何人都可以从其他任何人那里转移令牌,而整个系统作为一个金融模型将毫无价值。

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

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

复制
相关文章

相似问题

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