function Defense() { return (
01 · WHAT IT DOES

Behavior, not just
the address.

Most tools watch the chain — not the user. We score how the transaction was made: IP, geo, time, amount, velocity, the merchant's history. Account compromise and insider fraud get caught where on-chain analytics is silent.

); } function DefenseChainCard() { return (
L1 + L2 + L3

Rules, models, and human review — as one chain.

Deterministic rules catch the obvious. A behavioral model scores the context. A second model writes the rationale. Disagreement escalates to an analyst, not a coin flip.

L1
Rules
deterministic
L2
Model α
context
L3
Model β
rationale
Verdict
APPROVE / REVIEW / BLOCK
); } function DefenseDistributionCard() { // Bars expand to their target width once the card scrolls into view — // an IntersectionObserver replaces the legacy animateDistBars() hook. const ref = React.useRef(null); const [shown, setShown] = React.useState(false); React.useEffect(() => { if (!ref.current) return; const io = new IntersectionObserver((es) => { es.forEach((e) => { if (e.isIntersecting) setShown(true); }); }, { threshold: 0.3 }); io.observe(ref.current); return () => io.disconnect(); }, []); const bars = [ { tag: 'APPROVE', color: 'var(--approve)', bgTint: 'rgba(93,214,143,0.16)', pct: 86 }, { tag: 'REVIEW', color: 'var(--review)', bgTint: 'rgba(255,181,71,0.16)', pct: 11 }, { tag: 'BLOCK', color: 'var(--block)', bgTint: 'rgba(255,94,120,0.18)', pct: 3 }, ]; return (
DECISIONS

Approve, review, block — calibrated to your risk.

Thresholds you control. Distribution you can see at a glance, sliced by client and rule.

{bars.map((b) => (
{b.tag}
{b.pct}%
))}
); } function DefenseExplainCard() { return (
EXPLAIN

Every block has a reason — in plain English.

Compliance reads an audit trail. The operator reads a list of causes. No black box.

BLOCK · 92
Destination first seen 14 days ago on an unrelated tenant. IP matches a known datacenter pool. New device + high amount within 24h velocity window. Escalation recommended.
); }