NFT 101 — Mint, hold, value, sell · Lesson 2 of 5

XLS-20 — how XRPL handles NFTs natively

4 min · read

Most blockchains do NFTs through smart contracts — a generic computation engine where someone writes the NFT logic from scratch (ERC-721 on Ethereum, SPL-NFT on Solana). Every NFT collection runs on its own deployed contract; the chain doesn't know what an NFT is, only what code is.

The XRPL did something different. XLS-20 is a native protocol amendment — minting, transferring, and burning NFTs are first-class operations the ledger itself understands. There is no smart contract behind your NFT. There is only the ledger and your account.

The trade-offs are worth understanding.

What you gain

1. No smart-contract risk on the NFT primitive

Most retail NFT rug-pulls and hacks come from buggy or malicious smart contracts. The ERC-721 contract a project deploys can mint freely, can change ownership rules, can include hidden "pause" or "drain" functions. The XLS-20 NFToken has none of that: the mint logic is part of the XRPL itself, audited by the same validators that secure XRP.

This doesn't protect against the project being a rug — they can still mint everything to themselves and dump. It does protect against the contract being a rug.

2. Native marketplace primitives

XLS-20 includes NFTokenCreateOffer (sell or buy offer) and NFTokenAcceptOffer directly on the ledger. You don't need OpenSea / Magic Eden to be the matchmaker. The ledger matches offers natively.

This means: even if every NFT marketplace shut down tomorrow, your NFTs would still be listable and tradeable from any XRPL-compatible wallet. The market doesn't depend on a centralised intermediary.

3. Native royalties (TransferFee)

When the NFT is minted, the issuer sets a TransferFee (0–50%, in increments of 0.001%). Every subsequent sale through the native offer mechanism pays that fee to the issuer automatically. The ledger enforces it; the marketplace can't override.

(Note: the brokered sale mechanism — where a third party takes both buyer and seller offers and matches them — does enforce the fee. The unbrokered direct-acceptance path can avoid it. We cover this in NFT 201.)

4. Soulbound by flag, not by contract

If the issuer sets tfTransferable = 0 on mint, the NFT cannot ever be transferred. The XRPL refuses any sell offer. This is how the Gopnik Academy issues its cert NFTs — and it's the same primitive any user can use to mint a non-transferable membership token.

No smart contract trickery needed. The flag is a flag.

What you trade for it

1. No arbitrary logic

ERC-721 contracts can implement anything: dynamic NFTs that change traits, randomized reveals, programmatic royalty splits across multiple recipients, on-chain art generation. XLS-20 can't. If you need any of that, you build it as an off-chain service that the NFT points to — not as on-chain logic.

For most retail use cases (art, collectibles, memberships, tickets) this is fine. For projects that needed Ethereum-style dynamic NFTs, the XRPL isn't the right venue today.

2. Account reserve

Every NFT you own occupies a sub-record on your XRPL account. Each NFToken page (which holds up to 32 NFTs) requires a small XRP reserve (currently 0.2 XRP per page). Hold 100 NFTs → about 0.7 XRP locked in reserves.

This is negligible at retail scale. At collection-management scale (10,000+ NFTs in one account), it adds up. Use multiple accounts for very large collections.

3. Less developer mindshare (for now)

Most NFT tooling, analytics, and culture is on Ethereum. The XRPL NFT ecosystem is smaller — which means fewer marketplaces, fewer aggregators, fewer "is this floor price fair" tools. This is changing, but if you're choosing a chain for an NFT project today, factor it in.

The fields on every XLS-20 NFT

Field What it does
NFTokenID The 64-char unique id.
Issuer XRPL address of the minter.
Owner Current holder.
NFTokenTaxon A 32-bit number the issuer chooses to group their NFTs (= "collection id").
TransferFee 0–50,000 (0.001% units). Royalty paid to issuer on brokered transfers.
URI Hex-encoded link to off-chain metadata (or short on-chain data).
Flags Burnable / OnlyXRP / TrustLine / Transferable / Mutable.
Sequence Mint number — useful for ordered numbering.

The Gopnik wallet shows all of these on every NFT detail page. Read them before you bid.

What this course unlocks

Passing NFT 101 unlocks mint up to 5 NFTs/day, buy on the marketplace up to €500/tx, and is the prerequisite for any marketplace listing. NFT 201 covers auctions, royalty configuration, and large-collection minting. NFT 301 covers cross-chain bridging (you'll also need Cross-Chain 301 for the same operations).

Next: how minting actually works, and the IPFS dependency that most users don't realise they're taking on.