Last Updated on 2026年3月11日 by Co-Founder/ Researcher
Web3の世界では、資産の管理権限が100%ユーザー自身に委ねられている。それは自由であると同時に、すべてのセキュリティ責任を負うことを意味します。特にDeFi(分散型金融)やNFTを利用する際、避けて通れないのが「Approve(承認)」という操作です。
本記事では、ERC-20標準とMetaMask公式ドキュメントに基づき、Approve機能の技術的仕組みから、セキュリティリスク、そして実践的な防衛策までを正確に解説します。
本記事の目的
私たちは特定のセキュリティツールを推奨しているわけではありません。しかし、もしあなたがWeb3で資産を扱うなら、Approveの技術的本質とリスクを正確に理解することが不可欠です。
本記事を通じて、あなた自身で最適なセキュリティ判断を下せるようになることを目指します。
目次
Approveとは何か:技術的基盤
📊 ERC-20標準における位置づけ
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
ERC-20トークン標準
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
基本機能:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
• transfer(): 直接送金
• approve(): 第三者に操作権限を付与
• transferFrom(): 承認された範囲で送金
Approveの役割:
スマートコントラクトに対して、
指定した数量までのトークンを
操作する権限を与える
※出典: Ethereum Foundation
"ERC-20 Token Standard"
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
🔍 技術的な仕組み
approve()関数の構造
approve(address spender, uint256 amount)
パラメータ:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
• spender:
承認先のアドレス(通常はスマートコントラクト)
• amount:
承認する数量
処理内容:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ブロックチェーン上に記録され、
ユーザーが明示的に取り消すまで
永続的に有効
※出典: OpenZeppelin ERC20 Documentation
⚙️ 関連する機能
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
Approve関連のメソッド
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
approve(spender, amount)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
基本的な承認関数
increaseAllowance(spender, addedValue)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
既存の承認額に追加
decreaseAllowance(spender, subtractedValue)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
既存の承認額から削減
allowance(owner, spender)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
現在の承認額を確認
※出典: Reddit "Question about
approving access to ERC-20 tokens"
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
なぜApproveが必要なのか
🔐 ERC-20のセキュリティ設計
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
トークン移転の2つの方法
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
transfer():
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
所有者自身が実行する直接送金
→ ユーザーの署名が必須
transferFrom():
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
承認を受けた第三者が実行
→ Approveによる事前承認が必須
なぜ2つの方法が必要か:
DeFi等のスマートコントラクトが
ユーザーの代わりにトークンを
操作できるようにするため
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
📱 DEXでの実際のフロー
Uniswapでのスワップ例
ステップ1: Approve(事前承認)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ユーザー → Uniswapコントラクト
「100 USDTまで操作していいよ」
ステップ2: Swap(交換実行)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Uniswapコントラクト:
1. transferFromでユーザーから100 USDT回収
2. transferでユーザーにETHを送信
重要:
Approveがないと、
スマートコントラクトは
ユーザーのトークンを移動できない
※出典: MetaMask Support
"What is a token approval?"
無制限承認のリスク
⚠️ 無制限承認とは
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
無制限承認の技術的実装
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
実装方法:
approve(spenderAddress, 2^256-1)
数値:
115792089237316195423570985008687907853...
(60桁以上の天文学的数字)
= 実質的に「無限」
なぜ無制限にするのか:
• 毎回のApproveでガス代が発生
• UX(ユーザー体験)をスムーズに
• 業界のスタンダード慣行
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
🚨 リスクの正確な理解
重要な修正点
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
よくある誤解の修正
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
❌ 誤解:
「秘密鍵を知らなくても盗まれる」
✅ 正確な理解:
「承認されたスマートコントラクトが
脆弱性を持つ、または悪意を持つ場合、
承認量の範囲内でトークンを移転可能」
重要:
秘密鍵自体が盗まれるわけではない
承認という「正規の権限」を
悪用されるリスク
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
📊 学術的裏付け
arXivの研究結果
研究論文:
"Penny Wise and Pound Foolish:
Quantifying the Risk of Unlimited
Approval of ERC20 Tokens on Ethereum"
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
主な知見:
• 無制限承認は明確なリスク
• 大量トークンが承認されていると
脆弱性やバグにより引き出される可能性
• ユーザーの理解不足が最大の要因
※出典: arXiv:2207.01790 (2022)
詐欺手口の実態
🎣 フィッシング攻撃のパターン
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
代表的な詐欺手口(実例ベース)
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
手口1: 偽エアドロップ
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
• SNS/Discordで誘導
• 「限定NFT」「無料トークン」
• サイト上では「Claim」表示
• 実際は悪意あるコントラクトへのApprove
手口2: 偽のDappサイト
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
• 正規サイトに酷似したURL
• MetaMaskポップアップは本物
• しかし承認先は攻撃者のコントラクト
手口3: increaseAllowanceの悪用
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
• 既存承認額に追加する形
• ユーザーが気づきにくい
※出典: Reddit実例報告
"Question about approving access
to ERC-20 tokens"
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
📈 被害の実態
報告されている事例:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ フィッシングサイトでのApprove被害
→ 多数報告(Reddit等で確認)
✅ ユーザーのポップアップ確認不足
→ 攻撃の主要成功要因
⚠️ 注意:
具体的な統計データは限定的
セキュリティ企業レポートでの
定量化が今後の課題
Spending Cap機能の活用
🛡️ MetaMaskの対策機能
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
Spending Cap(支出上限設定)
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
MetaMask実装(2023年~):
承認画面での選択肢:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. Use default
→ Dappが要求する金額
(通常は無制限)
2. Max
→ ウォレット保有量全量
3. Custom spending cap
→ ユーザーが任意の金額を入力
推奨:
「Custom spending cap」で
必要最小限の金額を設定
⚠️ 重要な条件:
• MetaMaskバージョンにより対応状況が異なる
• 全てのDappで必ず表示されるとは限らない
• 最新版への更新を推奨
※出典: MetaMask Support
"How to customize token approvals
with a spending cap"
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
💡 実践的な設定例
Uniswapでの100 USDTスワップ
推奨設定:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
承認額: 100 ~ 105 USDT
理由:
• 交換に必要な金額: 100 USDT
• スリッページ考慮: +5 USDT
• 万が一の被害を最小化
トレードオフ:
✅ セキュリティ向上
❌ 毎回のApproveでガス代増加
判断:
全財産を失うリスクに比べれば
許容できるコスト
Revoke(取り消し)の重要性
🔄 承認の永続性
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
Approveの特性
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
一度承認すると...
❌ ウォレット切断では解除されない
❌ 時間経過では無効化されない
❌ Dapp閉鎖でも残り続ける
✅ ユーザーが明示的に取り消すまで
ブロックチェーン上に永続
リスク:
数年前の承認が
今も資産を危険に晒している可能性
※出典: MetaMask Support
"What is a token approval?"
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
🛠️ Revokeツール
Revoke.cash
概要:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
• 2019年リリース
• 100以上のブロックチェーン対応
• 世界で最も広く使われる承認管理ツール
機能:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
• トークンごとの承認一覧表示
• 「誰に」「いくら」承認しているか確認
• ワンクリックでRevoke実行
URL: https://revoke.cash/
※出典: Revoke.cash公式
"How to Revoke Token Approvals"
Etherscan Token Approval Checker
特徴:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
• Ethereum公式ブロックエクスプローラー
• データの正確性が高い
• 信頼性が高い
アクセス方法:
Etherscan → More → Token Approvals
URL: https://etherscan.io/tokenapprovalchecker
📋 Revoke実施手順
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
Revoke実行の流れ
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
1. Revoke.cashにアクセス
↓
2. ウォレット接続 or アドレス入力
↓
3. ネットワーク選択
(Ethereum, Base, Polygon等)
↓
4. 承認リストが表示される
↓
5. 不要な承認の「Revoke」クリック
↓
6. MetaMaskで取り消しトランザクション承認
※ガス代が必要
優先的に取り消すべき承認:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ 3ヶ月以上使用していないDapps
✅ 無制限(Unlimited)になっている承認
✅ 出所不明のコントラクト
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
実践的なセキュリティ習慣
✅ 承認前の確認チェックリスト
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
MetaMaskポップアップ確認項目
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
□ コントラクトアドレスが正規か
→ Etherscanで確認
□ 承認額が適切か
→ 無制限になっていないか
□ 接続サイトのURLが正しいか
→ フィッシングサイトでないか
□ 本当にApproveが必要な操作か
→ 不審な「Claim」ボタンでないか
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
🔄 定期メンテナンス
推奨頻度:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
月1回: Revoke.cashで承認確認
実施内容:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 全ての承認リストを確認
2. 不要な承認をRevoke
3. 無制限承認の見直し
ガス代節約のコツ:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ネットワークが空いている時間帯
(日本時間の早朝等)を狙う
🏦 ウォレット分離戦略
推奨構成:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
保管用ウォレット(Cold):
• ハードウェアウォレット推奨
• 高額資産を保管
• 取引には使用しない
取引用ウォレット(Hot):
• MetaMask等のソフトウェアウォレット
• 日常的な取引に使用
• 必要最小限の資産のみ
効果:
万が一Approve攻撃を受けても
被害は取引用ウォレットに限定
よくある質問(FAQ)
Q1: Approveを取り消すにはガス代がかかる?
A: はい、ブロックチェーン上のトランザクションなのでガス代が必要です。
詳細:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Revokeの仕組み:
approve(spender, 0) を実行
→ 承認額を0に設定
ガス代:
通常のトランザクションより低額
ネットワーク状況により変動
節約方法:
ネットワークが空いている時間帯を狙う
Q2: ウォレットを切断すれば承認も取り消される?
A: いいえ、承認は取り消されません。
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
重要な理解
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
ウォレット切断:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
• インターフェース上の接続を切る
• ブロックチェーン上の承認には無関係
承認の記録:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
• ブロックチェーン上に永続的に記録
• 明示的なRevokeが必要
※出典: MetaMask Support
"What is a token approval?"
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
Q3: すべて無制限にしない方がいい?
A: リスクとリターンのバランスで判断してください。
信頼できるDapp(Uniswap, Aave等):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
利便性を優先して無制限承認も選択肢
ただし:
• 定期的に承認状況を確認
• サービスに問題発生時は即座にRevoke
• 大金を扱う場合は慎重に
新規・不明なDapp:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
必ず必要最小限の承認に制限
Q4: increaseAllowanceとは?
A: 既存の承認額に追加する関数です。
仕組み:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
現在の承認額: 100
increaseAllowance(50) 実行
→ 新しい承認額: 150
リスク:
既存承認がある場合、
気づかずに大量承認してしまう可能性
対策:
allowance()で現在の承認額を確認
※出典: Reddit "Question about
approving access to ERC-20 tokens"
Q5: Spending Capは必ず表示される?
A: MetaMaskバージョンにより異なります。
現状(2026年2月):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ MetaMask最新版では対応
⚠️ 古いバージョンでは非対応の可能性
⚠️ 一部のDappでは表示されない場合も
推奨:
• MetaMaskを最新版に更新
• 表示されない場合は手動でRevoke
※出典: MetaMask Support
"How to customize token approvals"
まとめ
🎯 Approveの本質
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
技術的定義(ERC-20標準)
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
Approve:
スマートコントラクトに対して、
指定した数量までのトークンを
操作する権限を付与する仕組み
必要性:
DeFi等でユーザーの代わりに
トークンを操作できるようにするため
リスク:
承認されたコントラクトが
脆弱性を持つ、または悪意を持つ場合、
承認量の範囲内でトークンを移転可能
※出典: Ethereum Foundation,
MetaMask Support, OpenZeppelin
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
💡 セキュリティの3原則
| 原則 | 内容 | 実装方法 |
|---|---|---|
| 1. 承認前確認 | ポップアップを必ず確認 | コントラクトアドレス、承認額、URL確認 |
| 2. 必要最小限 | Spending Cap活用 | Custom spending capで具体的数値設定 |
| 3. 定期メンテ | 月1回のRevoke | Revoke.cash / Etherscan利用 |
🔮 学術的裏付け
arXivの研究論文:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
"Penny Wise and Pound Foolish"
(arXiv:2207.01790)
主な知見:
• 無制限承認は明確なセキュリティリスク
• ユーザーの理解不足が最大の要因
• 技術的対策と教育の両面が必要
"End-user Comprehension of
Transfer Risks"
(arXiv:2407.11440)
主な知見:
• 一般ユーザーのリスク理解不足
• スマートコントラクトの複雑性
• UX改善の重要性
Crypto Verseからのメッセージ
私たちは特定のセキュリティツールを推奨していません。
しかし、もしあなたがWeb3で資産を扱うなら、Approveの技術的本質とリスクを正確に理解し、適切な対策を講じることが最も重要です。
理解すべき現実:
- Approveは正規のERC-20機能(悪ではない)
- リスクは承認先のコントラクトに依存
- 秘密鍵が盗まれるわけではなく、承認権限を悪用される
- 技術と習慣の両面での対策が必要
この現実を理解した上で、あなた自身が最適なセキュリティ判断を下せるようになることを目指します。
複雑なWeb3の世界を、もっとも信頼できる「地図」へ。
それがCrypto Verseの使命です。
参照ソース
公式ドキュメント・技術標準
- Ethereum Foundation: “ERC-20 Token Standard” https://ethereum.org/en/developers/docs/standards/tokens/erc-20/
- Ethereum Improvement Proposals: “EIP-20: Token Standard” https://eips.ethereum.org/EIPS/eip-20
- OpenZeppelin: “ERC20 Documentation” https://docs.openzeppelin.com/contracts/2.x/api/token/erc20
MetaMask公式
- MetaMask Support: “What is a token approval?” https://support.metamask.io/stay-safe/safety-in-web3/what-is-a-token-approval/
- 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
学術研究
- arXiv: “Penny Wise and Pound Foolish: Quantifying the Risk of Unlimited Approval of ERC20 Tokens on Ethereum” (arXiv:2207.01790, 2022) https://arxiv.org/abs/2207.01790
- arXiv: “End-user Comprehension of Transfer Risks in Smart Contracts” (arXiv:2407.11440, 2024) https://arxiv.org/abs/2407.11440
セキュリティツール
- 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
- Etherscan: “Token Approval Checker” https://etherscan.io/tokenapprovalchecker
コミュニティ・実例
- Reddit: “Question about approving access to ERC-20 tokens” https://www.reddit.com/r/ethereum/comments/10n82rd
- Speedrun Ethereum: “ERC20 Approve Pattern Guide” https://speedrunethereum.com/guides/erc20-approve-pattern
関連記事
- DAOとは何か?仕組み・実装・従来組織との違いを実践的に解説【2026年最新版】
- イーサリアムLayer2の選び方:2026年最新データで理解する最適なインフラ選択
- 暗号資産の守り方:ウォレット・秘密鍵・セキュリティ対策【2026年最新版】
免責事項
本記事は教育目的であり、特定のセキュリティツールの推奨や、絶対的な安全性の保証ではありません。
Approve機能はERC-20標準の正規機能であり、DeFiエコシステムに不可欠なメカニズムです。本記事はその技術的仕組みとリスクを正確に理解していただくことを目的としています。
セキュリティツール(Revoke.cash, Etherscan等)の利用は、ご自身の判断と責任において行ってください。これらのツールの使用により発生したいかなる損害についても、本記事およびCrypto Verseは責任を負いません。
Web3のセキュリティは日々進化しており、本記事で紹介した情報も将来変更される可能性があります。最新の情報は、MetaMask公式サポートおよび各プロジェクトの公式ドキュメントで確認してください。
暗号資産やDeFiの利用には、技術的リスク、市場リスク、規制リスクが伴います。十分なリサーチと専門家への相談の上で、ご自身の判断と責任において行動してください。
ご自身の判断と責任において、十分なリサーチの上で意思決定を行ってください。Crypto Verseは、複雑なWeb3の世界を理解するための「地図」を提供しますが、最終的な判断はあなた自身の責任です。
本記事に記載されている情報は2026年2月時点のものです。Web3技術とセキュリティ環境は急速に変化しており、最新の情報は各公式情報源で確認してください。

