역대 최악의 비트코인 버그, 누구의 책임인가

등록 : 2018년 10월 11일 11:20 | 수정 : 2018년 10월 11일 10:46

영화 ‘범죄의 도시’의 한 장면. 사진=한겨레 자료사진

 

지난달 비트코인에서 발견된 역대 가장 심각한 버그는 모든 비트코인 커뮤니티를 충격에 빠트렸다. 전체 발행량이 2,100만 개로 엄격하게 제한된 비트코인을 마구 찍어내 비트코인의 시스템을 송두리째 뒤흔들 수도 있었던 버그가 무려 2년 동안이나 비트코인 코드에 숨어 있었다는 무시무시한 사실에 비트코인 커뮤니티는 경악을 금치 못했다. 급하게 패치를 진행해 버그를 수정했고, 다행히 실제로 계획에 없는 비트코인이 마구 발행되는 사태가 벌어지지는 않았지만, 개발자들은 앞으로 또 이런 심각한 버그가 코드에 숨어드는지 모르는 상황을 어떻게 해야 예방할 수 있을지 진지한 질문을 던지기 시작했다.

비트코인 코어(Bitcoin Core) 개발자들은 당장 비트코인에 앞으로 이번과 비슷한 버그가 또 발생했을 때 어떻게 하면 버그를 더 쉽게 찾아내 제거하며 아예 버그가 자리 잡지 못하게 예방할 수 있는지를 두고 열띤 토론을 벌이고 있다.

우리가 간과하지 말고 짚고 넘어가야 할 질문은 몇 가지 더 있다.

블록체인을 지키려는 선의의 개발자 대신 버그를 악용해 이득을 취하려는 사람이 버그를 먼저 발견했다면 어떻게 됐을까?

지금 이 순간에도 발견되지 않고 비트코인 코드 안에 숨어 있는 버그가 더 있다면?

비트코인 관련 레딧 게시판을 운영하는 데이모스(Theymos)는 이번 버그가 두말할 나위 없이 아주 심각한 버그였다며, 비트코인 커뮤니티에 앞으로 영원히 이번 버그를 잊지 말고 경각심을 지녀야 한다고 강조했다.

비트코인 코어의 모든 정책과 방침이 지금과 똑같이 유지되는 한 이번과 비슷한 버그는 언제든지 또 일어날 수밖에 없다. 그때는 이번처럼 운이 좋아 막대한 피해가 일어나는 일은 피하라는 법도 없다.

전 세계 개발자들의 자발적인 참여로 운영되는 비트코인 코어는 실제로 그 어느 때보다 더 철저하게 전체 코드를 검사하고 있다. 이미 오픈소스 코드를 실행하고 검사하며 개선하는 작업에 참여하는 개발자는 그 어느 때보다 많은 상황이고, 코드 베이스의 20% 정도가 기존 코드가 문제없는지 검사하고 확인하는 시험용 코드라는 분석도 있다.

 

비트코인 커뮤니티도 책임이 있다?

개발자들은 비트코인 블록체인이 원활하고 안전하게 운영되려면 해야 할 일이 더 많다고 입을 모은다. 데이모스는 우선 이번처럼 심각하지만 찾기 어려운 버그를 빠트리지 않고 잡아내는 데 필요한 훨씬 더 정교한 검사 작업을 수시로, 꾸준히 진행해야 한다고 제안했다.

“현재 비트코인 코어 개발에 아무런 기여도 하지 않는 회사들이 너무 많다.”

비트코인 코어의 개발자 제임스 힐라드도 개발자들이 실질적인 테스트의 양과 질을 모두 높일 수 있다며 데이모스와 거의 같은 말을 했다. 물론 실제로 검사를 더 정교하게 하는 건 말처럼 쉬운 일은 아니다. 비트코인 코어의 또 다른 개발자 그레그 맥스웰은 데이모스의 지적에 동의하면서도 어떤 테스트를 어떻게 하느냐가 더 중요하다고 말했다.

“코드를 검사하고 시험하는 작업에 더 많은 품을 들이는 일은 오랫동안 (비트코인 코어) 개발자들이 노력해 왔지만, 생각만큼 잘 안 되었던 부분이다. 우선 어떻게 테스트하는 것이 최선인지 명확한 정답이 없다. 시스템을 설계하는 일만큼이나 어렵고 복잡한 일이다. 코드 전체를 아우르는 시야와 세밀한 부분을 놓치지 않는 꼼꼼함을 겸비한 채 테스트를 이끌 수 있는 능력이 있는 사람도 생각보다 정말 찾기 힘들다.”

힐라드도 그런 인재를 찾는 일이 절대 쉽지 않다고 코인데스크에 말했다.

“비트코인 개발 과정에서 가장 심한 병목 현상이 일어나는 부분이 바로 코드를 검사하고 시험하는 단계다. 그런데도 코드를 제대로 검사하고 시험해 검증할 수 있는 인력은 부족한 실정이다.”

그러나 이 문제의 책임을 전부 개발자들에게만 돌려서는 안 된다고 말하는 사람들이 많다. 비트코인은 무엇보다 탈중앙화 가치를 구현한 프로젝트인 만큼 오류를 잡아내고 고치는 책임도 네트워크에 참여한 모든 이들에게 다 있다는 뜻이다. 시노비몽키(Shinobimonkey)라는 가명을 쓰는 한 비트코인 지지자는 코인데스크에 이렇게 말했다.

“사람들이 특정 개발자를 콕 집어 비난하며 문제의 책임을 개발자들에게만 지우려 하는 건 정말 잘못됐다고 생각한다. 비트코인은 모든 프로젝트가 기본적으로 공개돼 있다. 회원으로 가입한 이들만 어떤 권한을 받는 것도 아니다. 코드를 들여다보고 문제가 있으면 이를 알리고 고쳐나가야 하는 책임은 개발자건 일반 이용자건 다 똑같다고 봐야 한다.”

비트코인 코어의 관리자 블라드미르 반더란의 생각도 크게 다르지 않다. 그는 트윗에 이렇게 남겼다.

“코드에 버그가 있었다는 건 분명 심각한 문제다. 우리가 정말 잘못한 게 맞긴 맞다. 그런데 여기서 말하는 ‘우리’가 과연 누구를 지칭하는 건지 생각해볼 필요가 있다. 책임이 있는 ‘우리’의 범위는 굉장히 넓다. 전체 커뮤니티가 네트워크를 꼼꼼히 살펴보고 안전한 블록체인 네트워크를 구축하는 데 주어진 역할을 다하지 않았기 때문에 문제가 발생한 것이다.”

체인코드(Chaincode)의 엔지니어 존 뉴버리도 동의했다. 자신이 버그가 든 코드를 짜지 않았다고 해서 아무런 책임이 없다고 말할 수 없다는 것이다. 그는 비트코인 개발자라면 전체 코드를 더 꼼꼼히 살펴보지 못한 데 책임감을 느껴야 한다고 말했다. 심지어 그는 사실 문제의 코드가 어딘가 이상해 보였지만, 다른 개발자들이 어련히 검사했겠지 하는 안일한 생각으로 넘겼다고 털어놓았다.

“나 스스로 문제가 있다고 생각했으면 코드를 뜯어봤어야 했다. 나보다 더 똑똑하고 유능한 사람들이 문제가 있다면 벌써 발견했으리라 생각했다. 내가 아니어도 누군가 할 일을 했으리라고 생각했다.”

 

복수의 비트코인 코어를 운영한다면?

그래도 버그의 위험은 완전히 사라지지 않을 것이다. 블록스트림(Blockstream)의 COO 샘슨 모우는 트위터에 이렇게 썼다.

“비트코인이 생긴 이래 버그는 늘 있었다. 지금도 그렇고 앞으로도 그럴 것이다. 비트코인도 결국 소프트웨어다. 완전무결한 소프트웨어란 있을 수 없다.”

문제를 완전히 해결할 수 없다면 차선책으로 피해가 생겼을 때 이를 줄이는 방법을 논의해야 한다. 실제로 그런 논의가 일어나고 있는데, 비트코인 코어를 여러 개로 나누어 운영하자는 제안도 그중 하나다.

현재 비트코인 프로젝트들은 거의 대부분 단 하나의 소프트웨어를 쓰고 있다. 그 소프트웨어는 바로 누구나 다 아는 비트코인 코어다. 전체의 95% 정도가 비트코인 코어를 이용하는 것으로 추정되는데, 일부 비트코인 노드는 프라이버시를 지키는 쪽을 택하고 아예 웬만한 정보를 다 비공개로 해뒀기 때문에 정확한 수치는 알 수 없다.

비트코인 코드를 실행하는 소프트웨어를 여러 개로 나누어 운영하면, 하나가 버그로 오류가 생겨 네트워크가 마비되는 최악의 상황이 오더라도 나머지 노드들은 원활히 돌아가 네트워크는 안전하게 운영될 수 있다는 장점이 있다. 실제로 비트코인 코어 외에 잘 알려지지는 않았지만, 비트코인 노츠(Bitcoin Knots)나 Btcd 등 비트코인 코드를 실행하는 또 다른 운영 소프트웨어가 있다.

게다가 비트코인 말고 다른 암호화폐로 눈을 돌리면 운영 소프트웨어가 여러 개인 경우가 많다. 당장 이더리움만 해도 고이더리움(Geth)과 패리티(Parity)가 소프트웨어를 양분하고 있으며, 어느 것을 선택해도 이더리움 블록체인 플랫폼에서 거래하는 데 제약이 없다.

그러나 소프트웨어를 여러 개 운영하면 이번에 일어난 버그보다도 훨씬 심각한 문제가 생길 수 있다고 경고하는 목소리도 있다. 비트코인 코어 개발자 앤드루 초우는 장단점을 꼼꼼하게 살펴봐야 하는 문제라며 신중한 접근을 주문했다.

“사람들이 서로 다른 소프트웨어를 이용해 비트코인을 이용한다는 건 그만큼 해커들이 네트워크를 분리해 공격하기 쉬워진다는 치명적인 약점이 생긴다.”

개발자들 사이에서도 대책에 명확한 합의가 이뤄지지 않는 이유도 모든 대책에 장점이 있는 만큼 단점도 있기 때문이다. 데이모스는 상황을 이렇게 정리했다.

“이런 버그가 절대로 재발하지 않는 완벽한 예방책이 있다고는 생각하지 않는다. 그러나 적어도 이번에 버그로 인한 실질적인 피해가 별로 없었다고 해서 다음에도 괜찮으리라 생각하며 교훈을 새기지 않으려는 안일한 태도만큼은 버려야 한다.”

번역: 뉴스페퍼민트

This story originally appeared on CoinDesk, the global leader in blockchain news and publisher of the Bitcoin Price Index. view BPI.