我正在尝试创建一个ERC1155 NFT,但是当我部署合同并试图在Opensea上看到它时,它总是显示“身份不明的合同”,而我对ERC721没有任何问题。
区别在于:当您创建一个ERC721时,可以添加ERC721令牌的名称及其符号,如下所示:
contract MyNFT is ERC721URIStorage {
using Counters for Counters.Counter;
Counters.Counter private _tokenIds;
constructor() ERC721 ("NAME", "SYMBOL") {
}但是,对于ERC1155令牌,这是完全不同的,这是我的代码:
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文件元数据
{
"name":"Sword",
"description":"Sword from GameItems",
"image":"link_picture"
}通过查看这个https://eips.ethereum.org/EIPS/eip-1155#rationale,似乎为了将集合的名称插入元数据本身,但我不知道必须使用哪个名称。我试过这个:
{
"title":"GameItems",
"name":"Sword",
"description":"Sword from GameItems",
"image":"link_picture"
}但这不管用。有人成功地在Opensea上为这个集合申请了一个名字吗?有一些建议是很有帮助的
谢谢
发布于 2021-11-18 21:34:59
如果只想添加名称和符号,可以执行以下操作:
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上看到的内容。你可以这样做:
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的,它是一个关于集合的单独文件。
{
"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创建了。
https://ethereum.stackexchange.com/questions/111841
复制相似问题