RHP27042002/AI_NFT_generator
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.0;
import "@openzeppelin/contracts/utils/Counters.sol"; import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
contract NFT is ERC721URIStorage { using Counters for Counters.Counter; Counters.Counter private _tokenIds;
address public owner; uint256 public cost;
constructor( string memory name, string memory symbol, uint256 cost ) ERC721(name, symbol) { owner = msg.sender; cost = cost; }
function mint(string memory tokenURI) public payable { require(msg.value >= cost);
_tokenIds.increment();
uint256 newItemId = tokenIds.current(); mint(msg.sender, newItemId); _setTokenURI(newItemId, tokenURI); }
function totalSupply() public view returns (uint256) { return _tokenIds.current(); }
function withdraw() public { require(msg.sender == owner); (bool success, ) = owner.call{value: address(this).balance}(""); require(success); } }
