首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Smart合同NFT问题

Smart合同NFT问题
EN

Stack Overflow用户
提问于 2022-08-18 14:16:35
回答 1查看 86关注 0票数 0

我最近一直在研究NFT智能合同,首先,我使用了ERC721 Openzepellin合同,如下所示:

代码语言:javascript
复制
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

import "@openzeppelin/contracts@4.6.0/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts@4.6.0/token/ERC721/extensions/ERC721Enumerable.sol";
import "@openzeppelin/contracts@4.6.0/token/ERC721/extensions/ERC721URIStorage.sol";
import "@openzeppelin/contracts@4.6.0/utils/Counters.sol";

 contract NAMZZ is ERC721, ERC721Enumerable, ERC721URIStorage{
 using Counters for Counters.Counter;

 Counters.Counter private _tokenIdCounter;
 uint256 MAX_SUPPLY = 5000;

 constructor() ERC721("NAMZZ", "NMZ") {}

 function safeMint(address to, string memory uri) public{
    uint256 tokenId = _tokenIdCounter.current();
    require(tokenId <= MAX_SUPPLY, "Sorry, all NFTs have been minted!");
    _tokenIdCounter.increment();
    _safeMint(to, tokenId);
    _setTokenURI(tokenId, uri);
}

// The following functions are overrides required by Solidity.

function _beforeTokenTransfer(address from, address to, uint256 tokenId)
    internal
    override(ERC721, ERC721Enumerable)
{
    super._beforeTokenTransfer(from, to, tokenId);
}

function _burn(uint256 tokenId) internal override(ERC721, ERC721URIStorage) {
    super._burn(tokenId);
}

function tokenURI(uint256 tokenId)
    public
    view
    override(ERC721, ERC721URIStorage)
    returns (string memory)
{
    return super.tokenURI(tokenId);
}

function supportsInterface(bytes4 interfaceId)
    public
    view
    override(ERC721, ERC721Enumerable)
    returns (bool)
{
    return super.supportsInterface(interfaceId);
}
}

一切似乎都很完美,因为我可以创建NFT,甚至可以使用SafeTransferFrom方法将NFT从一个地址移动到另一个地址。在创建了我的前2个NFT之后,我将我的元问询帐户(用来铸币NFT的)链接到Opensen,并且我能够在“收集”选项卡中看到我的NFT,但是在将其中的一个NFT转移到另一个地址之后,即使智能协议显示ID为1的NFT属于第二个地址,而且ID1 NFT的所有者也说是我使用的第二个地址,我无法在Opensen上收集的tab中再次看到它。

正如您在屏幕截图中所看到的,我已经创建了2个NFT,我只收集了1个NFT ( ID为0的NFT),而它应该显示2个收集,因为具有ID 1所有者的NFT是"ME",但我仍然看不到它。

EN

回答 1

Stack Overflow用户

发布于 2022-08-18 19:55:26

总经理在那儿!

合同没有什么问题,只是OpenSea通常不能很好地索引NFT,所以可能需要一些延迟(或者永远不要)才能让NFT出现在“收集”选项卡中。

但是,您不应该担心,因为这是UI问题,只要您去了Etherscan或Polygonscan,这取决于您的NFT部署的位置,并且您有您的NFT,您拥有它们,并且OpenSea没有能力从您手中夺走这些NFT。

干杯~

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73404641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档