Skip to main content
Back to scanner

Methodology

How your Bitcoin privacy is scored. Every heuristic documented, every penalty explained. The same techniques chain surveillance firms use - applied client-side to show you the results.

Threat Model

The analysis models the capabilities of chain surveillance firms (Chainalysis, Elliptic, CipherTrace) and KYC-linked exchanges. These adversaries:

  • 1.Cluster addresses - group addresses controlled by the same entity using CIOH, change detection, and address reuse
  • 2.Link identities - connect clusters to real people via KYC anchor points (exchange deposits, merchant payments)
  • 3.Trace fund flows - follow bitcoin through multiple hops using change detection and temporal analysis
  • 4.Profile behavior - identify spending patterns, wallet software, timing, and financial activity

Heuristics

The engine implements 30 heuristics that evaluate on-chain privacy - 24 at the transaction level and 6 at the address level. Each produces a score impact applied to a base score of 70.

H1

Round Amount Detection

-5 to -15

Flags outputs matching common round BTC or satoshi values. Round amounts typically indicate the payment (not change), letting an observer determine fund flow direction.

H2

Change Detection

-5 to -25

Identifies which output returns funds to the sender using address type matching, round amount analysis, and output ordering patterns. Also detects the critical case where outputs are sent back to an input address (self-send), revealing the sender's exact balance. Correct change identification enables multi-hop tracing.

H3

Common Input Ownership (CIOH)

-6 to -45

If a transaction spends multiple inputs, all inputs are assumed to belong to the same entity. This is the foundational clustering heuristic - the single most powerful tool in chain surveillance. Applied transitively across transactions to build massive address clusters.

H4

CoinJoin Detection

-3 to +30

Detects Whirlpool (5 equal outputs at known denominations) and WabiSabi/Wasabi (large input/output sets with equal-value groups) CoinJoin transactions. CoinJoin is the only heuristic that increases the privacy score.

H5

Simplified Entropy (Boltzmann)

-5 to +15

Measures how many valid input-to-output mappings exist. Higher entropy means more ambiguity for adversaries. Uses exact enumeration for small transactions and structural estimation for large ones.

H6

Fee Analysis

-2

Examines fee rate precision and RBF signaling. Round fee rates and specific RBF patterns help identify wallet software, reducing the anonymity set.

H7

OP_RETURN Detection

-5 to -8

Identifies embedded data in OP_RETURN outputs - protocol markers (Omni, OpenTimestamps, Counterparty, Runes, Ordinals) and arbitrary text. Permanently visible metadata that distinguishes the transaction. Impact stacks with multiple OP_RETURN outputs.

H11

Wallet Fingerprinting

-2 to -6

Identifies wallet software through nLockTime, nSequence, BIP69 ordering, and low-R signature grinding. Approximately 45% of transactions are identifiable by wallet software from structure alone.

H12

Dust Detection

-3 to -8

Flags tiny UTXOs (under 1000 sats) as potential dusting attacks - an active surveillance technique where adversaries send small amounts that, when spent alongside other UTXOs, link addresses via CIOH.

H14

Timing Analysis

-1 to -3

Examines transaction timing patterns including broadcast recency (unconfirmed transactions risk IP correlation), locktime anomalies, and stale nLockTime values that can fingerprint wallet software.

H15

Script Type Mix

-8 to +2

Checks whether inputs and outputs use the same script type. Mixed script types (e.g., P2WPKH input with P2TR output) make change detection easier. Uniform script types improve ambiguity. Also flags bare multisig outputs.

H17

Multisig/Escrow Detection

0 to -3

Parses wrapped multisig inputs (P2SH/P2WSH) to determine M-of-N configuration and detect escrow patterns. Identifies 2-of-2 escrow (P2P exchange or Lightning), 2-of-3 escrow (cold storage or P2P exchange), and HodlHodl fee address matches.

CB

Coinbase Transaction Detection

0

Identifies mining reward transactions and their privacy implications for the recipient.

ANON

Anonymity Set Analysis

-1 to +5

Evaluates whether the transaction has meaningful equal-value output groups that provide plausible deniability.

PEEL

Peel Chain Detection

-3 to -5

Detects peel chains where small amounts are repeatedly peeled off a large UTXO across multiple hops.

CONS

Consolidation Detection

-2 to -5

Identifies UTXO consolidation transactions that link multiple addresses to the same wallet.

UI

Unnecessary Input Detection

-2 to -3

Flags transactions where a single input could have funded the payment, revealing additional wallet UTXOs.

TX0

CoinJoin Premix (tx0) Detection

-2 to +2

Identifies Whirlpool tx0 premix transactions that prepare UTXOs for CoinJoin rounds.

BIP69

BIP69 Ordering Detection

-1

Detects lexicographic input/output ordering (BIP69) which narrows wallet identification.

BIP47

BIP47 Notification Detection

0

Identifies BIP47 payment code notification transactions.

XCHG

Exchange Pattern Detection

-2 to -5

Identifies patterns typical of exchange deposits and withdrawals.

CSEL

Coin Selection Analysis

-1 to -2

Identifies coin selection algorithms (knapsack, branch-and-bound, FIFO) that fingerprint wallet software.

WIT

Witness Data Analysis

-1 to -3

Analyzes witness stack structure, signature types, and depth patterns for wallet fingerprinting.

H8

Address Reuse

+3 to -93

Detects addresses that have received funds in more than one transaction. Address reuse is the single most damaging privacy behavior - it creates deterministic, irrefutable links between all transactions. Carries the harshest penalty, scaling with the number of reuses.

H9

UTXO Analysis

+2 to -11

Evaluates the UTXO set for count, value distribution, dust detection, and consolidation risk. Large UTXO counts represent future privacy damage if consolidated carelessly.

H10

Address Type Analysis

-5 to 0

Assesses the address format: Taproot (P2TR) hides script complexity, ideal for multisig and contracts. P2WPKH (native SegWit) has the largest anonymity set, excellent for single-sig. Legacy (P2PKH) and wrapped (P2SH) leak more information.

H16

Spending Pattern Analysis

-5 to +2

Address-level analysis of spending behavior including transaction volume, UTXO turnover rate, and counterparty diversity. High-volume addresses or accounts that never spend may indicate specific usage patterns like exchanges or cold storage.

REC

Recurring Payment Detection

-1 to -3

Detects recurring payment patterns that reveal regular financial relationships.

HIGH

High Activity Detection

-2 to -5

Flags addresses with unusually high transaction counts that increase surveillance exposure.

Scoring Model

Calculation

Every analysis starts from a base score of 70 - representing a typical Bitcoin transaction with no obviously good or bad characteristics. The base is above 50 because most transactions are not catastrophically bad; they carry the normal, baseline exposure of a transparent public blockchain.

final_score = clamp(70 + sum(all_heuristic_impacts), 0, 100)

Grade Thresholds

Grade
Score
Interpretation
A+
>= 90
B
>= 75
C
>= 50
D
>= 25
F
< 25

Cross-Heuristic Intelligence

After all heuristics run, the engine applies cross-heuristic rules to avoid false penalties:

  • CoinJoin suppresses CIOH - multiple input addresses in a CoinJoin belong to different participants, so the CIOH penalty is zeroed out
  • CoinJoin suppresses round amounts - equal outputs in a CoinJoin are the denomination, not a privacy leak
  • CoinJoin suppresses change detection - change identification in CoinJoin transactions is unreliable and penalizing it would be misleading
  • CoinJoin suppresses script type mix - mixed script types are expected when participants use different wallet software
  • CoinJoin suppresses wallet fingerprinting - wallet identification is less relevant when the CoinJoin already breaks transaction graph linkability
  • CoinJoin suppresses dust detection - small outputs in CoinJoin transactions are typically coordinator fees, not dusting attacks
  • CoinJoin suppresses timing analysis - broadcast timing in CoinJoin is coordinated and does not reveal individual participant behavior
  • CoinJoin suppresses fee fingerprinting - fee rate and RBF signals in CoinJoin reveal the coordinator, not the participant's wallet
  • CoinJoin suppresses no-anonymity-set penalty - CoinJoin structure provides privacy beyond simple output value matching

Limitations

  • Entropy calculation is simplified. Full Boltzmann analysis requires expensive enumeration that is impractical client-side for large transactions.
  • Only on-chain data is analyzed. Off-chain intelligence (IP correlations, exchange records, human intelligence) that surveillance firms use is not modeled.
  • Wallet fingerprinting covers major wallets but cannot identify all software. Novel or obscure wallets may not be detected.
  • Some privacy techniques (like PayJoin) are deliberately undetectable on-chain. A good privacy score does not guarantee privacy, and the absence of detected issues does not mean none exist.