-
Notifications
You must be signed in to change notification settings - Fork 0
Transfers
This page describes a clear terminology and step-by-step process for creating, binding, and transferring NFTs on Bitcoin using UTXOs and Taproot commitments, without smart contracts or sidechains. This model is inspired by Single-Use Seals (SUS), RGB, and Nostr-native identity.
An NFT in this system is defined by:
-
Metadata (off-chain): image, description, creator, etc.
-
Commitment: a cryptographic binding of the NFT metadata to a Bitcoin UTXO
-
Ownership: whoever controls the UTXO owns the NFT
All identities and addresses are based on a Taproot key, reused across:
-
Bitcoin UTXOs
-
Nostr identity (
npub1...) -
Metadata signing
| Stage | Term (Technical) | Friendly Name | Description |
|---|---|---|---|
| Initial | unbound UTXO | "π Free UTXO" | No NFT or metadata bound to it |
| Bound | sealed UTXO | "π§· Anchored NFT" | Metadata hash is committed to this UTXO (via tweak or script) |
| Verifiable | revealed commitment | "π Proof-linked NFT" | Commitment is published, discoverable and verifiable |
| Transferred | closed seal | "πͺ Transferred NFT" | UTXO spent, ownership transferred |
| New owner | opened seal | "π§³ New Ownership State" | New UTXO receives the NFT commitment |
{
"id": "stone-tiger-2025",
"name": "Stone Tiger",
"image": "ipfs://bafy...jpg",
"creator": "bc1p...abc",
"description": "A digital sculpture minted on Bitcoin."
}
-
Store off-chain (IPFS, .well-known, Nostr)
-
Hash the metadata (e.g.
sha256(metadata))
-
Derive tweaked Taproot key:
Q = P + H(P || hash)Β·G -
Generate address from
Q -
Send UTXO to that address β this becomes the NFT anchor
-
Include hash of metadata in
OP_RETURN -
Link NFT metadata to that txid:vout
-
Embed commitment in
scriptSigorwitness
To transfer the NFT:
-
Seller spends the current UTXO (closing the seal)
-
Buyer provides a new Taproot address (derived from their key)
-
Seller creates new commitment to that address
-
New UTXO becomes the new ownerβs NFT
All roles are tied to a single Taproot x-only pubkey:
-
Nostr identity:
npub1...(Bech32-encoded x-only pubkey) -
Bitcoin address:
bc1p...Taproot address -
NFT owner: controls the UTXO
-
Signer: author of metadata, offers, messages
{
"id": "stone-tiger-2025",
"image": "ipfs://bafy...jpg",
"owner": {
"pubkey": "f3c9a1...",
"address": "bc1pf3...",
"utxo": "7a9603...:0"
},
"commitment": "sha256(...)",
"binding_method": "taproot-tweak"
}
-
Unbound UTXO: regular UTXO, not linked to an NFT
-
Sealed: metadata hash is cryptographically committed to a UTXO
-
Closed Seal: UTXO is spent, binding is broken
-
Opened Seal: new UTXO is created with updated commitment
-
Taproot Tweak: method for hiding commitments in pubkeys
-
IPFS or
.well-knownhosting -
Hashing tool:
sha256sum metadata.json
-
Use of
HTLCto transfer NFTs via trustless offers -
Signed metadata using same Taproot key
-
Explore
RGBorTarofor richer state management -
Integration with Nostr relays for NFT discovery
# NFT Ownership via UTXO Binding (Single-Use Seals)NFT ownership on Bitcoin can be modeled using UTXOs and Taproot commitments. By carefully binding metadata to a UTXO using cryptographic techniques like key tweaks, and representing identity with the same Taproot key across Bitcoin and Nostr, we create a scalable, interoperable, and trust-minimized NFT standard β fully Bitcoin-native.
This page describes a clear terminology and step-by-step process for creating, binding, and transferring NFTs on Bitcoin using UTXOs and Taproot commitments, without smart contracts or sidechains. This model is inspired by Single-Use Seals (SUS), RGB, and Nostr-native identity.
An NFT in this system is defined by:
- Metadata (off-chain): image, description, creator, etc.
- Commitment: a cryptographic binding of the NFT metadata to a Bitcoin UTXO
- Ownership: whoever controls the UTXO owns the NFT
All identities and addresses are based on a Taproot key, reused across:
- Bitcoin UTXOs
- Nostr identity (
npub1...) - Metadata signing
| Stage | Term (Technical) | Friendly Name | Description |
|---|---|---|---|
| Initial |
unbound UTXO |
"π Free UTXO" | No NFT or metadata bound to it |
| Bound |
sealed UTXO |
"π§· Anchored NFT" | Metadata hash is committed to this UTXO (via tweak or script) |
| Verifiable | revealed commitment |
"π Proof-linked NFT" | Commitment is published, discoverable and verifiable |
| Transferred | closed seal |
"πͺ Transferred NFT" | UTXO spent, ownership transferred |
| New owner | opened seal |
"π§³ New Ownership State" | New UTXO receives the NFT commitment |
{
"id": "stone-tiger-2025",
"name": "Stone Tiger",
"image": "ipfs://bafy...jpg",
"creator": "bc1p...abc",
"description": "A digital sculpture minted on Bitcoin."
}- Store off-chain (IPFS, .well-known, Nostr)
- Hash the metadata (e.g.
sha256(metadata))
- Derive tweaked Taproot key:
Q = P + H(P || hash)Β·G - Generate address from
Q - Send UTXO to that address β this becomes the NFT anchor
- Include hash of metadata in
OP_RETURN - Link NFT metadata to that txid:vout
- Embed commitment in
scriptSigorwitness
To transfer the NFT:
- Seller spends the current UTXO (closing the seal)
- Buyer provides a new Taproot address (derived from their key)
- Seller creates new commitment to that address
- New UTXO becomes the new ownerβs NFT
All roles are tied to a single Taproot x-only pubkey:
-
Nostr identity:
npub1...(Bech32-encoded x-only pubkey) -
Bitcoin address:
bc1p...Taproot address - NFT owner: controls the UTXO
- Signer: author of metadata, offers, messages
{
"id": "stone-tiger-2025",
"image": "ipfs://bafy...jpg",
"owner": {
"pubkey": "f3c9a1...",
"address": "bc1pf3...",
"utxo": "7a9603...:0"
},
"commitment": "sha256(...)",
"binding_method": "taproot-tweak"
}- Unbound UTXO: regular UTXO, not linked to an NFT
- Sealed: metadata hash is cryptographically committed to a UTXO
- Closed Seal: UTXO is spent, binding is broken
- Opened Seal: new UTXO is created with updated commitment
- Taproot Tweak: method for hiding commitments in pubkeys
- [Bitcoin Taproot libraries (BIP340)](https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki)
- [Nostr-tools](https://github.com/nbd-wtf/nostr-tools)
- IPFS or
.well-knownhosting - Hashing tool:
sha256sum metadata.json
- Use of
HTLCto transfer NFTs via trustless offers - Signed metadata using same Taproot key
- Explore
RGBorTarofor richer state management - Integration with Nostr relays for NFT discovery
NFT ownership on Bitcoin can be modeled using UTXOs and Taproot commitments. By carefully binding metadata to a UTXO using cryptographic techniques like key tweaks, and representing identity with the same Taproot key across Bitcoin and Nostr, we create a scalable, interoperable, and trust-minimized NFT standard β fully Bitcoin-native.