Complete guide to tracing Bitcoin transactions and addresses with ChainViz.
ChainViz traces Bitcoin transactions using hops instead of depth:
- Hops Before: How many steps backward to trace (find sources)
- Hops After: How many steps forward to trace (find destinations)
Each "hop" represents one transaction in the chain.
Format: Just enter the Bitcoin address
1Gw5PwF6sGVxomatMbj5p4bkk7ED4pyfbu
Settings:
- Hops Before: 0 (don't trace backward)
- Hops After: 0 (don't trace forward)
Result: Shows the address and its immediate transactions (inputs and outputs)
Format: Enter the transaction ID (txid)
49fc56d4c1acd8946cec82d7bf8bf35035118a87ccf70dd29c7d349ef1a530e3
Result: Shows all inputs and outputs for that transaction
Set Hops Before to trace backward:
Address: 1Gw5PwF6sGVxomatMbj5p4bkk7ED4pyfbu
Hops Before: 5
Hops After: 0
This traces 5 transactions backward to find the original source of funds.
Set Hops After to trace forward:
Address: 1Gw5PwF6sGVxomatMbj5p4bkk7ED4pyfbu
Hops Before: 0
Hops After: 5
This traces 5 transactions forward to find where funds were sent.
Address: 1Gw5PwF6sGVxomatMbj5p4bkk7ED4pyfbu
Hops Before: 3
Hops After: 3
Shows 3 hops in both directions for complete context around the address.
π Address Nodes:
- Bitcoin addresses
- Shows balance and transaction count
- Click to see full details in side panel
π΅ Transaction Nodes:
- Bitcoin transactions
- Shows txid and timestamp
- Has expand buttons (β βΆ) for inputs/outputs
Green edges (solid):
- High confidence (>80%)
- Strong evidence of ownership
Amber edges (solid):
- Medium confidence (60-80%)
- Moderate evidence
Red edges (dashed):
- Low confidence (<60%)
- Weak evidence
Edge thickness represents transaction value:
- Thick edges = Large amounts
- Thin edges = Small amounts
Adjust the Edge Width Scale slider to make differences more visible.
Transaction nodes have expand buttons:
β Expand Inputs:
- Shows where the transaction's inputs came from
- Adds more address nodes to the left
βΆ Expand Outputs:
- Shows where the transaction's outputs went
- Adds more address nodes to the right
Address nodes can be expanded in both directions:
Expand Forward:
- Shows transactions where this address is an output
- Traces where funds went
Expand Backward:
- Shows transactions where this address is an input
- Traces where funds came from
Range: 1-300
Controls how many addresses to show for each transaction:
- Low (10-20): Shows only the most important addresses
- Medium (50-100): Shows most addresses
- High (200-300): Shows all addresses (slower)
Use case: Large transactions with many outputs can be overwhelming. Lower this to focus on important flows.
Range: 1-300
Controls how many transactions to show when expanding:
- Low (10-20): Shows only recent/important transactions
- Medium (50-100): Shows most transactions
- High (200-300): Shows all transactions (slower)
Use case: Addresses with many transactions can create cluttered graphs. Lower this to focus on recent activity.
Range: 1-500
Controls the thickness of edges:
- Low (1-50): Thin edges, subtle differences
- Medium (100-200): Moderate thickness
- High (300-500): Thick edges, very visible
Use case: Make large transactions stand out more clearly.
Click π³ Tree Layout to organize the graph hierarchically:
- Root node at the center
- Children arranged by layer
- Minimal edge crossings
- Easier to follow flow
Use case: Complex graphs with many nodes become easier to read.
Toggle β‘ Force Repulsion to spread nodes apart:
- Physics-based node spacing
- Prevents overlapping
- Better visibility
Use case: When nodes are too close together or overlapping.
Toggle π Edge Tension to pull connected nodes closer:
- Reduces long edges
- Tighter layout
- Better clustering
Use case: When nodes are too spread out.
Goal: Find where a suspicious address received funds from
Steps:
- Enter the suspicious address
- Set Hops Before: 10
- Set Hops After: 0
- Click Trace
- Expand interesting transaction nodes
- Look for patterns (exchange addresses, known entities)
Goal: Find where stolen funds were sent
Steps:
- Enter the theft transaction
- Set Hops Before: 0
- Set Hops After: 10
- Click Trace
- Expand all transaction nodes
- Look for exchange deposits or known addresses
Goal: Full context around a suspicious transaction
Steps:
- Enter the transaction ID
- Set Hops Before: 5
- Set Hops After: 5
- Click Trace
- Enable Tree Layout
- Expand nodes selectively
- Use Edge Width Scale to highlight large flows
Goal: Analyze all activity from a wallet
Steps:
- Enter the wallet's main address
- Set Hops Before: 3
- Set Hops After: 3
- Set Max Transactions: 50
- Click Trace
- Enable Force Repulsion
- Look for patterns:
- Change addresses
- Recurring transactions
- Exchange interactions
ChainViz uses multiple heuristics to infer ownership and relationships:
Principle: All inputs in a transaction likely belong to the same entity.
Example: If Alice sends 0.5 BTC using 3 inputs (0.2 + 0.2 + 0.1), those 3 addresses likely belong to Alice.
Exception: CoinJoin transactions break this rule.
Address Reuse (95% confidence):
- If an address was used before, it's probably a payment, not change
Round Amounts (70% confidence):
- Round numbers (1.0 BTC) are intentional payments
- Odd amounts (1.23456789 BTC) are likely change
Script Type Matching (80% confidence):
- Change outputs match input script types
- P2PKH inputs β P2PKH change
Optimal Change (75% confidence):
- Unnecessary inputs suggest larger output is payment
Pattern: Sequential small payments from a large UTXO.
Example:
Large UTXO (10 BTC)
β
TX1: 0.1 BTC to Alice
β
TX2: 0.1 BTC to Bob
β
TX3: 0.1 BTC to Charlie
Use case: Money laundering, wallet management.
Indicators:
- Multiple inputs with equal-value outputs
- Multiple outputs with same value
- No clear change output
Effect: Breaks common-input clustering heuristic.
Action: ChainViz flags these and warns that clustering is unreliable.
Begin with 0-2 hops and expand selectively:
- Faster loading
- Less overwhelming
- Easier to understand
Don't expand everything at once:
- Click expand buttons on interesting nodes
- Build the graph gradually
- Focus on important flows
Tune for your use case:
- Large transactions: Lower Max Outputs
- Active addresses: Lower Max Transactions
- Complex graphs: Enable Tree Layout
Select the fastest Electrum server:
- Click βοΈ Settings
- Try different servers
- Use π§ͺ Test to check speed
If using Redis:
- Repeated queries are instant
- Faster expansion
- Better performance
Possible causes:
- Invalid address format
- Transaction not found
- Server connection issue
Solutions:
- Verify address format (bc1, 1, or 3 prefix)
- Check transaction exists on blockchain
- Try different Electrum server
Possible causes:
- Too many hops
- Too many max outputs
- Slow Electrum server
Solutions:
- Reduce hops (try 0-2 first)
- Lower Max Outputs (try 20-50)
- Switch to faster server
Solutions:
- Enable Force Repulsion
- Use Tree Layout
- Manually drag nodes apart
Solutions:
- Increase Edge Width Scale
- Expand more nodes
- Increase Max Outputs
- Learn about Heuristics in detail
- Master the UI features
- Check the API Reference for automation
- See Troubleshooting for help
- Bitcoin Explorer: https://mempool.space/
- Electrum Protocol: https://electrum-protocol.readthedocs.io/
- React Flow Docs: https://reactflow.dev/
Happy tracing! π