Solidity

轉移erc20,如何從metamask呼叫批准

  • February 8, 2022

我們有一個遊戲,要求使用者將 ERC20 從瀏覽器轉移到合約地址,在單元測試中,需要從使用者端呼叫批准()才能將 ERC20 轉移到地址,這應該如何在連接到的瀏覽器中工作元遮罩?前端會先呼叫approve(),然後再呼叫transfer(),所以它的兩個交易?有沒有辦法檢測接收方地址是否已經可以訪問/批准從智能合約或solidity方面進行轉移,這樣我們就可以將approve()置於一個條件中,而不是每次都呼叫approve()?

您可以從allowance所有者檢查您的支出者開始。

function allowance(address owner, address spender) public returns uint256;

如果限額低於您的要求,您需要先進行approve交易。然後做transferFrom. 如果您將這作為兩個單獨的交易進行,它將打開 MetaMask 兩次,並且使用者必須分別授權 2 筆交易。

我們本可以使用多呼叫合約將這些呼叫組合在一個事務中,但大多數approve函式實現都基於msg.sender.

ERC-777 試圖通過要求單個事務有效地執行等效於approveand來解決此問題transferFrom您可以在此處查看有關 ERC-777 的更多資訊。

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