토큰 승인과 취소: 지갑이 "합법적으로" 비워지는 이유
토큰 승인은 컨트랙트가 다시 묻지 않고 토큰을 옮길 수 있게 합니다. 필요한 만큼만 승인하고 서명을 확인하며 쓰지 않는 승인은 취소하세요.
핵심 답변: 토큰 승인은 스마트 컨트랙트가 나중에 다시 묻지 않고 지갑에서 특정 토큰을 옮길 수 있도록 허락하는 서명입니다. 많은 지갑 탈취는 시드 문구 유출이 아니라 피해자가 직접 서명한 승인이나 퍼밋 서명 때문에 일어납니다. 필요한 금액만 승인하고, 모든 서명 요청을 읽고, 더 이상 쓰지 않는 승인은 취소하세요.
토큰 승인이란 무엇인가요
이더리움과 비슷한 체인에서 USDC, USDT 같은 토큰은 ERC-20이라는 공통 규칙을 따릅니다. 스마트 컨트랙트는 블록체인 위에서 실행되는 프로그램입니다(스마트 컨트랙트란 참고). 탈중앙화 거래소(DEX)에서 스왑을 하면 DEX 컨트랙트가 지갑에서 토큰을 가져가야 합니다. 기본적으로는 그럴 권한이 없으므로 먼저 승인을 요청합니다.
EIP-20 표준(2026-11-01 확인)에 따르면 approve는 지정한 지출자(spender)가 승인 금액 한도 안에서 계정에서 "여러 번" 출금할 수 있게 합니다. 이 남은 권한을 허용량(allowance)이라고 부릅니다. 지출자는 나중에 transferFrom을 호출해 토큰을 옮깁니다. approve를 다시 호출하면 이전 허용량이 그대로 덮어써집니다.
핵심은 이것입니다. 허용량이 한 번 생기면 지출자는 더 이상 여러분의 서명이 필요 없습니다. 한도를 다 쓰거나 여러분이 바꾸기 전까지, 그 사이트에 다시 들어가지 않아도 계속 유효합니다.
"합법적인" 탈취는 이렇게 일어납니다
많은 디앱은 거래할 때마다 승인 비용을 내지 않도록 무제한 승인(토큰이 지원하는 가장 큰 수)을 기본으로 요청합니다. 편리하지만 다음과 같은 뜻이 됩니다.
- 승인한 컨트랙트가 나중에 해킹되거나 버그가 있으면, 공격자는 지금이든 몇 달 뒤든 그 토큰을 전부 옮길 수 있습니다. 나중에 입금한 금액도 포함됩니다.
- 피싱 사이트에서 악성 컨트랙트를 승인했다면 즉시 토큰을 가져갈 수 있습니다. 온체인에서는 정상적으로 허락된 전송처럼 보이기 때문에 "합법적"으로 느껴집니다.
초보자가 자주 놓치는 두 번째 경로도 있습니다. EIP-2612의 퍼밋(Permit)은 오프체인 메시지에 서명하는 것만으로 허용량을 설정합니다(2026-11-01 확인). 여러분은 트랜잭션도 보내지 않고 가스도 내지 않으며, 서명을 가진 누구나 그것을 온체인에 제출할 수 있습니다. 그래서 "서명"이라고만 적힌 팝업도 토큰을 넘겨줄 수 있습니다. 지출자, 금액, 마감 시간, 퍼밋이라는 말이 보이는 서명은 승인과 똑같이 다루세요.
제한 승인과 무제한 승인: 계산 예시
지갑에 2,000 USDC가 있고 DEX에서 500 USDC를 스왑한다고 가정해 보겠습니다.
| 선택 | 스왑 후 남은 허용량 | 나중에 DEX 컨트랙트가 공격당할 때 노출 범위 | 추가 비용 |
|---|---|---|---|
| 무제한 승인 | 사실상 무제한 | 이 지갑의 모든 USDC와 앞으로 넣을 금액 | 이후 없음 |
| 500만 정확히 승인 | 0 | 이 승인으로 인한 손실 없음 | 다음에 새 승인 필요(가스) |
| 정확히 승인 후 취소 | 0, 취소 기록 남음 | 없음 | 취소 트랜잭션 한 번(가스) |
| 가짜 사이트에서 퍼밋 서명 | 서명 내용대로 | 서명한 금액까지 즉시 | 토큰이 빠져나갈 때까지 없음 |
안전을 위한 비용은 승인할 때마다 내는 작은 네트워크 수수료뿐입니다. 이더리움 가스 계산기로 미리 추정할 수 있고, 수수료가 어떻게 정해지는지는 이더리움 가스비 강의에서 설명합니다.
단계별: 안전하게 승인하고 오래된 승인 정리하기
- 지갑을 연결하기 전에 진짜 사이트인지 확인합니다(즐겨찾기를 쓰고 광고나 메시지 링크는 누르지 않습니다). 확인 방법은 피싱 예방 강의에 있습니다.
- 승인 팝업이 뜨면 지출자 주소와 금액을 읽습니다. 대부분의 지갑은 금액을 수정할 수 있으니 지금 쓸 만큼으로 바꿉니다.
- 메시지 서명을 요청하면 퍼밋, 지출자, 금액, 마감 같은 항목이 있는지 봅니다. 지출 권한을 줄 생각이 없었다면 거절합니다.
- 거래가 끝나면 승인 점검 도구를 엽니다. 이더스캔의 토큰 승인 점검 도구(2026-11-01 확인)는 주소의 ERC-20, ERC-721(NFT), ERC-1155 승인을 보여 주고 취소 버튼을 제공합니다.
- 쓰지 않는 승인은 모두 취소합니다. 취소는 허용량을 0으로 바꾸는 온체인 트랜잭션이라 가스가 들므로, 확인 전에 지갑에서 수수료를 봅니다.
- 매달 한 번, 그리고 의심스러운 일이 있을 때마다 다시 점검합니다. 승인은 체인마다 따로 존재하므로 사용한 체인을 각각 확인합니다.
흔한 실수와 위험
- 사고 후에야 취소하기. 취소는 앞으로의 인출만 막을 뿐, 이미 빠져나간 토큰은 돌아오지 않습니다. 의심되면 빨리 움직이세요.
- 메시지로 받은 "취소 링크" 믿기. 가짜 취소 사이트 자체가 탈취 수법입니다. 이미 알고 있는 도구 주소를 직접 입력하세요.
- 실패하거나 거절되면 공짜라고 생각하기. 이더리움에서는 트랜잭션이 성공하든 실패하든 수수료를 냅니다(ethereum.org 기준, 2026-11-01 확인).
- 지갑 하나로 모든 일 하기. 장기 자산은 디앱에 연결하지 않는 지갑, 가능하면 하드웨어 지갑에 두고, 실험용으로는 소액 핫월렛을 따로 쓰세요. 나누는 방법은 셀프 커스터디 가이드에 있습니다.
- NFT 승인 무시하기. 컬렉션 전체 승인은 그 컬렉션의 모든 NFT를 컨트랙트에 맡기는 것과 같습니다.
자주 묻는 질문
승인을 취소하는 데 돈이 드나요?
네, 작은 네트워크 수수료가 듭니다. 취소는 블록체인에 0이라는 새 허용량을 기록하기 때문입니다. 보통 지키는 자산 가치보다 훨씬 저렴합니다.
시드 문구가 안전해도 해커가 제 승인을 쓸 수 있나요?
네. 승인은 시드 문구와 별개이며, 승인된 컨트랙트를 통제하는 쪽이 허용량 안에서 transferFrom을 호출할 수 있습니다.
승인은 저절로 만료되나요?
표준 ERC-20 승인은 저절로 만료되지 않습니다. 퍼밋 서명에는 마감 시간이 있지만 공격자는 보통 바로 제출합니다.
중앙화 거래소에서 거래할 때도 승인이 필요한가요?
아니요. 거래소 계정에서는 토큰 승인에 서명하지 않습니다. 그곳에서는 로그인과 출금 보안이 핵심이며 계정 보안 설정에서 다룹니다.
결론
승인은 디파이에 꼭 필요한 정상 절차이지만, 모든 허용량은 열려 있는 문입니다. 정확한 금액만 승인하고, 서명도 트랜잭션처럼 꼼꼼히 읽고, 쓰지 않는 승인은 취소하고, 저축 자산은 디앱 요청에 서명하지 않는 지갑에 두세요. 다음으로 블록 익스플로러 사용법에서 승인과 거래를 직접 확인하는 법을 배워 보세요.
교육용 자료이며 투자 조언이 아닙니다. 규칙 확인일 2026-11-01.