Docs
Transaction observations
GET /v1/tx/{txid}/classification and the classification sibling of a transaction page carry the observations of extractor tx-obs-v1: structural facts read from the transaction bytes, computed on demand the first time a page asks and cached. Every rule is listed here with the exact condition. None of them names a wallet, a service or an owner; the software behind a fingerprint would be a claim, and claims live in the Curated band with a source and a citation.
Absent and empty
observations is absent when the extractor could not read the raw transaction (not computed) and an empty list when it ran and no rule matched (computed, nothing found). Each observation carries kind, value, detail (the evidence of the rule), extractor and extractor_version; a rule change ships as a new version and re-extracts.
OP_RETURN protocol markers
Evaluated on every OP_RETURN output; the first rule that matches wins and detail.prefix_hex records the marker. Counterparty payloads on mainnet are obfuscated with ARC4 keyed by the first input's txid; the rule decodes before matching (detail.encoding = arc4), and also reads the 1-of-3 bare multisig data outputs Counterparty uses for larger messages (encoding = multisig).
op_return value | Rule |
|---|---|
omni | payload begins 6f6d6e69 ("omni") |
opentimestamps | payload begins 0588960d73d71901 |
runes | OP_13 follows OP_RETURN (a runestone) |
stacks | payload begins 5832 or 5831 |
blockstack | payload begins 6964 ("id") |
colu | payload begins 4343 |
open_assets | payload begins 4f410100 |
coinspark | payload begins 53504b |
poet | payload begins 504f4554 |
docproof | payload begins 444f4350524f4f46 |
factom | payload begins 466163746f6d2121 |
eternity_wall | payload begins 4557 |
bitproof | payload begins 4250 |
ascribe | payload begins 4153435249424500 |
stampery | payload begins 5374616d70657279 |
epobc | payload begins 45504f4243 |
counterparty | payload (plain or ARC4-decoded) begins 434e545250525459 ("CNTRPRTY") |
veriblock | payload is exactly 82 bytes (detail.heuristic = size) |
bare_hash | payload is exactly 20 or 32 bytes (detail.heuristic = size) |
text | ≥ 4 bytes and ≥ 90 % printable ASCII (detail.text, first 80 characters) |
unknown | any other OP_RETURN payload |
Meta-protocol envelopes
meta_protocol value | Rule |
|---|---|
inscription | a witness script contains OP_FALSE OP_IF "ord" (detail.content_type when the envelope carries one) |
runes | an OP_RETURN OP_13 runestone output (detail.runestone = true) |
src20_stamp | bare multisig data outputs whose ARC4-decoded data contains "stamp:" |
atomicals | a witness script contains OP_FALSE OP_IF "atom" |
CoinJoin patterns
Amount structures only. The name says which published protocol produces that structure, not who took part; detail holds inputs, outputs, equal_outputs and denomination.
coinjoin value | Rule |
|---|---|
whirlpool | 5 inputs, 5 outputs, all outputs equal and one of 0.001, 0.01, 0.05 or 0.5 BTC |
wasabi-1 | ≥ 10 outputs with ≥ 5 equal outputs within ±0.5 % of 0.1 BTC or one of its doublings |
wabisabi | ≥ 20 outputs of which ≥ 80 % are standard denominations (powers of 2, 3 and 10, with 2·3ⁿ, 2·10ⁿ and 5·10ⁿ, between 5,000 sats and 2³¹) |
joinmarket | ≥ 3 inputs, ≥ 3 exactly equal outputs and at least one other output, when none of the above matched |
Script features
feature value | Rule |
|---|---|
locktime_recent | nLockTime is a height within the 100 blocks before the confirmation height |
bip69 | inputs (txid, then vout) and outputs (amount, then script) are in BIP69 order; only judged with at least two inputs or two outputs |
rbf_signal | any input's nSequence is below 0xfffffffe (detail.input_n) |
Patoshi
Evaluated on the coinbase of blocks up to height 54,316 by the block walker, in height order: the nonce's least significant byte is in 0–9 or 19–58, the coinbase output is P2PK, and the extranonce read from the early-client scriptSig continues the running sequence (increasing by at most 10). A lower extranonce is a restart and is accepted only when the next candidate continues from it. detail carries block_hash, height, nonce_lsb and extranonce. This is an observation of a mining pattern described in public research; it is not a claim about a person.
pattern value | Rule |
|---|---|
patoshi | the four conditions above, on the coinbase transaction |
curl -s https://api.btcintel.io/v1/tx/2bb85f4b004be6da54f766c17c1e855187327112c231ef2ff35ebad0ea67c69e/classification \
| jq '{extractor, observations: [.observations[]? | {kind, value, detail}]}'