今朝 Justin のこのツイートを読みました。彼らの訴訟にはあまり関心がありませんが、Justin の記事には私の興味を引いた一文がありました。それは、$USD1 にはバックドアがある可能性がある、というものです。

実は、資産を凍結することを指しているのであれば、USD1 だけでなく他の USDT と USDC も同様にこの機能を持っています。分散化は十分ではないものの、ブラックフォレストのように頻繁に動き回る暗号資産の世界にとっては、これは良いこととも言えます。

そこで私は興味を持ち、USD1、USDT、USDC のスマートコントラクトを並べて比較してみました。3 つのステーブルコインの発行体が、ユーザー資産に対してどの程度まで「リスク制御(風控)」できるのか、どこまで違うのかを確認したかったのです。

1. USDC の権限は比較的最も抑制的です。

Circle はあるアドレスをブラックリストに追加できます。ブラックリストに入れられると、そのアドレスは基本的にこれ以上 USDC を送受信できなくなります。同時に Circle は、USDC コントラクト全体を停止(pause)することもできます。

しかし現在の USDC コントラクトには、ブラックリストのあるアドレスにある USDC を直接別の場所へ送る管理者関数が提供されていませんし、USDT のようにブラックリストのアドレスにある残高を丸ごと直接破棄できる destroyBlackFunds もありません。

ただし USDC 自体はアップグレード可能なコントラクトで、Circle は Proxy Admin をコントロールして新しいコントラクト実装に差し替えられるため、ここで言っているのはあくまで現在のバージョンで何ができるかであり、Circle が将来これらの権限を追加できないという意味ではありません。

2. USDT 的権限はさらに一段と進んでいます。

Tether は addBlackList によって任意の USDT アドレスを凍結できるだけでなく、非常に直接的な destroyBlackFunds も用意しています。

あるアドレスがブラックリストに追加されると、Tether はこの関数を呼び出して、そのアドレスの USDT 残高を直接ゼロにし、同時に USDT の総発行量から差し引きます。

つまり、たとえ 1,000 万 USDT を自分のコールドウォレットに置いていても、秘密鍵はずっと自分だけが知っているとしても、Tether がそのアドレスをブラックリストに入れさえすれば、チェーン上の USDT は凍結可能で、その後には、さらには破棄(destroy)さえできます。

3. USD1 の権限は、さらに少し違います。

USD1 は同様に、凍結、解凍、一時停止、増発、そして破棄などの管理者権限を持っていますが、現在稼働している V2 コントラクトにはさらに 2 つの非常にセンシティブな機能があります。drain、reallocate、そして drain は、あるアドレスが凍結された後、そのアドレスにあるすべての USD1 を管理者が管理するアドレスへ移すことができます。

reallocate は、凍結されたアドレスにある USD1 を別のアドレスへ直接再配分できます。

したがって、あるウォレットに 1,000 万 USD1 があって、管理者の権限がこの 1,000 万を「いったん動かせないようにする」ことに留まっていないならば。契約上の権限条件を満たした後、1,000 万 USD1 を元のウォレットから直接別のアドレスへ送金したり、別のアドレスへ再配分したりすることもできます。

3 つを一緒に見てみると、大まかにはこうです:

USDC:凍結

USDT:凍結 + 破棄

USD1:凍結 + 持ち去り + 再配分

もちろん、この 3 つはいずれも中央集権型ステーブルコインです。USDT と USDC はこれまで検閲耐性を約束していないので、USD1 が管理者権限を持っていること自体は特に珍しいことではありません。

USD1 が比較的特殊なのは、すでに凍結されたユーザー残高に対して、非常に完全な後続処置機能が用意されていることです。管理者はユーザーの署名を必要とせず、ユーザーの秘密鍵を入手する必要もなく、スマートコントラクトのレイヤーでこの USD1 の最終帰属先を変更できます。

一番きつい言い方をすれば、USD1 の最高権限は、ユーザーの許可を経ることなく、口座内の USD1 を自分自身や他人のウォレットへ移せる、ということです。あなたがコールドウォレットでもマルチシグでも、それを止める方法はありません。

さて、Justin の言う「バックドア」については、区別する必要があると思います。

もし「バックドア」が、開発者がこっそりと誰も知らない悪意あるコードを隠し持っていることを指すのであれば、現時点では USD1 にそのようなバックドアが存在するという証拠はありません。freeze、drain、reallocate はすべて公開されたコントラクトで確認できます。

しかし、もし皆さんが言うバックドアが、資金が明らかに自分のオンチェーン・ウォレットに置かれていて、秘密鍵も自分しか持っていないのに、発行者が特別な管理者権限を保持しており、それによってこれらの資産を凍結し、さらには再配分できる、ということを指すのであれば。USD1 には確かにそうした仕組みがあります。

もちろん、このように言っても USD1 が無断でユーザー資産を勝手に移すことを意味しませんし、USD1 が故意に隠しているわけでもありません。なぜならコードは契約の中にそのまま存在する、細かくは説明されていないものの確かにある「資金移動」だからです。

さらに調査していて、もっと重要な問題も見つかりました。それは:

World Liberty の公式 GitHub が示している USD1 のソースは、現在のオンライン上の USD1 が実際に実行しているコードではありません。

World Liberty の公式 GitHub で公開されている USD1 のソースには drain と reallocate はありませんが、実際に稼働している USD1 は、2026 年 4 月の StablecoinV2 へのアップグレード後には、凍結残高に対して drain と reallocate を実行できるようになっています。つまり、公式 GitHub だけを見る人だと、USD1 の現在の中央集権的な管理権限を過小評価してしまうことになります。