Contract-Development
我可以訪問發送到我的智能合約地址的 NFT 嗎?
讓我們假設我創建了一個智能合約,使用者通過它鑄造他們的 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); }
程式碼解釋:
- 使用 NFT 合約的介面。您還需要 NFT 合約的地址來創建引用。例如,您可以從https://github.com/binodnp/openzeppelin-solidity/blob/master/docs/IERC721.md找到該介面
- 呼叫 NFT 合約的
transferFrom
功能,將特定 NFT(由 標識nft_token_id
)從目前合約address(this)
轉移到某個接收者。