Bitcoin Ordinals Guide
How PSBT Settlement Actually Works on Ordinals Marketplaces
Last updated
TL;DR
Every major ordinals marketplace settles trades using Partially Signed Bitcoin Transactions (PSBTs). The seller signs a partial transaction committing to release their inscription for a specific price; the buyer completes it by adding payment inputs and signing the rest. The whole trade clears in one on-chain Bitcoin transaction — no escrow contract, no token approval, no custodian.
What is a PSBT?
A Partially Signed Bitcoin Transaction is a standardized format defined in BIP 174 for sharing a not-yet-finalized Bitcoin transaction between parties. Each party can incrementally add inputs, outputs, and signatures. Wallets understand the format, can display what's being committed, and can sign the parts they have authority over.
Practically, a PSBT is just a base64-encoded blob. You can pass it through a URL, a QR code, an HTTP request, or copy and paste. The protocol guarantees that the transaction either settles atomically on-chain or doesn't happen at all — there's no in-between state.
Why ordinals marketplaces use PSBTs
Bitcoin doesn't support general-purpose smart contracts. There's no escrow contract, no approval mechanism, no on-chain auction primitive. A naive trade design has a chicken-and-egg problem: the seller doesn't want to release the inscription before getting paid, and the buyer doesn't want to pay before receiving the inscription.
PSBTs solve this by letting both parties contribute to the same transaction. The seller pre-commits to a specific release-for-price exchange; the buyer fills in the payment. Bitcoin's native atomicity does the rest — either every input and output settles together, or nothing does.
The listing signature: SIGHASH_SINGLE | ANYONECANPAY
When a seller lists an inscription, the marketplace builds a PSBT with one input (the inscription's UTXO) and one output (the seller's payment-receive address). The seller signs that input with a special flag combination:
- SIGHASH_SINGLE commits the signature only to the seller's own input and its corresponding output. The rest of the transaction can change without invalidating the signature.
- ANYONECANPAY tells the protocol that other inputs (the buyer's payment) can be added later by anyone.
Together, these flags create an open offer: "Anyone who pays my price gets this inscription, but I'm not committing to who or when." The inscription stays in the seller's wallet; the signature is just a notarized promise that can be cashed in by any buyer.
The buyer completes the transaction
When a buyer accepts a listing:
- The marketplace serves the seller's signed PSBT to the buyer's wallet.
- The wallet adds the buyer's UTXOs to cover the listing price, marketplace fee, royalty, and network fee.
- It adds a change output for any unspent buyer funds.
- The buyer signs their own inputs (typically SIGHASH_ALL, which binds the signature to the full transaction at this point).
- The wallet broadcasts the completed transaction to the Bitcoin network.
The transaction has exactly the inputs and outputs that were assembled — Bitcoin's mempool either accepts the whole thing or rejects it.
On-chain settlement
Settlement is one Bitcoin transaction, typically 200 – 300 virtual bytes for a standard single-inscription trade. It confirms in 1 – 6 blocks depending on the fee rate. At confirmation, the inscription has moved to the buyer's wallet, the seller has received BTC, marketplace fees and royalties have been paid as additional outputs in the same transaction, and the network fee has been deducted. There's no second leg, no withdrawal, no follow-up — the trade is fully on-chain.
Edge cases and failure modes
- Seller spends the UTXO before fill. The listing is invalid — any completed PSBT would attempt to spend an already-spent input and the network rejects it.
- Two buyers race. Both broadcast completed transactions; both try to spend the same seller input. Only one confirms; the other is double-spent. Neither buyer is charged unless their transaction confirmed.
- Low fee, stuck transaction. If a buyer broadcasts with a fee that falls below the mempool minimum, the trade may sit indefinitely. Replace-by-fee (RBF) lets either party bump it.
- Compromised marketplace. A malicious marketplace could serve a PSBT that differs from the UI claim. The defense is to read the PSBT in the wallet before signing — most wallets show the inputs and outputs explicitly.
Why this matters for traders
- No lingering approvals. Unlike ERC-20 / ERC-721 approvals on Ethereum, you don't leave behind a permission a malicious contract can later exploit. The signature only authorizes one specific input/output pair.
- Free cancellation. Revoking a listing is a marketplace-side operation; no Bitcoin transaction is involved.
- Marketplace insolvency doesn't touch your asset. The inscription never left your wallet, so a marketplace going offline only removes the listing from the orderbook.
- You can list cross-venue. The same inscription UTXO can have listings on multiple marketplaces. As soon as one fills, the others become invalid automatically.
Frequently asked questions
- What is a PSBT?
- A Partially Signed Bitcoin Transaction is a standardized format (BIP 174) for a Bitcoin transaction that has been built but not yet signed by all parties. PSBTs can be passed between wallets and signers, with each party adding inputs, outputs, or signatures incrementally until the transaction is complete.
- Why don’t ordinals marketplaces use smart contracts?
- Bitcoin doesn’t have general-purpose smart contracts. PSBTs let two parties coordinate a trade through a single Bitcoin transaction without any custodian or escrow contract in between — the protocol itself provides atomicity.
- What does SIGHASH_SINGLE | ANYONECANPAY mean?
- It’s a flag combination on the seller’s signature. SIGHASH_SINGLE means the signature only commits to the seller’s own input and corresponding output. ANYONECANPAY means anyone can add additional inputs (the buyer’s payment) without invalidating the signature. Together they let the seller pre-sign a partial trade that any buyer can complete.
- Can I cancel a listing without paying a fee?
- Yes. Cancelling is just revoking the signature on the marketplace — there’s no on-chain transaction. The inscription never left your wallet, so cancellation is free. You can also invalidate any outstanding listing by spending the inscription UTXO yourself.
- What happens if two buyers try to fill the same listing?
- Both buyers complete the PSBT and broadcast competing transactions. Only one will confirm because they both spend the same seller UTXO; the other is double-spent and rejected by the network. The losing buyer pays nothing.
- Can the marketplace inject a malicious PSBT?
- A compromised marketplace could serve a PSBT that differs from what the UI shows. The defense is to read the PSBT in your wallet before signing — confirm the inscription UTXO being released and the destination address receiving payment. Hardware wallets show this on a trusted display.