// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol"; import "@openzeppelin/contracts/utils/Counters.sol"; contract MetaDataNFT is ERC721URIStorage { using Counters for Counters.Counter; Counters.Counter private _tokenIds; mapping (address => uint256) public mintTracker; constructor() ERC721("MetaDataNFTV2", "MDNFT2") {} function mint(string memory tokenURI) public returns (uint256){ if(mintTracker[msg.sender] > 0){ require(block.timestamp >= mintTracker[msg.sender], "Please wait 24 hours before minting again"); } uint256 slowdown = block.timestamp + 1 days; _tokenIds.increment(); uint256 newItemId = _tokenIds.current(); _safeMint(msg.sender, newItemId); _setTokenURI(newItemId, tokenURI); mintTracker[msg.sender] = slowdown; return newItemId; } }