プロキシコントラクト(Proxy contract)
要点 呼び出しを別のロジックコントラクトに転送するコントラクト。トークンのアドレスを変えずに、後からコードを変更できます。
プロキシコントラクトは、ユーザーが利用するアドレスと保存データを保持しながら、実際の処理ロジックを持つ別のコントラクトへすべての呼び出しを転送するスマートコントラクトです。ユーザーは同じアドレスを使い続けられますが、その裏側のコードは新しいバージョンに差し替えられます。Ethereum、BNB Chain、Baseなどでは、本来なら変更できないコードのバグを修正するために、この仕組みが使われています。
技術的には、プロキシはdelegatecallを使います。プロキシ自身のストレージに対してロジックコントラクトのコードを実行するため、残高や設定はプロキシ側に残り、処理ルールは実装コントラクトから提供されます。単独のウォレット、マルチシグ、タイムロックなどの管理者アドレスには、プロキシの参照先を新しい実装に変更する権限があります。Transparent ProxyやUUPSといった方式ではアップグレード権限を管理する場所が異なりますが、基本的な考え方は同じです。
重要なのは、自分が読んだコードや監査済みのコードが、明日も動いているとは限らないことです。購入後のアップグレードで、ミント機能、ブラックリスト、隠された売却税が追加される可能性があります。アップグレード権限は通常、別のプロキシ管理者が持つため、トークンの所有権が放棄されていても安心とは限りません。正当なプロジェクトも数多くプロキシを使っているので、この仕組みだけで危険とは判断できません。大切なのは、誰がアップグレードを管理し、変更前にどれだけの予告期間があるかです。
ブロックエクスプローラーでプロキシとして表示されているかを確認し、実装アドレスと管理者を調べましょう。管理者が単独のウォレットかマルチシグか、アップグレードの適用までにタイムロックによる待機期間があるか、監査対象が古い実装ではなく現在の実装かを確認します。実装の変更履歴を見て、最近差し替えがなかったかも調べましょう。Solanaでは、アップグレード権限を持つアップグレード可能なプログラムがこれに相当し、その権限が破棄されていればコードは変更できません。




