카테고리: 기타 🤖
<aside> 💡
이 글은 Team Corn의 Berlin이 작성한 해설입니다. Bitcoin Core의 버전 변천사와 실제로 있었던 취약점·사고를 따라가며 두 가지를 정리합니다. 노드를 왜 유지보수되는 버전으로 운영해야 하는지, 그리고 "구버전을 고수하는 것"이 왜 소프트포크에 대한 찬성·반대 투표가 될 수 없는지입니다. 작성자는 개인적으로 BIP110을 지지하며, 그 관점이 일부 서술에 반영될 수 있음을 밝혀 둡니다. 다만 사실관계와 메커니즘 설명은 진영과 무관하게 검증 가능한 형태로 쓰고자 했습니다. 번외 3과 이어 읽으면 좋습니다.
</aside>
Bitcoin Core는 비트코인 프로토콜 그 자체가 아니라, 프로토콜을 구현한 하나의 소프트웨어다. 그리고 모든 소프트웨어가 그렇듯 버그와 함께 살아왔다. 1,840억 BTC가 허공에서 만들어진 적이 있고, 업그레이드가 체인을 두 동강 낸 적이 있고, 코인을 무한 발행할 수 있는 버그가 2년 가까이 잠들어 있던 적이 있으며, 2026년 5월에는 채굴자가 원격으로 노드를 크래시시킬 수 있었던 — 조건에 따라 코드 실행 가능성까지 논의된 — 메모리 취약점이 공개됐다. 이 사건들은 하나의 방식으로 수습됐다. 빠르게 고치고, 네트워크가 빠르게 고쳐진 버전으로 옮겨가는 것이다.
첫 번째 결론은 여기서 나온다. 유지보수가 끝난(EOL) 버전으로 노드를 돌리는 것은 중립적인 선택이 아니다. 2024년부터 Bitcoin Core는 취약점을 "영향받는 마지막 버전이 EOL이 된 뒤" 문서로 공개하는 정책을 운영한다. 오늘 기준으로 28.4 이하 버전에는 채굴자가 원격으로 촉발할 수 있는 use-after-free의 상세가 이미 공개되어 있다. 구버전을 돌린다는 것은, 공격 방법이 문서화된 소프트웨어를 인터넷에 세워 두는 일이다.
두 번째 결론은 자주 오해되는 지점이다. "새 버전이 마음에 들지 않아 구버전에 머무르는 것"은 소프트포크에 대한 반대표가 아니다. 소프트포크는 하위 호환이라 구버전 노드는 새 규칙을 거부할 수단 자체가 없고, 새 규칙 아래에서 코인이 도난당해도 알아차리지 못한다. 활성화를 결정하는 집계에는 비채굴 노드의 버전 분포가 들어갈 자리가 없으며, 정책(relay policy) 변경은 애초에 합의 규칙이 아니라서 버전 보이콧으로 막을 수 있는 대상도 아니다. 규칙에 대한 실제 의사표시는 관성이 아니라, 다른 규칙을 시행하는 소프트웨어를 스스로 선택해 돌리는 것이다.
Bitcoin Core는 사토시가 2009년에 배포한 최초 클라이언트의 직계 후손이자, 비트코인 합의 규칙의 사실상 표준 구현이다. 전 세계 노드의 다수가 Core 또는 Core에서 파생된 소프트웨어(대표적으로 Bitcoin Knots)를 돌린다.
하지만 Core는 프로토콜 그 자체가 아니다. 이 구분이 글 전체의 뼈대다.
버전을 올리는 일은 대부분 세 번째 층 — 구현 — 을 고치는 일이다. 그런데 구현의 버그는 종종 첫 번째 층 — 합의 — 을 위협했고, 때로는 사용자의 지갑을 직접 위협했다. 그 역사를 순서대로 보자.
주요 마일스톤만 추리면 이렇다.