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
  1. Which event does ERC-1155 emit for a single burn operation? → TransferSingle with the 'to' field as the zero address
  2. 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
  3. What does a minimal proxy (ERC-1167) clone primarily save on? → Deployment gas costs
  4. Which gas consideration favors a default royalty over per-token royalties? → A default avoids writing storage for every token
  5. 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
  6. 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
  7. 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
  8. What is the purpose of an on-chain royalty enforcement registry like an operator filter? → Block transfers via marketplaces that skip royalties
  9. 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
  10. 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
  11. What does ERC-721's safeTransferFrom do that transferFrom does not? → Checks the recipient can receive ERC-721 via onERC721Received
  12. Which access control pattern best restricts who can call a mint function? → A modifier like onlyOwner or onlyRole(MINTER_ROLE)
  13. What is 'lazy minting' in NFT development? → Deferring on-chain minting until the first purchase or claim
  14. What is the purpose of the approve() function in ERC-721? → To grant another address permission to transfer a specific token
  15. Which storage approach makes NFT image data most resistant to disappearing? → Arweave permanent storage
  16. A security concern when setting the royalty receiver via a public function is what? → Missing access control could let anyone redirect royalties to themselves
  17. Why might dynamic NFTs use a Chainlink oracle? → To update metadata based on real-world data
  18. Which event must ERC-721 emit when ownership of a token changes? → Transfer
  19. To mitigate reentrancy during minting, which principle should be followed? → Checks-Effects-Interactions: update state before external calls
  20. What advantage does ERC-1155 offer over ERC-721? → It can manage multiple token types (fungible and non-fungible) in one contract
  21. Why is on-chain (fully generative) NFT art notable compared to off-chain images? → The artwork is generated and stored entirely on the blockchain
  22. Which Solidity pattern helps prevent reentrancy attacks during minting or withdrawals? → Checks-Effects-Interactions
  23. 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
  24. Which two parameters does royaltyInfo take as inputs? → tokenId and salePrice
  25. What happens to the totalSupply tracking when a token is burned in an enumerable ERC-721? → It decreases by one
  26. Which standard natively defines a TransferBatch event for multi-ID movements? → ERC-1155
  27. What does the ERC-721 'ownerOf' function return? → The address that owns a given token ID
  28. How does ERC-1155 typically handle metadata URIs to support many tokens? → A single URI template with an {id} substitution placeholder
  29. What does the royaltyInfo function in EIP-2981 return? → The receiver address and royalty amount
  30. 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:
Was this helpful?