import React, { useState, useMemo } from 'react'; import { InvestigationCase } from '../../types/forensics'; import { BlockchainNetwork, AddressCluster, OnChainTransaction, PeelingHop, MixerDeanonymization } from '../../types/cryptoTracer'; import { TRACER_ADDRESS_CLUSTERS, ONCHAIN_TRANSACTIONS, PEELING_CHAIN_TRACE, MIXER_DEANONYMIZATION_SAMPLE } from '../../data/cryptoTracerData'; import { FINCEN_SAR_DATABASE } from '../../data/fincenSarData'; import { FincenSarModal } from '../modals/FincenSarModal'; import { Search, ShieldAlert, GitFork, Layers, Activity, AlertOctagon, ExternalLink, Download, Copy, Check, FileText, Zap, ArrowRight, ArrowUpRight, Lock, CheckCircle2, Scale, RefreshCw, Filter, DollarSign } from 'lucide-react'; interface CryptoTracerTabProps { currentCase: InvestigationCase; onNavigateToWorkbook?: () => void; onNavigateToStatutory?: () => void; } export const CryptoTracerTab: React.FC = ({ currentCase, onNavigateToWorkbook, onNavigateToStatutory, }) => { // Active search address const [searchAddress, setSearchAddress] = useState( TRACER_ADDRESS_CLUSTERS[0].address ); const [selectedChain, setSelectedChain] = useState('ALL'); const [hopDepth, setHopDepth] = useState(3); const [sanctionedOnly, setSanctionedOnly] = useState(false); const [activeSubView, setActiveSubView] = useState<'FLOW_GRAPH' | 'PEELING_CHAIN' | 'MIXER_DEANONYMIZER' | 'TX_LEDGER'>('FLOW_GRAPH'); // Selected Cluster & Tx const [selectedClusterAddress, setSelectedClusterAddress] = useState(TRACER_ADDRESS_CLUSTERS[0].address); const [selectedTxHash, setSelectedTxHash] = useState(null); // FinCEN SAR Modal state const [isSarModalOpen, setIsSarModalOpen] = useState(false); const [sarModalBsanId, setSarModalBsanId] = useState(null); const [copiedProof, setCopiedProof] = useState(false); // Active Cluster Object const currentCluster: AddressCluster = useMemo(() => { return ( TRACER_ADDRESS_CLUSTERS.find(c => c.address.toLowerCase() === selectedClusterAddress.toLowerCase()) || TRACER_ADDRESS_CLUSTERS[0] ); }, [selectedClusterAddress]); // Filtered Clusters const displayedClusters = useMemo(() => { return TRACER_ADDRESS_CLUSTERS.filter(c => { if (selectedChain !== 'ALL' && c.chain !== selectedChain) return false; if (sanctionedOnly && !c.isSanctioned && c.clusterType !== 'MIXER_POOL') return false; return true; }); }, [selectedChain, sanctionedOnly]); // Filtered Transactions const displayedTransactions = useMemo(() => { return ONCHAIN_TRANSACTIONS.filter(tx => { if (selectedChain !== 'ALL' && tx.chain !== selectedChain) return false; return true; }); }, [selectedChain]); // Associated FinCEN SARs const associatedSars = useMemo(() => { return FINCEN_SAR_DATABASE.filter(sar => { return ( sar.associatedCaseId === currentCase.id || sar.subjects.some(s => s.walletAddresses.some(w => w.toLowerCase() === currentCluster.address.toLowerCase())) ); }); }, [currentCase.id, currentCluster.address]); const handleSelectPreset = (addr: string) => { setSearchAddress(addr); setSelectedClusterAddress(addr); }; const getRiskColor = (score: number) => { if (score >= 90) return 'text-rose-400 bg-rose-950/80 border-rose-800'; if (score >= 70) return 'text-amber-400 bg-amber-950/80 border-amber-800'; if (score >= 40) return 'text-cyan-400 bg-cyan-950/80 border-cyan-800'; return 'text-emerald-400 bg-emerald-950/80 border-emerald-800'; }; const getClusterTypeBadge = (type: AddressCluster['clusterType']) => { switch (type) { case 'SANCTIONED_SDN': return OFAC SANCTIONED SDN; case 'MIXER_POOL': return ANONYMIZING MIXER; case 'EXCHANGE_VASP': return VERIFIED VASP; case 'BRIDGE_GATEWAY': return CROSS-CHAIN BRIDGE; case 'P2P_RAMP': return P2P FIAT RAMP; default: return UNHOSTED WALLET; } }; const generateForensicProof = () => { const payload = { reportType: "SENTINEL_CRYPTO_TRACE_CHAIN_OF_CUSTODY", timestamp: new Date().toISOString(), targetCluster: currentCluster, taintAnalysis: currentCluster.taintScore, heuristics: { peelingChainHops: PEELING_CHAIN_TRACE.length, mixerAnonymityEntropyReduction: MIXER_DEANONYMIZATION_SAMPLE.entropyBits, structuringAlertCount: displayedTransactions.filter(t => t.isStructuring).length }, associatedFincenSars: associatedSars.map(s => s.bsanId), cryptographicSignature: `0x${Math.random().toString(16).slice(2)}${Math.random().toString(16).slice(2)}`, examinerProvenance: "Agent A. Lane (Counter-Terror Taskforce // Sentinel FROI.OS)" }; navigator.clipboard.writeText(JSON.stringify(payload, null, 2)); setCopiedProof(true); setTimeout(() => setCopiedProof(false), 2500); }; return (
{/* Top Banner & Multi-Chain Search Console */}

MULTI-CHAIN CRYPTO TRACER & ON-CHAIN HEURISTICS DE-ANONYMIZER

BTC • ETH • TRON • XMR • SOL • BRIDGES

Heuristic cluster decomposition, UTXO peeling chains, zero-knowledge mixer de-anonymization, and FinCEN SAR integration

{/* Action Buttons */}
{onNavigateToWorkbook && ( )}
{/* Search Bar & Preset Quick-Select */}
setSearchAddress(e.target.value)} onKeyDown={(e) => { if (e.key === 'Enter') { setSelectedClusterAddress(searchAddress.trim()); } }} placeholder="Search Wallet Address, Transaction Hash, or Smart Contract..." className="w-full bg-slate-950 border border-slate-800 rounded-xl pl-9 pr-24 py-2.5 text-xs text-cyan-300 font-mono focus:outline-none focus:border-cyan-500" />
{/* Chain Selector */}
{/* Hop Depth Selector */}
Depth: {hopDepth} Hops
{/* Quick Presets */}
Case Presets:
{/* Target Cluster Detail Card */}
ACTIVE TRACER CLUSTER {getClusterTypeBadge(currentCluster.clusterType)} AML RISK: {currentCluster.riskScore}/100
{currentCluster.address}
Label: {currentCluster.label} • Jurisdiction: {currentCluster.jurisdiction}
{/* Quick Actions for Current Cluster */}
{currentCluster.fincenSarRef && ( )}
{/* Metrics Grid */}
CURRENT ON-CHAIN BALANCE {currentCluster.balance.toLocaleString()} {currentCluster.asset} ≈ ${currentCluster.balanceUsd.toLocaleString()} USD
AGGREGATE INFLOW VOLUME ${currentCluster.totalReceivedUsd.toLocaleString()} USD Transactions: {currentCluster.txCount} recorded
3-MODEL TAINT EXPOSURE
FIFO: {currentCluster.taintScore.fifoPercentage}% Poison: {currentCluster.taintScore.poisonPercentage}%
Haircut: {currentCluster.taintScore.haircutPercentage}%
ATTRIBUTED ENTITY / OWNER {currentCluster.entityOwner || 'Anonymous / Unhosted'} {currentCluster.associatedCaseId || 'Non-Docket Target'}
{/* Tags */}
{currentCluster.tags.map((tag, idx) => ( #{tag} ))}
{/* Sub-View Navigation Tabs */}
{/* Sub-View Content */} {activeSubView === 'FLOW_GRAPH' && (
CLUSTER TOPOLOGY & MULTI-HOP ON-CHAIN PATHS
Click any node in the cluster map below to focus and inspect
{/* Interactive Cluster Nodes Grid */}
{displayedClusters.map((cluster) => { const isSelected = cluster.address.toLowerCase() === selectedClusterAddress.toLowerCase(); return (
setSelectedClusterAddress(cluster.address)} className={`p-3.5 rounded-xl border transition-all cursor-pointer space-y-2 ${ isSelected ? 'bg-slate-800 border-cyan-400 shadow-lg shadow-cyan-950/40 ring-1 ring-cyan-500/50' : 'bg-slate-950/70 border-slate-800 hover:border-slate-700 hover:bg-slate-900' }`} >
{cluster.chain} {getClusterTypeBadge(cluster.clusterType)}
{cluster.label}
{cluster.address}
${cluster.balanceUsd.toLocaleString()} USD RISK {cluster.riskScore}
); })}
)} {activeSubView === 'PEELING_CHAIN' && (
UTXO PEELING CHAIN & DISPERSION ACCUMULATION
Sub-$10k BSA CTR Evasion Smurfing Detected
{PEELING_CHAIN_TRACE.map((hop) => (
HOP {hop.step} {hop.txHash}
{hop.isStructuringSmurf && ( STRUCTURING SMURF (<$10k) )}
PEELED VALUE (EXTRACTION) ${hop.peelAmountUsd.toLocaleString()} USD To: {hop.peelDestinationLabel}
REMAINING CHANGE (NEXT HOP) ${hop.changeAmountUsd.toLocaleString()} USD Accumulated to change output
INPUT ORIGIN ADDRESS {hop.fromAddress}
))}
)} {activeSubView === 'MIXER_DEANONYMIZER' && (
ZERO-KNOWLEDGE MIXER HEURISTIC DE-ANONYMIZATION
Unmasking Confidence: {MIXER_DEANONYMIZATION_SAMPLE.unmaskingConfidence}%
{MIXER_DEANONYMIZATION_SAMPLE.mixerProtocol} Smart Contract Deposit
Pool: {MIXER_DEANONYMIZATION_SAMPLE.poolAddress} ({MIXER_DEANONYMIZATION_SAMPLE.poolAsset})
ENTROPY COLLAPSE {MIXER_DEANONYMIZATION_SAMPLE.entropyBits} bits (Reduced Set: {MIXER_DEANONYMIZATION_SAMPLE.reducedAnonymitySet} of {MIXER_DEANONYMIZATION_SAMPLE.theoreticalAnonymitySet})
{/* Heuristic Scores */}
TEMPORAL PROXIMITY {MIXER_DEANONYMIZATION_SAMPLE.heuristicBreakdowns.temporalProximityScore}%
GAS PRICE FINGERPRINT {MIXER_DEANONYMIZATION_SAMPLE.heuristicBreakdowns.gasPriceFingerprintMatch}%
DENOMINATION EXACT MATCH {MIXER_DEANONYMIZATION_SAMPLE.heuristicBreakdowns.denominationMatch}%
NONCE PATTERN MATCH {MIXER_DEANONYMIZATION_SAMPLE.heuristicBreakdowns.noncePatternMatch}%
{/* Attributed Recipient Node */}
PROBABLE UNMASKED WITHDRAWAL RECIPIENT {MIXER_DEANONYMIZATION_SAMPLE.probableWithdrawalAddress} Linked Transaction Hash: {MIXER_DEANONYMIZATION_SAMPLE.probableWithdrawalTx}
)} {activeSubView === 'TX_LEDGER' && (
RAW ON-CHAIN TRANSACTION FEED
{displayedTransactions.map((tx) => ( ))}
Tx Hash Network Timestamp From To Amount & Asset Method / Type
{tx.txHash} {tx.chain} {tx.timestamp} {tx.fromLabel || tx.fromAddress} {tx.toLabel || tx.toAddress} ${tx.amountUsd.toLocaleString()} ({tx.asset}) {tx.scriptType}
)} {/* FinCEN SAR Modal */} setIsSarModalOpen(false)} selectedBsanId={sarModalBsanId} onTraceAddress={(addr) => { setSearchAddress(addr); setSelectedClusterAddress(addr); }} onNavigateToCase={(caseId) => { if (onNavigateToStatutory) onNavigateToStatutory(); }} />
); };