我在学习ERC1155,我有点困惑。
这是OpenZeppelin的ERC1155合同示例:

因此,这个示例包含几个可替换的令牌:
只有一种不可替代的令牌:
例如,假设我想创建一个足球比赛:
示例代码:
//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,等等?
发布于 2021-11-10 08:26:14
您可以做的是像这样进行一个跟踪NFT所属的映射:
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;https://ethereum.stackexchange.com/questions/98422
复制相似问题