This morning I read Justin’s tweet. I’m not very interested in their lawsuit, but there’s one sentence in Justin’s piece that really caught my attention. It says $USD1 there might be a backdoor.
Actually, if it’s referring to freezing assets, it’s not just USD1 that has this feature—USDT and USDC have it too. Although it’s not decentralized enough, it’s still a good thing for the often chaotic crypto circles like Black Forest.
So I became interested and did a comparison: I put the smart contracts for USD1, USDT, and USDC side by side to see how far the three stablecoin issuers can go in terms of “risk control” over users’ assets.

1. USDC’s permissions are relatively the most restrained.
Circle can add an address to the blacklist. Once an address is on the blacklist, it basically cannot send or receive USDC anymore. At the same time, Circle can also pause the entire USDC contract.
But so far, the USDC contract does not provide an admin function to transfer the USDC from a blacklisted address directly, and it also lacks a destroyBlackFunds that can directly destroy the entire balance of a blacklisted address like USDT does.
However, USDC itself is an upgradable contract. Circle controls the Proxy Admin, so it can replace with new contract implementations. Therefore, what’s being discussed here is only what the current version can do, and it does not mean Circle will never add these capabilities.
2. USDT’s permissions take one more step further.
In addition to being able to freeze any USDT address by calling addBlackList, Tether also has a very straightforward destroyBlackFunds.
After an address is added to the blacklist, Tether can call this function to set that address’s USDT balance to zero directly, while also deducting it from the total USDT supply.
So even if 10 million USDT are kept in your own cold wallet, the private key is always known only to you. As long as Tether pulls that address into the blacklist, the USDT on-chain can still be frozen, and then even destroyed later.
3. USD1’s permissions are a bit different.
USD1 also has administrator permissions such as freezing, unfreezing, pausing, minting, and destroying. But in the currently running V2 contract, there are two extremely sensitive functions: drain and reallocate. After an address is frozen, drain and reallocate can transfer all the USD1 in that address to an address controlled by the administrator.
Reallocate can directly redistribute the USD1 from a frozen address to another address.
So if a wallet has 10 million USD1, the administrator’s permissions are not limited to preventing those 10 million from being moved temporarily. Instead, once the contract’s permission conditions are met, they can directly transfer those 10 million USD1 out of the original wallet, or reallocate them to other addresses.
Putting the three together, it’s roughly:
USDC: freeze
USDT: freeze + destroy
USD1: freeze + transfer away + reallocate
Of course, all three are centralized stablecoins. USDT and USDC have never promised to resist censorship, so it’s not particularly special that USD1 has administrator permissions.
What’s relatively special about USD1 is that it provides very comprehensive follow-up disposal capabilities for already-frozen user balances. The administrator does not need the user’s signature, nor does it need to obtain the user’s private key. At the smart-contract layer, it can change the final ownership/recipient of that USD1.
To put it bluntly, USD1’s highest privileges allow transferring USD1 in an account to the administrator’s or someone else’s wallet without the user’s consent. Whether you use a cold wallet or a multisig wallet, there’s no way to stop it.
As for the “backdoor” Justin mentioned, I think we need to distinguish it.
If a “backdoor” refers to developers secretly hiding a piece of malicious code that nobody knows about, then so far there is no evidence that USD1 has such a backdoor. Freeze, drain, and reallocate can all be seen in the publicly available contracts.
But if the backdoor people are talking about is this: the money is clearly stored in their own on-chain wallet, and the private key is held only by them, yet the issuer still retains a set of special administrator privileges that can freeze and even reallocate those assets. Then USD1 does indeed have such a mechanism.
Of course, saying it like this does not mean USD1 will arbitrarily transfer users’ assets without cause, nor does it mean USD1 intentionally conceals anything. After all, the code is in the contract itself—essentially a kind of “fund transfer”—present but not explained in detail.
Also, when I investigated, I found an even more critical issue:
The USD1 source code shown by World Liberty’s official GitHub is not the code that the current on-chain USD1 actually executes.
World Liberty’s official GitHub currently does not show drain and reallocate in the USD1 source code, but in the USD1 actually running on-chain, after the StablecoinV2 upgrade in April 2026, it can already perform drain and reallocate on frozen balances. So if some people only look at the official GitHub, they will underestimate USD1’s current centralized control permissions.

