Description:
Non-Fungible Token (NFT) contract following ERC721 standard.
Blockchain: Ethereum
Source Code: View Code On The Blockchain
Solidity Source Code:
{{
"language": "Solidity",
"sources": {
"contracts/UhtNFTPresale.sol": {
"content": "// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.20;
contract UhtNFTPresale {
NFT private nft;
uint256 private _nextTokenId;
address payable public owner;
event NFTMinted(address purchaser, uint256 tokenId, uint256 gas, string ndtname, uint256 timestamp);
struct NFTMintedStruct {
address purchaser;
uint256 tokenId;
uint256 gas;
string nftname;
uint256 timestamp;
}
NFTMintedStruct[] transactions;
constructor(NFT _nft) {
nft = _nft;
owner = payable(msg.sender);
}
function safeMint(string memory uri, string memory nftname) public payable {
address payable beneficiary = payable(msg.sender);
_preValidatePurchase(beneficiary);
nft.safeMint(beneficiary, uri, nftname);
}
function safeMintTokenID(string memory uri, string memory nftname, uint256 tokenId) public payable {
address payable beneficiary = payable(msg.sender);
_preValidatePurchase(beneficiary);
nft.safeMintTokenID(beneficiary, uri, nftname, tokenId);
}
function _preValidatePurchase(address beneficiary) internal view {
require(beneficiary != address(0), "Invalid address");
this;
}
function withdraw() external onlyOwner{
require(address(this).balance > 0, 'zero_balance');
owner.transfer(address(this).balance);
}
function getAllTransactions() public view returns (NFTMintedStruct[] memory) {
return transactions;
}
modifier onlyOwner {
require(msg.sender == owner, "only_owner_access");
_;
}
function amountInETHReceived() public view returns (uint256) {
return address(this).balance;
}
function getTokens(address beneficiary) public view returns (uint256[] memory) {
return nft.getTokens(beneficiary);
}
}
interface NFT {
struct NFTMintedStruct {
address purchaser;
uint256 tokenId;
uint256 gas;
string nftname;
uint256 timestamp;
}
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
function balanceOf(address owner) external view returns (uint256 balance);
function supportsInterface(bytes4 interfaceId) external view returns (bool);
function ownerOf(uint256 tokenId) external view returns (address owner);
function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;
function safeTransferFrom(address from, address to, uint256 tokenId) external;
function transferFrom(address from, address to, uint256 tokenId) external;
function approve(address to, uint256 tokenId) external;
function setApprovalForAll(address operator, bool approved) external;
function getApproved(uint256 tokenId) external view returns (address operator);
function isApprovedForAll(address owner, address operator) external view returns (bool);
function tokenURI(uint256 tokenId) external view returns (string memory);
function safeMint(address beneficiary, string memory uri, string memory nftname) external payable;
function safeMintTokenID(address beneficiary, string memory uri, string memory nftname, uint256 tokenId) external payable;
function getAllTransactions() external view returns (NFTMintedStruct[] memory);
function getTokens(address beneficiary) external view returns (uint256[] memory);
}"
}
},
"settings": {
"evmVersion": "paris",
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}
}}
Submitted on: 2025-09-29 10:39:48
Comments
Log in to comment.
No comments yet.