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.
Round Amount Detection
-5 to -15Flags outputs matching common round BTC or satoshi values. Round amounts typically indicate the payment (not change), letting an observer determine fund flow direction.
Change Detection
-5 to -25Identifies 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.
Common Input Ownership (CIOH)
-6 to -45If 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.
CoinJoin Detection
-3 to +30Detects 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.
Simplified Entropy (Boltzmann)
-5 to +15Measures 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.
Fee Analysis
-2Examines fee rate precision and RBF signaling. Round fee rates and specific RBF patterns help identify wallet software, reducing the anonymity set.
OP_RETURN Detection
-5 to -8Identifies 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.
Wallet Fingerprinting
-2 to -6Identifies wallet software through nLockTime, nSequence, BIP69 ordering, and low-R signature grinding. Approximately 45% of transactions are identifiable by wallet software from structure alone.
Dust Detection
-3 to -8Flags 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.
Timing Analysis
-1 to -3Examines transaction timing patterns including broadcast recency (unconfirmed transactions risk IP correlation), locktime anomalies, and stale nLockTime values that can fingerprint wallet software.
Script Type Mix
-8 to +2Checks 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.
Multisig/Escrow Detection
0 to -3Parses 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.
Coinbase Transaction Detection
0Identifies mining reward transactions and their privacy implications for the recipient.
Anonymity Set Analysis
-1 to +5Evaluates whether the transaction has meaningful equal-value output groups that provide plausible deniability.
Peel Chain Detection
-3 to -5Detects peel chains where small amounts are repeatedly peeled off a large UTXO across multiple hops.
Consolidation Detection
-2 to -5Identifies UTXO consolidation transactions that link multiple addresses to the same wallet.
Unnecessary Input Detection
-2 to -3Flags transactions where a single input could have funded the payment, revealing additional wallet UTXOs.
CoinJoin Premix (tx0) Detection
-2 to +2Identifies Whirlpool tx0 premix transactions that prepare UTXOs for CoinJoin rounds.
BIP69 Ordering Detection
-1Detects lexicographic input/output ordering (BIP69) which narrows wallet identification.
BIP47 Notification Detection
0Identifies BIP47 payment code notification transactions.
Exchange Pattern Detection
-2 to -5Identifies patterns typical of exchange deposits and withdrawals.
Coin Selection Analysis
-1 to -2Identifies coin selection algorithms (knapsack, branch-and-bound, FIFO) that fingerprint wallet software.
Witness Data Analysis
-1 to -3Analyzes witness stack structure, signature types, and depth patterns for wallet fingerprinting.
Address Reuse
+3 to -93Detects 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.
UTXO Analysis
+2 to -11Evaluates the UTXO set for count, value distribution, dust detection, and consolidation risk. Large UTXO counts represent future privacy damage if consolidated carelessly.
Address Type Analysis
-5 to 0Assesses 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.
Spending Pattern Analysis
-5 to +2Address-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.
Recurring Payment Detection
-1 to -3Detects recurring payment patterns that reveal regular financial relationships.
High Activity Detection
-2 to -5Flags 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.
Grade Thresholds
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.