Contract-Development
如何將 NFT 從合約地址轉移到錢包地址
在本地測試環境中,我能夠編譯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)