The Flow blockchain is a layer-1 network that Dapper Labs built for consumer apps such as NBA Top Shot. This guide explains how Flow NFTs differ from Ethereum NFTs, which standards to implement, how Flow EVM fits in, what minting costs and when Flow is the right chain for an NFT project.
Flow NFTs are usually written in Cadence, a resource-oriented language. In Cadence, a token is an object stored in the owner's account, while on Ethereum it is an entry in an ownership table inside a contract. This difference changes how developers write, transfer and secure NFTs.
How a Flow NFT differs from an ERC-721 token
An ERC-721 contract on Ethereum keeps a mapping from each token ID to its owner, so owning an NFT means that the contract's ledger lists your address.
On Flow, an NFT is a resource, a typed object that exists in one place only. Code cannot copy a resource, and it cannot drop one by mistake. Collectors keep their NFTs in a Collection resource stored in their own account. A transfer moves the NFT object out of one collection and into another.
This model has four practical effects:
- The type system prevents accidental copies and losses, and the Cadence compiler rejects code that would lose a resource.
- A user needs a collection in their account before they can receive an NFT from your contract, so most minting transactions create the collection when it is missing.
- Access works through capabilities. An account can publish a limited reference, such as "anyone can deposit into my collection", and keep withdraw rights private.
- Accounts pay for storage by holding FLOW. The Flow fee documentation states that each FLOW held gives 100 MB of account storage, and every account must keep at least 0.001 FLOW.
Flow NFT standards
Flow NFTs implement the NonFungibleToken contract interface. The Flow core contracts page lists the standard contract at mainnet address 0x1d7e57aa55817448. The interface defines the NFT resource, the Collection resource and the deposit and withdraw functions. It also defines standard events such as Deposited, Withdrawn and Updated, which indexers use to track NFTs.
The MetadataViews contract defines standard views that wallets and marketplaces read. The views cover the display name and thumbnail, royalties, editions, traits, the external URL and the collection display. An NFT shows correctly across Flow apps only when its contract implements the common views.
The Crescendo upgrade in September 2024 introduced Cadence 1.0. Cadence 1.0 changed the access control syntax, with entitlements replacing some older patterns, and every existing contract had to be updated. Tutorials written before Cadence 1.0 no longer compile.
Flow blockchain architecture
Flow splits validator work across four node roles:
- Collection nodes gather transactions.
- Consensus nodes order the transactions into blocks.
- Execution nodes run the transactions.
- Verification nodes check the results of execution.
Flow uses this design to process many transactions without sharding, so all apps share one state and can call each other. For NFT projects, the design gives low fees and fast finality, which suit large drops and pack openings.
Flow's Forte page says the Forte upgrade added scheduled transactions, passkey signing through WebAuthn and other features, and passkeys let users approve transactions without a seed phrase.
Flow EVM
Since Crescendo, Flow also runs an EVM environment next to Cadence. Developers deploy Solidity contracts in Flow EVM, including standard ERC-721 and ERC-1155 contracts, with Ethereum tools, and Cadence code can call into Flow EVM.
| Cadence NFT | Flow EVM NFT | |
|---|---|---|
| Language | Cadence | Solidity |
| Ownership model | A resource in the user's account | A mapping in the contract |
| Tools | Flow CLI, emulator, Flow Client Library (FCL) | Hardhat, Foundry, viem, MetaMask |
| Ecosystem | Native Flow marketplaces and Dapper Labs apps | EVM wallets, bridges and marketplaces |
| Main advantage | Type-system safety and standard metadata views | Portable code and more developers to hire |
Flow offers a bridge between Cadence NFTs and EVM NFTs, but the bridge adds another system to build, test and support. A team that knows only Solidity and needs no Cadence features can build faster on Flow EVM, though it should also compare Flow with other EVM chains. The NFT bridge guide covers moving NFTs between chains.
Onboarding on Flow
Flow separates accounts from keys. An account can hold several keys with weights, a user can rotate keys, and an app can create accounts for its users.
Account linking, also called hybrid custody, builds on this design. An app can give a user an app-managed account at sign-up, with email login and no seed phrase. Later, the user can link that account to a self-custody wallet, and the wallet gains control of the account.
A Flow transaction can name a separate payer, so an app can pay its users' fees, and mainstream collectible apps on Flow use these features to let users buy with a card without handling crypto.
What minting a Flow NFT costs
Flow charges fees in compute units, priced in FLOW. The Flow fee table lists these example costs:
| Operation | Fee in FLOW |
|---|---|
| Mint a small NFT | about 0.0011 |
| Create one account | about 0.0019 |
| Deploy a contract of about 50 KB | about 0.0129 |
Flow charges a fee for failed transactions too, and fees rise by a surge factor when the network is busy. Accounts also hold FLOW as a storage reserve for the data they store.
How to build a Flow NFT project
- Set up the tools. Install the Flow CLI and run the local emulator.
- Write the NFT contract. Implement
NonFungibleTokenand the mainMetadataViews. - Write transactions and scripts. Transactions handle collection setup, minting and transfers, and scripts read data; Flow's flow-nft repository has generic versions.
- Test and deploy. Test with the Cadence testing framework, then deploy to testnet.
- Build the front end. Use FCL for wallet discovery and signing.
- Choose a sales setup. Run your own storefront, or use the NFT storefront contract so existing Flow marketplaces can show your listings.
- Get a security review. Cadence prevents some classes of bugs, but it does not prevent logic errors.
The NFT marketplace development guide covers marketplace architecture, and the NBA Top Shot guide covers sports-licensed collectibles, the best-known Flow use case.
Trade-offs of the Flow blockchain
NFT activity on Flow peaked during the 2021 Top Shot boom and fell sharply with the wider market. The Flow ecosystem is smaller than the Ethereum or Solana ecosystems, and few developers know Cadence. Outside a few licensed brands, such as NBA Top Shot, NFL ALL DAY and Disney Pinnacle, little trading happens on Flow marketplaces.
Flow also had a security incident that led some exchanges to suspend FLOW services. In March 2026, Flow stated that all issues related to the incident were resolved and that major exchanges had restored FLOW services.
Flow fits products for mainstream users who will never manage a wallet, and products that need its account model and fee sponsorship. Other chains fit projects that need active secondary trading or a large crypto-native audience.
Frequently asked questions
What is the Flow blockchain?
Flow is a layer-1 blockchain built by Dapper Labs for consumer apps and digital collectibles. It runs smart contracts in Cadence and in an EVM environment, and it splits validator work across four node roles.
Is Cadence hard to learn for Solidity developers?
The syntax is easy to read, but the resource and capability model takes time to learn. A Solidity developer usually needs a few weeks to write secure Cadence.
Can Flow NFTs be traded on Ethereum marketplaces?
Not directly. Cadence NFTs live on Flow, and they can be bridged to Flow EVM, where EVM tools work, but Ethereum mainnet marketplaces do not list Flow assets.
Do Flow NFTs support royalties?
Yes. The Royalties metadata view tells marketplaces whom to pay, but as on other chains, each marketplace decides whether it pays royalties.
What does it cost to mint an NFT on Flow?
Flow's fee table lists about 0.0011 FLOW to mint a small NFT. The account also needs a FLOW reserve for storage, at 100 MB per FLOW.