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

ERC1155 -问题NFT不明合同
EN

Ethereum用户
提问于 2021-10-19 13:59:43
回答 1查看 1.1K关注 0票数 0

我正在尝试创建一个ERC1155 NFT,但是当我部署合同并试图在Opensea上看到它时,它总是显示“身份不明的合同”,而我对ERC721没有任何问题。

区别在于:当您创建一个ERC721时,可以添加ERC721令牌的名称及其符号,如下所示:

代码语言:javascript
复制
contract MyNFT is ERC721URIStorage {
  using Counters for Counters.Counter;
  Counters.Counter private _tokenIds;

  constructor() ERC721 ("NAME", "SYMBOL") {
  }

但是,对于ERC1155令牌,这是完全不同的,这是我的代码:

代码语言:javascript
复制
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

contract MyNFT is ERC1155, Ownable {
    constructor() ERC1155("JSON FILE WITH METADATA") {
        _mint(msg.sender,1,1,"");
    }

这就是我的json文件元数据

代码语言:javascript
复制
{
   "name":"Sword",
   "description":"Sword from GameItems",
   "image":"link_picture"
}

通过查看这个https://eips.ethereum.org/EIPS/eip-1155#rationale,似乎为了将集合的名称插入元数据本身,但我不知道必须使用哪个名称。我试过这个:

代码语言:javascript
复制
{
   "title":"GameItems",
   "name":"Sword",
   "description":"Sword from GameItems",
   "image":"link_picture"
}

但这不管用。有人成功地在Opensea上为这个集合申请了一个名字吗?有一些建议是很有帮助的

谢谢

EN

回答 1

Ethereum用户

发布于 2021-11-18 21:34:59

如果只想添加名称和符号,可以执行以下操作:

代码语言:javascript
复制
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

contract MyNFT is ERC1155, Ownable {
    
    string public name;
    string public symbol;
    
    constructor() ERC1155("JSON FILE WITH METADATA") {
        name = "Hello World 4321";
        symbol = "HELO";
        _mint(msg.sender,1,1,"");
    }
}

但是,如果您想要定义更多关于您的集合的详细信息,并且只关心人们在OpenSea上看到的内容。你可以这样做:

代码语言:javascript
复制
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

contract MyNFT is ERC1155, Ownable {
    
    constructor() ERC1155("JSON FILE WITH METADATA") {
        _mint(msg.sender,1,1,"");
    }
    
    function contractURI() public view returns (string memory) {
        return "https://LINK-TO-COLLECTION-METADATA";
    }
}

然后上传另一个元数据文件。注意,这个元数据文件不是关于NFT的,它是一个关于集合的单独文件。

代码语言:javascript
复制
{
  "name": "Hello World 4321",
  "description": "Welcome to my collection about Hello World 4321",
  "image": "https://link-to-image",
  "external_link": "https://link-to-website",
  "seller_fee_basis_points": 100, # Indicates a 1% seller fee.
  "fee_recipient": "YOUR_ADDRESS_TO_COLLECT_ROYALTIES" 
}

这是这里给我的。您还可以将两个示例中的代码组合在一起:)希望这会有所帮助!

P.S .你没问过它,所以也许你已经把它盖好了。但我只想让您知道,如果您不覆盖OpenSea函数,那么在uri()上可视化NFT可能会有问题。像在这个例子中一样,我为EatTheBlocks创建了。

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

https://ethereum.stackexchange.com/questions/111841

复制
相关文章

相似问题

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