トークン承認とは、DEXなどのスマートコントラクトに対し、ウォレット内のトークンを指定範囲で移動できる権限を与える操作です。 承認はウォレット接続を解除しても残るため、利用前に対象コントラクトと上限額を確認し、不要になった権限はRevoke(承認解除)することが重要です。 特に初めて使うDEXでは、公式URL、ネットワーク、承認先アドレス、承認額の順に確認しましょう。
DEXのトークン承認とは
UniswapなどのDEXでERC-20トークンを交換するとき、DEXのルーターはユーザーのウォレットからトークンを勝手に取得できません。そこで、トークンコントラクトのapproveを使い、特定のspender(利用を許可するコントラクト)へ使用権限を与えます。
ERC-20には、承認を設定するapprove、現在の承認残高を確認するallowance、承認された範囲でトークンを移動するtransferFromが定義されています。例えばUSDCをUniswapで交換する場合、ユーザーがUSDCコントラクト上でUniswap側のspenderを承認し、その後のスワップでspenderがtransferFromを実行する、という流れです。
ここで重要なのは、「ウォレットを接続すること」と「トークンを承認すること」は別の操作だという点です。MetaMaskからUniswapとの接続を解除しても、オンチェーンに記録されたallowanceは消えません。権限をなくすには、承認額をゼロに変更するRevokeトランザクションが必要です。
また、ETHのようなチェーンのネイティブ資産は通常のERC-20承認を必要としません。一方、WETH、USDC、DAIなどのERC-20トークンをDEXやAaveなどのDeFiプロトコルへ預ける場合は、承認が必要になることがあります。
無制限承認のリスクと承認額の決め方
DEXの画面では、取引のたびに承認トランザクションを送らなくて済むよう、非常に大きな上限を設定する「無制限承認」が提示されることがあります。Uniswapのように継続利用するプロトコルでは操作回数を減らせる一方、承認先コントラクトに問題が生じた場合、ウォレットに後から入金した同じトークンまで影響範囲に入る可能性があります。
安全性を優先するなら、今回使う数量に近い上限を設定する「必要額のみの承認」が基本です。MetaMaskで承認確認画面が表示されたら、トークン名だけでなく、支出上限を編集できるか確認してください。少額を交換するだけなのに事実上無制限の権限を求められている場合は、そのまま署名せず、spenderと利用目的を再確認します。
ただし、必要額だけを承認すると、次回の取引時に再承認とネットワーク手数料が必要になることがあります。頻繁に使うUniswapと、初めて試す無名DEXを同じ基準で扱う必要はありません。実用上は、信頼性を確認できたプロトコルには用途に応じた上限を設定し、新規プロトコルや期間限定キャンペーンでは必要額だけを承認する方法が扱いやすいでしょう。
DEX利用前に確認するチェックポイント
最初に確認するのはURLです。検索広告、SNSの返信、DMに掲載されたリンクではなく、UniswapやAaveなど各プロジェクトの公式サイトや公式ドキュメントからアプリへ移動します。見た目を複製したフィッシングサイトでも、悪意あるspenderへの承認を要求できるためです。
次に、ウォレットが選択しているネットワークを確認します。Ethereum、Base、Optimism、Polygonなどでは承認状態が別々に管理されます。EthereumでRevokeしても、Base上で同じウォレットが与えた承認は解除されません。
承認画面では、次の項目を順番に確認します。
- 操作対象が意図したUSDC、DAI、WETHなどのトークンか
- spenderが公式DEXのルーターや承認管理コントラクトか
- 承認上限が取引予定額に対して過大ではないか
- 通常のオンチェーン承認か、PermitまたはPermit2の署名か
- ウォレットが表示する警告やシミュレーションに異常がないか
コントラクトアドレスは、DEXの公式ドキュメントとEtherscanなどのブロックエクスプローラーを照合します。「Uniswap Router」のような表示名だけで判断せず、チェーンとアドレスが一致しているかを見ることが重要です。
Permit・Permit2を使うDEXの注意点
ERC-20のapproveとは別に、署名によって承認情報を渡すPermit方式があります。Uniswapが開発したPermit2は、対応トークンを統一的に扱いやすくし、期限や数量を含む署名ベースの権限管理を可能にする仕組みです。Uniswapのほか、Permit2を統合したアプリでも利用されます。
署名は常に「無料で安全」という意味ではありません。ガス代の発生しない署名でも、内容によってはトークン移動につながる権限を与えます。ウォレットに署名要求が表示されたら、対象トークン、spender、数量、期限、利用チェーンを確認してください。意味の分からない署名を求めるサイトではキャンセルするのが妥当です。
Permit2を利用した履歴がある場合は、トークンからPermit2コントラクトへの基礎承認と、Permit2内で各アプリへ与えた権限を分けて考える必要があります。Revoke.cashなどの対応ツールで表示内容を確認し、不要なspender権限を整理します。単にUniswapのサイト接続を解除するだけでは、これらのオンチェーン権限は消えません。
Revoke.cashで承認を解除する手順
複数のEVMネットワークをまとめて確認したい場合は、Revoke.cashが実用的です。偽サイトを避けるため、URLがhttps://revoke.cash/であることを直接確認します。閲覧だけなら、検索欄へ公開ウォレットアドレスを入力して承認一覧を調べる方法もあります。
手順は次の通りです。
- Revoke.cashを開き、確認対象のウォレットアドレスを入力するかウォレットを接続する
- Ethereum、Base、Polygonなど調査するネットワークを選ぶ
- トークン、承認額、spender、承認時期を確認する
- 使っていないDEX、正体不明のspender、過大な承認を優先して選ぶ
- 「Revoke」を押し、ウォレットに表示された内容を確認してトランザクションを送信する
- 承認確定後にページを再読み込みし、allowanceが解除またはゼロになったことを確認する
ERC-20のRevokeは、一般に同じ承認機能を使ってallowanceをゼロへ変更するオンチェーン操作です。そのためネットワーク手数料が必要です。Revoke後もUniswapの流動性ポジションやAaveへの預け入れ資産そのものが自動的に引き出されるわけではありません。ただし、追加預け入れや次のスワップでは再承認が必要になる場合があります。
EtherscanとMetaMaskで解除する方法
Ethereumだけを確認する場合は、EtherscanのToken Approval Checkerも利用できます。ウォレットアドレスを入力すると、ERC-20だけでなくERC-721やERC-1155の承認も切り替えて確認できます。「Show all approvals」を有効にすると、現在ウォレットに保有していないトークンについて過去に与えた承認も調査できます。
解除する場合はウォレットを接続し、対象行の「Revoke」を選択してトランザクションを確認します。表示されたApproved Spenderと対象資産が、解除したい組み合わせと一致するか確認してください。BaseやPolygonなど別ネットワークの承認は、それぞれに対応するエクスプローラーまたはマルチチェーン対応ツールで確認します。
MetaMask Portfolioにもspending capの表示・解除機能があります。対象ネットワークへ切り替え、承認一覧から不要な権限を選び、Revokeトランザクションを送信します。どの方法でもオンチェーンで同じallowanceを更新するため、Revoke.cash、Etherscan、MetaMaskのすべてで重複して解除する必要はありません。解除後に別のツールでゼロになったことを照合すれば、確認手段として役立ちます。
なお、シードフレーズや秘密鍵が漏えいしている場合、Revokeだけではウォレットを安全に戻せません。攻撃者が自由に署名できる状態では、新しい承認や送金を実行される可能性があります。その場合は、承認漏れではなく鍵自体の侵害として扱い、安全な別ウォレットへの退避を検討します。
まとめ
DEXのトークン承認は、UniswapなどのスマートコントラクトがUSDCやDAIを取引に使用するための基本機能です。しかし、承認はサイトとの接続解除後も残り、明示的にRevokeするまで有効な場合があります。
利用前には公式URL、ネットワーク、トークン、spender、承認上限、Permit署名の内容を確認してください。初めて使うDEXでは必要額だけを承認し、利用後はRevoke.cash、Etherscan、MetaMask Portfolioのいずれかで不要な権限を解除します。複数チェーンを使っている場合は、チェーンごとに確認することも欠かせません。
Revokeは過去の承認リスクを減らす予防策であり、すでに盗まれた資産を回収する機能ではありません。定期的な承認整理に加え、公式サイトのブックマーク、ハードウェアウォレット、用途別ウォレットの分離を組み合わせることで、DEX利用時の被害範囲を抑えやすくなります。





