Revoke.cashは、何か問題が起きた後に使うよう業界全体がすでに推奨しているツールです。スワップ、ステーキング、NFTの売却のたびにDeFiアプリやマーケットプレイスに付与されるトークン承認(残存アクセス権)を管理します。Revoke.cashはMetaMaskのSmart Accounts Kitを活用してAuto-Revoking機能を開発しました。これは一歩進んで、ユーザーの秘密鍵を一切保持することなく、不要な承認を自動的にクリーンアップします。
Revoke.cashが解決する、ほとんどのウォレットが表面化しない問題
トークン承認とは、DeFiアプリがあなたのトークンを移動することを許可することです。UniswapがUSDCをスワップできるようにUSDCを承認したり、OpenSeaがPudgy Penguinをリスティングできるよう承認したりします。この許可は、使用が終わっても失効しません。ウォレット上に無期限に残り続け、休眠状態の承認はすべて、付与先のアプリが悪用された場合の潜在的なリスクとなります。
Revoke.cashは2019年10月、創設者のRoscoが自身の問題を解決するためのサイドプロジェクトとして始まりました。多くのDeFiアプリが密かにウォレットへの常時アクセス権を保持していることへの不安がきっかけでした。当時はそのアクセス権を確認・取り消す方法がなかったため、彼自身がそれを作りました。過去6年間で、Revoke.cashは200万人以上のユーザーにサービスを提供し、2,000万件以上のトークン承認の取り消しに使用されてきました。Auto-Revoking機能を導入した有料プランのPremiumとUltimateは2026年にリリースされました。
RoscoはAuto-Revoking のアイデアが生まれたのは、適切なアドバイスが常に手遅れになってから届くことに気づいたからだと言います。エクスプロイトが発生したり誰かが資金を失ったりするたびに、決まって「Revoke.cashに行って」というアドバイスが飛び交います。まさに後の祭りです。
予防こそがすべてです。定期的に承認をクリーンアップすることで、問題の発生を防ぐことができます。しかし、ほとんどの人にとって手動で継続的に行うのは現実的ではないため、Revoke.cashは基盤となる技術が実現可能になった時点で、自動化バージョンを構築しました。
課題:秘密鍵を保持せずにユーザーの代わりに行動する
業界全体として、ユーザーが非カストディアル方式で自分のウォレットを管理できるよう、実現に向けて懸命に取り組んでいます。セキュリティの観点から、ユーザーのシードフレーズをお預かりすることは選択肢にありません。
— Rosco、Revoke.cash創設者
自動リバランスやリミットオーダーなど一部のオンチェーンアクションには、ユーザーの代わりに実行する実用的な方法がすでに存在します。しかし、他者のトークン承認を取り消すことは、ERC-7710とERC-7715が登場するまで実現できませんでした。
MetaMaskのSmart Accounts KitとDelegation Frameworkは、カスタムインフラを構築する代わりに基盤として活用されました。SDKは問題の両面に対応しています。ユーザーが委任を付与するためのシンプルなUIと、それを利用するバックエンドです。これにより、Revoke.cashは自社のエンジニアリングリソースをより難しく新規性の高い部分、つまりAuto-Revoking周辺のシステム構築に集中させることができ、その下層にある委任レイヤーを再発明する必要がありませんでした。
Revoke.cashのフィードバックは、トークン承認取り消し専用のパーミッションタイプの形成に貢献しました。また、MetaMaskはRevoke.cashのホット・コールドウォレット委任設定の一部についても支援しました。
導入前 | Auto-Revoking + Delegation Framework導入後 |
エクスプロイトや損失が発生した後にのみ承認の取り消しを促される | スケジュールに従って事前に承認が取り消され、悪用される前に対処される |
承認のクリーンアップには、アプリごとに手動で実行することを覚えておく必要がある | ユーザーはMetaMaskで一度だけ一つの許可を付与するだけでよい |
秘密鍵を保持せずにユーザーの承認に対して行動する方法がない | スコープ限定のトークン承認取り消しパーミッションがその操作のみを承認する |
手動レビューは数千件の休眠承認には対応できない | Revoke.cashのシステムが継続的に承認をインデックス化・監視する |
コールドウォレット1つ、ホットウォレット2つ、単一の限定パーミッション
ユーザーはRevoke.cashのアカウント設定からAuto-Revoking を有効にします。この操作により、MetaMaskを通じてRevoke.cashが管理するコールドウォレットへのトークン承認取り消しパーミッションが要求されます。コールドウォレットは、それらの委任をRevoke.cashの自動取り消しサーバー上で動作する2つのホットウォレットに転送するよう設定されています。
その後、Revoke.cashのシステムはユーザーのトークン承認を設定された自動取り消しルール(古くなった承認や高リスクとしてフラグが立てられた承認など)と照合しながらインデックス化・監視します。承認がルールに一致すると、いずれかのホットウォレットが、チェーン内の両方の委任(ユーザーからコールドへの委任とコールドからホットへの委任)を含むトランザクションを送信し、オンチェーンでの取り消しを承認します。
中間にコールドウォレットを置く理由: ホットウォレットが侵害された場合でも、コールドウォレットがユーザーへの直接的な影響を防ぎます。ユーザーの元の委任を変更することなく、コールドウォレットの背後でホットウォレットを追加・削除できます。
ホットウォレットを1つではなく2つにする理由: Revoke.cashは自動取り消しを2つのカテゴリに分けています。ルーティン取り消しは通常のクリーンアップ(例:2年前に売却したNFTのOpenSea承認の残存)です。緊急取り消しはアクティブなエクスプロイトや新たなリスクによってトリガーされ、速度が重要です。各カテゴリを専用のホットウォレットで処理することで、緊急のエクスプロイト起因の取り消しが通常のメンテナンスの後ろで待たされることがなくなります。
パーミッション自体はMetaMaskのcaveat enforcerによってスコープが限定され、取り消しアクションのみを承認し、それ以上の操作は一切行いません。これが、自動化システムに委任を渡すことを安全にする保証です。
スタック構成
レイヤー | コンポーネント |
パーミッション | Advanced Permissions(ERC-7715)トークン承認取り消しパーミッションタイプ |
委任 | ユーザー → コールドウォレット → 2つのホットウォレット、MetaMask Delegation Framework |
実行 | 2つの専用ホットウォレット:ルーティンクリーンアップ用と緊急・リスク起因の取り消し用 |
監視 | Revoke.cashの承認インデックス化・ルールマッチングエンジン |
承認の取り消しは誰もが行う必要がある重要なセキュリティ対策ですが、誰も意識したくないものです。MetaMaskのSmart Accounts Kitを活用した自動取り消し機能を提供することで、ユーザーが手動管理の精神的負担を負うことなく、保護できるようになりました。
— Rosco、Revoke.cash創設者
Revoke.cashからビルダーへのアドバイス
委任レイヤーを自分で構築しないこと。 Auto-Revoking において難しく新規性の高い部分は、周辺システムでした。承認のインデックス化、リスクルールのマッチング、ルーティンと緊急の実行ルーティングです。MetaMaskのSmart Accounts Kit SDKにパーミッションの付与と利用を任せることで、その作業を重複させずに済みました。
実行レイヤーをユーザーの信頼から切り離すこと。 ユーザーと実際にトランザクションを実行するホットウォレットの間にコールドウォレットを置くことで、侵害された実行者がユーザーの問題になることを防ぎます。コールドウォレットの背後にあるウォレットは自由にローテーションできます。
ルーティンと緊急を分離すること。 自動化がスケジュールで動作する場合、すべてのトリガーが同じ緊急度を持つわけではありません。実行パスを緊急度で分けることで、遅いルーティンジョブが速く重要度の高いジョブを遅延させることを防ぎます。
詳細については、以下をご確認ください: