Web3js

自主合約呼叫 erc20 代幣的 transferFrom 以獲取已批准金額的問題

  • April 1, 2022

嘗試使用 ERC20 代幣句柄轉移資金並呼叫“transferFrom”。假設具體金額由所有者賬戶預先批准“MyContract”合約地址。

contract StandardToken {
 function transferFrom(address from, address to, uint value);
}

contract MyContract{
 address _addrToken;
 function MyContract(address addrToken){
   _addrToken = addrToken;
 }

 event FundAcquired(address owner, uint256 amount);

 function acquireFund(address owner, uint256 amount){
   StandardToken token = StandardToken(tokenAddr);
   token.transferFrom(owner, this, amount);
   FundAcquired(owner, amount);
 }
}

通過 web3js 呼叫時,函式 ‘acquireFund’ 結果會出現以下錯誤。

異常:錯誤:處理事務時出現 VM 異常:還原

有人可以指導我解決什麼問題嗎?

更改tokenAddr_addrToken

我認為你應該先執行 Token.Approve(MyContract.address) 來設置津貼,這樣合約就可以從所有者那里花費代幣。

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