CashTokens are native token primitives for Bitcoin Cash applications.

CashTokens carry fungible-token and NFT state in Bitcoin Cash transaction outputs. This guide explains what wallets, indexers, and applications need to handle when they build token-aware products.

CashToken outputCategory · fungible amount · NFT capability / commitment
Wallet or indexerSelect, parse, and display token UTXOs
Application flowBuild and sign a valid transaction

Educational overview. Product implementations vary.

A token is state carried by a UTXO.

CashTokens extend the Bitcoin Cash UTXO model with native token state. The protocol defines what can be carried by an output; the wallet, indexer, and application decide how that state becomes a usable product.

A token-bearing output can contain a fungible amount, one NFT, or both, with all token data in that output belonging to the same category.

Fungible amounts

A token category and amount travel with a BCH output, so balances are assembled from token-bearing UTXOs.

NFT commitments

NFTs carry a commitment and a capability (none, mutable, or minting). Wallets must handle that state according to the capability and intended transaction.

Token-aware transactions

A builder must select the right token inputs and construct outputs without unintentionally burning tokens, changing NFT state, or misallocating BCH value.

Human-readable display

BCMR metadata can give wallets and applications names, symbols, decimals, icons, and descriptions to display.

Wallets and applications must handle token state explicitly.

CashTokens are not an account balance stored in an application database. Every token-aware action has to be reflected in the inputs and outputs of a BCH transaction.

Select token UTXOs

Keep BCH value and token state separate while selecting inputs and calculating change.

Construct valid outputs

Preserve the category, amount, NFT capability, and commitment required by the intended flow.

Resolve metadata

Use BCMR data for display and discovery while keeping the on-chain category as the asset reference.

Test edge cases

Cover sends, splits, merges, capability transitions and intentional token burns, missing metadata, and unsupported wallet paths.

Asset state and spend rules are different layers.

CashTokens describe the asset state carried by a transaction. Covenants constrain which transaction paths are permitted. A product can use either layer independently, or combine them when a token flow also needs enforceable spend conditions.

CashTokens answer

Which token category is present?

How much is carried?

Which NFT capability or commitment applies?

Covenants answer

Which transaction path is allowed?

What outputs must be created?

How does the controlled state continue?

The protocol primitive is only one part of the product.

Wallet behavior

Token selection, change handling, signing, and user-facing transaction previews still need to be built.

Metadata availability

Names and icons depend on metadata resolution. Clients need useful fallbacks when metadata is missing or stale.

Spend restrictions

Token state does not automatically restrict future spends. Use a covenant when the transaction path itself must be constrained.

Application correctness

Builders and tests must prove that the resulting token state matches the intended transition.

Move from the token primitive to enforcement, metadata, wallet behavior, or implementation resources.

Building a CashTokens product?

Start with the protocol layer, then bring us the wallet, application, or integration problem.

Talk to OPTN