Nft
從其他合約呼叫 ERC721 合約的 setApprovalForAll 失敗
我試圖從 MyContract 呼叫一些 ERC721 合約的 setApprovalForAll 。當使用者在我的契約中呼叫approveTransfer時,交易失敗,“程式碼”:-32603,“消息”:“處理交易時VM異常:恢復ERC721:批准給呼叫者”。當使用者在 NFT 合約中直接呼叫 setApprovalForAll 時,交易成功。我做錯了什麼?
// SPDX-License-Identifier: MIT pragma solidity ^0.8.7; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; contract MyContract { IERC721 public NftContract; constructor() { NftContract = IERC721(0x43709dE8b3e2869273C6a78418a227aC26e915bB); } function approveTransfer() public { NftContract.setApprovalForAll(address(this), true); } .... .... .... }
您需要在 nft contract 上呼叫 setApprovalForAll() 。因為部署者是所有者,並且您嘗試從該合約呼叫該函式,並且為此它還原,因為“合約”不是所有者。嘗試從 nft contract 呼叫 setApprovalForAll() 。它應該工作,讓我知道。