You need to enable JavaScript to run this app.
Bankless Academy

トークン許可を管理する

望まないスマートコントラクトとのやり取りから、ウォレットを守ります。
レッスンを始める

重要ポイント

はじめに

DeFi では秘密鍵を含めて資産を自分で管理でき、これまでにない自由と権限が手に入ります。しかし大きな力には大きな責任が伴い、資産の安全と管理をすべて自分で引き受ける必要があります。

DeFi の利用者が知っておきたい詐欺には、大きく 4 つの種類があります。

  • シードフレーズの流出: 攻撃者はシードフレーズを聞き出そうと仕向けます。手に入れば資金へ自由に手を伸ばせるからです。シードフレーズを握られると、資金をすべて抜かれたうえ、追加で入金するたびに同じことが繰り返されます。残念ながらこの状況から回復する方法はなく、新しいシードフレーズでまったく別のウォレットを作り直すほかありません。

  • ETH の直接送金: 詐欺師は ETH の送金を「Security Update」のような関数の呼び出しに見せかけて隠すことがあります。この詐欺の古い版が使っていた生の署名方式は MetaMask から取り除かれました。今のフィッシングは、ごく普通に見える署名の要求を悪用し、ウォレットの表示を読まずに署名することを狙います。この詐欺にかかると資金は取り戻せませんが、ウォレット自体は他のトランザクションに引き続き安全に使えます。

  • NFT マーケットプレイスの出品: 偽の出品や、OpenSea のようなマーケットプレイスに与えた許可を悪用する不正なコントラクトに注意してください。詐欺師はオフチェーンのメッセージに署名させ、承認済みのNFTを売りに出させることがあります。このときトークンのトランザクションは一切発生しません。

  • トークン許可: 攻撃者は権限を操作し、最初に承認した額を超える資金へ手を伸ばそうとします。「承認」はトークンや NFT へのアクセスを与えるオンチェーンのトランザクションです。「パーミット」は同じアクセスを与えますが、ガス代のかからないオフチェーンの署名だけで済みます。Uniswap をはじめ今の取引アプリの多くがこの方式(Permit2)を使っています。パーミットの署名は使われるまでオンチェーンの承認としては現れず、有効期限を持つこともあります。Revoke.cash の「Signatures」の画面で確認して取り消せます。

    スマートコントラクトが広く使われるようになるにつれ、信頼できるコントラクトが秘密鍵を露出せずにトランザクションを実行できるよう、トークン許可が必要になりました。トークン許可があると、dApp はウォレットのトークンを代わりに動かせます。この便利さは効率を高める一方で、詐欺や不正アクセスという攻撃の入口にもなります。

この記事では「トークン許可」を取り上げ、権限の管理を助けるコミュニティ製のツールを紹介します。

トークン許可を理解し、管理し、安全に保つ

トークン許可とは、ウォレットのトークンを使えるようにあらかじめスマートコントラクトへ与えておく権限です。ウォレットから資産を直接動かすたびに個別の許可を求めずに済むため、取引を円滑にする重要な役割を果たします。しかし悪用されれば、油断している人にとって攻撃の入口になります。このリスクに備えるには、DeFi の利用者が慎重に振る舞い、セキュリティの動向を学び、トークン許可の実際の仕組みを理解しておくことが大切です。

第三者のコントラクトに権限を与えるとき、手順は 2 つに分かれます。

  1. ウォレットの接続:dApp にウォレットをつなぐと、ウォレットのアドレスを画面側に共有するだけで、残高や履歴が表示されるようになります。接続そのものではオンチェーンの権限は一切与えません。

  2. トークンの承認:その dApp で取引するには、指定したトークンを代わりに動かす権限をスマートコントラクトに承認します。実際の使用権限が生まれるのはこの手順です。

トークン許可を前もって管理しておけば、最初に指定した額を超えて引き出されることはありません。さいわい、DeFi の利用者が安心して使えるよう、コミュニティ製のツールが用意されています。

手順:Revoke.cash を使う

Revoke.cash は、さまざまな dApp に与えた許可の確認と監視ができるシンプルなサイトで、トークン許可を手軽に管理できます。この頼れるコミュニティのツールで資産を守り、ウォレットの主導権を取り戻す手順を見ていきましょう。

1. ウォレットを接続する

トークン許可の取り消しを始めるには、Revoke.cash を開き、右上の「Connect Wallet」(ウォレットを接続)をクリックします。あるいは、検索欄にウォレットの公開アドレスを直接入力しても構いません。読み込みが終わると、そのネットワークでのトークン承認の一覧が表示されます。

2. 許可を確認する

ウォレットを接続したら、今ある承認を確認できます。承認された使用者のアドレスをもとに、並べ替え、絞り込み、検索ができます。最近あやしい承認をした心当たりがあるなら、「新しい順」の並べ替えがとくに役立ちます。並べ替えと絞り込みを使って、与えたトークン許可の全体像をつかみましょう。許可はチェーンごとに与えられるので、ネットワークを切り替えて、使っているすべてのネットワークで同じ確認を繰り返してください。

3. 不要な許可を取り消す:

取り消したい承認が見つかったら、その横にある「Revoke」(取り消し)ボタンを押すだけです。今後もその承認が必要だけれどリスクは減らしたい場合は、承認額の横にある鉛筆のアイコンから金額を変更することもできます。

次のような場合は、トークン許可を取り消すか金額を調整しておくとよいでしょう。

  1. よく使う分散型取引所で、最近公開されたスマートコントラクトが攻撃を受け、脆弱性が生まれたとき。

    2023 年 4 月、人気のDEXである SushiSwap が同じような攻撃を受け、~350 万ドルが利用者から盗まれました。トークン許可を取り消していない利用者は、その後もリスクにさらされ続けました。

  2. 悪意あるガバナンス提案が複数のコントラクトを書き換え、利用者の資金を抜こうとしたとき。

    BNB チェーンのDeFiプロトコルである Atlantis Loans が複数のコントラクトを狙うガバナンス提案を実行し、250 万ドル超の資産が被害を受けました。承認額を管理していた利用者は、この提案でウォレットを空にされるリスクを抑えられました。

デリゲーションも忘れずに

Ethereum の Pectra アップグレード(2025 年 5 月)以降、見直すべき権限は許可だけではなくなりました。新しいウォレットの機能(EIP-7702)により、ウォレットは追加のコードに処理を委ねられます。トランザクションのまとめ実行のような便利さが得られる一方で、新たな手口も生まれました。悪意ある署名を一度しただけで「スイーパー」コードが仕込まれ、入金したものが即座に攻撃者へ転送されてしまうのです。シードフレーズが漏れていなくても起こります。2025 年に Wintermute の研究者が調べたところ、初期のウォレットのデリゲーションの 97% 超が同一のスイーパーコードを指していました。

Revoke.cash では「Delegations」のタブで有効なデリゲーションを確認できます。ただしデリゲーションは dApp ではなくウォレット自身が握っているため、不要なものはウォレットの中から取り消します。MetaMask ならアカウントの詳細を開き、通常のアカウントに戻します。スマートアカウントへの切り替えをした覚えがないのにデリゲーションが見つかったら、悪意あるものとみなしてください。


ウォレットの守りを固める時が来ました。エクスプローラーハンドブックのエントリー「トークン許可を管理する」を楽しんでいただけましたか。

旅先で手軽に読み返せる自分の一冊が欲しい方、Bankless Academy の今後の教材を支えたい方は、このエントリーの収集をお忘れなく。よい旅を、エクスプローラー。


FAQ

Revoke.cash はいつ使えばよいですか?

Revoke.cash は定期的に、とくに dApp をしばらく使っていない時期に、なかでも NFT マーケットプレイスについて使いましょう。承認を絞っておけば、ハッキングや不正利用、フィッシング詐欺で資金を失うリスクが下がります。承認を新しい順に並べれば、あやしいものを見つけてすぐ取り消し、被害の拡大を防げます。

ウォレットの接続を解除すれば、承認の悪用から守られますか?

dApp からウォレットの接続を解除しても、承認をはじめとする悪用から守られるわけではありません。すでに与えたトークンの承認はオンチェーンに保存されているため、接続を解除しても有効なままです。

トークン許可の悪用などのリスクは、どうすれば避けられますか?

トークン許可に先手を打つには、次のことを心がけましょう。

  • 信頼できる dApp にだけ許可を与える。

  • トークン許可を定期的に見直す。

  • 不要なものやあやしいものは取り消す。

  • 身に覚えのないウォレットのデリゲーションがないか確認する。

  • dApp のセキュリティに関する更新情報を追う。

Revoke.cash のブラウザ拡張のような外部ツールも検討してください。脅威に先回りする備えになります。この拡張は、危険かもしれないものに署名しようとしたときに警告を出し、フィッシング詐欺などの悪意ある行為から守ってくれます。

Revoke.cash で資金を取り戻せますか?

残念ながら、Revoke.cash は盗まれた資金を取り戻せません。承認の悪用の被害に遭う可能性を下げる、予防のためのツールです。とはいえ、資金を盗むのに使われた承認を取り消せば、それ以上の被害は防げます。

入金するたびにウォレットが空になるのはなぜですか?

ウォレットに「スイーパーボット」が仕掛けられているかもしれません。乗っ取られたウォレットを見張り、新しい入金があると気づく間もなく送り出してしまうプログラムです。原因のひとつはシードフレーズの流出です。その場合は承認を取り消しても意味がありません。そのウォレットは捨てて、新しく作り直しましょう。ただし、悪意あるウォレットのデリゲーションが原因である可能性も同じくらいあります。だまされて署名した結果、シードフレーズが漏れていなくてもスイーパーコードが仕込まれるのです。Revoke.cash の「Delegations」のタブを確認してください。身に覚えのないデリゲーションが見つかったら、ウォレットの中から取り消します(たとえば MetaMask のアカウントの詳細から)。デリゲーションがないのに資金が抜かれ続けるなら、シードフレーズが漏れているとみなして新しいウォレットへ移りましょう。


著者

Marcus は ENS DAO ニュースレターを発行しています。プロトコル手数料から生まれる余剰収益で、アプリケーション層の開発や他のオープンソースの基盤をどう支えられるかを研究しています。

編集

Tetranome は Bankless Academy のプロジェクトチャンピオンで、ユーザー体験、インターフェース、デザイン、コンテンツを担当しています。

Trewkat は BanklessDAO のライター兼編集者です。暗号資産と NFT について学ぶことに関心があり、とくにその知識をどう伝えるのが最適かを考えています。

支援

この記事はスポンサーなしで、Bankless Academy の無料の学習コンテンツとして提供されています。記事を収集して、今後の教材を支えてください。