通过合约从addressA发送令牌给addressB



我试图在我的合约中做一个函数,当有人使用它时:

  1. 它得到msg.sender的tokenX_v1余额,
  2. 从我的合约中发送相同数量的tokenX_v2,
  3. 将他的tokenX_v1发送到我的合约或burn地址。

第一部分和第二部分我是这样做的:

function query_oldBalance(address _adrs) view public returns (uint) {
  address _tokenAddress = "tokenV1"
  return IERC20(_tokenAddress).balanceOf(_adrs);
function myfunction() public {
  _tokenTransfer(address(this),msg.sender,query_oldBalance(msg.sender) , false);

,直到这里它按预期工作,但现在我需要从msg中删除tokenV1。发送者,我想做一个转账把它发送到合同或burn地址,但是当我试图做一个转账时,我得到:execution reverted: ERC20: transfer amount exceeds allowance即使我把津贴放在一个更大的数量,我试图转移如果我尝试正常转账,我得到了"execution reverted: Transfer amount exceeds the maxTxAmount.,这里我试图将maxtxamount设置为比我试图转移的令牌大得多的数字。关于津贴,我不确定津贴和批准是如何工作的,如果我需要它在这种情况下,但这就是我所尝试的:

IERC20(_tokenAddress).allowance(msg.sender, address(this)); 
IERC20(_tokenAddress).approve(address(this),query_oldBalance(msg.sender)); //tried with this multiplied by 10 same story

我真的不明白如何通过合约来做这个addressA到addressB的令牌转移…希望有人能帮助我,谢谢。

        IERC20(_tokenAddress).transferFrom(msg.sender, address(this), old_balance);

并且在调用此函数之前,用户应该在旧令牌合约上批准新令牌的地址

相关内容

  • 没有找到相关文章

最新更新