Trades

Bitcoin NFT Trades

The Bitcoin NFT landscape comprises multiple marketplaces. The table below shows the Bitcoin NFT marketplaces indexed by Allium.

Marketplace

ordwallet

ordswap

openordex

magiceden

gamma

unisat

okx

Sample Query

Get the market overview of Bitcoin NFTs, in 10 lines of SQL.

SELECT 
    date(block_timestamp) as date, 
    marketplace,
    count(*) as "Count",
    count(distinct collection_name) as "Collections",
    count(distinct buyer_address) as "Buyers",
    sum(usd_price) as "USD Volume"
FROM bitcoin.nfts.trades 
group by 1,2
order by 1 desc

Table Columns

Column Name
Description
Example

marketplace

The marketplace used to faciliate the trade

ordswap

protocol

The protocol of the marketplace.

NULL

order_match_type

Type of sales. Registered as BUY for direct purchase and ACCEPT_BID for bids accepted.

BUY

trade_type

Type of trade. SINGLE_TRADE for single token sales or BUNDLE_TRADE when more than 1 token is sold in a transaction.

SINGLE_TRADE

buyer_address

Pubkey of the buyer, defined as the party sending the funds

bc1pfsl6u50r05cpegy6aqf838w4nz2lyml9946ntfzjt8s0u4e05w5qju8tpa

seller_address

Pubkey of the seller, defined as the party sending the NFT

bc1pcg5gvey9fth7danwy46em0fmynhl9mzqghdjld3c9l6fyadzkfqs2tf72q

_nft_recipient

Pubkey of the party receiving the NFT. May be different from buyer_address

bc1pfsl6u50r05cpegy6aqf838w4nz2lyml9946ntfzjt8s0u4e05w5qju8tpa

_sales_proceeds_recipient

Pubkey of the party receiving the funds. May be different from seller_address

bc1pcg5gvey9fth7danwy46em0fmynhl9mzqghdjld3c9l6fyadzkfqs2tf72q

currency_address

Address of the currency.

NULL

currency_symbol

Symbol of the currency.

BTC

raw_gas_fee

Gas fee of the trade in satoshis

50088

gas_fee

Gas fee of the trade normalized

0.00050088

usd_gas_fee

USD value of the gas fee

13.471162591

raw_sales_proceeds

Sales proceeds of the trade in satoshis

155670

sales_proceeds

Sales proceeds of the trade normalized

0.0015567

usd_sales_proceeds

USD value of the sales proceeds

31.953976158

raw_price

Price of the NFT in number of satoshis. (includes fees)

100000

price

Price of the NFT normalized. (includes fees)

0.001

usd_price

USD value of the trade. The USD value of the trade is calculated by multiplying the hourly exchange rate of the currency (e.g. BTC) with the price oracle data source from exchanges during the hour of the trade. (includes fees)

22.21803

buyer_fees

Fees paid by the NFT buyer.

It might be "unimplemented" if we haven't parse the fees for that protocol yet. Otherwise, it will be a json with 9 columns.

"creator" fees are the ones paid to the nft creator (royalties); "platform" fees are paid to the marketplace; "total" fees are the sum of both fees

Use this syntax to access a specific fee:buyer_fees['usd_total']::double. And don't worry about the unimplemented ones, they will become null

{ "creator": 0.625, "platform": null, "raw_creator": "625000000000000000", "raw_platform": null, "raw_total": "625000000000000000", "total": 0.625, "usd_creator": 0.40125, "usd_platform": null, "usd_total": 0.40125 }

seller_fees

Fees paid by the NFT seller. Similar in structure to buyer_fees

{ "creator": 0.625, "platform": null, "raw_creator": "625000000000000000", "raw_platform": null, "raw_total": "625000000000000000", "total": 0.625, "usd_creator": 0.40125, "usd_platform": null, "usd_total": 0.40125 }

agg_fees

Sum of the fees paid by the NFT buyer and the seller. Similar in structure to buyer_fees

{ "creator": 0.625, "platform": null, "raw_creator": "625000000000000000", "raw_platform": null, "raw_total": "625000000000000000", "total": 0.625, "usd_creator": 0.40125, "usd_platform": null, "usd_total": 0.40125 }

raw_fee

Fee of the trade in number of satoshis. (deprecated)

100000

fee

Fee of the trade normalized. (deprecated)

0.001

usd_fee

USD value of the feeade. The USD value of the feede is calculated by multiplying the hourly exchange rate of the currency (e.g. BTC) with the price oracle data source from exchanges during the hour of the trade. (deprecated)

22.21803

item_quantity

Number of NFTs traded within this utxo. As each row in the table is a transfer of 1 UTXO, in some cases, 2 inscriptions can be in 1 UTXO, resulting in a bundle trade.

1

inscription_id

inscription id, composed of the genesis transaction hash with a i0 suffix to represent the first inscription in the tx

83f84267835b46aa44ab9f6e829c1363f2c5bc882d04242d20b832a034633779i0

inscription_name

The inscription name, if available.

inscription_number

The inscription number, sometimes known as index, if available

1980222

collection_name

The collection name, if available.

Bitcoin Punks

collection_slug

The collection slug, if available

bitcoin-punks

content_type

Content type of the inscription

text/plain

content_tag

Content tag, which is a reclassification of the raw content_type field to make it easy to analyze.

image video application audio text model others

content_length

Number of bytes of the inscription content

1204

content_protocol

(For json inscriptions with a p key) The protocol of the inscription, derived with json_content['p']

brc-20

content_parsed

(For textual inscriptions) The parsed content of the inscription, could be a utf-8 string or a json object

hello world

{"p":"brc-20","op":"transfer","tick":"pepe","amt":"500"}

is_brc20

Derived with content_protocol = 'brc-20'. To be deprecated for is_token + content_protocol

true

is_token

Used to identify token-like standards.

Derived with content_protocol = 'brc-20' or 'orc-20' or 'orc20'

true

token_tick

The tick of the token-like inscription. Derived with content_parsed['tick']

ordi

token_amt

The amout specified in the token-like inscription. Derived with content_parsed['amt']

100

sats_per_token_tick

Satoshis per token-like amount. Derived with satoshi of the trade / token_amt

1000000

usd_per_token_tick

USD per token-like amount. Derived with USD of the trade / token_amt

1.50

domain_protocol

Domain name protocol used to parse the content

sns bitmap

domain_name

the domain name (portion before the . )

abc

domain_namespace

the domain namespace (portion after the . )

sats

domain_valid

true/false - domains are invalid if they are not the first or are unstable inscriptions

true/false

domain_meta

the metadata of the domain op, such as about, rev, avatar fields.

{"avatar":"cfab194b924f7785c6e453728e1c264b89b74843633278cda3ad3f57576c1e93i0","op":"reg"}

is_domain

true/false - whether the domain name/namespace fit the requirements of sns/bitmap protocols.

Malformed/illegal formats of inscriptions are removed here. There may be some edge cases because sns allows text inscriptions which have lots of noise.

true/false

genesis_fee

Genesis fee of the inscription when it was inscribed

12313

satoshi_timestamp

The timestamp of the satoshi when it was mined.

2019-02-14 20:39:36

transaction_hash

Transaction hash of the nft trade.

47b1a461fc68ece7d0d933fc0fb77c5316867887d5bce266596d48d14f077130

transaction_index

Index of the transaction within the block

281

block_timestamp

Timestamp of the block.

2023-02-14 20:39:36

block_number

Block number of the nft trade.

776557

block_hash

Block hash of the nft trade.

000000000000000000039d091930c5b3cc660c4f246cfc66e49ebd677a4e7afd

unique_id

Unique id of the trade, composed from transaction_hash.

txn-47b1a461fc68ece7d0d933fc0fb77c5316867887d5bce266596d48d14f077130

Last updated