무제한 토큰 승인(approval)을 해 두면 사용 권한을 받은 쪽(spender)이 소유자(owner)의 ERC-20 토큰을 승인 한도(allowance) 안에서 transferFrom으로 옮길 수 있습니다. 무엇부터 취소할지는 지금 보유한 가치와 곧 들어올 자산, 권한을 받은 쪽이 공식 계약인지, 최근 침해나 업그레이드가 있었는지, 권한이 여러 체인에 남아 있는지를 함께 보고 정합니다. 가장 큰 금액만 보지 말고 의심스러운 상대와 쓰지 않는 오래된 권한부터 골라내야 합니다. 취소 거래를 보낼 주소와 체인도 따로 확인해야 합니다.
승인은 토큰별 위임 한도입니다
ERC-20의 approve는 소유자가 상대에게 정해진 수량만큼 쓸 수 있는 한도를 설정하는 표준 동작입니다. 상대는 그 뒤 transferFrom으로 토큰을 옮길 수 있습니다. 무제한에 가까운 큰 수를 승인하면 거래할 때마다 승인 비용을 낼 일은 줄지만, 계약이나 권한이 악용되면 현재와 미래 입금분이 함께 노출될 수 있습니다.
OpenZeppelin의 ERC-20 문서는 allowance, approve, transferFrom 인터페이스를 따로 설명합니다. 지갑을 탈중앙 앱에서 연결 해제해도 토큰 계약에 기록된 한도는 그대로 남습니다. 그래서 연결 목록과 승인 목록은 따로 관리해야 합니다.
무제한 승인은 지금 잔액만 내주는 버튼이 아니라, 같은 토큰의 이후 잔액에도 이어질 수 있는 사용 한도입니다.
JOBCOIN 해설

그림은 이 주제의 공통 개념을 단순화한 설명입니다. 아래 항목에서 이 글의 구체적인 조건과 예외를 함께 읽어보세요.
- 승인은 토큰별 위임 한도입니다
ERC-20의 approve는 소유자가 상대에게 정해진 수량만큼 쓸 수 있는 한도를 설정하는 표준 동작입니다.
- 위험도 점수는 네 축으로 매깁니다
첫째는 토큰의 현재 가치와 예정된 입금, 둘째는 상대 계약이 공식인지와 침해 여부, 셋째는 무제한이거나 큰 한도인지, 넷째는 마지막으로 쓴 시점입니다.
- 취소 거래도 정확한 체인에서 보냅니다
승인 한도는 토큰 계약과 체인마다 따로 있습니다.
설명을 위한 개념도 · 실제 가격·거래 내역·통계가 아닙니다.
위험도 점수는 네 축으로 매깁니다
첫째는 토큰의 현재 가치와 예정된 입금, 둘째는 상대 계약이 공식인지와 침해 여부, 셋째는 무제한이거나 큰 한도인지, 넷째는 마지막으로 쓴 시점입니다. 최근 해킹이 공지된 프로토콜의 계약이라면 금액이 작아도 먼저 처리합니다. 쓰지 않는 오래된 계약은 편의보다 공격받을 틈을 줄이는 쪽이 중요합니다.
같은 프로토콜 이름 아래에도 라우터가 여러 버전일 수 있고, 피싱 계약이 비슷한 이름표를 달고 있을 수도 있습니다. 상대 계약의 전체 주소를 프로젝트 공식 문서와 탐색기에서 확인하고, 프록시 계약이라면 현재 구현 계약과 업그레이드 이력도 살핍니다. 취소 사이트가 붙인 이름만 믿어서는 안 됩니다.
| 상황 | 우선도 | 이유 |
|---|---|---|
| 침해가 공지된 계약·무제한 | 최상 | 즉시 인출 위험 |
| 고가 토큰·쓰지 않는 계약 | 높음 | 노출 규모 큼 |
| 신뢰 계약·필요액 초과 | 중간 | 한도 축소 가능 |
| 잔액 0·향후 입금 예정 | 중간 | 미래 잔액 위험 |
| 필요 최소 한도·현재 사용 중 | 검토 | 업무 영향 고려 |
취소 거래도 정확한 체인에서 보냅니다
승인 한도는 토큰 계약과 체인마다 따로 있습니다. 이더리움에서 취소해도 아비트럼에 있는 같은 0x 주소의 권한은 남아 있을 수 있습니다. 소유자, 토큰 계약, 상대 계약, 현재 한도를 탐색기의 조회 기능이나 믿을 만한 도구로 확인한 뒤 한도를 0이나 필요한 값으로 바꿉니다.
취소에도 체인 기본 코인으로 내는 수수료가 들고, 실패한 거래도 수수료를 씁니다. 수수료가 모자란다고 아무 브리지나 낯선 무료 지급 사이트에 지갑을 연결하지 않습니다. 거래 시뮬레이션과 기기 화면에서 토큰·상대 계약·새 한도를 확인하고, 영수증 상태가 성공인지 봅니다.
- 쓰는 모든 체인의 승인을 조회합니다.
- 토큰·상대 계약·한도를 전체 주소로 기록합니다.
- 침해 공지와 공식 라우터 목록을 대조합니다.
- 가치·신뢰도·최근 사용으로 우선순위를 매깁니다.
- 취소 영수증과 새 한도를 다시 조회합니다.
NFT 운영자 권한과 서명 승인도 따로 봅니다
ERC-721·ERC-1155의 setApprovalForAll은 컬렉션 전체를 다룰 수 있는 운영자(operator) 권한이라, ERC-20 승인 목록만 보면 놓치기 쉽습니다. 서명 승인(permit)은 수수료 없이 만들어지므로 아직 체인에 제출되지 않았을 수도 있습니다. 사고에 대응할 때는 토큰 승인, NFT 운영자 권한, 체인 밖 서명을 나눠 확인합니다.
개인 키나 시드 문구가 노출됐다면 승인 취소만으로는 막을 수 없습니다. 공격자가 새 승인이나 직접 전송에 서명할 수 있으므로 깨끗한 새 시드로 만든 지갑에 자산을 옮깁니다. 권한 사고와 키 침해를 구분하지 못하면 같은 피해가 되풀이될 수 있습니다.
다음 승인부터 필요한 범위만 줍니다
앱이 정확한 금액과 무제한 가운데 고르게 해 준다면 얼마나 자주 쓰는지와 수수료를 따져 필요한 금액만 승인합니다. 자주 쓰는 프로토콜도 업그레이드나 라우터 교체가 있으니 끝없이 믿지 않습니다. 활동용 지갑과 보관용 지갑을 나누고, 보관 주소는 앱 연결을 최소한으로 줄입니다.
매달 또는 큰 거래 전에 승인 점검을 일정에 넣고, 프로토콜을 그만 쓰면 권한도 정리합니다. 취소 기록에는 체인, 토큰, 상대 계약, 거래 ID, 완료 블록을 남깁니다. 화면에서 항목이 사라졌다는 사실보다 계약에서 조회한 한도 값을 완료 증거로 삼습니다.
자주 묻는 질문
잔액이 0이면 무제한 승인을 그냥 둬도 되나요?
나중에 같은 토큰이 들어오면 노출될 수 있습니다. 상대 계약의 위험과 입금 계획을 따져 취소하세요.
지갑 연결 해제와 승인 취소는 같은가요?
아닙니다. 연결 해제는 세션을 끊는 일이고, 승인 취소는 토큰 계약의 한도를 바꾸는 온체인 거래입니다.
모든 승인을 한꺼번에 취소해야 하나요?
수수료와 업무 영향을 고려하되, 침해된 계약과 가치가 큰 자산의 권한부터 먼저 처리하세요.
더 깊이 읽기
본문에서 다룬 개념과 확인 절차를 다음 글에서 이어서 살펴보세요.



