Ce matin, j’ai lu le tweet de Justin. Je ne suis pas très intéressé par leur procès, mais il y a une phrase dans l’article de Justin qui a vraiment piqué ma curiosité : il semblerait que $USD1 pourrait exister une porte dérobée.

En fait, si on parle de gel des actifs, ce n’est pas seulement USD1 qui a cette fonctionnalité : les autres USDT et USDC l’ont aussi. Même si ce n’est pas assez décentralisé, cela peut être une bonne nouvelle pour l’écosystème crypto, très actif, de la “Black Forest”.

Du coup, j’ai très envie d’en savoir plus et j’ai fait une comparaison : j’ai mis côte à côte les smart contracts de USD1, USDT et USDC pour évaluer jusqu’où les émetteurs de ces trois stablecoins peuvent exercer une “gestion des risques” sur les avoirs des utilisateurs.

1. Les autorisations de l’USDC sont relativement les plus restrictives.

Circle peut ajouter une adresse à la liste noire. Une fois qu’elle y est ajoutée, cette adresse ne peut essentiellement plus envoyer ni recevoir d’USDC. En même temps, Circle peut également suspendre l’ensemble du contrat USDC.

mais à l’heure actuelle, le contrat USDC ne fournit pas de fonction administrateur permettant de transférer directement les USDC situés sur une adresse blacklistée, et il n’existe pas non plus un destroyBlackFunds permettant de détruire directement l’intégralité du solde d’une adresse blacklistée, comme c’est le cas pour l’USDT.

Cependant, USDC est un contrat extensible : Circle contrôle Proxy Admin, ce qui lui permet de remplacer de nouvelles implémentations de contrat. Ainsi, ce qui est dit ici concerne uniquement ce que la version actuelle peut faire, et ne signifie pas que Circle n’ajoutera jamais de nouvelles capacités d’autorisation.

2. Les autorisations de l’USDT vont encore plus loin.

En plus de pouvoir geler n’importe quelle adresse USDT en utilisant addBlackList, Tether dispose également d’un destroyBlackFunds extrêmement direct.

Une fois qu’une adresse est ajoutée à la liste noire, Tether peut appeler cette fonction pour remettre directement le solde USDT de cette adresse à zéro, tout en déduisant ce montant de l’offre totale de l’USDT.

Donc même si 10 millions d’USDT sont dans votre propre portefeuille froid et que la clé privée ne vous appartient qu’à vous, tant que Tether ajoute cette adresse à la liste noire, les USDT sur la chaîne peuvent encore être gelés, puis même être détruits.

3. Les autorisations de USD1 sont aussi un peu différentes.

USD1 dispose lui aussi d’autorisations d’administrateur, notamment geler, dégel, suspendre, émettre davantage et détruire, mais dans le contrat V2 actuellement en exécution, il y a en plus deux fonctions particulièrement sensibles : drain et reallocate. Et drain et reallocate peuvent, une fois une adresse gelée, transférer l’intégralité des USD1 de cette adresse vers une adresse contrôlée par l’administrateur.

reallocate permet de redistribuer directement les USD1 d’une adresse gelée vers une autre adresse.

Ainsi, si un portefeuille possède 10 millions d’USD1, les autorisations de l’administrateur ne se limitent pas à empêcher temporairement ces 10 millions de bouger. Elles permettent, une fois les conditions d’accès au contrat remplies, de transférer directement ces 10 millions d’USD1 depuis le portefeuille d’origine, ou de les redistribuer vers d’autres adresses.

En les regardant ensemble, on comprend à peu près que :

USDC : geler

USDT : geler + détruire

USD1 : geler + transférer + redistribuer

Bien sûr, ces trois sont des stablecoins centralisés : l’USDT et l’USDC n’ont jamais promis de résister à la censure. Donc le fait que USD1 dispose d’autorisations d’administrateur n’a, en soi, rien de particulièrement “spécial”.

La particularité de USD1, c’est qu’il offre une prise en charge très complète pour traiter ultérieurement les soldes utilisateurs déjà gelés. L’administrateur n’a pas besoin de la signature de l’utilisateur, ni d’obtenir la clé privée de l’utilisateur : il peut, au niveau du contrat intelligent, modifier l’attribution finale de ces USD1.

Pour le dire de la manière la plus dure : l’autorité maximale de USD1 permet de transférer les USD1 d’un compte vers le portefeuille du propriétaire ou celui d’autres personnes, sans nécessiter l’autorisation de l’utilisateur. Que ce soit un portefeuille froid ou un portefeuille multi-signature, vous ne pouvez rien faire pour l’empêcher.

Quant au “backdoor” dont parle Justin, je pense qu’il faut distinguer les choses.

Si le “backdoor” désigne un bout de code malveillant que les développeurs auraient caché et que personne ne connaît, il n’existe actuellement aucune preuve permettant d’affirmer que USD1 possède un tel backdoor. Les fonctions freeze, drain et reallocate peuvent toutes être vues dans le contrat public.

Mais si par backdoor tout le monde entend plutôt que l’argent est clairement stocké dans son propre portefeuille sur la chaîne, que la clé privée ne lui appartient qu’à lui, et que l’émetteur conserve malgré tout un ensemble d’autorisations spéciales d’administrateur permettant de geler, voire de redistribuer ces actifs : alors oui, USD1 dispose bien d’un mécanisme de ce type.

Bien sûr, le dire ainsi ne signifie pas que USD1 transfère arbitrairement les actifs des utilisateurs, ni qu’il cache volontairement quelque chose : le code fait partie du contrat lui-même, c’est une sorte de “transfert de fonds” qui n’est pas détaillé avec soin, mais qui existe bel et bien.

Et lors de mon enquête, j’ai découvert un problème encore plus crucial :

Le code source de USD1 affiché par le GitHub officiel de World Liberty n’est pas le code réellement exécuté par USD1 en ligne.

Le dépôt GitHub officiel de World Liberty ne montre pas de drain et de reallocate dans le code source de USD1, mais en pratique, le USD1 exécuté après la mise à niveau de StablecoinV2 en avril 2026 peut déjà effectuer drain et reallocate sur des soldes gelés, et possède donc ces deux autorisations. Ainsi, si certains ne regardent que le GitHub officiel, ils sous-estiment les pouvoirs de contrôle centralisé actuels de USD1.