承認の威力とリスクを、現実的でよくある場面で理解しましょう。分散型取引所で、ウォレットのUSDCを別の通貨に交換したいとします。初回の操作で、インターフェースは2ステップを出します。まずapprove(承認)、次にswap(交換)。
approveをクリックすると、ウォレットが署名要求を出します。ここに核心が潜みます。多くのインターフェースは既定で無制限の限度額を要求します。気づかず署名すると、この取引所の契約にこう告げるようなものです。今後私のウォレットの全USDCを、もう聞かずに使ってよい。今は100ドルだけ交換したくても、承認したのは上限なしです。
普段は問題ありません。その契約が正規で安全である限り。しかしリスクは、この契約が後でバグを見つけられハッカーに破られると、署名したその無制限承認を使い、ウォレットの全USDCを一度に移せることです。秘密鍵は全く不要です。
正しい方法は、approve時に額を編集できるなら今回必要な量だけ承認する、または後で承認取消ツールでこの不要な無制限承認を取り消すことです。この小さな動作こそ、セキュリティのベテランと、ある日わけもなく枯渇させられる人を分ける鍵です。
図解
スクリーンショット歓迎。転載時は出典を明記してください。