{
 "project": "counters.fun",
 "url": "https://blockspace.wiki/projects/counters.fun/",
 "title": "counters.fun",
 "summary": "Counters with XCP liquidity pools. On-chain files only.",
 "status": "live",
 "role": "product",
 "related": [
  "https://blockspace.wiki/projects/counters.gallery/"
 ],
 "as_of": "2026-10-20",
 "updated": "2026-10-20",
 "site": "https://counters.fun",
 "publisher": {
  "@id": "https://blockspace.holdings/#org",
  "name": "Blockspace Holdings"
 },
 "glossary": [
  {
   "term": "counter",
   "url": "https://blockspace.wiki/glossary/counter/",
   "aliases": [
    "counters",
    "Bitcoin Counters",
    "numbered file event"
   ],
   "definition": "A Bitcoin Counter is \"a numbered file event\": a file committed to Bitcoin as the description of a Counterparty asset, carried in a Counterparty taproot envelope , and given a global, gap-free number in order of creation, from #0. It passes two tests at once: the bytes are the description of a valid Counterparty issuance or fairminter deploy, and they reached the chain inside witness data . Either test alone is nothing."
  },
  {
   "term": "Counterparty",
   "url": "https://blockspace.wiki/glossary/counterparty/",
   "aliases": [
    "Counterparty Core"
   ],
   "definition": "The protocol whose assets carry counters . For counters it supplies identity, ownership, naming, transfer and, since its v11 taproot envelope , the content itself. Counterparty Core is its node software. It decides message validity, asset identity, ownership and content; the counters indexer never reimplements that consensus. (\"Bitcoin Core\" is the separate Bitcoin node; the counters docs always name the two in full.)"
  },
  {
   "term": "counterparty + ord",
   "url": "https://blockspace.wiki/glossary/counterparty-plus-ord/",
   "aliases": [
    "counterparty/ord"
   ],
   "definition": "The style of Counterparty taproot envelope that Counterparty Core emits with inscription=true : the same envelope plus the ordinals framing, with every field an official ordinals tag and tag 7 carrying xcp . Its reveal creates two independently ownable assets: the Counterparty asset, and an ordinals inscription on its own output. The stored value is counterparty/ord . The first five counters are all this style."
  },
  {
   "term": "Counterparty DEX",
   "url": "https://blockspace.wiki/glossary/counterparty-dex/",
   "aliases": [
    "DEX"
   ],
   "definition": "Counterparty's on-chain order book. An order gives one asset to get another, with BTC allowed on either side; a non-BTC give is escrowed until the order fills, expires or is cancelled, and a matched BTC leg must be paid within about 20 blocks. Counterparty has one trade message, and consensus alone decides whether it fills against the book or a liquidity pool ."
  },
  {
   "term": "Counterparty taproot envelope",
   "url": "https://blockspace.wiki/glossary/taproot-envelope/",
   "aliases": [
    "taproot envelope",
    "counterparty native"
   ],
   "definition": "Counterparty v11's witness-data encoding, active from block 902,000: an OP_FALSE OP_IF … OP_ENDIF tapscript revealed by a commit and reveal transaction pair. The message, an asset's description included, travels as data pushes in the reveal's input-0 witness ; the output side holds only the literal CNTRPRTY OP_RETURN marker. Two styles exist, the size-optimised counterparty native envelope and the counterparty + ord envelope, and both carry counters equally."
  },
  {
   "term": "dispenser",
   "url": "https://blockspace.wiki/glossary/dispenser/",
   "aliases": [
    "dispensers"
   ],
   "definition": "A Counterparty offer that escrows an asset and vends it for BTC at a price per lot that cannot change while it is open. A purchase needs a Counterparty dispense message: since block 866,000 a bare BTC payment to a dispenser address buys nothing. A closed dispenser keeps vending for about 5 blocks, then the unsold stock returns to the closer."
  },
  {
   "term": "envelope",
   "url": "https://blockspace.wiki/glossary/envelope/",
   "aliases": [
    "inscription envelope",
    "witness envelope"
   ],
   "definition": "A data carrier inside a taproot script-path witness, holding content as pushes of at most 520 bytes each. ord's envelope carries the marker 6f7264 ; Counterparty and Counters have envelopes of their own."
  },
  {
   "term": "fairminter",
   "url": "https://blockspace.wiki/glossary/fairminter/",
   "aliases": [
    "fairminter deploy",
    "fairmint",
    "fairmints"
   ],
   "definition": "A Counterparty message that deploys a fair-minted asset. A fairminter deploy whose description is a file is itself a counter ; the fairmints that follow never are, so \"a fair-minted collection gets one counter at deploy\". Since Counterparty Core v11.2's fairmint_pool gate (mainnet block 961,100) a fairminter can seed a liquidity pool at soft cap with every satoshi it raised, minting the LP tokens to the unspendable address."
  },
  {
   "term": "liquidity pool",
   "url": "https://blockspace.wiki/glossary/liquidity-pool/",
   "aliases": [
    "liquidity pools",
    "XCP pool",
    "XCP pools",
    "XCP liquidity pool",
    "XCP liquidity pools",
    "AMM pool"
   ],
   "definition": "A constant-product reserve pair on Counterparty , with its own LP token , native since Counterparty Core v11.1's amm_pools gate. There is no \"create pool\" message: the first deposit creates the pool, and its two amounts set the opening price. counters.fun lists the counters that have pools against XCP."
  },
  {
   "term": "LP token",
   "url": "https://blockspace.wiki/glossary/lp-token/",
   "aliases": [
    "LP tokens"
   ],
   "definition": "The token a Counterparty liquidity pool gives its depositors. Burning LP tokens takes both assets back pro rata. LP tokens sent to the unspendable address lock the liquidity, and counters.fun shows that lock as the share of LP supply at the burn address."
  },
  {
   "term": "pointer counter",
   "url": "https://blockspace.wiki/glossary/pointer-counter/",
   "aliases": [
    "pointer-like content",
    "pointer counters"
   ],
   "definition": "A counter whose content is a single URI token ( ipfs: , ar:// , http(s):// ) rather than a file. It is a full, valid counter, but only the pointer is on chain. A counters server shows the pointer text and never fetches it; counters.fun does not display pointer counters at all."
  },
  {
   "term": "price per KB",
   "url": "https://blockspace.wiki/glossary/price-per-kb/",
   "aliases": [],
   "definition": "counters.fun's price against on-chain size: the market cap spread over the bytes the asset carries on chain, summed over every counter on it, so price × circulating supply ÷ KB, in the price's own unit. Every pooled card, dispenser card and DEX row on counters.fun shows it."
  },
  {
   "term": "reinscription",
   "url": "https://blockspace.wiki/glossary/reinscription/",
   "aliases": [
    "reinscriptions"
   ],
   "definition": "New content attached to a Counterparty asset you own: a Counterparty reissuance with a fresh taproot-carried description (quantity 0, on counters.fun's mint page). It is numbered like any other counter . Numbering is per event, so an unlocked asset collects a new counter each time; its lowest-numbered counter is its original, and no earlier counter is erased."
  },
  {
   "term": "reveal transaction",
   "url": "https://blockspace.wiki/glossary/reveal-transaction/",
   "aliases": [
    "reveal",
    "commit transaction"
   ],
   "definition": "In a Counterparty taproot mint, the commit transaction pays to a taproot address committing to the envelope tapscript. The reveal transaction spends that output by the script path, exposing the envelope in input 0's witness, and carries an OP_RETURN holding only the literal marker CNTRPRTY . The reveal is the transaction Counterparty parses and the one a counter is keyed to. An unrevealed commit is nothing."
  },
  {
   "term": "rolling hash",
   "url": "https://blockspace.wiki/glossary/rolling-hash/",
   "aliases": [
    "rolling consensus hash",
    "consensus hash chain"
   ],
   "definition": "How independent counters indexers check that they agree. Each counter extends a SHA-256 chain over its number, transaction, position, kind, asset and content hash, seeded from the tag counters:v3:bitcoin-mainnet:902000 . Two indexers agree on the whole history if and only if their latest rolling hash matches. It is not BTI's consensus hash ."
  },
  {
   "term": "witness",
   "url": "https://blockspace.wiki/glossary/witness/",
   "aliases": [
    "witness data"
   ],
   "definition": "The segwit section of a transaction (BIP 141/144) holding one stack per input. It is hashed into the wtxid but not the txid, and each of its bytes weighs 1 WU instead of 4."
  },
  {
   "term": "XCP asset",
   "url": "https://blockspace.wiki/glossary/xcp-asset/",
   "aliases": [
    "XCP assets",
    "Counterparty asset",
    "Counterparty assets"
   ],
   "definition": "An asset in the Counterparty ledger. BTI's token catalogue calls XCP assets \"the first blockspace tokens (2014)\", counts XCP itself as one, and lists counters as a subset. An asset's description can hold a file; when it reaches the chain in a Counterparty taproot envelope , that description is a counter. On counters.fun's mint page, a named asset burns 0.5 XCP."
  }
 ],
 "faq": [
  {
   "q": "Why are some counters missing from counters.fun?",
   "a": "Its one rule is that only counters whose file is on Bitcoin are displayed. A pointer counter is a valid counter, but showing it would mean fetching bytes from someone else's server, so counters.fun does not render or trade it."
  },
  {
   "q": "Which wallets work with it?",
   "a": "Both Counterparty browser wallets, XCP Wallet and Horizon Wallet, through one adapter. Every flow is signed as a PSBT, because Horizon cannot sign a raw transaction; when a wallet cannot broadcast, the app falls back to Esplora."
  },
  {
   "q": "What is price per KB?",
   "a": "Price per KB is the market cap spread over the bytes the asset carries on chain: price × circulating supply ÷ KB, in the price's own unit. It is shown on every pooled card, dispenser card and DEX row."
  },
  {
   "q": "Can I buy from a dispenser by sending it BTC?",
   "a": "No. Since block 866,000 a bare BTC payment to a dispenser buys nothing. counters.fun's buy composes a Counterparty dispense, shows the price plus the miner fee, and the wallet signs it."
  },
  {
   "q": "What can I mint there?",
   "a": "Three things through one commit and reveal path: a new counter , a reinscription on an asset you own, or a fairminter deploy whose description is the file. The XCP-69 preset follows xcp.fun's template and opens a liquidity pool at soft cap."
  }
 ],
 "pages": [
  {
   "title": "What are Counters?",
   "url": "https://blockspace.wiki/answers/what-are-counters/",
   "type": "answer"
  },
  {
   "title": "What is counters.fun?",
   "url": "https://blockspace.wiki/answers/what-is-counters-fun/",
   "type": "answer"
  },
  {
   "title": "Counterparty",
   "url": "https://blockspace.wiki/protocols/counterparty/",
   "type": "protocol"
  }
 ],
 "markdown": "https://blockspace.wiki/projects/counters.fun/index.md"
}
