Adding NFTs Base Template
This commit is contained in:
parent
f3d485d2a0
commit
d3e2c9d805
|
@ -0,0 +1,52 @@
|
||||||
|
// SPDX-License-Identifier: GPL-3.0
|
||||||
|
pragma solidity ^0.8.20;
|
||||||
|
|
||||||
|
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
|
||||||
|
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
|
||||||
|
import "@openzeppelin/contracts/access/AccessControl.sol";
|
||||||
|
|
||||||
|
/// @custom:security-contact david@neetsec.com
|
||||||
|
contract DCO2s is ERC721, ERC721Enumerable, AccessControl {
|
||||||
|
bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");
|
||||||
|
uint256 private _nextTokenId;
|
||||||
|
|
||||||
|
constructor(address defaultAdmin, address minter) ERC721("DCO2s", "DCO2") {
|
||||||
|
_grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin);
|
||||||
|
_grantRole(MINTER_ROLE, minter);
|
||||||
|
}
|
||||||
|
|
||||||
|
function _baseURI() internal pure override returns (string memory) {
|
||||||
|
return "https://gateway.decentralizedscience.org/ipfs/";
|
||||||
|
}
|
||||||
|
|
||||||
|
function safeMint(address to) public onlyRole(MINTER_ROLE) {
|
||||||
|
uint256 tokenId = _nextTokenId++;
|
||||||
|
_safeMint(to, tokenId);
|
||||||
|
}
|
||||||
|
|
||||||
|
// The following functions are overrides required by Solidity.
|
||||||
|
|
||||||
|
function _update(address to, uint256 tokenId, address auth)
|
||||||
|
internal
|
||||||
|
override(ERC721, ERC721Enumerable)
|
||||||
|
returns (address)
|
||||||
|
{
|
||||||
|
return super._update(to, tokenId, auth);
|
||||||
|
}
|
||||||
|
|
||||||
|
function _increaseBalance(address account, uint128 value)
|
||||||
|
internal
|
||||||
|
override(ERC721, ERC721Enumerable)
|
||||||
|
{
|
||||||
|
super._increaseBalance(account, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
function supportsInterface(bytes4 interfaceId)
|
||||||
|
public
|
||||||
|
view
|
||||||
|
override(ERC721, ERC721Enumerable, AccessControl)
|
||||||
|
returns (bool)
|
||||||
|
{
|
||||||
|
return super.supportsInterface(interfaceId);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue