토큰 승인 취소, 지갑 연결 해제만으로 USDT가 안전해지지 않는 이유
페이지 정보
본문
토큰 승인 취소는 지갑 연결 해제와 같은 일이 아닙니다. 지갑에서 dapp 연결을 끊었는데도 USDT나 다른 토큰의 승인 목록에 예전 컨트랙트가 남아 있다면, 아직 정리되지 않은 것은 사이트 방문 기록이 아니라 토큰을 움직일 수 있는 별도 권한일 수 있습니다.
연결 해제와 승인 취소
지갑 연결 해제는 보통 특정 사이트가 내 지갑 주소와 잔고를 보는 통로를 끊는 일에 가깝습니다. 브라우저 지갑에서 연결된 사이트 목록을 지우면 그 사이트가 다시 지갑 정보를 요청해야 합니다.
하지만 ERC-20 토큰 승인, 흔히 allowance라고 부르는 권한은 조금 다릅니다. MetaMask의 토큰 승인 안내는 토큰 승인을 dapp이 지갑 안의 특정 토큰을 접근하고 이동할 수 있게 하는 권한으로 설명합니다. 한번 승인을 해 두면, 같은 dapp이 나중에 토큰을 쓸 때 매번 새 승인 화면을 띄우지 않아도 됩니다.
그래서 연결 해제를 했다고 해서 온체인 승인까지 자동으로 사라졌다고 보면 위험합니다. 사이트와의 연결은 끊겼어도, 예전에 허용한 토큰 spending cap이 블록체인에 남아 있을 수 있습니다.
allowance가 남는 자리
토큰 승인 목록에서 봐야 할 것은 세 가지입니다.
- 어떤 토큰을 허용했는지
- 어느 spender, 즉 어떤 컨트랙트가 쓸 수 있는지
- 허용 금액이 특정 금액인지, 사실상 무제한에 가까운지
예를 들어 USDT를 DEX에서 한 번 스왑하려고 승인을 눌렀는데, 승인 금액이 필요한 주문 금액보다 훨씬 크게 잡혀 있을 수 있습니다. 이 자체가 곧바로 돈이 빠져나갔다는 뜻은 아닙니다. 다만 그 spender가 유효하게 남아 있고, 그 컨트랙트가 악용되거나 내가 피싱 사이트에서 잘못된 상호작용을 하면 위험한 통로가 될 수 있다는 뜻입니다.
Etherscan Token Approval Checker는 주소별로 승인된 spender와 allowance를 확인하고 revoke할 수 있는 화면을 제공합니다. 이런 도구를 볼 때 핵심은 목록이 길다는 사실에 겁먹는 것이 아니라, 내가 아는 서비스인지, 오래된 권한인지, 금액이 과하게 열려 있는지를 나눠 보는 것입니다.
취소에도 가스비가 드는 이유
승인 취소는 지갑 앱의 알림을 지우는 일이 아닙니다. 기존 권한을 0으로 바꾸거나 더 낮은 한도로 다시 쓰는 온체인 거래에 가깝습니다. 그래서 네트워크에 따라 취소에도 가스비가 듭니다.
MetaMask의 승인 취소 안내도 smart contract allowance 취소는 온체인 작업이므로 각 취소마다 가스비가 필요하다고 설명합니다. 이 부분을 알면, 왜 지갑 연결 해제 버튼은 바로 눌리는데 승인 취소는 트랜잭션 확인과 수수료가 필요한지 이해하기 쉽습니다.
취소 수수료가 아깝다고 모든 권한을 방치하는 것도 좋지 않지만, 반대로 익숙한 서비스의 소액·최근 권한까지 무조건 한 번에 지우는 것도 답은 아닙니다. 자주 쓰는 dapp이라면 다음 사용 때 다시 승인해야 하고, 그때도 가스비가 다시 들 수 있습니다.
먼저 지울 권한
승인 목록을 정리할 때는 아래 순서로 보는 편이 현실적입니다.
- 모르는 spender이거나 이름이 낯선 컨트랙트
- 오래전에 한 번만 쓴 dapp의 권한
- 실제 사용 금액보다 훨씬 큰 무제한 승인
- 피싱 의심 사이트를 방문한 뒤 생긴 권한
- 더 이상 쓰지 않는 체인이나 토큰의 권한
이 순서는 투자 조언이 아니라 지갑 위생에 가깝습니다. 권한을 지운다고 이미 전송된 토큰이 돌아오는 것은 아니고, 피싱 피해를 되돌리는 기능도 아닙니다. 다만 앞으로 그 spender가 내 토큰을 움직일 수 있는 통로를 줄이는 효과는 있습니다.
이전 글에서 다룬 코인 지갑 서명 요청처럼, 지갑 보안은 전송 버튼만 조심해서 끝나지 않습니다. 서명, 승인, 연결, 권한 범위가 서로 다른 층위에 놓여 있습니다.
권한 범위를 보는 습관
토큰 승인 취소를 한 번 해 보면, 거래소 API 키를 만들 때 출금 권한 체크박스를 보는 것과 비슷한 감각이 생깁니다. 거래소 API 키 권한에서 읽어야 하는 것도 결국 “이 앱이 어디까지 할 수 있나”입니다.
자기수탁 지갑에서는 그 질문이 spender와 allowance로 바뀝니다. 토큰을 보내는 화면이 아니더라도, 어떤 컨트랙트에 얼마까지 허용했는지 보는 습관이 필요합니다. 특히 USDT나 USDC처럼 여러 dapp에서 자주 쓰는 토큰은 승인 목록이 쌓이기 쉽기 때문에 더 그렇습니다.
결국 토큰 승인 취소의 핵심은 모든 dapp을 의심하라는 말이 아닙니다. 지갑 연결 해제, 서명, 토큰 allowance가 서로 다른 권한이라는 점을 알고, 오래된 권한과 과한 권한을 주기적으로 확인하자는 뜻입니다. 돈이 빠져나간 뒤에 기록을 보는 것보다, 아직 남아 있는 권한을 먼저 읽는 쪽이 훨씬 덜 비쌉니다.
스테이블코인, 거래소 서비스, 지갑 전송, 예치 상품은 가격 괴리, 출금 지연, 체인 선택 오류, 정책 변경 같은 위험이 있을 수 있습니다. 이 글은 정보 제공용이며 특정 자산 매수, 예치, 전송을 권유하지 않습니다. 실제 실행 전에는 공식 공지와 본인 계정 조건을 다시 확인해야 합니다.