← Onglet Sanctions ← Hub

Cas pratique — cribler l'inventaire d'un VASP

Un registre de contreparties, un index daté, un CSV d'audit. Chaque chiffre est recalculé par le moteur : rien n'est saisi à la main.

source : OFAC/ONU·relevé du 12/10/2026 13:35 UTC·SHA-256 531f8b9694d3465e…

Ce que ce document est : un cas rejouable de criblage, avec sa piste d'audit (cas_pratique_vasp_audit.csv, 16 colonnes, une ligne par correspondance). Ce qu'il n'est pas : un avis juridique, ni une preuve de blanchiment. Une correspondance est un signal à vérifier ; un non-résultat ne blanchit personne.

Un VASP fictif, un index réel

Sahel Pay SARL est un prestataire de services sur actifs virtuels fictif (dépôt et retrait, Niamey et Abidjan). Chaque mois, le responsable conformité soumet son registre à l'index : les adresses qui ont reçu ou émis des fonds, et les noms déclarés au KYC. Le registre compte 12 entrées ; l'index de référence est le relevé OFAC SDN + liste consolidée ONU du 12/10/2026 13:35 UTC — 20 426 désignations, 43 282 noms et alias, 505 adresses publiées par les autorités.

Deux choses seulement sont réelles ici : les adresses désignées et l'index. Le VASP, ses dépôts et les deux adresses de test sont des constructions pédagogiques, marquées comme telles dans le fichier d'entrée. Un non-résultat sur une chaîne inventée ne prouve rien, ni dans un sens ni dans l'autre.

Les 12 valeurs soumises

#Valeur cribléeDétectéRôleLignesCorrespondances
13Lpoy53K625zVeE47ZasiG5jGkAxJ27kh1addressDepot recu le 2026-10-031
GARANTEX EUROPE OU entity OFAC/36025 · Address — exact · RUSSIA-EO14024, CYBER4 XBT
20x7FF9cFad3877F21d41Da833E2F775dB0569eE3D9addressMeme contrepartie, reseau Ethereum1
GARANTEX EUROPE OU entity OFAC/36025 · Address — exact · RUSSIA-EO14024, CYBER4 ETH
30xd882cfc20f52f2599d84b8e8d58c7fb62cfe344baddressReglement fournisseur2
KARASAVIDI, Dmitrii individual OFAC/29585 · Address — exact · CYBER2 ETH
KARASAVIDI, Dmitrii individual OFAC/29585 · Address — exact · CYBER2 ETC
412HQDsicffSBaYdJ6BhnE22sfjTESmmzKxaddressContrepartie SUEX OTC1
SUEX OTC, S.R.O. entity OFAC/33151 · Address — exact · CYBER2 XBT
53E7YbpXuhh3CWFks1jmvWoV8y5DvsfzE6naddressContrepartie CHATEX1
CHATEX entity OFAC/33854 · Address — exact · CYBER2 XBT
63K4rjdh8A5yi6LWvft2rbmyZvqEbPSSSX4addressContrepartie HYDRA MARKET1
HYDRA MARKET entity OFAC/36216 · Address — exact · CYBER2 XBT
70x5aF00dC0FFEE0000000000000000000000000000addressPortefeuille chaud (test)—aucune correspondance
81SaheLPayTestAddressNoWaLLetAbc12addressAdresse de retrait (test)—aucune correspondance
9GarantexnameNom a cribler1
GARANTEX EUROPE OU entity OFAC/36025 · Alias — exact · RUSSIA-EO14024, CYBER4
10Sahel Pay SARLnameNom a cribler8
NEGIN KISH INTERNATIONAL SAHEL AND FARASAHEL DEVELOPMENT entity OFAC/25882 · Name — partial (verify) · IRAN
NEGIN SAHEL ROYAL INVESTMENT COMPANY entity OFAC/25042 · Name — partial (verify) · SDGT, IFSR
OMRAN SAHEL entity OFAC/10493 · Name — partial (verify) · SDGT, NPWMD, IRGC
OMRAN SAHEL entity UN/110356 · Name — partial (verify) · Iran
RAH SAHEL entity UN/110348 · Name — partial (verify) · Iran
RAH SAHEL INSTITUTE entity OFAC/12058 · Name — partial (verify) · SDGT, NPWMD, IRGC
SAHEL CONSULTANT ENGINEERS entity OFAC/10494 · Name — partial (verify) · SDGT, NPWMD, IRGC
SAHEL CONSULTANT ENGINEERS entity UN/110342 · Name — partial (verify) · Iran
11TFwjPScaJRCbSWVAywE1S1WgaUnameAnnexe — TRON tronquee—aucune correspondance
121h939dom7i4wdlckygbxup3fs9cstnrzglnameAnnexe — hors base58—aucune correspondance

Bloc A : registre interne (6 contreparties réelles). Bloc B : chaînes de test sans portefeuille. Bloc C : noms. Bloc D : deux chaînes publiées que le filtre de format ne reconnaît pas comme des adresses — traitées au §5.3.

Ce que le moteur répond

12
Entrées criblées
8 adresses · 2 noms
8
Correspondances
16 lignes au total
5
Entités (bloc A)
dédoublonnées par (source, id)
4
Sans correspondance
dont 2 chaînes non reconnues (§5.3)

12 entrées criblées, 8 avec au moins une correspondance, 4 sans. Les six adresses de contreparties du bloc A ressortent toutes, sur 5 entités désignées distinctes. Le nom « Garantex » ressort en correspondance exacte d'alias. Les deux adresses de test ne ressortent pas — ce qui ne démontre rien. Les deux noms du bloc C produisent à eux seuls 9 lignes : c'est le piège du §5.2.

Le CSV d'audit _vpsdata/cas_pratique_vasp_audit.csv reprend le schéma de l'export de la page (16 colonnes), une ligne par correspondance, plus une ligne « NO MATCH » par entrée sans résultat.

Trois décisions, dans cet ordre

1. Geler et déclarer (bloc A)

Les 6 adresses de contreparties correspondent, sur 5 entités : Garantex Europe OU (deux actifs), Karasavidi Dmitrii, SUEX OTC, Chatex, Hydra Market. Gel des fonds, déclaration de soupçon à la CENTIF/ANIF, sans informer la contrepartie (tipping-off). La pièce conservée est le CSV avec son empreinte d'index : c'est elle qui rend le criblage opposable six mois plus tard.

2. Écarter les faux positifs de nom (bloc C)

« Sahel Pay SARL », le VASP lui-même, ressort en 8 correspondances partielles : toutes des entités iraniennes dont le nom contient « SAHEL ». Le score 1.0 mesure un recouvrement de tokens, pas une identité. Pas de gel, mais une ligne de registre qui dit pourquoi le signal a été écarté.

3. Ne rien conclure des non-résultats

Les adresses de test sont inventées ; et les deux chaînes de l'annexe sortent « rien trouvé » alors qu'elles sont dans l'index (§5.3). Un non-résultat n'est ni un blanchiment de conformité, ni une preuve d'absence.

Trois pièges que ce cas démontre

Une adresse, deux actifs

0xd882cfc20f52f2599d84b8e8d58c7fb62cfe344b est publiée sous ETH et ETC : deux lignes pour une seule entité. Compter les lignes n'est pas compter les entités.

Un mot commun, 8 « correspondances »

Le criblage partiel bascule sur un recouvrement de tokens dès qu'aucune similarité n'atteint 0.88 : un nom d'entreprise contenant un mot géographique courant remplit l'écran. La parade n'est pas de baisser le seuil, c'est de lire les identifiants et de consigner le rejet.

Deux chaînes publiées passent sous le filtre de format

Une adresse TRON incomplète et une chaîne hors alphabet base58 partent au criblage de noms : elles ne peuvent pas rencontrer une adresse. L'audit les retrouve par recherche exacte dans l'index — la parade, à défaut d'une correction à la source.

Chaîne cribléeDétectéeVerdictDans l'indexEntité(s)Pourquoi le filtre la rate
TFwjPScaJRCbSWVAywE1S1WgaUnameNO MATCHoui · TRXGARANTEX EUROPE OU (OFAC/36025)26 caracteres : chaine TRON tronquee (34 attendus), aucune famille d'adresse du moteur ne la reconnait
1h939dom7i4wdlckygbxup3fs9cstnrzglnameNO MATCHoui · XBTKHATIBI AGHADA, Ahmad (OFAC/38419); NIKAEEN RAVARI, Amir Hossein (OFAC/38420)34 caracteres dont un « l » minuscule : hors alphabet base58, donc non reconnue comme adresse

Une commande, trois artefacts

cd _vpsdata
python sanctions_screen.py --file cas_pratique_vasp_wallets.txt   # 12 criblés, 8 avec correspondance, code 2
python build_cas_pratique_vasp.py                                 # audit JSON/CSV + note + cette page
node   _test_page_cas.js                                          # vérifie cette page contre l'audit

Le code de sortie suit la convention de grep : 0 = aucune correspondance, 2 = au moins une. Il peut servir de verrou dans un script de conformité, à condition de traiter séparément les correspondances partielles de nom.

Côté interface, le même fichier se colle dans l'onglet Sanctions de blockchain_tracer.html, puis « Export results (CSV) ». La colonne index_fingerprint doit valoir 531f8b9694d3465e1e17fea4cc2f3ac2… de part et d'autre : c'est le seul contrôle qui prouve que la page et le CLI ont criblé le même index.

Ce que ce cas n'établit pas

Empreintes des fichiers sources

FichierOctetsSHA-256
OFAC_SDN5 727 33364be7a7991059f59a2ebb43bc5dcc7e2951e1e27cbed8cbe41b0231b3a161946
OFAC_ALT1 063 323ff6075fc9635c5034475fa49c0c2e0e03300e1c9375771d75f99c4d4bf799c1b
OFAC_ADD1 685 92626a6030ede37402ba759ce0a8eb9dc08381099a7447ff287b29b227c7826f9a0
UN_CONSOLIDATED2 186 4960687d6d9b6c631d81a6f02579594236912dd655c8bd0e1e25628b2b9babad546

Empreinte de l'index (sha256 des lignes key|sha256|bytes) : 531f8b9694d3465e1e17fea4cc2f3ac2abead9d40c2f87f1e38a0b49c7a54dc5
Empreinte du fichier d'adresses servi à la page : bccea8f88dd0ab5e407836a9c3ffd528b21a237a932243f409338d4bb034173b