ERC-20の承認メカニズムとは何か、その設計が無限承認を「デフォルト慣行」にする理由は?
ERC-20トークン標準にはapprove()関数があり、保有者が特定のアドレス(通常はスマートコントラクト)が代わりに一定量のトークンを動かすことを事前承認できます。ほとんどのDeFiのインターフェースはデフォルトでuint256の最大値を要求します——一度の承認で無制限に使えますが、そのトークンの将来の全残高を露出させるコストがあります。
承認の濫用に最もよくある攻撃シナリオは何か?
コントラクトの脆弱性ハック:承認したプロトコルがコードの脆弱性で侵害されて、攻撃者が承認を使ってすべての承認ユーザーのウォレットから大規模に資金を引き出します。フィッシングサイトの悪意ある承認:Uniswapを偽装した偽サイトでApproveを実行し、実際には悪意のあるコントラクトアドレスを承認することになります。廃棄されたプロトコル:長期間使用していない古いプロトコルを承認し、そのコントラクトが後に悪意ある行為者に取得・引き継がれます。
正確な承認と無限承認の実際の違いは何か、毎回正確な承認が必要か?
正確な承認(カスタム金額):コントラクトがこの操作に必要な正確な金額までしか動かせないよう承認します。コントラクトがハッキングされても損失の上限はその金額です。無限承認:一度の承認で繰り返し承認不要のスムーズなUX。実際のアドバイス:ほとんどのDeFiユーザーは毎回正確な承認を選ぶ必要はありませんが、規模の小さいプロトコルの使用時、大額のトークンを移動する時、初めて使用するプロトコルの時には強く推奨されます。
Revoke.cashなどのツールの安全性は?これらのツールを使うこと自体にリスクがあるか?
Revoke.cashはオープンソースで広く監査・使用されているツールです。主な機能はオンチェーンの承認記録を読み、approve(contract, 0)の取り消しトランザクションを送るのを助けることです——あなた自身のウォレット内で完全に署名される操作で、Revoke.cashのサーバーは秘密鍵を見ることができません。正しいrevoke.cashドメインを確認し、署名が必要な各トランザクションを検証することが重要です。
UniswapやAave、または他のDeFiプロトコルで最初の操作をするたびに、ほぼ確実に「Approve」というボタンをクリックしています。ほとんどの人はそれを必要なプロセスのステップとしてすばやく通過しますが、この小さな承認には多くの人が理解していないセキュリティリスクが隠れています:あなたはスマートコントラクトにアカウント内のすべてのトークンを永久に、無制限に動かす権限を与えてしまっているかもしれません。そしてその承認は積極的に取り消すまで永久に有効です。
ERC-20トークン標準の下で、あなたのトークンは自分のウォレットアドレスに存在し、誰も直接取ることができません。しかしDeFiプロトコル(Uniswapのスワップコントラクトなど)はあなたの代わりにウォレットから流動性プールにトークンを移動する必要があります。ほとんどのDeFiのUIはGasコストを削減するため、デフォルトで無制限承認(uint256の最大値 = 2¹⁵⁶ − 1)を要求します。
Uniswapを信頼しているからこの承認は問題ないと思うかもしれません。問題は:プロトコルのハッキングは現実のリスクです。コントラクトに無制限の承認を与えていて、そのコントラクトが後に攻撃者に制御されると、一度の操作であなたのすべてのトークン残高を転送できます。承認はあなたが操作を完了したり取引が成功したりしても自動的に消えません——積極的に取り消すまで永久です。
Revoke.cash:ウォレットを接続してすべての承認記録を自動的にリスト表示。Etherscan Token Approval Checker:アドレスを検索してToken Approvalsページで確認・取り消し。DeBank:承認管理機能付きの暗号資産ウォレット追跡ツール。
無限承認でなく正確な承認を優先、定期的に承認を確認・清理、承認前にコントラクトアドレスを確認することが重要です。
多くのDeFi操作の後、ほとんどの人は多数の履歴承認記録を積み上げており、多くが無制限金額です。これらのゾンビ承認はあなたの資金の潜在的な露出面で、秘密鍵が漏洩していなくても、コントラクトのハッキングで資金を失う可能性があります。今日Revoke.cashで5分間承認を整理することは、最もコストが低くて効果が高いDeFiセキュリティ衛生行為の一つです。