"Tax enforcement in crypto does not rely on breaking cryptography, but on reconstructing taxable behavior through data, entry/exit points, and risk-based analytics."
— Anthelme N'DRI · Crypto Tax Africa Conference 2026 · Fiat-Crypto Link Engine
Real Professional Tools — Market Context
Tool Price / year Used by Africa presence
Chainalysis Reactor$50,000+IRS, Europol, SARS, InterpolSouth Africa only
Elliptic Investigator$20,000+Barclays, Standard CharteredNone deployed
TRM Labs$30,000+US DOJ, KRA KenyaLimited
Crystal Blockchain$15,000+EU tax authoritiesNone
This System Public instance Tax administrations Open to any administration
What This Terminal Does
🏦
VASP Identification
Recognizes Binance, Yellow Card, Paxful hot wallets from public blockchain data and OSINT cluster databases.
🔗
Wallet Clustering
Links multiple addresses to the same beneficial entity via common-input ownership heuristics and on-chain patterns.
💱
Fiat Bridge Detection
Traces mobile money (Wave / Orange Money) on-ramps and GTBank / M-Pesa off-ramp patterns across the P2P layer.
⚡
Tax Event Classification
Auto-classifies CGT, income, P2P gap, acquisition and WHT events — mapped to model tax treaty framework.
Dossiers de travail — jeux de test, cliquez pour charger
🇨🇮
Kofi Asante
Abidjan, Côte d'Ivoire
Binance retail trader
⚠️ MEDIUM — 47/100
🇳🇬
Ngozi Babatunde
Lagos, Nigeria
P2P specialist, high volume
🔴 HIGH — 78/100
🇪🇹
Dawit Bekele
Addis Ababa, Ethiopia
BTC miner, large-scale
🚨 CRITICAL — 91/100
Trois dossiers de test construits sur des motifs on-chain réels (montants et identités anonymisés). Cliquez pour charger un dossier, ou saisissez n'importe quelle adresse dans l'onglet Trace.
Investigation Input
🧪
Embedded scenario mode — no blockchain call. The three working files (Kofi, Ngozi, Dawit) are fictional test sets: truncated addresses, simulated amounts and counterparties. The graph, risk profile and report are computed locally from this data. No address entered here is queried on-chain.
Wallet Address (scenario or manual entry)
Network
Hop Depth
Demo scenarios (fictional)
Terminal Output
// Ready. Enter address or select scenario to begin.
Wallet Details
— No trace yet —
Awaiting trace...
Balance
—
Total In
—
Total Out
—
Tx Count
—
Connected Entities
Run trace to identify connected entities.
Transaction Ledger
Hash Date From → To Amount Dir VASP Tax Event
No transactions loaded. Run a trace above.
Transaction Graph — Kofi Asante
8 nodes · 11 edges · 2-hop trace · Ethereum mainnet
Personal Wallet Exchange (CEX) On/Off Ramp (Fiat) Unknown / P2P Cold Wallet Unidentified Address
Graph interpretation: Node size is proportional to entity importance (exchange nodes are largest). Edge thickness scales with transaction volume. Dashed edges indicate unverified / P2P counterparties. Orange edges with ⚡ mark capital gains tax events. The "Highlight Tax Events" button animates pulsing rings around flagged nodes.
Profile Comparison
Kofi (Abidjan) Ngozi (Lagos) Dawit (Addis)
Risk Score 47 — MEDIUM 78 — HIGH 91 — CRITICAL
Volume $1,002 $45,000 $271,875
P2P ratio 43% 78% 0% (mining)
Declaration Unknown No No
Action Quarterly review Audit now Priority: $271K
Methodology
Risk scoring combines four weighted components:
Volume Risk (15%) — crypto volume vs declared income ratio.
Transaction Pattern (30%) — P2P proportion, frequency, cross-chain.
Exposure Risk (25%) — VASP KYC status, unidentified counterparties, mixer proximity.
Compliance Risk (30%) — declaration history, prior audits, jurisdiction gaps.

Model based on FATF VASP guidance + Africa Crypto Tax Framework draft (2025).


  
  
📨 VASP Data Request Template (click to expand) ▼

  
🛡️ UN / OFAC Sanctions Screening
Automated screening of wallets and counterparties against the UN Security Council Consolidated List (1267/1989 ISIL–Al-Qaida; 1988 Taliban; 1533 DRC; 2374 Mali; 2734 Sudan; 751 Somalia; 1970 Libya…) and the US OFAC SDN list (SDN + aliases + addresses published by OFAC in its remarks). Matching is exact, approximate (≥ 0.88) and partial on discriminating tokens — the same rules as the command-line screener _vpsdata/sanctions_screen.py.
Wallet address or entity name / alias
Type
Every example above was checked against the loaded index: the first five return a hit, the null address returns none. Tornado Cash and JNIM no longer appear under those labels in the published index (OFAC 2025 delisting / UN transliteration): quoting them as examples made the engine look broken.
🧾
On a HIT — immediate actions
Freeze the wallet/funds immediately · file an STR/SAR with your FIU (CENTIF, FIC, NFIU, FRC…) · do not notify the counterparty (tipping-off) · apply the UNSC obligation of immediate freezing without prior notice, and the US 50%-ownership rule context where relevant.
🔗
Sanctions ↔ crypto tracing
Cross-reference the screened wallet against the graph: one hop to a sanctioned mixer (Tornado Cash, Blender, Sinbad) raises the risk profile to CRITICAL and triggers a report — even without a direct list match.
📅
Freshness matters
Lists change weekly. Production mode must pull the OFAC SDN (sdn.csv) and UN Consolidated List on a schedule, hash the dataset, and keep an audit log of every screening query.
⚖️
Due process
A HIT is a trigger to verify, not a conviction. Names can collide (false positives) — always verify identifiers (date of birth, nationality, listing ID) before freezing. Document all decisions.
Indexed data — coverage (read from the generated index)
ListWhat it containsEntriesExamples from the index
Batch screening — one address or name per line (# = comment)
Provenance, freshness and replay
How to rebuild, hash and verify this index
cd _vpsdata
python build_sanctions_lists.py --drop-raw     # downloads the official files, hashes them (SHA-256)
python export_web_sanctions.py                 # writes data/sanctions_*.json + the index fingerprint
python sanctions_screen.py --file cas_pratique_vasp_wallets.txt # command-line screening, same rules as this page
python build_cas_pratique_vasp.py              # worked case: declared VASP wallet list -> audit trail
python build_note_afrique.py                   # note + CSV annex on the Africa-flagged entries
node   _test_sanctions_core.js                 # regression test of the shared matching engine
node   _test_page_sanctions.js                 # engine + page logic, real index and offline fallback
node   _test_page_browser.js                   # real Chromium: all tabs, screening, CSV exports
node   _test_page_cas.js                       # worked-case page checked against its audit JSON

# The index is fetched at runtime, so the folder must be served over HTTP.
# Opening the file directly (file://) blocks fetch(), and the tab falls back to the
# frozen August 2026 sample — labelled as such in the pill, the tab and the footer.
cd ..\conference_crypto_taxation\conference_site
python -m http.server 8000                     # then open http://localhost:8000/blockchain_tracer.html

# Official sources
#   OFAC SDN : https://sanctionslistservice.ofac.treas.gov/  (SDN + ALT + ADD files)
#   UNSC list: https://main.un.org/securitycouncil/en/content/un-sc-consolidated-list
#   EU FSF   : endpoint in error at build time — declared missing, never silently dropped