Reading text-only. View on full site →

장부에만 있던 62만 개

2026-10-20 · articles · ko

2026년 2월 빗썸은 실제로 4만 2천 개를 가진 상태에서 62만 BTC를 고객 계정에 지급했다. 거래소 잔고가 장부의 숫자라는 사실에서 출발해, 거래소가 코인을 정말 갖고 있는지 확인하는 준비금 증명이 무엇을 보이고 무엇을 보이지 못하는지, 그리고 국내 제도가 어디까지 왔는지를 정리한다.


2026년 2월 6일 저녁 7시, 빗썸은 랜덤박스 이벤트 당첨금을 지급했다. 당첨자 249명이 받을 돈은 1인당 2,000원에서 5만 원 사이였다. 지급을 입력하던 직원이 단위를 원화가 아니라 BTC로 넣었다. 249개 계정에 합계 62만 BTC가 들어갔다.

그때 빗썸이 가진 비트코인은 고객이 맡긴 42,619개와 회사 몫 175개, 모두 4만 2천여 개였다. 지급된 숫자는 실제 보유량의 약 15배였고, 비트코인 전체 발행 한도 2,100만 개의 3%에 가까웠다. 몇몇 당첨자는 곧바로 팔았다. 빗썸 안의 비트코인 가격은 9,800만 원대에서 한때 8,111만 원까지 내려갔다가 5분쯤 뒤 제자리로 돌아왔다. 빗썸은 이후 99.7%를 회수했고 약 125개는 돌려받지 못했다고 밝혔다.

닷새 뒤 국회 정무위원회 긴급 현안질의에서 한 의원이 물었다. 이론상 1,000만 BTC도 지급될 수 있었느냐고. 빗썸 대표는 이론상 그렇다고 답했다.

거래소 잔고는 숫자다

이 사고가 가능했던 이유는 단순하다. 거래소 계정의 비트코인은 블록체인에 있지 않다. 거래소 데이터베이스에 적힌 숫자다. 고객끼리 사고팔 때 코인은 움직이지 않고 장부의 숫자만 바뀐다. 블록체인에서 실제 코인이 움직이는 것은 고객이 출금할 때뿐이다.

그래서 장부에는 지갑에 없는 코인을 적을 수 있다. 실수로든 고의로든 숫자 하나를 바꾸면 된다. 장부와 지갑이 맞는지는 누군가 둘을 대조해야 알 수 있는데, 이 대조를 잔고 대사라고 부른다. 같은 현안질의에서 다른 의원은 업비트 등은 5분 단위로 대사를 하는데 빗썸은 하루 단위였다고 지적했다. 62만 개는 그 하루 사이에 생겼다가 사라졌다.

같은 일은 반대 방향으로도 일어난다. 2023년 10월 FTX 창업자의 형사 재판에서 공동 창업자 게리 왕은, 계열사 알라메다 리서치의 FTX 계정에 잔고가 0 아래로 내려가도 거래와 출금이 가능한 allow negative 설정이 몰래 걸려 있었다고 증언했다. 그 계정의 신용 한도는 650억 달러였다고 했다. 빗썸의 사고가 지갑에 없는 코인을 장부에 더한 것이라면, 이 설정은 장부에서 코인 없이 뺄 수 있게 만든 것이다. 어느 쪽이든 장부의 숫자와 지갑의 코인이 갈라진다. 2022년 11월 11일 FTX가 파산 신청을 했을 때 그 차이는 수십억 달러에 이르렀다.

준비금 증명이라는 생각

거래소가 고객에게 갚아야 할 코인을 정말 갖고 있는지 바깥에서 확인하자는 논의는 2013년에 시작됐고, 2014년 2월 마운트곡스가 무너지면서 실제로 쓰이기 시작했다. 그해 3월 24일 크라켄은 비트코인 개발자 스테판 토머스에게 맡긴 감사 결과를 발표했다. 크라켄이 가진 비트코인이 고객 잔고 합계보다 많다는 확인이었다. 방법은 그레그 맥스웰이 제안한 머클 트리 감사를 변형한 것이었고, 각 고객이 자기 잔고가 계산에 들어갔는지 직접 확인할 수 있었다. 크라켄은 이것이 더 공개적인 회계로 가는 첫걸음일 뿐이라고 덧붙였다.

준비금 증명(proof of reserves)은 두 쪽으로 나뉜다. 하나는 자산 쪽, 거래소가 이만큼의 코인을 통제한다는 증명이다. 다른 하나는 부채 쪽, 거래소가 고객에게 이만큼을 갚아야 한다는 증명이다. 자산이 부채보다 크거나 같아야 의미가 있다. 둘 중 하나만으로는 아무것도 말하지 못한다.

자산 쪽은 서명으로 보인다

코인을 통제한다는 사실은 비교적 쉽게 보일 수 있다. 미리 정한 시각에 그 코인을 실제로 옮기거나, 옮기지 않고 그 주소의 키로 문장에 서명하면 된다. 서명으로 소유를 보이는 방법은 코인을 옮기지 않고 하는 소유 증명에서 다뤘다.

거래소처럼 주소가 수천 개라면 주소마다 서명하기보다 한 번에 묶는 편이 낫다. BIP-127은 그 방법을 정리한 문서로, 2019년 1월 번호를 받았다. 증명용 거래를 하나 만들되 첫째 입력에 실제로 있는 코인 대신 증명 문장의 SHA-256 해시를 넣는다. 그런 입력을 가진 거래는 절대 유효해질 수 없으므로 네트워크에 내보내도 블록에 들어가지 않는다. 나머지 입력에는 거래소의 실제 코인을 모두 넣고 서명한다. 검증하는 쪽은 서명이 맞는지, 그 코인들이 아직 쓰이지 않았는지를 확인한다. 서명할 거래는 PSBT로 주고받고, 이를 위해 증명 문장을 담는 전용 필드가 추가됐다. 문서 스스로 이 방식에 프라이버시 면에서 알려진 결함이 있고, 이미 쓰이던 관행을 정리했을 뿐이라고 적어 두었다.

이 쪽의 약점은 시점이다. 서명은 그 순간 키를 쥐고 있었다는 것만 말한다. 증명하는 날 다른 곳에서 코인을 빌려 와 서명하고 다음 날 돌려줘도 증명은 성립한다. 비탈릭 부테린은 2022년 11월 글에서 거래소들이 담보를 서로 주고받으며 번갈아 준비금 증명을 하면, 실제로는 지급 불능인데도 지급 능력이 있는 것처럼 보일 수 있다고 썼다. 같은 코인이 두 거래소의 증명에 한 번씩 들어가는 셈이다.

부채 쪽은 머클 합 트리로 보인다

어려운 쪽은 부채다. 거래소가 고객 잔고 합계를 발표해도, 그 합계에서 몇몇 고객을 빼고 계산했는지 알 길이 없다. 맥스웰의 방법은 이 문제를 고객 각자에게 나눠 맡긴다.

고객 한 명의 잔고를 잎으로 삼아 머클 트리를 만든다. 다만 일반 머클 트리와 달리 각 노드에 해시와 함께 금액을 담고, 위 노드의 금액은 아래 두 노드 금액의 합이 되게 한다. 이를 머클 합 트리라고 부른다. 맨 위 뿌리의 금액이 고객 잔고 총합이다. 거래소는 뿌리를 공개하고, 고객은 자기 잎에서 뿌리까지 올라가는 경로를 받아 직접 계산한다. 자기 잔고가 빠졌거나 줄어 있으면 계산이 맞지 않는다. 확인하는 고객이 일부뿐이어도 거래소는 누가 확인할지 모르니 어느 계정도 함부로 뺄 수 없다.

금액을 함께 담아야 하는 이유가 있다. 해시만 담으면 거래소는 가짜 계정을 하나 만들어 마이너스 500 BTC를 적어 넣는 식으로 총합을 줄일 수 있다. 합 트리에서는 그 음수가 위 노드의 금액에 그대로 드러나서, 그 옆 잎의 고객이 경로를 확인하는 순간 이상한 숫자를 보게 된다. FTX의 allow negative 설정이 장부 안에 숨겨 둔 것이 바로 이런 음수였다.

바이낸스는 FTX가 무너진 2022년 11월 머클 트리 방식의 준비금 증명을 공개했다. 처음 판은 잎에 잔고의 해시만 담아서 뿌리가 총합을 보장하지 못했고, 음수 잔고 계정을 끼워 넣을 수 있다는 비판을 받았다. 2023년 2월에는 영지식 증명(zk-SNARK)을 덧붙여, 모든 잎이 발표한 총합에 들어갔고 순잔고가 음수인 계정이 없다는 것을 개별 잔고를 드러내지 않고 증명하도록 바꿨다.

증명이 보이지 못하는 것

준비금 증명을 거친 거래소도 여전히 몇 가지는 증명하지 못한다.

장부 밖의 부채. 합 트리는 고객 잔고만 다룬다. 거래소가 다른 곳에서 빌린 돈, 담보로 잡힌 코인, 소송으로 물어야 할 돈은 트리에 없다. 자산이 고객 잔고보다 많아 보여도 다른 빚까지 합치면 모자랄 수 있다.

시점. 증명은 특정 시각의 사진이다. 다음 날 무슨 일이 일어났는지는 말하지 않는다. 빗썸의 62만 개도 하루 사이에 생겼다.

원화. 원화 예치금은 블록체인에 없으니 서명으로 보일 수 없다. 결국 은행이나 회계법인의 확인을 믿어야 한다.

확인의 성격. 2022년 12월 16일 회계법인 마자르는 바이낸스, 크립토닷컴, 쿠코인의 준비금 증명 보고서 작업을 중단했다. 이유는 대중이 그 보고서를 이해하는 방식에 대한 우려였다. 그 보고서들은 감사 의견이 아니라 과거 한 시점에 합의된 절차를 수행한 결과였다. 많은 사람이 그것을 감사로 읽었다.

국내 제도는 어디까지 왔나

2024년 7월 19일 시행된 가상자산이용자보호법은 이용자의 원화 예치금을 은행이 관리하게 하고, 이용자 가상자산의 경제적 가치 80% 이상을 인터넷과 분리된 콜드월렛에 두게 했다. 핫월렛에 둔 가상자산 가치의 5% 이상은 보험이나 준비금으로 대비해야 한다. 거래소들은 이용자 자산 대비 실제 보유 비율을 분기마다 공시해 왔고, 업비트는 2018년 6월부터 회계법인의 실사 보고서를 공개해 왔다.

빗썸 사고 뒤 금융당국은 5대 거래소를 점검했다. 다섯 곳 가운데 세 곳이 장부와 지갑을 하루 단위로 대조하고 있었다. 2026년 4월 6일 금융위원회는 모든 거래소가 5분 주기로 잔고를 대사하는 시스템을 갖추게 하고, 장부와 실제 잔고의 차이가 크면 거래를 자동으로 멈추는 기준을 두겠다고 발표했다. 이벤트 지급 같은 고위험 거래에는 다중 승인과 제3자 교차 검증을 붙이고, 공시는 보유 비율에서 종목별 보유 수량까지 넓힌다. 이 내용은 2단계 가상자산법에 넣어 법적 강제력을 갖추겠다고 했다.

방향은 분명하다. 다만 이 장치들은 거래소 안의 통제와 당국의 감독이다. 고객이 자기 잔고가 계산에 들어갔는지 직접 확인하는 구조는 아니다. 5분마다 대조하는 시스템도, 대조 결과를 보는 사람은 거래소와 당국이다.

내가 확인할 수 있는 것

거래소에 코인을 둔다면 그 거래소의 준비금 증명이 있는지, 있다면 내 계정으로 내 잔고가 포함됐는지 직접 확인할 수 있는지 본다. 증명 날짜가 언제인지, 자산 쪽 주소를 공개했는지, 부채 쪽에 음수 계정을 막는 장치가 있는지도 본다. 그리고 그 증명이 장부 밖의 빚과 그다음 날의 일은 말해 주지 않는다는 것을 기억한다.

거래소 장부의 숫자는 거래소가 그만큼을 돌려주겠다는 약속이다. 그 약속의 크기가 실제 보유량을 넘는 순간, 비트코인을 맡긴 거래소는 부분지급준비 은행과 같은 구조가 된다. 준비금 증명은 그 약속이 지켜질 수 있는지를 바깥에서 들여다보는 방법이다. 약속을 코인으로 바꾸는 방법은 하나뿐이다. 본인 지갑으로 출금하는 것이다. 그 출금이 블록체인에 기록되는 순간, 증명할 필요가 사라진다.

Read on the full site: https://learn.txid.uk/ko/articles/proof-of-reserves/