You need to enable JavaScript to run this app.
Bankless Academy

토큰 허용량 관리하기

원하지 않는 스마트 컨트랙트 상호작용으로부터 지갑을 지켜요.
레슨 시작

핵심 요약

  • 토큰 허용량은 지갑에서 토큰을 꺼내 쓸 수 있도록 스마트 컨트랙트에 미리 준 권한이에요. 한번 주면 그다음부터는 따로 승인하지 않아도 돼요.

  • 권한이 걸려 있다는 사실을 모르고 있으면 악의적인 사람에게 악용될 수 있어요.

  • Revoke.cash 같은 도구로 토큰 허용량을 쉽게 확인하고 취소할 수 있어요.

들어가며

DeFi는 개인 키를 포함해 자산을 사용자가 직접 통제하게 해 줘요. 자기 자금에 대한 주권과 권한이 전에 없이 커지죠. 하지만 큰 힘에는 더 큰 책임이 따르고, 자산의 안전과 관리를 스스로 온전히 떠맡아야 해요.

DeFi 사용자가 알아 둘 흔한 사기는 네 가지예요:

  • 시드 구문 유출: 공격자는 사용자를 속여 시드 구문을 알아내려 해요. 손에 넣으면 자금에 마음대로 접근할 수 있죠. 공격자는 자금을 전부 빼가고, 그 지갑에 돈을 더 넣어도 계속 빼가요. 안타깝게도 되돌릴 방법은 없고, 새 시드 구문으로 완전히 새 지갑을 만드는 것이 유일한 해결책이에요.

  • ETH 직접 전송: 사기꾼은 ETH 전송을 “보안 업데이트” 같은 함수 호출로 위장해 숨기기도 해요. 예전 방식에 쓰이던 원시 서명 방법은 MetaMask에서 제거됐고, 요즘 피싱 키트는 대신 평범해 보이는 서명 요청을 악용해요. 지갑에 표시된 내용을 읽지 않고 서명하리라 기대하는 거죠. 여기에 당하면 자금은 되찾을 수 없지만, 그 지갑은 다른 트랜잭션에 계속 안전하게 쓸 수 있어요.

  • NFT 마켓플레이스 리스팅: 가짜 리스팅과, OpenSea 같은 마켓플레이스에 준 허용량을 노리는 악성 컨트랙트를 조심하세요. 사기꾼은 승인된 NFT를 판매 목록에 올리는 오프체인 메시지에 서명하게 만들 수 있어요. 이때 실제 토큰 트랜잭션은 일어나지 않아요.

  • 토큰 허용량: 공격자는 권한을 조작해 처음 승인한 것보다 많은 자금에 접근하기도 해요. “Approval”은 토큰이나 NFT에 접근 권한을 주는 온체인 트랜잭션이에요. “Permit”은 같은 권한을 주지만 가스가 들지 않는 오프체인 서명만 있으면 되죠. Uniswap을 비롯한 요즘 거래 앱 대부분이 이 방식(Permit2)을 써요. Permit 서명은 실제로 쓰이기 전까지 온체인 승인으로 보이지 않고, 만료일이 붙기도 해요. Revoke.cash의 “Signatures” 화면에서 확인하고 취소할 수 있어요.

    스마트 컨트랙트가 널리 쓰이면서, 개인 키를 드러내지 않고도 믿을 만한 컨트랙트가 트랜잭션을 실행하려면 토큰 허용량이 필요해졌어요. 토큰 허용량이 있으면 dApp이 지갑 속 토큰을 대신 자동으로 옮길 수 있죠. 이 편리함은 효율을 높여 주지만, 사기와 무단 접근이라는 공격 경로도 함께 열어 줘요.

이 글에서는 ‘토큰 허용량’을 다루고, 권한 관리를 돕는 커뮤니티 도구를 하나 소개할게요.

토큰 허용량: 이해하고, 관리하고, 안전하게 지키기

토큰 허용량은 지갑에서 토큰을 꺼내 쓸 수 있도록 스마트 컨트랙트에 미리 주는 권한이에요. 자산을 옮길 때마다 매번 따로 허락하지 않아도 트랜잭션이 진행되게 해 주는 중요한 장치죠. 하지만 잘못 쓰이면 방심한 사용자를 노리는 공격 경로가 돼요. 그래서 DeFi 사용자는 조심하고, 보안 흐름을 익히고, 토큰 허용량이 실제로 어떻게 작동하는지 이해해야 해요.

제3자 컨트랙트에 권한을 줄 때는 두 단계를 거쳐요:

  1. 지갑 연결: dApp에 지갑을 연결하면 지갑 주소를 프런트엔드에 알려 주는 것뿐이에요. 그래야 잔액과 활동을 보여 줄 수 있죠. 연결 자체는 온체인 권한을 전혀 주지 않아요.

  2. 토큰 승인: dApp과 거래하려면 그 스마트 컨트랙트가 특정 토큰을 대신 옮기도록 승인해야 해요. 실제 사용 권한이 넘어가는 단계가 바로 여기예요.

토큰 허용량을 미리 챙겨 관리하면, 어떤 컨트랙트도 처음 정한 금액보다 많이 가져가지 못하게 할 수 있어요. 다행히 DeFi 사용자가 안심할 수 있도록 만들어진 커뮤니티 도구가 있어요.

따라 하기: Revoke.cash 사용하기

Revoke.cash는 여러 dApp에 준 허용량을 확인하고 지켜볼 수 있는 간단한 웹사이트로, 토큰 허용량을 쉽게 관리하게 해 줘요. 이 든든한 커뮤니티 도구로 자산을 지키고 지갑의 통제권을 되찾는 방법을 따라가 볼게요.

1. 지갑 연결하기:

토큰 허용량 취소를 시작하려면 Revoke.cash에 접속해 오른쪽 위의 “Connect Wallet”(지갑 연결)을 누르세요. 아니면 검색창에 지갑의 공개 주소를 직접 입력해도 돼요. 불러오기가 끝나면 그 네트워크에 걸린 토큰 승인 목록이 모두 보여요.

2. 허용량 살펴보기:

지갑을 연결하면 이미 준 승인을 살펴볼 수 있어요. 권한을 받은 주소를 기준으로 정렬하거나 걸러 내거나 검색할 수 있죠. 최근에 악성 승인이 있었다고 의심되면 “Newest to Oldest” 정렬이 특히 쓸모 있어요. 정렬과 필터를 써서 지금까지 준 토큰 허용량을 한눈에 훑어보세요. 허용량은 체인마다 따로 주어지니, 네트워크 선택을 바꿔 가며 쓰는 네트워크마다 다시 확인하세요.

3. 원하지 않는 허용량 취소하기:

취소할 승인을 찾았으면 옆에 있는 “Revoke” 버튼을 누르면 돼요. 앞으로도 그 승인이 필요하지만 위험은 줄이고 싶다면, 승인 금액 옆의 연필 아이콘을 눌러 금액을 다른 값으로 바꿀 수도 있어요.

다음과 같은 경우에는 토큰 허용량을 취소하거나 조정하는 게 좋아요:

  1. 최근 배포된 스마트 컨트랙트가 공격당해, 자주 쓰는 탈중앙화 거래소에 취약점이 생겼을 때.

    2023년 4월, 인기 DEX인 SushiSwap이 비슷한 공격을 당해 사용자 자금 약 350만 달러를 잃었어요. 토큰 허용량을 취소하지 않은 사용자는 계속 위험에 놓여 있었죠.

  2. 악성 거버넌스 제안이 사용자 자금을 빼내려고 여러 컨트랙트를 바꿔 버렸을 때.

    BNB 체인의 DeFi 프로토콜 Atlantis Loans가 여러 컨트랙트를 겨냥한 거버넌스 제안을 실행했을 때 250만 달러가 넘는 자산이 털렸어요. 승인 한도를 관리해 둔 사용자는 지갑이 통째로 비워지는 위험을 줄일 수 있었어요.

위임도 잊지 마세요

이더리움의 Pectra 업그레이드(2025년 5월) 이후로는 살펴볼 권한이 허용량만이 아니에요. 새로운 지갑 기능(EIP-7702)은 지갑이 추가 코드에 권한을 위임하게 해 줘요. 트랜잭션 묶어 보내기 같은 편리함이 생기지만, 새로운 탈취 수법도 함께 왔죠. 악성 서명 하나로 “스위퍼” 코드가 설치되면, 시드 구문이 새지 않아도 입금하는 족족 공격자에게 바로 넘어가요. 2025년 Wintermute 연구진은 초기 지갑 위임의 97% 넘는 수가 똑같은 스위퍼 코드를 가리키고 있었다고 밝혔어요.

Revoke.cash의 “Delegations” 탭에서 지금 걸려 있는 위임을 볼 수 있어요. 다만 위임은 dApp이 아니라 지갑이 통제하니, 원하지 않는 위임은 지갑 안에서 직접 해제해야 해요. MetaMask라면 계정 상세를 열고 일반 계정으로 되돌리면 돼요. 스마트 계정으로 업그레이드한 적이 없다면, 발견한 위임은 모두 악성으로 보세요.


이제 지갑 방어를 단단히 할 때예요! 탐험가 안내서의 이번 편 ‘토큰 허용량 관리하기’가 즐거웠기를 바라요.

여행 중에 꺼내 볼 사본을 갖고 싶거나 Bankless Academy의 다음 콘텐츠를 응원하고 싶다면 이 편을 수집해 보세요. 안전한 여행 되세요, 탐험가님!


FAQ

Revoke.cash는 언제 써야 하나요?

Revoke.cash는 주기적으로 쓰세요. 특히 한동안 쓰지 않는 dApp, 그중에서도 NFT 마켓플레이스가 중요해요. 승인을 줄여 두면 해킹이나 취약점 공격, 피싱으로 자금을 잃을 위험이 줄어요. 승인을 최신순으로 정렬하면 수상한 승인을 찾아 바로 취소해서 피해가 커지는 것을 막을 수 있어요.

지갑 연결을 끊으면 승인 악용에서 안전해지나요?

dApp에서 지갑 연결을 끊어도 승인 관련이든 아니든 공격에서 보호되지 않아요. 이미 준 토큰 승인은 온체인에 저장돼 있어서 연결을 끊어도 그대로 살아 있어요.

토큰 허용량 악용 같은 위험은 어떻게 피하나요?

토큰 허용량을 미리 챙기는 방법은 이래요:

  • 믿을 만한 dApp에만 허용량을 주기.

  • 토큰 허용량을 주기적으로 점검하기.

  • 필요 없거나 수상한 허용량 지우기.

  • 모르는 지갑 위임이 있는지 확인하기.

  • dApp의 보안 업데이트 소식을 챙기기.

Revoke.cash 브라우저 확장 프로그램 같은 외부 도구도 고려해 보세요. 위협을 미리 막아 주는 장치예요. 해로울 수 있는 것에 서명하려 하면 경고해 줘서 피싱이나 다른 악성 행위에서 지켜 줘요.

Revoke.cash로 자금을 되찾을 수 있나요?

안타깝게도 Revoke.cash는 도난당한 자금을 되찾아 주지 못해요. 승인 악용의 피해자가 될 가능성을 줄이는 예방 도구예요. 다만 자금을 빼가는 데 쓰인 승인을 취소하면 추가 도난은 막을 수 있어요.

충전할 때마다 지갑이 계속 비워지는 이유는 뭔가요?

지갑에 “스위퍼 봇”이 붙어 있을 수 있어요. 뚫린 지갑을 지켜보다가 새 입금이 들어오면 손쓸 새도 없이 바로 빼가는 스크립트예요. 원인 하나는 시드 구문 유출이에요. 이때는 승인을 취소해도 소용없으니 그 지갑을 버리고 새로 만드세요. 하지만 악성 지갑 위임도 그만큼 흔한 원인이에요. 시드 구문이 새지 않았는데도, 속아서 한 서명 때문에 스위퍼 코드가 설치된 경우죠. Revoke.cash의 “Delegations” 탭을 확인하세요. 모르는 위임이 있으면 지갑 안에서 해제하세요(예: MetaMask의 계정 상세). 위임이 없는데도 계속 빠져나간다면 시드 구문이 유출됐다고 보고 새 지갑으로 옮기세요.


글쓴이

Marcus는 ENS DAO 뉴스레터를 발행해요. 프로토콜 수수료에서 나온 잉여 수익이 애플리케이션 계층 개발과 다른 오픈소스 인프라를 어떻게 지원할 수 있을지 연구해요.

엮은이

Tetranome은 Bankless Academy의 프로젝트 챔피언으로, 사용자 경험과 인터페이스, 디자인, 콘텐츠를 맡고 있어요.

Trewkat은 BanklessDAO의 작가이자 편집자예요. 크립토와 NFT를 배우는 데 관심이 많고, 특히 그 지식을 다른 사람에게 어떻게 잘 전할지에 집중해요.

후원

이 글은 후원 없이 만들어진 Bankless Academy의 무료 교육 콘텐츠예요. 글을 수집해 다음 콘텐츠를 응원해 주세요!