2010년 비트코인 1,840억 개가 생성된 날: 사토시의 긴급 하드포크
총발행량 2,100만 개 제한이 무너진 비트코인 역사상 최대의 위기. 코드 오버플로우로 단 한 블록에서 1,844억 개의 BTC가 발행되자, 사토시 나카모토와 개빈 안드레센이 5시간 만에 단행한 전광석화의 롤백 작전.

3줄 퀵 브리핑
- 발단 / 역설2010년 8월 15일, 비트코인 74,638번째 블록에서 정수 오버플로우(Integer Overflow) 취약점을 악용해 1,844억 6,744만 BTC가 한 번에 생성되는 초유의 사태가 발생했습니다.
- 결정적 사건사토시 나카모토는 버그 발견 즉시 비트코인토크(Bitcointalk) 포럼을 통해 채굴자들에게 구버전 클라이언트 정지를 호소하고 5시간 만에 긴급 패치(v0.3.10)를 배포했습니다.
- 역사적 결말네트워크는 오염된 체인을 버리고 정상 체인으로 하드포크 롤백하여 위기를 극복했으며, 이 사건은 비트코인 코드가 지닌 강인한 회복탄력성의 상징이 되었습니다.
사건의 흐름 한눈에 보기
알려지지 않은 해커가 두 개의 주소로 각각 922억 개의 BTC를 전송하는 트랜잭션을 포함한 블록이 채굴됩니다.
포럼 유저 'jgarzik'이 이상 거래를 포착하고 '1840억 BTC가 생성되었다'는 긴급 글을 게시합니다.
사토시 나카모토가 버그를 수정한 비트코인 v0.3.10 코드를 공개하고 채굴자들에게 즉시 업그레이드를 요청합니다.
새로운 체인의 길이가 오염된 체인을 앞지르며 1,844억 개의 유령 비트코인이 역사에서 영구 삭제됩니다.
1. 74,638번째 블록: 나타난 1,844억 개의 유령 코인
2010년 8월 15일 일요일 저녁, 비트코인 네트워크의 블록체인 탐색기를 모니터링하던 개발자 제프 가직(Jeff Garzik)은 자신의 눈을 의심했습니다. 방금 채굴된 74,638번째 블록에 상식적으로 불가능한 트랜잭션이 기록되어 있었기 때문입니다.
트랜잭션의 입력값은 0.5 BTC에 불과했지만, 출력값에는 두 개의 서로 다른 지갑 주소로 각각 92,233,720,368.54 BTC가 지급되어 있었습니다. 합산하면 총 184,467,440,737 BTC였습니다.
비트코인의 절대 불변의 법칙인 '총발행량 2,100만 개'가 단 한 번의 해킹 트랜잭션으로 산산조각 난 순간이었습니다. 가직은 즉시 비트코인토크 포럼에 '74638번 블록에서 이상 현상 발생'이라는 긴급 게시글을 올렸습니다.
"이것은 명백한 공격입니다. 누군가가 무에서 1,844억 개의 비트코인을 만들어냈습니다. 시스템 전체가 붕괴할 위기입니다."— 개발자 제프 가직
2. C++ 정수 오버플로우: 음수가 빚어낸 기적의 사기
사토시 나카모토와 핵심 개발자 개빈 안드레센(Gavin Andresen)이 즉각 코드 분석에 착수했습니다. 원인은 C++ 프로그래밍 언어의 고전적인 취약점인 '정수 오버플로우(Integer Overflow)'였습니다.
비트코인 클라이언트는 트랜잭션 출력값의 합이 입력값보다 작은지만 검사하고 있었습니다. 해커는 64비트 정수가 가질 수 있는 최대 한계치에 가까운 거대한 두 숫자를 더해 합계가 음수(-0.5)가 되도록 조작했습니다. 코드는 '출력값의 합(-0.5)이 입력값(0.5)보다 작다'고 판단하여 정상 거래로 승인해버린 것입니다.
"사토시는 침착했습니다. 그는 당황하지 않고 단 몇 시간 만에 검증 로직에 출력값의 합이 2,100만 BTC를 초과하거나 오버플로우되는지 확인하는 패치 코드를 작성했습니다."
3. 5시간 만의 전격 작전: v0.3.10 배포와 채굴자 총동원
버그 발견 불과 5시간 만인 밤 9시, 사토시 나카모토는 취약점을 수정한 비트코인 v0.3.10 버전을 긴급 릴리스했습니다.
하지만 소프트웨어 배포만으로는 충분하지 않았습니다. 당시 채굴자들은 여전히 오염된 74,638번 블록 위에 새로운 블록들을 계속 쌓아 올리고 있었기 때문입니다.
"모든 채굴자는 즉시 채굴을 중단하고 새 버전으로 업그레이드하십시오. 우리는 74,637번 블록으로 돌아가 정상적인 새로운 체인을 만들어야 합니다. 새 체인이 오염된 체인보다 길어져야 공격이 무효화됩니다."— 사토시 나카모토의 포럼 긴급 공지
전 세계의 초기 비트코인 채굴자들이 하나로 뭉쳤습니다. 그들은 구버전 클라이언트를 종료하고 사토시의 새 버전을 실행하여 오염되지 않은 74,637번 블록에서부터 다시 블록을 채굴하기 시작했습니다.
4. 19블록 만의 체인 재구성(Reorganization)
패치 배포 후 몇 시간 동안 숨 막히는 해시레이트 전쟁이 벌어졌습니다. 오염된 체인과 정상 패치 체인이 서로 더 긴 체인이 되기 위해 경쟁했습니다.
마침내 8월 16일 새벽, 정상 패치 체인의 길이가 오염된 체인을 추월했습니다. 비트코인의 '가장 긴 체인 규칙(Longest Chain Rule)'에 따라 네트워크의 모든 노드가 오염된 19개의 블록을 자동으로 버리고 정상 체인을 정통 블록체인으로 채택했습니다.
1,844억 개의 가짜 비트코인은 블록체인 역사 속에서 흔적도 없이 증발했습니다. 해커는 단 1원의 이득도 취하지 못했습니다.
5. 불사조 비트코인: 결함이 시스템을 강하게 만든다
2010년 가치 오버플로우 사건은 비트코인이 겪은 역사상 가장 위험했던 기술적 위기이자, 동시에 가장 눈부신 회복의 순간이었습니다.
나심 탈레브의 표현처럼, 비트코인은 충격을 받을수록 더 단단해지는 '안티프래질(Antifragile)'의 전형을 보여주었습니다. 만약 이 버그가 비트코인 시가총액이 수백조 원에 달한 뒤에 발견되었다면 블록체인 혁명 전체가 좌초했을지도 모릅니다.
"우리는 공격을 받았고, 5시간 만에 수천 명의 합의로 이를 격퇴했습니다. 블록체인의 안전은 코드뿐만 아니라 그 시스템을 지키려는 인간들의 의지에서 나옵니다."
이 위기 이후 비트코인 코어는 엄격한 수학적 검증과 테스트 스위트를 도입하며 역사상 가장 안전한 결제 프로토콜로 자리 잡게 되었습니다.
이 사건이 남긴 핵심 교훈 (Key Takeaways)
정수 오버플로우의 치명성: 수학적 한계의 검증
C++의 64비트 정수 연산에서 합산 값이 최대치를 초과해 음수로 뒤집어지는 취약점이 블록체인의 기본 법칙을 무력화할 수 있음을 입증했습니다.
사회적 합의(Social Consensus)의 위력
코드에 치명적 결함이 발생했을 때 네트워크를 구원한 것은 다름 아닌 채굴자와 개발자들의 즉각적인 사회적 합의였습니다.
초기 위기 극복이 낳은 강력한 안티프래질(Antifragile)
이 버그를 조기에 겪고 신속히 해결한 덕분에 비트코인은 이후 수십조 원의 자산으로 성장하면서도 화폐 공급량 오류를 다시는 겪지 않았습니다.
출처 및 참고 자료
- 출처 1: Bitcointalk Archive: Alert: 184 Billion Bitcoin generated in Block 74638Bitcointalk · 2010-08-15
- 출처 2: Bitcoin Wiki: Value Overflow Incident HistoryBitcoin Wiki · 2010-08-16
- 출처 3: CoinDesk: The Day a Bug Created 184 Billion BitcoinsCoinDesk · 2014-08-15