Last active
July 20, 2021 20:56
-
-
Save vmunix/bd9a2507ab3e43fceb8f91fb2e3a6e04 to your computer and use it in GitHub Desktop.
MeebitsDAO red ticket solidity contract
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// SPDX-License-Identifier: MIT | |
pragma solidity ^0.8.0; | |
import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; | |
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol"; | |
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Burnable.sol"; | |
import "@openzeppelin/contracts/access/AccessControl.sol"; | |
import "@openzeppelin/contracts/utils/Counters.sol"; | |
contract MeebitsDAOTickets is | |
ERC721, | |
ERC721URIStorage, | |
ERC721Burnable, | |
AccessControl | |
{ | |
using Counters for Counters.Counter; | |
bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE"); | |
Counters.Counter private _tokenIdCounter; | |
constructor() ERC721("MeebitsDAOTickets", "MTIX") { | |
_setupRole(DEFAULT_ADMIN_ROLE, msg.sender); | |
_setupRole(MINTER_ROLE, msg.sender); | |
} | |
function safeMint( | |
address to, | |
uint256 tokenId, | |
string memory _tokenURI | |
) public { | |
require(hasRole(MINTER_ROLE, msg.sender)); | |
require( | |
tokenId <= _tokenIdCounter.current(), | |
"MeebitsDAOTickets: cannot mint a single token that hasn't been minted already" | |
); | |
_safeMint(to, tokenId); | |
_setTokenURI(tokenId, _tokenURI); | |
} | |
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, AccessControl) | |
returns (bool) | |
{ | |
return super.supportsInterface(interfaceId); | |
} | |
function totalSupply() public view virtual returns (uint256) { | |
return _tokenIdCounter.current(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment