Contract-Development

我可以訪問發送到我的智能合約地址的 NFT 嗎?

  • February 10, 2022

讓我們假設我創建了一個智能合約,使用者通過它鑄造他們的 NFT,一段時間後使用者將他們的 NFT 轉移到合約地址。現在有什麼方法可以訪問這些 NFT 嗎?

如果合約是某個 NFT 的所有者,那麼您的問題的答案取決於實現的合約功能。如果合約具有向前轉移 NFT 的功能,那麼它可以做到這一點。但如果沒有這樣的功能,NFT 將永遠留在那裡,無法移動。是的,NFT 仍將“存在”並且合約仍將擁有它們,但在這一點上它們是否無用(可以被認為是被燒毀)有點值得懷疑。

一些參考程式碼:

function transferNFT() public {
 // import IERC721 from OpenZeppelin for example
 IERC721 contr = IERC721(address_of_the_nft_contract);
 contr.transferFrom(address(this), some_receiver_address, nft_token_id);
}

程式碼解釋:

  1. 使用 NFT 合約的介面。您還需要 NFT 合約的地址來創建引用。例如,您可以從https://github.com/binodnp/openzeppelin-solidity/blob/master/docs/IERC721.md找到該介面
  2. 呼叫 NFT 合約的transferFrom功能,將特定 NFT(由 標識nft_token_id)從目前合約address(this)轉移到某個接收者。

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