XION
DiscordGithub
  • Welcome to XION
  • XION'S Core
    • Concepts
      • Generalized Chain Abstraction
      • Intro to Account Abstraction
      • XION's Meta Accounts
      • Meta Accounts Design
      • Architecture & Tech Glossary
      • Use Cases
  • developers
    • Xion Quick Start
      • Zero to Dapp in 5 Minutes
        • Launch a User Map Dapp on XION in 5 Minutes
        • React Native Mobile Dapp on XION in 5 Minutes
      • Set Up Local Environment
        • Setting up your Local Smart Contract Development Environment for XION
          • Setting up your XION Smart Contract Development Environment on Windows (WSL2 + Ubuntu)
        • Set Up an Integrated Development Environment (IDE)
        • Interacting with Xion Chain using Xion Daemon
      • Your First Contract
        • Deploying Your First Smart Contract on XION
      • Gasless UX & Permission Grants
        • Enabling Gasless Transactions with Treasury Contracts
      • Your First DApp
        • Account Abstraction with Gasless Transactions
        • Interact with XION via your Backend Service
    • Mobile dapp Development on XION
      • Set up your XION Mobile Development Environment
      • Create Mobile Dapp and Integrate Meta Account Authentication
    • Re-using Existing Contracts
      • Deployed Contracts on XION
      • Non-Fungible Tokens (NFTs)
      • Fungible Tokens
      • Marketplace
      • Multisig
    • Web3 for Web2 Developers
      • Web2 vs Web3 App Architecture: A Comparison
      • Misconceptions and Misapplied Web2 Patterns
      • Recommended Architecture for Dapps on XION
    • Building for Mainnet
      • Xion Testnet: Your Development Playground
      • Building with Audited & Battle-Tested Contracts
      • Community Engagement: Building Support for Your dApp
      • Deploying to Xion Mainnet
        • Smart Contract Audits: Process, Costs & Support
        • Governance Process to Deploying Smart Contracts to Mainnet
    • Learn & Build
      • Token Factory
        • Creating, Minting, and Interacting with a Token Factory Token
        • Building a React dApp to Interact with Token Factory Tokens
        • Integrating a Token Factory Token in a Smart Contract
      • Websockets
        • WebSockets with Xion: Real-Time Communication
      • Mobile Development
        • Building a React Native Mobile App with Abstraxion (Xion.js)
      • Oracles
        • Creating a Smart Contract with Pyth Oracle Integration
      • Indexers: Optimized Data Retrieval
        • SubQuery
      • Use Cases
        • Building a Per-User Data Storage Dapp
    • Reference and Resources
      • Requesting XION Testnet Tokens
      • Public Endpoints & Resources
      • Block Explorers
      • Governance
        • Deploying Smart Contracts to Mainnet
      • Developer Tools: Abstract
      • IBC Denoms on XION Networks
      • Frequently Asked Questions
      • XION Token Contract Addresses on EVM Chains
  • Nodes & Validators
    • Run a Node
      • System Specifications
      • Build the Xion Daemon
      • Download the Xion Daemon
      • Configure the Xion Daemon
        • app.toml
        • client.toml
        • config.toml
      • Join the XION Network
        • xion-testnet-1
      • Confirm node is running
    • Become a Validator
      • Initial Setup
      • Obtain a XION Wallet Address
      • Obtain Funds
        • Testnet
      • Create Validator
    • IBC Relayers and Tokens
  • Others
    • Resources
Powered by GitBook
On this page

Was this helpful?

Edit on GitHub
  1. developers
  2. Re-using Existing Contracts

Non-Fungible Tokens (NFTs)

PreviousDeployed Contracts on XIONNextFungible Tokens

Last updated 2 hours ago

Was this helpful?

NFTs are unique digital assets, and similar to the ERC-721 standard on Ethereum, the CosmWasm ecosystem uses the CW721 standard. XION supports this NFT standard, with several ready-to-use contracts available in the repository. These contracts enable teams to deploy NFT collections with minimal customization while benefiting from enhanced security and reliability.

Reusing these contracts without modification may reduce or eliminate the need for a security audit before deploying to XION Mainnet.

Available CW721 Contract Variants

Contract
Transferable
On-Chain Metadata
Updatable Metadata
Use Case Examples

cw721-base

Yes

No

No

Basic NFT collections with off-chain metadata

cw721-updatable

Yes

No

Yes

Dynamic NFTs (e.g., avatars that evolve, gaming NFTs)

cw721-metadata-onchain

Yes

Yes

No

Fully on-chain generative art, digital collectibles

cw721-soulbound

No

No

No

Identity badges, certificates, proof-of-participation

cw721-expiration

Yes

No

Yes (via expiration)

Subscription NFTs, time-limited memberships

cw721-fixed-price

Yes

No (usually off-chain)

Yes (price config)

Simple marketplaces with fixed price sales

cw721-non-transferable

No

No

No

Achievements, diplomas, SBTs (Soulbound Tokens)

cw721-receiver-tester

Yes

No

No

Utility contract used for testing receive hooks

cw2981-royalties

Yes

Yes

No

Royalty-enabled NFTs for artists and creators

1. cw721-base

The standard implementation of the CW721 specification. Features:

  • Minting, transferring, burning

  • Token-level ownership and metadata

  • Approved operators

Ideal for: Basic NFT collections with off-chain metadata

2. cw721-updatable

An extension of cw721-base that allows metadata to be updated after minting. Features:

  • All cw721-base features

  • Supports updating token metadata

Ideal for: Dynamic NFTs such as evolving avatars, game characters, or NFTs that change over time

3. cw721-metadata-onchain

A variant of cw721-base where full metadata is stored directly on-chain. Features:

  • All cw721-base features

  • Stores metadata (name, description, image) directly in state

Ideal for: NFTs where immutability and decentralization of metadata are critical (e.g., generative art, collectibles)

4. cw721-soulbound

Implements non-transferable NFTs, often referred to as Soulbound Tokens (SBTs). Features:

  • Minting only

  • Disables transfer and approval functionality

Ideal for: Credentials, identity, certifications, badges, or non-transferable memberships

5. cw721-expiration

Extends cw721-base with support for setting expiration times on NFTs. Features:

  • All cw721-base features

  • Optional expiration timestamp per token

  • Hooks for expiration-based behavior

Ideal for: Time-based NFTs such as subscriptions, memberships, or event passes

6. cw721-fixed-price

A contract combining NFT minting with a built-in fixed-price marketplace. Features:

  • Minting and transferring

  • Price configuration per token

  • Direct buy functionality

Ideal for: Launching NFT collections with fixed-price sales without needing a separate marketplace contract

7. cw721-non-transferable

A stricter soulbound implementation with enforced immutability. Features:

  • No transferring or burning

  • Tokens are permanent and non-movable once minted

Ideal for: Highly permanent identity artifacts such as diplomas, licenses, or irreversible credentials

8. cw721-receiver-tester

A testing utility contract for verifying the cw721 Receive hook functionality. Features:

  • Implements cw721::Receiver interface

  • Logs or validates token reception

Ideal for: Testing and verifying behavior of contracts that send or receive NFTs

9. cw2981-royalties

Implements the CW2981 royalty standard for NFT creators. Features:

  • Attaches royalty info to CW721 tokens

  • Royalty enforcement during sales (via marketplaces)

📦 Repo:

📦 Repo:

📦 Repo:

📦 Repo:

📦 Repo:

📦 Repo:

📦 Repo:

📦 Repo:

Ideal for: NFT collections where artists or creators want automatic royalty support 📦 Repo:

cw-nfts
cw721-base
cw721-updatable
cw721-metadata-onchain
cw721-soulbound
cw721-expiration
cw721-fixed-price
cw721-non-transferable
cw721-receiver-tester
cw2981-royalties