DCIPs/assets/eip-5173/Implementation/nFRImplementation.sol

71 lines
2.3 KiB
Solidity

// SPDX-License-Identifier: CC0-1.0
// Contract based on [https://docs.openzeppelin.com/contracts/3.x/erc721](https://docs.openzeppelin.com/contracts/3.x/erc721)
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
import "./nFR.sol";
contract MyNFT is ERC721URIStorage, Ownable, nFR {
using Counters for Counters.Counter;
Counters.Counter private _tokenIds;
constructor() ERC721("MyNFT", "NFT") {}
function mintNFT(address recipient, uint8 numGenerations, uint256 percentOfProfit, uint256 successiveRatio, string memory tokenURI)
public onlyOwner
returns (uint256)
{
_tokenIds.increment();
uint256 newItemId = _tokenIds.current();
_mint(recipient, newItemId, numGenerations, percentOfProfit, successiveRatio);
_setTokenURI(newItemId, tokenURI);
return newItemId;
}
function mintERC721(address recipient, string memory tokenURI) public onlyOwner {
_tokenIds.increment();
uint256 newItemId = _tokenIds.current();
_mint(recipient, newItemId);
_setTokenURI(newItemId, tokenURI);
}
function setDefaultFRInfo(uint8 numGenerations, uint256 percentOfProfit, uint256 successiveRatio) public onlyOwner {
_setDefaultFRInfo(numGenerations, percentOfProfit, successiveRatio);
}
function burnNFT(uint256 tokenId) public onlyOwner {
_burn(tokenId);
}
function _burn(uint256 tokenId) internal override(nFR, ERC721URIStorage) {
super._burn(tokenId);
}
function _transfer(address from, address to, uint256 tokenId) internal override(ERC721, nFR) {
super._transfer(from, to, tokenId);
}
function _mint(address to, uint256 tokenId) internal virtual override(ERC721, nFR) {
super._mint(to, tokenId);
}
function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721, nFR) returns (bool) {
return super.supportsInterface(interfaceId);
}
function tokenURI(uint256 tokenId)
public
view
override(ERC721, ERC721URIStorage)
returns (string memory)
{
return super.tokenURI(tokenId);
}
}