Construire des graphes de transactions · Leçon 3 sur 6
Mesures et motifs des graphes
9 min de lecture
Une fois que vous disposez d’un graphe de transactions, il vous faut des moyens de repérer ce qui compte sans examiner des milliers d’arêtes à la main. Les mesures de graphe résument le comportement de chaque nœud, et les formes récurrentes, telles que les chaînes de pelage, les éventails sortants et les cycles, indiquent des activités précises : versements, dispersion de fonds volés, stratification ou volume fictif. Cette leçon présente les mesures et les motifs les plus utilisés par les analystes, la manière de les calculer et les raisons pour lesquelles aucun ne constitue une preuve à lui seul.
Degré et flux de valeur
Les mesures les plus simples sont les nombres et les sommes par nœud, calculés sur une période fixe et pour un seul actif :
- Degré entrant : nombre de contreparties distinctes qui ont envoyé des fonds au nœud. Degré sortant : nombre de contreparties auxquelles il en a envoyé.
- Degré pondéré : valeur totale reçue et envoyée.
- Ratio de transit : valeur sortante ÷ valeur entrante sur la période. Un ratio proche de 1, associé à une durée de détention courte, caractérise une adresse intermédiaire qui retransmet ce qu’elle reçoit au lieu de le conserver.
- Durée d’activité et durée de détention : première et dernière activité, et délai entre la réception et l’envoi.
Ces mesures suffisent à distinguer de nombreux rôles. Un portefeuille personnel a un faible degré et conserve les fonds pendant des semaines. Une adresse de dépôt de plateforme d’échange reçoit quelques entrées de différents expéditeurs et envoie les fonds vers une seule destination, le portefeuille de balayage de la plateforme d’échange. Un portefeuille chaud présente des degrés entrants et sortants de plusieurs dizaines de milliers. Un intermédiaire de blanchiment a souvent un degré entrant de 1, un degré sortant de 2 à 20, un ratio de transit proche de 1 et une durée de détention de quelques minutes.
La requête ci-dessous établit ce profil pour un mois d’arêtes de la cryptomonnaie native, en utilisant la liste d’arêtes de la leçon Graphes de transactions : nœuds, arêtes et direction.
WITH io AS ( -- une ligne par côté de chaque arête
SELECT dst AS address, src AS peer, amount AS amt_in, 0 AS amt_out, block_timestamp AS ts
FROM edges WHERE asset = 'ETH'
UNION ALL
SELECT src, dst, 0, amount, block_timestamp
FROM edges WHERE asset = 'ETH'
)
SELECT address,
COUNT(DISTINCT CASE WHEN amt_in > 0 THEN peer END) AS in_degree,
COUNT(DISTINCT CASE WHEN amt_out > 0 THEN peer END) AS out_degree,
SUM(amt_in) AS value_in,
SUM(amt_out) AS value_out,
SUM(amt_out) / NULLIF(SUM(amt_in), 0) AS pass_through,
MIN(ts) AS first_seen, MAX(ts) AS last_seen
FROM io
WHERE ts >= TIMESTAMP '2026-03-01' AND ts < TIMESTAMP '2026-04-01'
GROUP BY address
HAVING COUNT(DISTINCT CASE WHEN amt_out > 0 THEN peer END) >= 20;
L’expression de table commune (CTE) transforme chaque arête en deux lignes, une pour le destinataire et une pour l’expéditeur, de sorte qu’un seul GROUP BY donne les deux directions. NULLIF évite une division par zéro pour les adresses qui ne font qu’envoyer des fonds. La clause HAVING conserve les nœuds présentant un éventail sortant important. Notez que le filtre temporel s’applique uniquement à l’activité de chaque nœud pendant la période : une adresse alimentée en février affichera en mars un ratio de transit bien supérieur à 1.
Centralité
La centralité mesure l’importance d’un nœud dans la structure du graphe, et pas seulement son niveau d’activité.
| Mesure | Ce qu’elle mesure | Utilisation courante |
|---|---|---|
| Centralité de degré | Nombre de connexions directes | Repérer les carrefours et les services |
| Centralité d’intermédiarité | Fréquence à laquelle le nœud se trouve sur les plus courts chemins entre d’autres nœuds | Repérer les intermédiaires et les goulots d’étranglement qui relient des groupes autrement séparés |
| PageRank | Importance héritée de voisins importants | Classer les nœuds dans les grands graphes de flux |
Dans un sous-graphe d’investigation, une adresse dont l’intermédiarité est élevée, mais dont le degré est modeste, est souvent le nœud le plus intéressant : le collecteur vers lequel revient chaque chemin de dispersion, ou le seul pont entre un groupe lié à un vol et les plateformes d’échange où les fonds ont été convertis. Calculez la centralité sur un sous-graphe délimité, en traitant les services comme des points terminaux. Sur la chaîne entière, les plateformes d’échange et les contrats populaires dominent tous les classements et ne vous apprennent rien de nouveau. Les bibliothèques de graphes calculent directement ces mesures ; SQL seul permet de calculer le degré, mais pas l’intermédiarité.
Éventail entrant et éventail sortant
Un éventail sortant correspond à un nœud qui envoie des fonds à de nombreux destinataires en peu de temps ; un éventail entrant, à de nombreux nœuds qui envoient des fonds à un seul. Les deux sont courants : les plateformes d’échange regroupent les retraits (éventail sortant) et balayent les adresses de dépôt (éventail entrant), les pools de minage versent des récompenses et les projets distribuent des airdrops. Pour le traçage, les questions sont de savoir qui sont les parties et ce qui se passe ensuite :
- Dispersion : une adresse liée à un vol envoie des fonds à des dizaines d’adresses nouvelles de montants similaires, chacune sans historique antérieur. La similitude des montants et la nouveauté des destinataires distinguent ce cas d’un paiement commercial.
- Collecte : de nombreuses victimes d’une escroquerie paient une seule adresse (éventail entrant), qui retransmet ensuite le total.
- Consolidation : sur les chaînes UTXO, une transaction à éventail entrant qui dépense de nombreuses sorties à la fois constitue également un indice de regroupement (voir la leçon L’heuristique de propriété des entrées communes).
Chaînes de pelage
Une chaîne de pelage, décrite dans l’étude de 2013 « A Fistful of Bitcoins » par Meiklejohn et ses collègues, commence par un montant important sur une adresse. À chaque transaction, un petit paiement est « détaché » et le reste, plus important, est envoyé à une nouvelle adresse, qui répète le processus. Exemple de chaîne typique, avec des frais de 0,01 BTC par étape :
| Étape | Entrée | Montant détaché | Reste (monnaie rendue) |
|---|---|---|---|
| T1 | 50,00 | 1,20 → dépôt sur une plateforme d’échange | 48,79 |
| T2 | 48,79 | 0,80 → dépôt sur une plateforme d’échange | 47,98 |
| T3 | 47,98 | 2,50 → courtier OTC | 45,47 |
| T4 | 45,47 | 0,95 → dépôt sur une plateforme d’échange | 44,51 |
Signes caractéristiques : chaque transaction a une entrée et deux sorties ; l’une des sorties est beaucoup plus importante et est rapidement dépensée à nouveau, dans une transaction de même structure ; les transactions partagent le même type de script et les mêmes empreintes de portefeuille ; et les sauts se succèdent à quelques minutes ou à quelques blocs d’intervalle. Une étude de 2023 de Gong, Chow, Yiu et Ting (« Analyzing the Peeling Chain Patterns on the Bitcoin Blockchain ») a établi qu’environ 71 % des transactions des chaînes identifiées détachaient moins de 1 % de l’entrée, et qu’environ 79 % des chaînes avaient été créées en moins d’une journée.
Pour le traçage, l’idée essentielle est que le reste transporte la majeure partie de la valeur ; l’analyste suit donc la chaîne et consigne chaque montant détaché comme un point de conversion en espèces. Les chaînes de pelage ne sont pas intrinsèquement illicites : un portefeuille ordinaire qui paie une série de factures à partir d’un solde important produit la même forme, tout comme certains portefeuilles chauds de services qui règlent les retraits un par un.
Stratification et allers-retours
La stratification est l’étape du blanchiment d’argent qui consiste à faire passer des fonds par de nombreuses transactions afin de les éloigner de leur origine. Sur la chaîne, elle se manifeste par de longues chaînes d’adresses nouvelles à durée de vie courte, des sauts rapides (souvent automatisés, à quelques minutes d’intervalle), des scissions et des regroupements, des échanges entre actifs et des déplacements entre chaînes. Aucun saut n’est suspect à lui seul ; c’est leur combinaison qui l’est.
Les allers-retours correspondent à une valeur qui quitte un nœud et y revient, ou revient à un nœud contrôlé par la même partie, après être passée par d’autres nœuds. Dans un graphe, il s’agit d’un cycle. De courts cycles entre quelques adresses peuvent gonfler le volume de négociation apparent d’un jeton ou d’un NFT (transactions fictives), créer un faux historique de paiement ou faire transiter à nouveau les mêmes fonds par un service pour leur donner l’apparence de fonds nouveaux. La détection des cycles fonctionne mieux sur un graphe d’entités, car une partie qui renvoie des fonds vers une autre de ses propres adresses ne forme un cycle qu’après le regroupement.
Détection de motifs
Un motif est une petite forme de sous-graphe qui se répète plus souvent que le hasard ne le laisserait prévoir. Les analystes et les chercheurs en lutte contre le blanchiment d’argent utilisent un vocabulaire commun de motifs ; un jeu de données synthétiques largement utilisé pour entraîner des modèles de détection (Altman et ses collègues, NeurIPS 2023) en génère huit : éventail sortant, éventail entrant, collecte-dispersion, dispersion-collecte, cycle, biparti, pile et aléatoire.
- Dispersion-collecte : une source se divise vers plusieurs intermédiaires, qui retransmettent tous les fonds vers une seule destination. Les intermédiaires ajoutent des sauts sans modifier la propriété.
- Collecte-dispersion : de nombreuses sources convergent vers un nœud qui disperse ensuite le total, ce qui est typique d’une adresse de collecte dans une escroquerie.
- Pile : deux couches d’intermédiaires se succèdent, chacune étant entièrement connectée à la suivante.
Les recherches de motifs sont généralement écrites sous forme de requête de motif dans une base de données de graphes ou d’une série de jointures réflexives sur la liste d’arêtes, avec des contraintes temporelles (l’étape de collecte doit suivre celle de dispersion). Le paramètre le plus important est la fenêtre temporelle : une dispersion-collecte en moins d’une heure est un signal fort ; la même forme sur un an relève des activités commerciales courantes.
Des signaux, pas des conclusions
Chaque motif présenté dans cette leçon a des explications innocentes. Considérez chacun comme une raison d’approfondir l’examen, combinez plusieurs signaux indépendants avant de tirer une conclusion et consignez les seuils utilisés (seuils de degré, fenêtres temporelles, tolérances de montant), afin qu’un autre analyste puisse reproduire vos résultats et les remettre en question.
Points clés pour l’examen : degré entrant, degré sortant, degré pondéré, ratio de transit et durée de détention, et ce qu’ils révèlent sur les rôles des nœuds ; centralités de degré, d’intermédiarité et PageRank, et raisons de les calculer sur un sous-graphe délimité ; éventails entrants et sortants et leurs formes légitimes et illicites ; structure et signes caractéristiques d’une chaîne de pelage et raisons de suivre le reste ; stratification et allers-retours (cycles), et raisons pour lesquelles les cycles n’apparaissent souvent que dans un graphe d’entités ; vocabulaire des motifs, notamment dispersion-collecte et collecte-dispersion ; le fait que les motifs sont des signaux qui nécessitent des corroborations et des seuils documentés.