5 关于TRC20合约approve和transferFrom的问题

contract  MyContract {
    ITRC20 usdt;
    constructor(ITRC20 _usdt) public  {
           usdt = _usdt;
      }

  function  transferOut(address toAddr, uint amount) external {
    usdt.transfer(toAddr, amount);
  }

  function approve(address spender, uint256 amount) external {

    usdt.approve(spender,amount);
  }

  function  transferIn(address fromAddr, address _to,uint amount) external {

    usdt.transferFrom(fromAddr,_to, amount);
  }

}

请问大佬们,我这种写法有什么问题吗?要实现的是往合约地址里边转USDT,一直报错:REVERT opcode executed

先调用approve取得权限,在调用transferIn,还有个问题,这俩方法的参数应该怎么传啊?

请先 登录 后评论

最佳答案 2022-03-27 18:37

基础太弱.... 可能到处都是问题,你得一个一个补。。。 1、授权,得用户调用usdt的approve,给当前扣款合约 (你图上的授权是合约授权给spender, 可能反了,不过也看你实际需求)

2、transferIn,如果你的需求是合约扣用户的,那么得参数中的fromAddr已经授权给当前合约

3、注意事项, ITRC20的里面的相关方法需要和实际usdt的一致

请先 登录 后评论

其它 0 个回答

  • 0 关注
  • 0 收藏,5200 浏览
  • 原点111 提出于 2022-03-25 17:19