イーサリアム - ETH

スマートコントラクトの承認(Approve)は危険?取り消し方法も解説

本記事にはアフィリエイト広告(PR)を含む場合があります。

※本記事にはアフィリエイト広告(A8.net)を含みます。

結論から言うと、スマートコントラクトの承認(Approve)自体は、DEX(分散型取引所)やNFTマーケットを利用するために必要な正常な操作です。ただし、無制限の承認を放置したり、偽サイトで承認してしまったりすると、ウォレット内のトークンを抜き取られる原因になり得ます。

実際に、フィッシングサイトへ誘導して不正なApproveをさせ、後から資産を送金させる手口は、仮想通貨における代表的な詐欺の一つとされています。危険なのはApproveという機能そのものではなく、「誰に・どこまでの権限を与えたか」を把握しないまま使い続けることです。

本記事では、Approveの仕組みと危険になるケース、revoke.cash(リボークキャッシュ)などを使った取り消し手順、日頃からできる予防策を解説します。

鍵の管理と、通信経路の保護は別の話です

VPNは秘密鍵やシードフレーズを守るものではありません。守れるのは通信経路のほうで、カフェや空港の公衆Wi-Fiで取引所にログインするとき、同じ回線にいる第三者や接続元のネットワーク管理者に通信内容を見られるのを防ぐ用途です。ハードウェアウォレットとは守る対象が違うので、どちらかで代替はできません。30日間の返金保証があるため、実際の速度を試してから判断できます。

通信経路を保護する方法を見る →PR・NordVPN(Nord Security)。料金・返金条件・対応機能は変更されることがあるため、最新の内容は公式サイトでご確認ください。

承認(Approve)とは何か

ERC-20などのトークン規格では、DEXなどのスマートコントラクトがあなたのトークンを動かすためには、事前にあなた自身の許可が必要です。この「私のトークンを◯◯枚まで動かしてよい」という許可を与える操作がApprove(承認)です。

たとえばDEXでトークンを交換する際、初回に「このコントラクトにあなたのトークンを動かす権限を与えますか」という確認がウォレットに表示されます。これに署名して初めて交換ができるようになります。仕組み自体はDeFiに不可欠なもので、詳しい背景はDeFi・Web3カテゴリでも解説しています。

無制限承認(Unlimited Approve)とは

承認のたびにガス代(手数料)がかかるため、多くのサービスは事実上無制限の上限額で承認を求めるのが一般的です。毎回の承認が不要になり便利な一方、一度与えた権限は自分で取り消すまで残り続ける点に注意が必要です。

鍵の管理は、一度まとめて学んでおくと迷わなくなります

秘密鍵やシードフレーズの扱いは、断片的に調べるより一度体系立てて学んだほうが判断に迷わなくなります。手口は変わり続けるので、発行年を確認してから選んでください。

Amazonで関連書籍を見る →PR・Amazonアソシエイト。価格や在庫は変動します。

Approveが危険になる3つのケース

1. 偽サイト・フィッシングでの承認

SNSの投稿や検索広告から偽のDEX・偽エアドロップサイトに誘導され、気づかずに悪意あるコントラクトへ承認してしまうケースです。承認後、攻撃者はいつでもあなたのトークンを送金できてしまいます。怪しいサイトの特徴は詐欺の見分け方で詳しく解説しています。

2. 承認先サービスの脆弱性・ハッキング

正規のサービスに承認した場合でも、後にそのコントラクトがハッキングされると、無制限承認が残っているユーザーの資産まで被害が拡大する恐れがあると指摘されています。

3. 使わなくなった古い承認の放置

過去に一度だけ使ったサービスへの承認は、自動では消えません。何年も前の承認が残ったままになっているウォレットは珍しくなく、把握していない権限が多いほどリスクは積み上がります。

承認状況の確認と取り消し(Revoke)の手順

与えた承認は「リボーク(取り消し)」できます。代表的なツールがrevoke.cashで、Etherscanの「Token Approvals」機能でも同様の確認・取り消しが可能です。ここではrevoke.cashを例に手順を紹介します。

  1. revoke.cashに直接アクセスする(偽サイト対策として、正しいURLをブックマークしておくことを推奨します)
  2. ウォレットを接続するか、自分のアドレスを入力して承認一覧を表示する
  3. 見覚えのない承認や、使わなくなったサービスへの承認、無制限になっている承認を確認する
  4. 取り消したい項目の「Revoke」ボタンを押し、ウォレットで取り消しトランザクションに署名する
  5. ガス代を支払い、承認一覧から消えたことを確認する

取り消しにも少額のガス代がかかり、金額はネットワークの混雑状況で変動します。また、承認はチェーンごと(Ethereum・BNB Chain・Polygonなど)に別管理のため、利用しているチェーンごとに確認しましょう。

被害を防ぐための予防策

  • 承認時に金額の上限を必要額に手動設定する(MetaMaskなどでは承認画面で上限を編集できます)
  • 四半期に一度など、定期的に承認一覧を見直してリボークする
  • DeFi操作用のウォレットと保管用のウォレットを分け、大口資産は承認操作に使わない
  • 署名を求められた内容を必ず読み、意味の分からない要求は拒否する

特にNFTで使われる「setApprovalForAll」は、1回の承認でそのコレクションの全NFTの移転権限を与える仕組みのため、承認先の確認がいっそう重要です。保管用資産の管理にはハードウェアウォレットの利用も選択肢になります。

不正なApproveをしてしまったときの対処

誤って怪しいコントラクトに承認してしまった場合は、できるだけ早くrevoke.cashなどで該当の承認を取り消してください。あわせて、対象トークンの残高を別のウォレットへ退避させると安全性が高まります。

なお、シードフレーズ(復元用の秘密の単語列)自体を入力してしまった場合は、承認の取り消しでは防げません。そのウォレットは放棄し、新しいウォレットを作成して資産を移すのが一般的な対処とされています。

よくある質問(FAQ)

Approveを取り消せば、盗まれたトークンは戻りますか?

すでに送金されてしまったトークンは、取り消しでは戻りません。リボークはあくまで「今後の流出を防ぐ」操作です。被害後の追跡は困難なため、事前の予防が最も重要とされています。

承認(Approve)とウォレット接続(Connect)は違うのですか?

異なります。Connectはサイトにアドレスや残高を見せる操作で、それ自体でトークンを動かす権限は与えません。一方Approveはトークンの移転権限を与える操作です。ただし接続後に表示される署名要求の内容には常に注意が必要です。

無制限承認は絶対に避けるべきですか?

一律に禁止すべきものではなく、ガス代の節約との引き換えととらえるのが現実的です。頻繁に使う信頼できるサービスに限って許容し、定期的な見直しとセットで運用するのが一般的な考え方です。

取り消しのガス代はどのくらいかかりますか?

ネットワークの混雑状況と対象チェーンによって変動するため、一概には言えません。実行前にウォレットに表示される見積もりを確認し、混雑時を避けると費用を抑えやすくなります。

免責事項:本記事は一般的な情報提供を目的としており、投資助言ではありません。最新の情報は公式情報をご確認ください。

この記事について

執筆・編集:Bitcoin Analyze 編集部

金融庁・国税庁および各事業者の公式資料にあたり、基準日と定義を固定したうえで記事を作成しています。価格予測や利益保証は扱いません。事業者の条件は変更されるため、最終的な判断は公式情報をご確認ください。

主な参照先

Bitcoin Analyze 編集部

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。

Amazonのアソシエイトとして、Bitcoin Analyzeは適格販売により収入を得ています。