Last Updated on 2026年2月8日 by Co-Founder/ Researcher
Web3の世界では、資産の管理権限が100%ユーザー自身に委ねられている。それは自由であると同時に、すべてのセキュリティ責任を負うことを意味する。特にDeFi(分散型金融)やNFTを利用する際、避けて通れないのが「Approve(承認)」という操作だ。
しかし、この「Approve」の仕組みを正しく理解していないために、ウォレットの資産を根こそぎ奪われる被害が後を絶たない。銀行のような「取引停止」ができないブロックチェーンの世界で、私たちはどう資産を守ればよいのだろうか。
本記事では、MetaMaskのApprove機能の仕組みから、そこに潜むリスク、そして実践すべき防衛策までを詳しく解説する。
目次
- Approveの技術的基盤
- なぜApproveが必要なのか
- 無制限承認のリスク
- 最新の詐欺手口
- MetaMaskの防衛機能:Spending Cap
- 定期メンテナンス:Revoke(リボーク)
- 実践的なセキュリティ習慣
- まとめ
この記事のポイント
- ApproveはERC-20トークン標準に基づく、スマートコントラクトへのトークン操作権限の委譲メカニズム
- MetaMaskの「Spending Cap(支出上限)」機能を活用することで、承認額を必要最小限に制限できる
- 無制限承認(Unlimited Approval)は利便性と引き換えに重大なセキュリティリスクを抱える
- Revoke.cashなどのツールを使った定期的な承認管理が資産保護の鍵となる
- フィッシング詐欺は正規のApprove機能を悪用する手口が主流化している
Approveの技術的基盤
MetaMaskを使ってDEX(Uniswapなど)でトークンを交換しようとすると、実際の交換(Swap)の前に「Approve」を求められる。これはERC-20トークン標準に組み込まれた基本的なセキュリティメカニズムだ。
Ethereumのトークン規格(ERC-20)では、セキュリティの観点から、所有者の明示的な許可なしに外部のプログラム(スマートコントラクト)がトークンを移動させることを禁じている。Approveは、この制限を前提としながら、DeFiアプリケーションがユーザーのトークンを操作できるようにするための仕組みだ。
技術的には、Approve操作はapprove(address spender, uint256 amount)という関数を呼び出す。この関数は、指定したアドレス(スマートコントラクト)に対して、指定した数量までのトークンを操作する権限を与える。一度承認されると、その権限はブロックチェーン上に記録され、ユーザーが明示的に取り消すまで有効であり続ける。
なぜApproveが必要なのか
DEXのようなアプリケーションは、ユーザーのウォレットから「Aトークン」を回収し、「Bトークン」を渡すという処理をプログラムで自動実行する必要がある。しかし、ERC-20の設計では、トークンの移動には所有者の署名が必須だ。
ここで登場するのがApproveだ。Approveは2つの異なる操作を可能にする:
Transfer(送金): ユーザーが自分の手で相手に渡す直接的な送金行為。所有者自身が実行する。
TransferFrom(委譲送金): 承認を受けた第三者(スマートコントラクト)が、所有者に代わってトークンを移動させる行為。Approveによって権限が与えられていることが前提。
DEXでのトークン交換では、このTransferFrom機能が不可欠だ。ユーザーが「1 ETHをUSDTに交換したい」という操作を行う際、DEXのスマートコントラクトは以下のプロセスを実行する:
- ユーザーから承認された範囲内で1 ETHを回収(TransferFrom)
- プール内のUSDTをユーザーに送信(Transfer)
このメカニズムにより、ユーザーは毎回手動で送金する必要がなく、ワンクリックで複雑な取引を完了できる。
無制限承認のリスク
多くのDeFiプロトコルやDappsは、ユーザー体験(UX)をスムーズにするために、デフォルトで「無制限のトークン承認」を求めてくる。
なぜ無制限なのか
毎回取引のたびにApproveを行うと、その都度ガス代(ネットワーク手数料)が発生し、手間もかかる。一度「無限」に許可しておけば、次回からはワンクリックで取引が可能になるため、この設定が業界のスタンダードとなっていた。
技術的には、無制限承認はapprove(spenderAddress, 2^256-1)のような形で、実質的に天文学的な数値を設定する。これは「115792089237316195423570985008687907853269984665640564039457」といった60桁以上の数字で、実用上は無限と同義だ。
致命的なセキュリティホール
しかし、これには重大なリスクがある。もしあなたが「信頼できるDEX」に無制限のApproveを与えていたとして、そのDEXのスマートコントラクト自体にバグが見つかったり、運営が悪意を持ってハッキングされたりした場合はどうなるだろうか。
攻撃者は、あなたのウォレットの秘密鍵を知らなくても、正規の手続きとして「承認された範囲(=無制限)」のトークンをすべてあなたのウォレットから引き出すことが可能だ。これが、シードフレーズを漏らしていないのに資産が盗まれる主要な原因の一つである。
最新の詐欺手口
2025年初頭現在、詐欺手法はより巧妙になっている。SNSやDiscordで「限定エアドロップ」「無料NFTミント」といった甘い言葉で誘導されたサイトで、ボタンを押した瞬間に悪意あるコントラクトへのApproveを実行させられるケースが急増している。
手口の実態
サイト上の見た目は「Claim(請求)」や「Connect Wallet」となっているが、裏側で実行されるトランザクションは「USDTを無制限に送金許可するApprove」になっている。ユーザーがMetaMaskのポップアップを確認せずに承認ボタンを押すと、数分後にはウォレット内のステーブルコインや主要なトークンがすべて消失する。
ブロックチェーンの取引は不可逆(Irreversible)だ。一度失った資産を取り戻す術はない。銀行のような取引停止機能や、クレジットカードのチャージバックは存在しない。
MetaMaskの防衛機能:Spending Cap
こうしたリスクに対抗するため、MetaMaskは2023年にユーザー自身が承認額をコントロールできる「Spending Cap(支出上限設定)」機能を実装した。
承認額を「必要な分だけ」に制限する
Approveのポップアップが表示された際、そこに表示されている数字(多くの場合、天文学的な数字になっている)をそのまま承認してはいけない。
MetaMaskの承認画面では、以下の選択肢が提供される:
Use default(デフォルトを使用): Dappが要求している金額(通常は無制限)をそのまま承認する。
Max(最大値): 現在ウォレットに保有している当該トークンの全量を上限として設定する。
Custom spending cap(カスタム支出上限): ユーザーが任意の金額を入力できる。
推奨される方法は、「Custom spending cap」を選択し、その時のスワップやステーキングに必要な最小限の枚数を入力することだ。例えば、100 USDTをETHに交換したい場合、承認額を「100」または「105」(スリッページを考慮)に設定する。
これにより、万が一相手が悪意を持っていたとしても、被害はその回に使用する予定だった金額のみに限定される。多少の手間とガス代は増えるが、全財産を失うリスクに比べれば許容できるコストだ。
定期メンテナンス:Revoke(リボーク)
Approveは、一度許可すると、あなたが明示的に取り消さない限りブロックチェーン上に永続的に残る。数年前に使ったマイナーなDeFiプロジェクトへの承認が、今もあなたのウォレットを危険に晒しているかもしれない。
Revokeの重要性
定期的に「自分がどのコントラクトにどれだけの権限を与えているか」を確認し、不要なものはリセットする必要がある。これを「Revoke(取り消し)」と呼ぶ。
推奨ツールと手順
Revoke.cash
世界で最も広く使われているApprove管理ツールだ。2019年にリリースされ、2025年初頭現在、100以上のブロックチェーンネットワークに対応している。ウォレットを接続すると、トークンごとに「誰に」「いくらの」許可を与えているかが一覧表示される。「Revoke」ボタンを押してトランザクションを通すことで、許可を取り消せる。
使い方は以下の通り:
- Revoke.cash(https://revoke.cash/)にアクセス
- ウォレットを接続、またはアドレスを入力
- ネットワークを選択(Ethereum、Base、Polygonなど)
- 承認リストが表示される
- 不要な承認の「Revoke」ボタンをクリック
- MetaMaskで取り消しトランザクションを承認(ガス代が必要)
Etherscan Token Approval Checker
イーサリアムのブロックチェーンエクスプローラー公式の機能だ。Etherscanの「More」メニューから「Token Approvals」を選択し、ウォレットアドレスを入力することで確認できる。データの正確性が高く、信頼できる。
「しばらく使わないDappsへの承認」や「金額が無制限になっている古い承認」は、今すぐRevokeすることをお勧めする。
実践的なセキュリティ習慣
Web3における資産保護は、以下の習慣を徹底することで大きく向上する:
承認前の確認
MetaMaskのポップアップが表示されたら、必ず以下を確認する:
- コントラクトアドレスが正規のものか
- 承認額が適切か(無制限になっていないか)
- 接続しているサイトのURLが正しいか
Spending Capの活用
取引ごとに必要最小限の金額のみを承認する。多少のガス代増加は、セキュリティコストとして受け入れる。
定期的なRevoke
月に1回程度、Revoke.cashで承認状況を確認し、不要な承認を取り消す習慣をつける。特に以下の承認は優先的に取り消すべきだ:
- 3ヶ月以上使用していないDappsへの承認
- 無制限(Unlimited)になっている承認
- 出所不明のコントラクトへの承認
ハードウェアウォレットの併用
高額な資産はハードウェアウォレット(Ledger、Trezorなど)で管理し、日常的な取引用ウォレットと分離する。ハードウェアウォレット自体はApprove攻撃から保護してくれないが、秘密鍵の盗難リスクは大幅に低減できる。
よくある質問
Q: Approveを取り消すにはガス代がかかりますか?
A: はい、Revokeはブロックチェーン上のトランザクションなので、ガス代が必要です。ただし、通常のトランザクションよりは低額です。ネットワークが空いている時間帯(日本時間の早朝など)を狙うと節約できます。
Q: ウォレットを切断すれば承認も取り消されますか?
A: いいえ、ウォレットをDappから切断しても、承認は取り消されません。承認はブロックチェーン上に記録されているため、明示的にRevokeトランザクションを実行する必要があります。
Q: すべての承認を無制限にしないほうがいいですか?
A: 頻繁に使用する信頼できるDapp(UniswapやAaveなど)については、利便性を優先して無制限承認を許容する選択肢もあります。ただし、その場合でも定期的に承認状況を確認し、サービスに問題が発生した際は即座にRevokeできる体制を整えておくべきです。
まとめ
Web3の本質的な価値は、第三者に依存せず、自分自身で価値を管理・移転できる「人間主権」にある。しかし、その主権を行使するためには、正しい知識と防衛策という「武装」が必要だ。
MetaMaskのApprove機能は、DeFiエコシステムを支える重要なメカニズムだが、同時に最大の攻撃ベクトルでもある。無制限承認の利便性と引き換えに、ユーザーは重大なセキュリティリスクを抱えることになる。
2025年初頭現在、MetaMaskのSpending Cap機能やRevoke.cashのようなツールにより、ユーザーは以前よりも簡単に承認を管理できるようになった。しかし、最終的に資産を守れるのは、ユーザー自身の知識と習慣だけだ。
銀行員がいないこの世界では、あなたを守れるのはあなた自身と、正しく設定されたプロトコルだけである。
安易にApproveボタンを押さない
Spending Cap(上限)を必ず設定する
定期的にRevoke.cashで点検する
この3つの習慣を徹底し、安全で自律的なWeb3ライフを送ろう。
参照ソース
- MetaMask Support – How to customize token approvals with a spending cap
https://support.metamask.io/configure/tokens/how-to-customize-token-approvals-with-a-spending-cap - MetaMask Support – How to manage spending caps in MetaMask Portfolio
https://support.metamask.io/manage-crypto/portfolio/spending-caps-portfolio - Revoke.cash – Token Approval管理ツール
https://revoke.cash/ - Revoke.cash – How to Revoke Token Approvals and Permissions
https://revoke.cash/learn/approvals/how-to-revoke-token-approvals - Ethereum Foundation – ERC-20 Token Standard
https://ethereum.org/en/developers/docs/standards/tokens/erc-20/ - Ethereum Foundation – Understand the ERC-20 token smart contract
https://ethereum.org/developers/tutorials/understand-the-erc-20-token-smart-contract/ - Ethereum Improvement Proposals – EIP-20: Token Standard
https://eips.ethereum.org/EIPS/eip-20 - Etherscan – Token Approval Checker
https://etherscan.io/tokenapprovalchecker - OpenZeppelin – ERC20 Documentation
https://docs.openzeppelin.com/contracts/2.x/api/token/erc20 - Speedrun Ethereum – ERC20 Approve Pattern Guide
https://speedrunethereum.com/guides/erc20-approve-pattern
関連記事
- 【2026年最新】仮想通貨詐欺から資産を守る鉄壁のガイド:巧妙な手口と5つの防衛策
- 【緊急】「もし盗まれたら?」被害直後に取るべき4つの即時アクション
- セルフカストディの真実:2026年に資産を守り抜く「自己主権」のリスク管理術
- 「秘密鍵」紛失の不可逆的事実——再発行不能な技術構造と、リスクを最小化する管理の論理
- 所有権を自分の手に。2026年版・Bitcoinを「真に所有」するためのセルフカストディ・ガイド

