UhtNFTPresale

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"
        ]
      }
    }
  }
}}

Tags:
ERC721, ERC165, NFT, Non-Fungible, Factory|addr:0x14709f8c2434e5e727c3d4a045bb10f7816a4103|verified:true|block:23463802|tx:0x572530ea9c352331addf26d9d8c620fbd1123261fc32af291e306d479f8b156a|first_check:1759135187

Submitted on: 2025-09-29 10:39:48

Comments

Log in to comment.

No comments yet.