An ordinals marketplace lets people trade inscriptions, which are pieces of content attached to individual satoshis on Bitcoin. This guide explains how Bitcoin Ordinals work, how trades run without smart contracts, and what infrastructure, wallets and team a Bitcoin Ordinals marketplace needs.
How Bitcoin Ordinals work
Ordinal theory gives each satoshi its own serial number, based on the order in which it was mined. The ord software, released in January 2023, tracks each numbered satoshi as it moves through transactions, and one bitcoin equals 100,000,000 satoshis.
An inscription attaches content, such as an image, text or HTML, to one satoshi. The Ordinals handbook describes two transactions:
- The commit transaction creates a Taproot output that is locked to a script holding the content. At this stage, only a commitment to the script is on-chain, and the content is not visible.
- The reveal transaction spends that output and puts the content on-chain in the witness data.
Each inscription carries a MIME type and a body, much like an HTTP response, so a browser can display it. Optional fields include a parent, metadata and a delegate, which points to another inscription's content. A parent field links child inscriptions to a parent inscription, and creators use these links to prove which items belong to a collection.
This inscription design has three effects on a marketplace:
- The content is stored entirely on Bitcoin, while many Ethereum NFTs point to images on a web server or IPFS.
- Bitcoin tracks coins as UTXOs (unspent transaction outputs), and each UTXO holds a set of satoshis. The owner of an inscription is whoever controls the UTXO that holds the inscribed satoshi, and no token contract exists, so the marketplace needs an indexer that follows satoshis.
- A collection is defined by parent and child links or by curated lists, not by a contract.
How trades work without smart contracts
An ordinals marketplace builds trades from partially signed Bitcoin transactions (PSBTs), defined in BIP-174. A PSBT swap lets buyer and seller trade without trusting each other:
- Listing. The seller signs only two parts of a transaction: the input that holds the inscription and the output that pays the asking price. The seller uses the
SIGHASH_SINGLE | ANYONECANPAYflag, so the signature stays valid when other inputs and outputs are added. - Storage. The marketplace stores the partly signed PSBT off-chain, so listing costs no fee.
- Purchase. The buyer's wallet adds payment inputs, an output that receives the inscription, a change output and the marketplace fee output, and the buyer then signs.
- Broadcast. The marketplace or wallet broadcasts the completed transaction, and when a miner includes the transaction in a block, the buyer receives the inscription and the seller receives payment in the same transaction.
Three details in PSBT trades need care:
- The order of outputs decides which output receives the inscribed satoshi, so the transaction builder must place the inscription exactly. Bitcoin hands out satoshis in order: the first satoshis of the inputs fill the first output, the next satoshis fill the second output, and so on. The seller's SIGHASH_SINGLE signature also ties the seller's input to the payment output at the same position. The transaction builder must line up both rules at once, so that the inscribed satoshi reaches the buyer's output while the seller's payment stays at the signed position. To make the positions fit, the buyer's wallet often adds small UTXOs, called "padding" or "dummy" UTXOs, as earlier inputs, and their satoshis fill the earlier outputs so the inscribed satoshi lands in the output that sends the inscription to the buyer.
- To cancel a listing, the seller must move the UTXO in a new transaction, which costs a fee.
- A signed listing is a valid partial transaction, and anyone who obtains the PSBT can complete the purchase, so the marketplace must store listing PSBTs securely.
Wallet integration and UTXO safety
The largest risk for users is spending an inscription as ordinary bitcoin, for example by paying a fee with the inscribed UTXO. Ordinals-aware wallets such as Xverse, UniSat, Leather and the Magic Eden wallet separate two kinds of UTXO, "cardinal" UTXOs that hold spendable bitcoin and "ordinal" UTXOs that hold inscriptions, and many of these wallets use separate addresses for each kind. The Ordinals handbook warns that the Bitcoin Core wallet does not track individual satoshis, so it can spend an inscription as an ordinary payment or fee.
A marketplace must handle UTXOs carefully:
- Connect to these wallets' signing APIs and support Taproot addresses.
- Check the indexer before building each transaction, and never use a UTXO that holds an inscription as a payment input.
- Show users what each PSBT does before they sign it.
- Warn about UTXOs that hold several inscriptions or rare satoshis, such as the first satoshi of a block, because moving the UTXO moves all of them.
Infrastructure for an ordinals marketplace
| Component | Purpose | Notes |
|---|---|---|
| Bitcoin Core full node | Source of blocks and the mempool | ord requires txindex=1 and a fully synced node, and the chain needs about 600 GB of disk. |
ord indexer or an equivalent | Maps satoshis and inscriptions to UTXOs | The first indexing run is slow and uses a lot of storage, and some upgrades require a full reindex. |
| Marketplace database | Listings, PSBTs, collections, activity | Remove a listing as soon as its UTXO is spent. |
| Mempool monitoring | Detects pending purchases and conflicts | Handles replace-by-fee, where a sender replaces a pending transaction with a higher-fee version, and races between two buyers. |
| Fee estimation | Suggests fee rates in sat/vB | Fees rise during popular mints, so users choose a speed. |
| Content renderer | Displays images, HTML and recursive inscriptions, which load content from other inscriptions | Load HTML and SVG inscriptions in sandboxed iframes, as ord does. |
Creating inscriptions with ord requires Bitcoin Core 28 or newer, according to the ord wallet guide.
Fungible tokens on Bitcoin: BRC-20 and Runes
Many ordinals marketplaces also trade fungible tokens. BRC-20, from 2023, uses JSON inscriptions that off-chain indexers read as token balances. Runes is a fungible token protocol from the creator of Ordinals that went live at the April 2024 halving block.
A Runes transaction carries a "runestone" in an OP_RETURN output. The runestone can create (etch) a new rune, mint new units while the rune's minting period is open, or move balances between outputs. Rune balances follow UTXOs, and the ord software indexes them. Support for BRC-20 or Runes needs its own indexer logic and its own listing flow, so each is a separate product decision.
Build process
- Run a full node and the
ordindexer, and build APIs on top. A third-party Ordinals API can serve data while your own index syncs. - Build the PSBT engine for listings, purchases, offers and cancellations, and test it heavily on testnet or signet.
- Connect Ordinals-aware wallets.
- Build collection curation, creator verification and spam filtering.
- Add an inscription service if the marketplace sells new collections, as the Bitcoin minting guide describes.
- Order a security review of the transaction-building code.
Team, timeline and cost
The figures in this section are estimates, not quotes. A first version needs four or five people with Bitcoin transaction experience for three to five months. Bitcoin engineers are harder to hire than Solidity developers, and the PSBT logic leaves little room for error.
Inscription and Runes activity has come in bursts since 2023, with busy minting periods followed by long quiet ones, so plan the business around a specific niche, not around peak volumes.
The NFT marketplace development guide covers marketplace features that work on any chain, and the crypto wallet development guide covers wallet work.
Frequently asked questions
What is an ordinals marketplace?
An ordinals marketplace is a site where users list and buy Bitcoin inscriptions. Trades use partially signed Bitcoin transactions, so the seller keeps the inscription until the buyer pays in the same transaction.
Are Bitcoin Ordinals NFTs?
Ordinals work like NFTs, because each inscription is unique and transferable. Technically, an inscription is content attached to one satoshi and tracked by indexers, not a token issued by a contract.
Why does canceling a listing cost a fee?
The signed listing stays valid until the seller's UTXO is spent. A safe cancellation moves the inscription to a new UTXO, and that move is an on-chain transaction.
Can Ethereum developers build an Ordinals marketplace?
Frontend and backend skills transfer, but transaction building, UTXO management, Taproot and PSBTs are specific to Bitcoin, so the team needs at least one engineer with that experience.