Erc-20

呼叫 TransferFrom() 函式時出現執行恢復錯誤

  • August 12, 2021

這是我的以下程式碼。我正在使用 Rinkeby 網路。

//SPDX-License-Identifier: MIT
pragma solidity ^0.8;

import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol";

contract TransferDAI{
   IERC20 public dai;
  
   constructor() {
       dai = IERC20(0x5592EC0cfb4dbc12D3aB100b257153436a1f0FEa);
   }
   
   
   function Transfer(uint _amount) external {
       dai.transferFrom(msg.sender, address(this), _amount);
   }
  
   // Some extra functions for now...
   function getDaiBalance(address _address) external view returns(uint) {
       return dai.balanceOf(_address);
   }
}

我無法將 Dai 轉移到合約地址。雖然我可以查看getDaiBalance並看到正確數量的 DAI。

任何線索都會有所幫助。我嘗試使用dai.approve(msg.sender,_amount)它沒有幫助。

dai.approve(msg.sender, _amount)讓我們msg.sender花費_amount合約餘額中的代幣。不是反過來。您需要approve直接在 DAI 合約地址上呼叫您的錢包,並輸入您的合約地址和金額。

引用自:https://ethereum.stackexchange.com/questions/107031