2023-03-17
1600
비트코인 지갑은 무엇인가요? 어떻게 사용하나요?
비트코인 지갑에는 비트코인이 없습니다
흔히 지갑이라고 하면, 돈이 들어있는 무언가를 떠올리게 됩니다. 비트코인 지갑 앱들 역시 사용자가 돈을 수령하고, 보낼 수 있는 기능을 제공합니다. 그런데 사실 정확하게 말하면, 지갑에 실제 비트코인이 들어있는 것은 아닙니다. 당신의 비트코인은 블록체인이라는 형태의 장부에 기록되어 전세계에 분산, 복제되어 존재하고, 지갑은 그 비트코인을 사용하기 위해 특별한 전자서명을 해주는 도구입니다.
이를테면 은행계좌에서 돈을 인출하기 위해서는 해당 계좌의 비밀번호를 알아야 합니다. 이와 마찬가지로, 당신이 특정 주소(계좌번호)로 받은 비트코인을 사용하기 위해서는 해당 주소에 서명이 가능한 고유한 개인키(비밀번호)를 알아야 합니다. 지갑 앱들이란 바로 이 개인키들을 관리해주는 도구입니다. 그런 의미에서는 '지갑'이라는 표현보다는 거래를 만들고 승인하는 '서명 도구'라는 표현이 보다 적합하다고 할 수 있겠습니다.
내가 직접 관리하지 않으면, 내 비트코인이 아닙니다
자, 이제 당신은 Binance, Coinbase, Kraken, Upbit 등의 거래소에서 비트코인을 샀습니다. 이제 내 포트폴리오를 체크하는 기능을 통해 확인해보면 마치 내가 코인을 실제 갖고 있는 것 같다는 생각이 듭니다. 그런데, 실제로는 단지 거래소가 내 계정에 얼마만큼의 비트코인을 인출할 권한이 있는지만 기록해두고 있는 것이지 실제 내가 비트코인을 소유한 것은 아닙니다. 남에게 돈을 맡기는 것이 얼마나 위험한지에 관해서 이 글에서 자세히 설명하지는 않겠습니다.(비트코인을 맡기면 이자를 주는 서비스들을 이용하는 것은 어떤가요?) 정말로 비트코인을 내가 소유하기 위해서는, 내가 직접 개인키를 관리하는 지갑으로 비트코인을 출금해야합니다.
그럼, 지갑에는 어떤 것들이 있는지 살펴보겠습니다
1. 비트코인 코어
흔히 풀노드라고도 불리며, 제네시스 블록부터 현재까지의 전체 거래내역이 담긴 블록체인 장부를 모두 다운받아 관리하는 방법으로, 마치 은행 전산망을 통째로 다운로드하는 것과 비슷합니다. 주요 역할은 내 거래 뿐만 아니라 다른 사람들의 거래 요청을 포함하여 네트워크에서 발생하는 모든 거래들을 검증하는 것입니다. 또한 비트코인을 받고/보내기 위한 주소를 생성하고 개인키를 관리하는 일체의 모든 기능을 제공합니다. 다만, 전체 블록체인을 다 다운받기 때문에 500GB 이상의 하드디스크 용량이 필요하며, 클라이언트가 구동되는동안 시스템 자원을 어느정도 사용하는 것은 감안해야합니다.
2. 앱 지갑 (e.g. Trust Wallet, Atomic Wallet, Metamask...)
1에서 살펴보았듯이 풀노드를 운영하기 위해서는 전체 블록체인을 다운받아야 하기 때문에 하드디스크 용량 및 컴퓨팅 자원이 어느정도 필요하고, 항상 내 컴퓨터가 블록체인을 최신의 상태로 동기화해야 합니다. 따라서, 내가 스스로 블록체인 장부를 최신의 상태로 유지하고 시스템 자원을 사용하는게 부담스럽다면 앱 지갑이라는 선택지도 있습니다. 이런 지갑들은 블록체인을 내 기기에 저장하는 것이 아니라, 단지 지갑주소와 개인키 쌍만 관리해주며 주변 노드들에 액세스할 수 있도록 도와주는 역할만 수행합니다.
대표적으로 Trust Wallet, Atomic Wallet, Metamask 등이 있습니다. 다만 앱 월렛들은 이 지갑 소프트웨어 제작사들을 신뢰해야 한다는 문제가 있습니다. 이런 지갑들에 어떤 백도어가 설치되어 있는지, 혹은 버전이 업그레이드 될 때마다 어떤 보안 취약점이 코드에 들어가게 될지는 알기가 어렵습니다. 이런 지갑들은 대개 모바일을 비롯한 다양한 운영체제에서 사용가능하고 초보자도 아주 쉽게 이용 가능하기 때문에, 언제든 자유롭게 사용하고 싶은 소액의 금액을 관리하거나 개인지갑 입문용으로 사용해보기에는 괜찮습니다. 이런 앱 월렛들에 큰 금액을 담는 것은 추천하지 않습니다.
3. 하드웨어 지갑 (e.g. Keystone, Jade, Ledger Nano...)
1과 2는 내 개인키(지갑 비밀번호)가 보관된 기기들이 온라인으로 연결되어 있습니다. 이를 핫 월렛이라고 합니다. 핫 월렛들은 인터넷에 연결된다는 특성상 악의적인 소프트웨어, 피싱 등으로 기기에 저장된 개인키가 탈취되어 자산을 잃을 위험이 있습니다. 그런데 하드웨어 지갑에서는 개인키가 인터넷과 연결되지 않는 하드웨어 장비에 저장되어 있습니다. 그래서 콜드 월렛이라고도 합니다. 콜드 월렛은 인터넷과 연결되어 있지 않기 때문에, 비트코인을 받기 위해 주소를 생성하고, 또 보내기 위해 거래를 만들고 서명하는 기능밖에는 하지 못합니다. 이 거래를 네트워크로 전파하기 위해서는 다음의 과정이 필요합니다.(월렛마다 조금씩 다르며, Ledger Nano를 기준으로 설명하였습니다.)
1. 하드웨어 지갑에 엑세스할 수 있는 소프트웨어(e.g. Ledger Live)에서 송금요청을 한다.
2. 하드웨어 지갑을 USB나 블루투스 등의 방식으로 지갑 소프트웨어와 연결한다.
3. 하드웨어 지갑에 트랜잭션 정보가 나타나고, 사전에 설정해둔 PIN 번호를 입력한다.
4. 하드웨어 지갑은 해당 거래를 개인키로 서명하고, 앱으로 전달한다.
5. 앱은 전달받은 거래를 확인하고 네트워크로 전파한다.
여기서, 중간에 컴퓨터와 연결하는 과정조차 생략하는 더더욱 안전한 에어갭 방식도 있습니다. 하드웨어 지갑에서는 서명 후 거래 정보를 QR 코드로 만들어 노출하고, 지갑 앱에서 해당 QR 코드를 인식하여 전파하는 방법입니다.
이처럼 개인키를 통한 거래 승인이 하드웨어 지갑 내부에서 오프라인으로 이루어지고, 개인키가 지갑 밖으로 나가지 않기 때문에 거래가 불편한 대신 대단히 안전합니다. 설사 컴퓨터가 악성코드에 감염되었더라도 하드웨어 지갑 내부의 개인키가 탈취될 수는 없습니다. 거래를 승인하려면 실물 하드웨어 지갑을 반드시 소지하고 있어야만 한다는 이런 특성 때문에 온라인 해킹 위험으로부터 완벽하게 보호되며, 사용하지 않을 큰 금액을 장기간 보관하기에 가장 적합한 수단입니다.
거래소들의 파산에 이어 은행까지 파산하는 모습들을 보면, 제3자를 신뢰하는데서 오는 위험이 단지 '괜찮겠지' 하고 넘어갈 수준이 아니라는 것을 알 수 있습니다. 어떤 사람들은, 자기가 스스로 개인키를 관리하다가 잃어버리면 절대로 비트코인을 다시 찾을 수 없기 때문에, 차라리 거래소 등 제 3자에게 수탁을 하는 것이 안전하다고 생각합니다. 그러나 비트코인은 수탁물이 아니라 점유물입니다.
디지털 자산은 비트코인 등장 이전까지는 기술적 이유로 대대로 중앙화된 제3자를 통해서만 존재하는 수탁물일 수 밖에 없었는데, 비트코인은 인류 역사상 처음 등장한 디지털 점유물입니다. 참으로 놀랍지 않습니까? 불법이든 합법이든 전세계의 모든 사람들이 이 희소하고 놀라운 자산을 탐내는 것은 당연합니다. 부디 돈을 남에게 맡겨서는 안 된다는 것을 굳이 뼈저린 경험으로 배우는 일이 없기를 바랍니다.
2