[지갑 5부] 개인지갑 처음 쓸 때 자주 하는 실수 7가지

웨일로그 편집팀

개인 지갑에서 생기는 사고는 대부분 해킹이 아니라 네트워크 선택, 수수료용 코인, 승인 권한 관리 같은 기본 조작에서 나옵니다. 그리고 이 실수들은 은행 이체와 달리 취소나 고객센터 정정이 없어서, 미리 원리를 알아 두는 것이 사실상 유일한 대비책입니다.

이 글은 암호화폐 지갑 고르기 전 확인할 체크리스트에서 짧게만 다룬 실사용 단계의 문제들을 정리하는 지갑 시리즈 마지막 5부입니다. 1부에서 개인 지갑이 왜 스스로 책임지는 구조인지, 3부에서 시드 문구 보관법을 다뤘다면, 이번에는 지갑을 실제로 쓰기 시작한 뒤 마주치는 상황들을 질문 7가지로 풀어 보겠습니다.

Q1. 거래소에서 지갑으로 보냈는데 코인이 안 들어옵니다. 왜 그런가요?

가장 흔한 원인은 네트워크(체인) 선택 실수입니다. 이더리움 계열 주소는 0x로 시작하는 같은 형식을 쓰기 때문에, 이더리움·BNB체인·폴리곤·아비트럼 등 여러 네트워크에서 주소가 똑같이 생겼습니다. 그래서 거래소에서 출금할 때 네트워크를 다르게 고르면, 주소가 맞아도 자산은 그 다른 네트워크 위에 올라갑니다.

이 경우 지갑 앱에서 네트워크를 바꿔 보면 자산이 그대로 보이는 경우가 많습니다. 지갑 화면 상단의 네트워크를 전송에 사용한 체인으로 바꾸고, 필요하면 그 네트워크를 목록에 추가해 보세요. 문제는 그 네트워크를 지갑이나 서비스가 아예 지원하지 않는 경우, 혹은 거래소 입금 주소처럼 내가 개인키를 갖고 있지 않은 주소로 보낸 경우입니다. 이때는 사실상 복구가 어렵거나 거래소 지원에 의존해야 합니다.

예방법은 단순합니다. 출금 화면에서 고른 네트워크 이름과 지갑에서 받을 네트워크 이름이 글자 그대로 같은지 확인하고, 처음 쓰는 경로라면 먼저 아주 적은 금액을 보내 도착을 확인한 뒤 본 금액을 보내는 것입니다. 몇천 원의 수수료로 전액 손실 위험을 줄이는 거래라고 생각하면 됩니다.

Q2. 지갑에 토큰은 있는데 전송이 안 됩니다. 무슨 문제인가요?

토큰을 옮기려면 그 네트워크의 기본 코인(가스비용 코인) 이 따로 있어야 하기 때문입니다. 이더리움 네트워크에서 USDT를 보내려면 수수료는 USDT가 아니라 ETH로 내야 하고, 폴리곤에서는 POL, BNB체인에서는 BNB가 필요합니다. 고속도로에 차(토큰)는 있는데 기름(가스비)이 없어 움직이지 못하는 상황과 같습니다.

그래서 USDT만 100만 원어치 들어 있고 ETH가 0인 지갑은, 잔고는 멀쩡히 보이지만 아무것도 움직일 수 없는 상태가 됩니다. 해결책은 같은 네트워크의 기본 코인을 소액 입금하는 것뿐입니다. 처음 지갑을 만들 때 쓸 네트워크의 기본 코인을 몇 달러어치 미리 넣어 두는 습관을 들이면 이 상황을 피할 수 있습니다. 수수료가 왜 붙는지, 어떻게 계산되는지는 가스비 FAQ에서 더 자세히 다뤘습니다.

Q3. 전송은 성공했다는데 지갑에 토큰이 안 보입니다.

이 경우 자산이 사라진 것이 아니라 지갑 앱이 그 토큰을 화면에 표시하지 않고 있는 것일 때가 대부분입니다. 블록체인에는 수많은 토큰이 존재하므로 지갑은 알려진 일부만 자동으로 보여주고, 나머지는 사용자가 직접 등록해야 목록에 뜹니다.

확인 순서는 이렇습니다. 먼저 블록 익스플로러 사용법에서 설명한 대로 이더스캔(etherscan.io) 같은 익스플로러에 내 지갑 주소를 넣고 잔고를 조회합니다. 여기서 토큰이 보인다면 자산은 온체인에 정상적으로 들어와 있는 것입니다. 그다음 지갑 앱의 “토큰 가져오기(Import token)” 기능에 그 토큰의 계약 주소(Contract Address)를 붙여넣으면 잔고가 표시됩니다. 계약 주소는 익스플로러의 토큰 페이지에서 확인할 수 있는데, 이름이 같은 가짜 토큰이 많으므로 공식 문서나 프로젝트 공지에 적힌 주소와 대조하는 편이 안전합니다.

Q4. 주소를 복사해서 붙여넣었는데도 확인이 필요한가요?

필요합니다. 주소를 손으로 옮겨 적다 틀리는 것보다, 클립보드를 노리는 악성코드가 더 현실적인 위험이기 때문입니다. 이런 악성코드는 사용자가 지갑 주소 형태의 문자열을 복사하면 붙여넣는 순간 공격자 주소로 바꿔치기합니다. 화면에는 그럴듯한 주소가 들어가 있으니 그냥 넘어가기 쉽습니다.

여기에 더해 “주소 오염(address poisoning)“이라는 수법도 있습니다. 공격자가 내 거래 내역에 앞뒤 몇 글자가 내가 자주 쓰는 주소와 똑같은 주소로 0원짜리 거래를 보내 두면, 나중에 거래 내역에서 주소를 복사해 쓸 때 그 가짜 주소를 집어 오게 되는 방식입니다. 체이널리시스(Chainalysis)를 비롯한 온체인 분석기관들의 공개 리포트에서도 이런 주소 기반 사기가 반복적으로 보고돼 왔습니다.

대응은 두 가지입니다. 붙여넣은 뒤 앞 46자와 뒤 46자를 눈으로 대조하고, 거래 내역에서 주소를 복사하지 말고 지갑의 주소록에 검증된 주소를 저장해 쓰는 것입니다. 금액이 크면 Q1에서 말한 소액 시험 전송을 함께 쓰면 좋습니다.

Q5. 디파이 서비스에서 뜨는 승인(approve)이 정확히 무엇인가요?

승인은 내 지갑에 있는 특정 토큰을 그 서비스의 스마트 컨트랙트가 대신 옮길 수 있게 허용하는 것입니다. 스왑이나 예치를 하려면 서비스가 내 토큰을 가져가야 하는데, 블록체인에서는 그 권한을 미리 명시적으로 줘야 하기 때문에 실제 거래 전에 승인 단계가 한 번 더 뜹니다.

문제는 이 권한의 성격입니다. 첫째, 많은 서비스가 매번 승인창이 뜨는 불편을 줄이려고 한도를 무제한으로 요청합니다. 둘째, 이 권한은 거래가 끝나도 자동으로 사라지지 않고 취소할 때까지 남아 있습니다. 즉 몇 달 전 한 번 써 본 서비스의 컨트랙트가 지금도 내 토큰을 옮길 권한을 갖고 있을 수 있다는 뜻입니다. 그 컨트랙트에 취약점이 발견되거나 운영자가 악의적으로 행동하면, 내가 아무 조작을 하지 않아도 잔고가 빠져나갈 수 있습니다.

그래서 승인창이 뜨면 한도를 이번 거래에 필요한 금액으로 직접 지정하는 편이 안전합니다. 최근 지갑들은 이 한도를 수정할 수 있는 입력칸을 제공합니다.

Q6. 예전에 준 승인 권한을 취소하려면 어떻게 하나요?

내 주소가 어떤 컨트랙트에 어떤 권한을 줬는지 조회한 뒤 하나씩 취소(revoke)하면 됩니다. 대표적인 도구가 revoke.cash이고, 이더스캔에도 “Token Approvals” 조회 기능이 있습니다. 지갑을 연결하면 승인 목록과 각각의 한도가 나오고, 쓰지 않는 항목을 골라 취소할 수 있습니다.

두 가지만 기억하면 됩니다. 첫째, 취소도 블록체인에 기록되는 거래이므로 가스비가 듭니다. 그래서 한 번에 몰아서 정리하는 편이 효율적이고, 수수료가 낮은 시간대를 고르면 부담이 줄어듭니다. 둘째, 승인 관리 도구를 사칭한 가짜 사이트가 많습니다. 검색 광고나 메신저 링크로 들어가지 말고 주소를 직접 입력해 접속하고, 접속한 사이트가 오히려 새로운 승인을 요구한다면 그 자리에서 중단해야 합니다. 정상적인 취소는 권한을 없애는 거래이지 새로 부여하는 거래가 아닙니다.

Q7. 지갑 연결과 서명 요청은 어떻게 구분해야 하나요?

연결(Connect) 은 사이트에 내 지갑 주소를 알려주는 단계로, 그 자체로 자산이 움직이지는 않습니다. 반면 서명(Sign) 은 개인키로 내용을 승인하는 행위여서, 무엇에 서명하느냐에 따라 자산이 그대로 빠져나갈 수 있습니다. 피싱 사이트가 노리는 지점이 바로 이 서명입니다.

특히 조심할 것은 가스비가 들지 않는 오프체인 서명입니다. 수수료가 0으로 표시되니 안전해 보이지만, 실제로는 토큰 이전 권한을 넘기는 내용일 수 있습니다. 이더리움 재단의 보안 안내 문서(ethereum.org/security)에서도 서명 요청 내용을 확인하지 않는 습관이 자산 탈취의 주요 경로로 지목됩니다. “에어드랍 수령”, “지갑 인증”, “계정 활성화” 같은 문구로 서명을 유도하는 방식이 전형적입니다.

실천 규칙은 세 가지입니다. 서명창에 표시된 도메인 주소가 내가 접속한 곳과 같은지 확인하고, 요청 내용이 지금 하려는 작업과 논리적으로 맞는지 따져 보고, 내용을 이해할 수 없으면 거절하는 것입니다. 거절해도 손해는 없습니다.

정리하며 — 실수의 성격을 나눠서 보자

이 7가지는 성격이 두 갈래로 나뉩니다. Q1Q3은 모르면 당황하지만 대부분 복구되는 문제입니다. 네트워크를 잘못 골랐거나 토큰이 안 보이는 상황은 원리를 알면 대개 해결되고, 최악의 경우에도 손실은 수수료 정도에서 끝나는 경우가 많습니다. 반면 Q4Q7은 한 번 당하면 되돌릴 수 없는 문제입니다. 잘못된 주소로 보낸 전송, 방치된 무제한 승인, 무심코 한 서명에는 취소 버튼이 없습니다.

그래서 시간과 주의력을 배분한다면 뒤쪽에 더 쓰는 것이 합리적입니다. 구체적으로는 (1) 큰 금액 전송 전 소액 시험 전송, (2) 분기에 한 번 승인 권한 정리, (3) 이해 못 한 서명은 무조건 거절 — 이 세 가지 습관만으로 개인 지갑 사고의 상당 부분을 걸러낼 수 있습니다. 실사용 지갑과 장기 보관 지갑을 분리해, 디파이나 NFT 서비스에는 소액만 든 지갑으로만 접속하는 것도 같은 맥락의 방어입니다. 2부에서 다룬 콜드월렛은 이 분리를 물리적으로 구현한 형태라고 볼 수 있습니다.

개인 지갑은 은행처럼 실수를 되돌려 주는 중개자가 없는 대신, 규칙만 알면 그 규칙이 예외 없이 지켜지는 시스템이기도 합니다. 지갑 시리즈 5부에 걸쳐 다룬 소유권 구조, 보관 방식, 시드 문구 관리, 거래소 위험, 그리고 오늘의 실사용 주의점을 한 번씩 점검해 두면 대부분의 사고는 사전에 피할 수 있습니다.

이 글은 정보 제공 목적으로 작성되었으며 투자 권유가 아닙니다. 투자 판단과 책임은 본인에게 있습니다.

시리즈: 개인지갑 vs 거래소지갑

내 코인이 실제로 어디에 있는지부터 지갑을 직접 쓸 때의 주의점까지, 지갑 체크리스트에서 한 줄로만 다룬 항목을 회차별로 깊게 파는 시리즈입니다.