NFT Cheat Sheet 2026
The 30 highest-yield NFT facts, distilled from real exam questions. Print it, save it as a PDF, or study it here — free, no sign-up.
50 questions
60 min time limit
70% to pass
- Which event does ERC-1155 emit for a single burn operation? → TransferSingle with the 'to' field as the zero address
- Which storage pattern enforces a hard cap on the number of NFTs that can ever be minted? → A require check comparing totalSupply() against a MAX_SUPPLY constant
- What does a minimal proxy (ERC-1167) clone primarily save on? → Deployment gas costs
- Which gas consideration favors a default royalty over per-token royalties? → A default avoids writing storage for every token
- Why are NFT images and metadata often stored on IPFS rather than directly on-chain? → On-chain storage of large files is prohibitively expensive in gas
- What is the risk of storing metadata at a centralized HTTP URL instead of IPFS? → The server could go down or content could change, breaking the NFT
- An ERC-721 contract uses _mint instead of _safeMint in a public function. Why might an auditor flag this? → _mint skips the onERC721Received recipient check
- What is the purpose of an on-chain royalty enforcement registry like an operator filter? → Block transfers via marketplaces that skip royalties
- Why might a large 10,000-item PFP collection still choose ERC-721 over ERC-1155? → Marketplace and tooling support plus per-token uniqueness expectations favor ERC-721
- What does setting up an event listener with contract.on('Transfer', ...) enable in a live minting UI? → Real-time updates as mints happen, including the live supply count
- What does ERC-721's safeTransferFrom do that transferFrom does not? → Checks the recipient can receive ERC-721 via onERC721Received
- Which access control pattern best restricts who can call a mint function? → A modifier like onlyOwner or onlyRole(MINTER_ROLE)
- What is 'lazy minting' in NFT development? → Deferring on-chain minting until the first purchase or claim
- What is the purpose of the approve() function in ERC-721? → To grant another address permission to transfer a specific token
- Which storage approach makes NFT image data most resistant to disappearing? → Arweave permanent storage
- A security concern when setting the royalty receiver via a public function is what? → Missing access control could let anyone redirect royalties to themselves
- Why might dynamic NFTs use a Chainlink oracle? → To update metadata based on real-world data
- Which event must ERC-721 emit when ownership of a token changes? → Transfer
- To mitigate reentrancy during minting, which principle should be followed? → Checks-Effects-Interactions: update state before external calls
- What advantage does ERC-1155 offer over ERC-721? → It can manage multiple token types (fungible and non-fungible) in one contract
- Why is on-chain (fully generative) NFT art notable compared to off-chain images? → The artwork is generated and stored entirely on the blockchain
- Which Solidity pattern helps prevent reentrancy attacks during minting or withdrawals? → Checks-Effects-Interactions
- What is the primary gas benefit of using `uint256` for token IDs rather than `uint128` in ERC-721 contracts? → uint256 fits exactly in one storage slot, avoiding costly masking operations
- Which two parameters does royaltyInfo take as inputs? → tokenId and salePrice
- What happens to the totalSupply tracking when a token is burned in an enumerable ERC-721? → It decreases by one
- Which standard natively defines a TransferBatch event for multi-ID movements? → ERC-1155
- What does the ERC-721 'ownerOf' function return? → The address that owns a given token ID
- How does ERC-1155 typically handle metadata URIs to support many tokens? → A single URI template with an {id} substitution placeholder
- What does the royaltyInfo function in EIP-2981 return? → The receiver address and royalty amount
- What advantage does a library like wagmi or RainbowKit provide over raw window.ethereum calls in a React NFT app? → Hooks and connectors that manage wallet state, caching, and multiple wallet types
Turn these facts into recall: