
얼마 전 거래소에서 비트코인을 개인 지갑으로 옮기려다 주소를 세 번 다시 확인했다. 주소 생성은 몇 초면 끝나지만, 잘못 보낸 거래를 되돌리는 방법은 사실상 없기 때문이다. 특히 거래소 입금 주소와 내가 관리하는 지갑 주소를 같은 것으로 생각하면 첫 단계부터 헷갈린다.
1. 주소보다 먼저 지갑의 관리 주체를 확인한다
비트코인 주소는 코인을 받을 때 상대에게 알려주는 문자열이다. 주소를 안다고 해서 그 안의 비트코인을 쓸 수 있는 건 아니다. 지출에는 해당 자금을 통제하는 개인키가 필요하다. 개인 지갑은 보통 이 키들을 관리하고, 복구 문구를 통해 지갑을 다시 열 수 있게 한다.
반면 거래소 화면에서 만든 입금 주소는 거래소가 이용자에게 배정한 주소다. 블록체인에 입금이 확인되면 거래소 내부 계정에 잔액이 반영된다. 화면에 주소가 보인다는 사실만으로 개인키를 내가 갖고 있다는 뜻은 아니다. 장기 보관용인지, 매매를 위한 거래소 입금용인지부터 구분해야 한다.
2. 비트코인 주소 생성은 지갑의 수신 메뉴에서 한다
개인 지갑이라면 신뢰할 수 있는 지갑을 설치하거나 하드웨어 지갑을 설정한 뒤 수신 메뉴에서 비트코인 주소를 표시한다. 지갑이 복구 문구를 제공하면 화면 캡처나 메신저 전송 대신 오프라인에 기록하고, 안내된 순서대로 복구 확인을 끝낸다. 복구 문구나 개인키를 요구하는 상대에게는 보내지 않는다. 주소는 공유할 수 있지만 복구 문구는 공유하면 안 된다.
- 지갑에서 비트코인 메인넷의 수신 화면을 연다.
- 표시된 주소와 QR코드를 확인한다. 하드웨어 지갑이라면 기기 화면의 주소도 대조한다.
- 보내는 곳에 주소를 붙여넣고 전체 문자열을 다시 확인한다. 큰 금액은 소액 시험 전송 후 실제 입금을 확인한다.
주소를 화면에 새로 표시하는 행위 자체에는 비트코인 네트워크 수수료가 없다. 수수료가 생기는 시점은 실제 온체인 거래를 보낼 때다. 거래소는 별도의 출금 수수료나 최소 출금액을 둘 수 있으니 전송 전에 표시 금액을 읽어야 한다.
3. 앞자리보다 네트워크와 지원 여부가 중요하다
비트코인 메인넷 주소는 흔히 1, 3, bc1q, bc1p로 시작한다. 1은 오래된 주소 형식, bc1q는 네이티브 세그윗, bc1p는 탭루트 주소를 구별할 때 유용하다. 3으로 시작하는 주소는 여러 스크립트 용도로 쓰일 수 있어 앞자리만 보고 세부 구조를 단정할 수 없다. 비트코인 개선 제안 BIP 173과 BIP 350은 각각 세그윗과 탭루트 주소의 인코딩 기준을 설명한다.
그런데 앞자리만 맞아도 전송 경로가 다르면 사고가 난다. 보내는 화면에서 선택한 네트워크가 비트코인 메인넷인지, 받는 지갑이나 거래소가 해당 주소 형식을 지원하는지 확인해야 한다. 라이트닝 결제 요청, 다른 체인의 비트코인 연동 토큰, 비트코인 메인넷 주소는 서로 같은 입금 경로가 아니다. 주소가 유효하다는 표시만 믿기보다 수신 서비스의 입금 안내와 함께 대조하는 편이 안전하다.
4. 새 주소와 전송 비용은 따로 계산한다
많은 지갑은 수신할 때마다 새 주소를 보여준다. 처음 나온 주소가 사라지거나 이전 주소의 비트코인이 없어지는 건 아니다. 같은 주소를 반복 사용하면 거래 내역이 서로 연결되기 쉬워져 프라이버시가 약해진다. 비트코인 공식 안내도 새 입금마다 새 주소를 쓰도록 권한다.
트레이딩 관점에서는 주소 수만으로 이용자 수를 세는 해석도 조심한다. 한 사람이 수신 주소를 여러 개 만들 수 있고, 거래소는 많은 이용자의 입금을 관리한다. 주소 증가를 곧바로 신규 투자자 유입으로 읽으면 수급 판단이 틀어질 수 있다.
전송 비용은 보내는 비트코인 수량보다 거래의 데이터 크기와 당시 수수료율에 더 크게 좌우된다. 예를 들어 거래 크기가 140가상바이트이고 수수료율이 가상바이트당 10사토시라면 수수료는 1,400사토시다. 1비트코인은 1억 사토시이므로 0.000014비트코인에 해당한다. 이는 계산 예시일 뿐 실제 크기와 수수료율은 거래마다 다르다. 소액을 여러 번 옮길 때는 받는 금액 대비 비용까지 확인한다. 나는 주소를 만드는 속도보다 복구 문구 보관, 네트워크 확인, 첫 시험 전송에 시간을 더 쓴다. 한 번의 실수를 피하는 값이 그 몇 분보다 크다.
