└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # nft-smart-contract 2 | // SPDX-License-Identifier: MIT 3 | pragma solidity ^0.8.0; 4 | 5 | import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; 6 | import "@openzeppelin/contracts/access/Ownable.sol"; 7 | 8 | contract MyNFT is ERC721, Ownable { 9 | uint256 private _nextTokenId; 10 | string private _baseTokenURI; 11 | 12 | constructor(string memory baseURI) ERC721("MyNFT", "MNFT") { 13 | _baseTokenURI = baseURI; 14 | } 15 | 16 | function _baseURI() internal view override returns (string memory) { 17 | return _baseTokenURI; 18 | } 19 | 20 | function mint(address to) external onlyOwner { 21 | _safeMint(to, _nextTokenId); 22 | _nextTokenId++; 23 | } 24 | 25 | function setBaseURI(string memory baseURI) external onlyOwner { 26 | _baseTokenURI = baseURI; 27 | } 28 | } 29 | rare 30 | --------------------------------------------------------------------------------