Revoke.cash는 크립토 업계에서 문제가 발생한 후 사람들에게 이미 사용을 권장하는 도구입니다. 이 도구는 토큰 승인(token approval)을 관리합니다. 토큰 승인이란 사용자가 스왑, 스테이킹, NFT 판매를 할 때마다 DeFi 앱과 마켓플레이스에 부여하는 지속적인 접근 권한입니다. Revoke.cash는 MetaMask의 Smart Accounts Kit을 활용해 Auto-Revoking 기능을 만들었습니다. 이 기능은 사용자의 키를 보유하지 않으면서도 불필요한 승인을 자동으로 정리함으로써 한 단계 더 나아갑니다.
Revoke.cash, 대부분의 지갑이 드러내지 않는 문제를 해결하다
토큰 승인이란 DeFi 앱이 내 토큰을 이동할 수 있도록 부여하는 권한입니다. Uniswap이 스왑할 수 있도록 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의 시스템이 승인을 지속적으로 인덱싱하고 모니터링함 |
콜드 지갑 하나, 핫 지갑 둘, 단 하나의 좁은 권한
사용자는 Revoke.cash의 계정 설정 섹션에서 Auto-Revoking을 활성화합니다. 이 작업은 MetaMask를 통해 Revoke.cash가 관리하는 콜드 지갑에 토큰 승인 취소 권한을 요청합니다. 콜드 지갑은 해당 위임을 Revoke.cash의 auto-revoke 서버에서 실행되는 두 개의 핫 지갑으로 전달하도록 설정되어 있습니다.
이후 Revoke.cash의 시스템은 사용자가 설정한 auto-revoke 규칙(예: 오래된 승인이나 고위험으로 표시된 승인)에 따라 사용자의 토큰 승인을 인덱싱하고 모니터링합니다. 승인이 규칙과 일치하면, 핫 지갑 중 하나가 체인 내 두 위임(사용자→콜드 위임 및 콜드→핫 위임)을 모두 포함하는 트랜잭션을 전송하여 온체인에서 취소를 승인합니다.
중간에 콜드 지갑을 두는 이유: 핫 지갑이 탈취되더라도 콜드 지갑이 그 영향이 사용자에게 직접 미치는 것을 막아줍니다. 사용자의 원래 위임을 변경하지 않고도 콜드 지갑 뒤에서 핫 지갑을 자유롭게 추가하거나 제거할 수 있습니다.
핫 지갑을 하나가 아닌 둘로 나누는 이유: Revoke.cash는 auto-revoke를 두 가지 카테고리로 분류합니다. 일반 취소는 2년 전에 판매한 NFT에 남아 있는 OpenSea 승인처럼 평범한 정리 작업입니다. 긴급 취소는 속도가 중요한 활성 익스플로잇이나 새로운 위험에 의해 트리거됩니다. 각 카테고리를 전용 핫 지갑으로 처리하면 익스플로잇으로 촉발된 긴급 취소가 일상적인 정리 작업 대기열에 밀리는 일이 없습니다.
권한 자체는 MetaMask의 caveat enforcer에 의해 범위가 한정되어 취소 작업만 승인하며, 그 이상은 허용하지 않습니다. 이것이 자동화 시스템에 위임을 안전하게 맡길 수 있는 보장입니다.
스택
레이어 | 구성 요소 |
권한 | Advanced Permissions (ERC-7715) 토큰 승인 취소 권한 유형 |
위임 | 사용자 → 콜드 지갑 → 핫 지갑 두 개, MetaMask Delegation Framework |
실행 | 전용 핫 지갑 두 개: 일반 정리 및 긴급 위험 트리거 취소 |
모니터링 | Revoke.cash의 승인 인덱싱 및 규칙 매칭 엔진 |
승인 취소는 모든 사람이 해야 하지만 아무도 신경 쓰고 싶지 않은 중요한 보안 조치입니다. MetaMask의 Smart Accounts Kit으로 구동되는 자동 취소 기능을 제공함으로써, 사용자들이 수동으로 관리해야 하는 정신적 부담을 덜면서도 보호받을 수 있도록 돕고 있습니다.
— Rosco, Revoke.cash 창립자
빌더를 위한 Revoke.cash의 조언
위임 레이어를 직접 구축하지 마세요. Auto-Revoking에서 어렵고 새로운 부분은 주변 시스템이었습니다. 승인 인덱싱, 위험 규칙 매칭, 일반 실행과 긴급 실행의 라우팅이 그것입니다. MetaMask의 Smart Accounts Kit SDK가 권한 부여와 소비를 처리하도록 맡김으로써 그 작업을 중복으로 할 필요가 없었습니다.
실행 레이어를 사용자의 신뢰로부터 분리하세요. 사용자와 실제 트랜잭션을 실행하는 핫 지갑 사이에 콜드 지갑을 두면, 실행자가 탈취되더라도 그것이 사용자의 문제가 될 필요가 없습니다. 콜드 지갑 뒤의 지갑은 자유롭게 교체할 수 있습니다.
일반 작업과 긴급 작업을 분리하세요. 자동화가 일정에 따라 실행될 때, 모든 트리거가 동일하게 시간에 민감한 것은 아닙니다. 긴급도에 따라 실행 경로를 분리하면 느리고 일상적인 작업이 빠르고 중요한 작업을 지연시키는 일을 막을 수 있습니다.
자세한 내용은 다음을 참고하세요: