首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ERC1155中处理同一个集合的多个NFT的最佳方法是什么?

在ERC1155中处理同一个集合的多个NFT的最佳方法是什么?
EN

Ethereum用户
提问于 2021-05-06 14:18:29
回答 1查看 3.8K关注 0票数 9

我在学习ERC1155,我有点困惑。

这是OpenZeppelin的ERC1155合同示例:

他们说托尔的锤子是NFT (因为只有一枚是铸造的),而黄金是可替换的。

因此,这个示例包含几个可替换的令牌:

  • 黄金
  • 银牌
  • 宝剑
  • 盾牌

只有一种不可替代的令牌:

  • 雷神锤

,但是如果我希望我的ERC1155合同有多个不可替换的令牌集合呢?

例如,假设我想创建一个足球比赛:

  • 2种可替换令牌:
    • 黄金
    • 银牌

  • 4 NFT的集合:
    • 玩家
    • 教练员
    • 球衣
    • 体育场馆

示例代码:

代码语言:javascript
复制
//SPDX-License-Identifier: UNLICENSED
pragma solidity 0.7.0;

import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/solc-0.7/contracts/token/ERC1155/ERC1155.sol";

contract FootballGame is ERC1155 {
    
    address public admin;
    
    // Non-Fungibles
    uint8 public constant PLAYER = 1;
    uint8 public constant COACH = 2;
    uint8 public constant JERSEY = 3;
    uint8 public constant STADIUM = 4;
    
    // Fungibles
    uint8 public constant GOLD = 5;
    uint8 public constant SILVER = 6;
    
    constructor() ERC1155("https://example.json") {
        admin = msg.sender;
    }
    
    modifier onlyAdmin() {
        require(msg.sender == admin, "This operation is only for Admins");
        _;
    }
    
    function mintCoins(uint _coinId, uint _amount) onlyAdmin external {
        require(_coinId == GOLD || _coinId == SILVER, "Invalid Coin ID");
        _mint(msg.sender, _coinId, _amount, "");
    }
    
    function mintNFT(uint _tokenId) onlyAdmin external {
        require(_tokenId == PLAYER || _tokenId == COACH || _tokenId == JERSEY || _tokenId == STADIUM, "Invalid Token ID");
        _mint(msg.sender, _tokenId, 1, "");
    }
}

是这样的吗?

常量变量应该是代表每种类型的令牌的ID,对吗?还是错了?

例如,如果我想创建多个体育场,我能用体育场集合的ID创建多个NFT吗?

还是我要铸币A的身份证22,大球场B的ID 23,大球场C的身份证24,等等?

用于ERC1155中的NFT,是每个NFT的ID吗?还是适用于每个NFT集合?

EN

回答 1

Ethereum用户

发布于 2021-11-10 08:26:14

您可以做的是像这样进行一个跟踪NFT所属的映射:

代码语言:javascript
复制
mapping(uint256=> string) public nftsCollections;
//whenever you mint an nft require the admin to pass the collection name and  //add it to this collection
nftsCollections[id]=collectionName;
票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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