请问如何在合约里调用其他合约进行授权

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
contract Transfer {
    //测试链USDT地址
    address constant USDTAddr = 0xEa51342dAbbb928aE1e576bd39eFf8aaf070A8c6;

   //查询授权了多少
    function allowance(address to) public returns(uint256){
        // bytes4(keccak256('allowance(address,uint256)'));
        (, bytes memory data) = USDTAddr.call(abi.encodeWithSelector(0xdd62ed3e,msg.sender, to));
        (uint256 amount)=abi.decode(data,(uint256));
        return amount;
    }

    //授权
    function approve(address to,uint256 value) public returns(bool){
        // bytes4(keccak256('approve(address,uint256)'));
        (, bytes memory data) = USDTAddr.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        (bool status)=abi.decode(data, (bool));
        return status;
    }
}

我是在波场测试的,代码就这么多,执行授权没有报错,查询授权了多少,返回是0。请问应该如何写代码。接口应该没调用错,我用dapp调用合约都没问题,用自己写的合约调用这个合约的授权就没效果。

人民币求教,感谢大佬回复

请先 登录 后评论

最佳答案 2023-04-14 21:27

这个是合约本身授权给 to 地址多少 USDT,而不是 msg.sender 授权,所以查不到授权额度

请先 登录 后评论

其它 1 个回答

用户_14041
请先 登录 后评论
  • 1 关注
  • 0 收藏,2006 浏览
  • 小蘑菇云 提出于 2023-04-13 23:11