AetheriaNFT.sol
Quick Links
VIEW CONTRACT ON GITHUB
The AetheriaNFT.sol contract is a limited-edition ERC721 collection that represents the highest level of commitment to the AetherCycle ecosystem. With a fixed maximum supply of only 500, these NFTs are designed for pure utility and status, granting holders access to the exclusive AECStakingNFT reward pool. All proceeds from the minting process are sent directly to the PerpetualEngine as protocol revenue.
Inherits from: ERC721, ReentrancyGuard
Key State Variables
MAX_SUPPLY
uint256
The immutable maximum supply of NFTs, fixed at 500.
MINT_PRICE
uint256
The fixed price to mint one NFT, set at 1,000,000 AEC.
aecToken
IERC20
The address of the AEC token used for payment.
perpetualEngine
address
The address of the PerpetualEngine which receives all minting fees.
totalMinted
uint256
The current number of NFTs that have been minted.
mintingActive
bool
A flag indicating if minting is still possible. Becomes false when totalMinted reaches MAX_SUPPLY.
mintTimestamp
mapping(uint256 => uint256)
Returns the timestamp of when a specific tokenId was minted.
originalMinter
mapping(uint256 => address)
Returns the original address that minted a specific tokenId.
Write Functions
User-Facing Functions
mint(): Mints a single Aetheria NFT to the caller. Requires the caller to have approved the contract to spend 1,000,000 AEC. Reverts if the max supply has been reached.mintBatch(uint256 quantity): Mints multiple NFTs in a single transaction for gas efficiency. Thequantitymust be between 1 and 10. Requires approval forMINT_PRICE * quantityAEC.transferFrom,safeTransferFrom,approve,setApprovalForAll: Standard ERC721 functions for transferring and managing ownership and approvals.
View Functions
Metadata and Philosophy
tokenURI(uint256 tokenId): Intentionally returns an empty string. This is a core feature of the NFT's philosophy: its value is in its utility, not its image.manifesto(): A view function that returns the philosophical statement of the Aetheria NFT collection.
Analytics & Stats
getTokenInfo(uint256 tokenId): Returns a detailed struct for a specific NFT, including its current owner, original minter, mint time, age, and whether the current owner is the original minter.getMintStats(): Provides an overview of the minting progress, including the number of NFTs minted, remaining supply, whether minting is still active, and the total AEC collected so far.tokensOfOwner(address owner): Returns an array oftokenIdsowned by a specific address.exists(uint256 tokenId): Returnstrueif a specifictokenIdhas been minted.
Events
AetheriaMinted(address indexed minter, uint256 indexed tokenId, uint256 timestamp, uint256 blockNumber, uint256 totalSupply): Emitted each time a new NFT is successfully minted, providing comprehensive details about the mint event.MintingCompleted(uint256 finalSupply, uint256 timestamp): Emitted once when the 500th NFT is minted, signaling the permanent end of the minting phase.AetheriaTransferred(address indexed from, address indexed to, uint256 indexed tokenId, uint256 timestamp): Emitted on every transfer, including mints (wherefromis the zero address).
Last updated