Cube

What Are NFTs?

Learn what NFTs are, how they work, why token standards like ERC-721 matter, and where NFT ownership depends on metadata, storage, and assumptions.

What Are NFTs? hero image

Introduction

NFTs are blockchain-based tokens designed to represent specific, non-interchangeable assets. That sounds simple, but it solves a real problem: blockchains were originally very good at tracking quantities of identical units (like coins or points) and much worse at tracking this particular thing as distinct from that one. Once you want to represent a concert ticket, an in-game item, a membership pass, a deed-like claim, or a single piece in a digital collection, sameness stops being enough.

The key idea is not “a JPEG on a blockchain.” It is a standard way to assign identity and ownership to a unique token, so software can agree about who owns it, how it moves, and how to display it. That standardization is why wallets, marketplaces, games, and other applications can often work with the same NFT contract without custom integration for every project.

The rest of the concept follows from a single contrast: fungible tokens track amounts; NFTs track individually identifiable units. If you remember that distinction, most of the mechanics make sense.

How do NFTs differ from fungible tokens (what changes in the data model)?

A fungible asset is interchangeable unit-for-unit. One dollar bill can be swapped for another without changing what you own in any economically relevant sense. On-chain, that means a token system can record balances: Alice has 10, Bob has 5. The identity of each individual unit does not matter.

An NFT exists for the opposite case. If Alice owns ticket #184, sword #9021, or membership pass #7, the token system must preserve the identity of that exact unit. You are not mainly asking, “How many do I own?” You are asking, **“Which one do I own?” ** That changes the data model. Instead of only balances, the system needs a persistent identifier for each token and a mapping from that identifier to an owner.

This is why an NFT is usually described as non-fungible: each token is distinct, even if two tokens belong to the same collection. In Ethereum’s ERC-721 standard, every NFT has a unique uint256 tokenId inside a contract, and the pair contract address + tokenId serves as a globally unique identifier. The standard is explicit that the tokenId must not change for the life of the contract. That permanence matters because marketplaces, wallets, and applications use that identifier as the token’s stable name.

A useful analogy is a library system. Fungible tokens behave like saying, “Alice has borrowed three generic pencils.” NFTs behave like saying, “Alice has borrowed copy 271 of this manuscript.” The analogy helps explain why unique identifiers matter. Where it fails is that a blockchain NFT is not a physical object; it is a ledger entry with rules for ownership and transfer.

What does an NFT store on‑chain versus off‑chain?

At the blockchain level, an NFT is usually not the artwork itself and not even necessarily all the descriptive data about the asset. In the most common designs, the chain stores the ownership logic and identifiers, while descriptive metadata and media are accessed separately.

On Ethereum, ERC-721 defines a standard interface for non-fungible tokens. A compliant contract must implement ERC-721 and ERC-165, the latter being the mechanism that lets other software ask, in effect, “Do you support this interface?” This matters because wallets and marketplaces do not want to guess how every contract works. They want a predictable surface: a way to query ownership, transfer tokens, grant approvals, and optionally fetch metadata.

Mechanically, an ERC-721 contract maintains relationships like: token 1234 belongs to address A; address B is approved to transfer token 1234; operator C is approved to manage all of address A’s NFTs. That is the heart of the system. If you strip away the images, social meaning, and speculation, an NFT contract is a machine for maintaining unique token identity plus authorization over transfers.

The ERC-721 standard also defines events such as Transfer, Approval, and ApprovalForAll. These are not decorative. Off-chain services watch these logs to index ownership history and collection activity. Much of the NFT experience people think of as “on-chain” is actually a combination of on-chain state and off-chain indexing.

How do NFT transfers work and why use safeTransferFrom?

Transfer functionRecipient checkReverts ifUse caseMain risk
transferFromNo recipient contract checkDoes not revert for contractsWallet-to-wallet direct transfersTokens can become stuck
safeTransferFromCalls onERC721Received hookReverts if hook absentTransfers to contracts or escrowRequires receiver support; extra gas
Figure 122.1: Safe transfer vs unsafe transfer (ERC-721)

Once tokens are unique, transfer rules become more delicate than with fungible balances. The basic question is easy: if Alice owns token 1234, how does Bob become the owner? The subtlety is what happens when the recipient is not a person-controlled wallet but a smart contract.

ERC-721 therefore defines both transferFrom and safeTransferFrom. The unsafe version attempts the transfer without checking whether the recipient contract knows how to handle NFTs. The safe version adds a crucial guardrail: if the recipient is a smart contract, the sender must call onERC721Received on that contract, and the recipient must return a specific magic value to confirm acceptance. If it does not, the transfer must revert.

Here is the mechanism in plain language. Suppose Alice sends her NFT to a marketplace escrow contract. If that contract was written to accept ERC-721 tokens, it implements onERC721Received, and the transfer succeeds. If Alice accidentally sends the NFT to a contract that has no idea what an NFT is, the check fails and the transaction reverts instead of silently trapping the token. The purpose is simple: prevent tokens from getting stuck in contracts that cannot use or return them.

This is one of those places where the standard solves a concrete interoperability failure. Without a shared receiver hook, every project would invent its own acceptance logic, and users would regularly lose assets through incompatible transfers.

How do NFT approvals enable marketplaces; and what are the risks?

MethodScopeConvenienceRevocationPrimary riskBest for
approve (per token)Single specified tokenManual per listingOwner can revoke per tokenMistaken approval for one tokenOne-off sales
setApprovalForAll (operator)All tokens of ownerApprove once for manyOwner can revoke operatorOperator compromise affects manyFrequent marketplace traders
Custodial custodyMarketplace becomes ownerHands-off listing experienceDepends on marketplace policyCustody or exchange breachFiat on-ramps, high UX
Figure 122.2: NFT approvals: single, operator, or custody

Most NFT marketplaces do not custody your token before listing it. Instead, they rely on the approval system standardized by ERC-721. The owner can approve a specific address for one token with approve, or authorize an operator to manage all of their NFTs with setApprovalForAll.

That authorization layer is the bridge between ownership and trading. If you list an NFT for sale, the marketplace or its exchange contract often needs the right to transfer the token to a buyer when the purchase executes. The marketplace does not become the owner at listing time; it becomes an authorized actor under rules the standard defines.

This is a good example of why token standards matter more than token branding. The standard does not tell the market what the NFT means socially or economically. It defines how third-party software can interact with it safely enough to build broader infrastructure.

The tradeoff is obvious once you see the mechanism. Approvals are powerful, so users must trust the contracts they authorize. A mistaken or malicious approval can enable unwanted transfers, because that is exactly what approvals are designed to permit.

How does NFT metadata work and why does permanence matter?

ModelWhere storedMutabilityCostAvailability riskBest for
On-chain metadataBlockchain contract storageImmutable if implementedHigh gas and storage costLow (ledger-hosted)Small critical metadata
Off-chain immutable (IPFS/Arweave)Content-addressed networksEffectively immutable via CIDModerate storage feesDepends on pinning/retentionLarge media and archives
Off-chain mutable (HTTP URI)Central web serversCan change or disappearLow hosting costHigh (link rot or tampering)Dynamic or temporary data
Figure 122.3: NFT metadata: on-chain vs off-chain pointers

If ownership is the skeleton of an NFT, metadata is the part that makes it understandable to humans. ERC-721 includes an optional metadata extension with name, symbol, and tokenURI. The tokenURI points clients to metadata for a particular token, commonly a JSON object containing fields like name, description, and image.

This separation is important. The blockchain proves that token 1234 exists and that you own it. But when a wallet shows a title, thumbnail, or description, it is usually reading metadata from the URI associated with that token. In other words, the token’s ownership is on-chain, while much of its presentation is typically off-chain.

That design has advantages. Rich media files are large, expensive to store directly on many blockchains, and often better handled through content-addressed or decentralized storage systems. Services such as NFT.Storage were built around this pattern: upload media and metadata off-chain, receive an IPFS content identifier, and use that URI when minting so clients can retrieve the associated content.

But the design also introduces a common misunderstanding. Owning an NFT does not automatically mean the blockchain contains the image, video, or other asset itself. Often it contains a pointer. If that pointer targets mutable or poorly maintained infrastructure, the NFT may remain valid as a token while its media becomes unavailable or changes. The on-chain ownership record can be durable while the thing users emotionally think of as the asset is not.

This is why permanence is not binary. It depends on what is on-chain, what is off-chain, whether the URI can change, and how the referenced data is stored. The token standard gives a shared way to ask for metadata. It does not guarantee that the metadata is permanent, truthful, or still hosted.

What does 'minting' an NFT mean, and how do standards treat creation?

People often talk about “minting an NFT” as if that were the defining act. It is important in practice, but conceptually it is secondary. An NFT standard mainly defines how tokens are identified and interacted with once they exist. In ERC-721, creation and destruction are intentionally not fully standardized. Implementations choose how to mint and burn.

That design choice reflects a broader principle: interoperability needs agreement on the interface outsiders depend on, not necessarily on every internal lifecycle decision. A game, ticketing platform, or art project may all want different issuance rules, but wallets still need to know how to ask who owns token 1234, how to transfer it, and where to find metadata.

A simple worked example makes this concrete. Imagine a concert organizer deploys an ERC-721 contract where each tokenId corresponds to a unique seat. When seat A-12 is issued, the contract records a new token with an owner address and emits a Transfer event from the zero address to that owner. A wallet later displays the ticket by querying the token’s owner and reading its tokenURI, which might describe the event, seat, date, and artwork. If the ticket is resold, ownership changes through a standardized transfer function, and the chain emits another Transfer event. Nothing about this example requires the NFT to be art; the mechanism is the same because the core job is unique entitlement tracking.

What NFT standards exist beyond ERC‑721, and when should projects use them?

ERC-721 is the canonical Ethereum NFT standard, but the broader idea is not tied to one chain or one interface. Different systems make different engineering tradeoffs depending on what they optimize.

ERC-1155 on Ethereum is a good example. It is a multi-token standard: one contract can manage many token types, including fungible, non-fungible, and semi-fungible assets. This matters when an application needs both stackable items and unique items together, or when it wants cheaper batch operations. ERC-1155 supports safeBatchTransferFrom, allowing multiple token IDs and amounts to move in a single call. That reduces transaction overhead and makes sense for games, inventory systems, and large collections.

Notice what changed and what did not. The core NFT idea (representing unique items on-chain) remains. What changes is the container and transfer model. ERC-1155 treats NFTs as part of a broader multi-asset ledger rather than as a dedicated one-token-one-record pattern.

On Solana, the shape is different again. Metaplex’s Token Metadata program attaches standardized metadata to SPL token mints using dedicated accounts. In that model, an NFT is typically a mint with supply 1, zero decimals, and no mint authority, alongside metadata accounts that describe the asset. The uniqueness is still there, but the mechanism is account-based in a Solana-specific way rather than contract-interface-based in the ERC-721 sense.

Compressed NFTs on Solana push the tradeoff further. Metaplex Bubblegum stores NFT data as hashed leaves in on-chain Merkle trees, with transaction history and indexing infrastructure used to reconstruct and fetch asset data efficiently. The point is cost: minting large numbers of NFTs becomes much cheaper. But cheaper representation comes with a more complex retrieval model and stronger dependence on indexing systems such as DAS-compatible RPC infrastructure.

Bitcoin inscriptions are another useful contrast. People often call them “Bitcoin NFTs,” but mechanically they are quite different. The ord tooling and ordinal theory assign identity to individual satoshis, and inscriptions attach content through Bitcoin transaction data. There is no ERC-721-like smart contract interface standardizing approvals, metadata calls, or receiver hooks. The family resemblance is real (uniqueness, collectibility, transferability) but the implementation model is fundamentally different.

The lesson is that NFT is a concept category, not a single code pattern. The shared theme is digitally native uniqueness tracked by blockchain rules. The details vary by ecosystem.

Can NFTs be non‑transferable (soulbound), and why choose that design?

Many people implicitly define NFTs as transferable collectibles. In practice, transferability is common but not fundamental. Once the key property is non-fungible identity, you can ask whether that identity should be movable at all.

That is the motivation behind soulbound and account-bound designs. ERC-5192 defines a minimal ERC-721 extension for “soulbound” NFTs using ERC-165 feature detection. Its locked(tokenId) function exposes whether a token is locked, and if it is, transfer functions must throw. ERC-4973 goes further by defining account-bound tokens that do not implement the canonical ERC-721 transfer interface at all, while still exposing metadata-compatible behavior for wallets and indexers.

Why would anyone want this? Because some claims lose meaning if they can be sold. A university credential, attendance badge, or professional certification is meant to say something about a particular account holder. If it were freely transferable, the token would stop being good evidence of that relationship.

But making NFTs non-transferable introduces a new fragility. If the token is bound to an account and the keys to that account are lost, rotated, or compromised, then the credential may become inaccessible unless the system provides revocation or re-issuance paths. This is a good example of a design tension that blockchain systems cannot wish away: the stronger the binding to a key, the harder recovery becomes.

What practical limits and risks affect NFT ownership and usability?

The phrase “NFT ownership” is often used too loosely. The blockchain can say who controls a token. It does not, by itself, settle every question people care about.

If the NFT points to off-chain media, then access to the media depends on storage availability. If the NFT is supposed to represent a real-world right, then the connection between token ownership and legal or social recognition must exist outside the chain. If the collection depends on marketplaces and wallets indexing metadata a certain way, then user experience depends on off-chain software interpreting the standard consistently.

There are also scalability and implementation issues. ERC-721 explicitly warns implementers to avoid unbounded for or while loops because collections may grow arbitrarily large, and gas costs can become prohibitive. Enumeration is optional for similar reasons: tracking all tokens globally or per owner can be expensive on-chain, so many systems push discovery and indexing work off-chain.

Security assumptions matter too. Bridges, marketplaces, and custody systems can fail even if the NFT contract itself is correct. The Ronin bridge breach is a reminder that NFTs often live inside larger ecosystems of wallets, validators, and cross-chain infrastructure. If a bridge custody layer is compromised, users may lose access to bridged assets regardless of the underlying NFT standard’s design.

So the clean mental model is this: the token standard solves a narrow but important problem; interoperable representation of unique digital assets. Many of the hardest practical problems sit around that core rather than inside it.

Why did token standards (like ERC‑721) enable a broad NFT ecosystem?

Without standards, every project could still create unique digital assets, but each wallet and marketplace would need custom logic for each contract or chain-specific format. The transaction costs of integration would be enormous. Standards like ERC-721, ERC-1155, and chain-specific metadata conventions reduce that friction by making asset behavior predictable.

That predictability has second-order effects. Once wallets know how to detect ownership and fetch metadata, users can hold NFTs from many projects in one place. Once marketplaces know how transfers and approvals work, they can list many collections without bespoke settlement logic each time. Once games and applications share standards, assets can become legible across a wider software environment.

This is why NFTs became more than a niche programming pattern. The important innovation was not merely uniqueness. Databases have always been able to mark rows as unique. The innovation was shared, permissionless interoperability around unique digital assets. A public blockchain plus a standard token interface lets unrelated applications coordinate on asset identity and ownership without a central registry operator.

That does not mean every NFT ecosystem is equally decentralized or equally durable. It means the standards created a common language, and that common language is what made the surrounding market structure possible.

Conclusion

An NFT is best understood as a blockchain token for tracking a specific item rather than an interchangeable quantity.

Everything else follows from that basic shift from balances to individually identified units.

  • marketplaces
  • collectibles
  • tickets
  • credentials
  • game assets
  • profile pictures

The durable part of the idea is not the image. It is the combination of unique identity, ownership rules, transfer or non-transfer rules, and interoperable metadata conventions. When those pieces line up, unrelated software can treat a token as a recognizable digital asset. When they do not, the NFT may still exist on-chain, but much of its practical meaning falls away.

If you want the shortest version to remember tomorrow, it is this: **fungible tokens answer “how much?”; NFTs answer “which one?” **

How do you evaluate a token before using or buying it?

Before buying or approving an NFT, verify its on-chain identity, metadata permanence, transfer rules, and any marketplace approvals so you know what you actually control. On Cube Exchange you can inspect the contract and metadata, then complete the buy or set approvals through Cube’s market or transfer flows.

  1. View the token’s contract and standard on Cube and confirm whether it’s ERC‑721, ERC‑1155, or a chain-specific format and whether total supply or mint rules are visible.
  2. Open the tokenURI from the contract and verify metadata hosting (prefer IPFS/Arweave content hashes over plain HTTP) and whether the URI is mutable or pinned.
  3. Check transfer rules: look for soulbound/locked flags (e.g., ERC‑5192) or custom transfer logic that would block resale, and confirm the seller address if buying a listed NFT.
  4. Review required approvals: if a marketplace needs setApprovalForAll, set that approval through Cube’s approvals flow (not via random dApp prompts) and revoke any unneeded operator approvals after purchase.
  5. Fund your Cube account, open the NFT listing or market, review fees and execution details, then submit the buy or accept an offer.

Frequently Asked Questions

What is safeTransferFrom and why does ERC-721 require it?
+
safeTransferFrom calls a receiver hook (onERC721Received) on the recipient if it is a contract and requires a specific return value; if the recipient contract does not implement the hook the transfer must revert, which prevents tokens from being silently trapped in contracts that cannot handle them.
How do approvals make NFT marketplaces work, and what are the risks?
+
Marketplaces rely on the ERC-721 approval primitives: an owner can approve a single address for a token via approve or authorize an operator for all their NFTs with setApprovalForAll, letting the marketplace transfer the token at sale time without taking custody; the trade-off is that approvals are powerful, so mistaken or malicious approvals can enable unwanted transfers.
If I own an NFT, do I automatically own the image or media it represents?
+
Usually no — many NFTs store only ownership and a tokenURI on-chain, while images and rich media live off-chain (often via a URL or content-addressed storage); ownership of the token proves control of the ledger entry but does not by itself guarantee the media is permanently stored or immutable.
Is "minting an NFT" defined by the ERC-721 standard?
+
No — ERC-721 intentionally leaves minting and burning rules to implementations, so creation and destruction are common in practice but not standardized by the interface that wallets and marketplaces depend on.
How do ERC-721 and ERC-1155 differ, and when should a project use ERC-1155 instead of ERC-721?
+
ERC-1155 is a multi-token standard that lets one contract manage fungible, non‑fungible, and semi‑fungible items and supports batch operations like safeBatchTransferFrom to reduce transaction overhead; ERC-721 is a dedicated per-token identity model where each tokenId is a distinct non‑fungible unit, so ERC‑1155 is often chosen when you need mixed or batched assets (e.g., game inventories).
Can NFTs be made non-transferable (soulbound), and what are the downsides?
+
Yes — NFTs can be intentionally non-transferable: ERC-5192 exposes a locked(tokenId) check for 'soulbound' tokens and ERC-4973 defines account-bound token patterns that omit standard transfer interfaces; the trade-off is stronger binding to an account improves semantic value for credentials but makes recovery harder if the account's keys are lost or compromised.
What are compressed NFTs on Solana and what trade-offs do they introduce?
+
Compressed NFTs (e.g., Metaplex Bubblegum on Solana) reduce minting cost by storing NFT data as hashed leaves in on‑chain Merkle trees, but they increase dependence on indexing and specialized RPC/indexing infrastructure to reconstruct and fetch asset data, making retrieval more complex.
Why don't NFT contracts always provide an on-chain list of every token or owner?
+
Enumeration and full on‑chain listing of all tokens is optional and often avoided because unbounded loops and global enumeration can be prohibitively expensive in gas; as a result, many implementations emit events and rely on off‑chain indexers for discovery rather than storing complete lists on‑chain.
Are Bitcoin inscriptions (ordinals) the same as Ethereum-style NFTs?
+
Bitcoin inscriptions and ordinal schemes share the collectible, unique nature of NFTs but lack the ERC‑721-style smart contract interface: they assign identity differently (to satoshis/transaction data) and do not provide standardized approval hooks, metadata calls, or receiver checks, so their interoperability and tooling model is fundamentally different.
Why did NFT standards cause such rapid ecosystem growth instead of projects just building custom unique-token systems?
+
Standards like ERC‑721, ERC‑1155, and chain metadata conventions created predictable interfaces so wallets and marketplaces can interoperate without bespoke integration; that shared language, rather than just uniqueness, is what enabled a broad ecosystem of wallets, marketplaces, and cross‑project tooling to form.

Your Trades, Your Crypto