Contract-Development

如何將 NFT 從合約地址轉移到錢包地址

  • June 26, 2022

在本地測試環境中,我能夠編譯ERC721 令牌標準的這個transferFrom實現,部署它,鑄造一個 NFT 並將它(使用該函式)傳輸到以下部署的 vyper 合約。

def transferFrom(_from: address, _to: address, _tokenId: uint256): nonpayable
   
@external
def transfer_out(_from: address, _to: address, _tokenId: uint256):
   Erc721(_from).transferFrom(_from, _to, _tokenId)

我的目標是通過呼叫上面的函式將 NFT 從合約轉移到錢包transfer_out,但是在嘗試這樣做時出現以下錯誤:

ContractLogicError: execution reverted: VM Exception while processing transaction: revert

編輯:

已解決:我將 vyper 合約的地址transfer_out作為_from地址傳遞,而我應該傳遞 ERC721 令牌標準合約的地址。

如果您還沒有,您應該首先從您的 EOA批准您的契約以給予許可。然後您應該能夠轉移 ERC721 令牌。

transfer_out 函式應該是:

def transfer_out(_from: address, _to: address, _tokenId: uint256):
  Erc721(contract_address).transferFrom(_from, _to, _tokenId)

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