The Byzantine Generals’ Problem
비트코인(Bitcoin)이란 단어는 마법의 단어 같다.
국가의 통제로부터 자유로운 화폐, 디지털 골드로서 완전한 가치의 저장소, 탈중앙화 된 금융서비스 등 수많은 문제를 해결해 줄 것만 같은 놀라운 기술로 여겨진다. 그렇지만 이에 관해서는 일반인, 비트코인 투자자, 블록체인 개발자, 사업가, 중앙은행, 정부기관 등 입장에 따라 해석이 다른 상황이다. 심지어 전혀 상반된 반대의 목소리를 내기도 한다.
과연 비트코인이 기술적으로 이견 없이 진정 해결한 문제는 무엇인지에 대해 살펴보고자 한다. 이에 앞서 우리에게 친숙함을 넘어, 이젠 결코 없어서는 안 될 존재가 되어버린 인터넷에 대해 이야기를 시작해보자.
인터넷(Internet)이 해결한 문제는 전 세계에 걸쳐 물리적 위치가 "서로 다른 컴퓨터"끼리 "데이터를 송수신" 하는 방법이다. 이를 위해 인터넷은 현재 TCP/IP라는 단일하고 고정된 통신 프로토콜(Protocol)을 사용한다. 이런 인터넷을 총괄적으로 관리하는 조직은 없다. 그럼에도 불구하고, 특정 컴퓨터들에 이상이 생겨도, 이는 전체 네트워크에 영향을 주지 않게끔 설계되어 있다. 이러한 TCP/IP는 1973년 정립되었다. 최근까지도 인터넷 속도가 더욱 빨라지고, 주고받는 데이터의 양이 폭발적으로 늘어나고, 네트워크 접속 방식이 쉽게 무선으로도 가능해졌으나, TCP/IP 프로토콜은 80년대 이후 큰 변경 없이 그대로 사용 중이다. 참고로 우리나라는 1982년 전 세계에서 미국에 이어 두 번째로 인터넷 연결에 성공하였다.
인터넷과 관련된 기술발전은 끊임없이 이루어졌으나, 이는 TCP/IP 프로토콜을 전제로 한, Application Layer Protocol 및 이를 이용하는 기술에서의 변화와 발전이었다. TCP/IP 프로토콜은 변화 없이 고정되어 있었다. 이 덕분에, 온갖 인터넷 서비스 회사들이 등장하여, 더 나은 서비스를 제공하기 위해 수많은 자본과 인력을 투입하여 발전시켜 온 것이다. 만일 TCP/IP 프로토톨이 주기적으로 업데이트가 되었고, 그에 따라 기존의 투입된 자본, 기술, 인력 등의 비용이 한순간에 쓸모 없어질 수도 있는 구조였다면, 결코 이렇게 짧은 시간 안에 인터넷 서비스의 발전이 이루어지지 못했을 것이다.
인터넷 네트워크에서 해결이 안 되던 문제가 "비잔틴 장군 문제"이다. 데이터를 송수신하는 방법은 해결되었으나, 상대 컴퓨터에 대한 신뢰 없이도 그 데이터의 무결성, 정합성이 보장될 방법은 존재하지 않았다. 서로 믿을 수 없는 컴퓨터들끼리 여러 데이터의 상태 값을 공유할 수 있는 방법에 대한 문제가 바로 비잔틴 장군 문제이다. 이를 해결한 방법은 아니지만, 데이터를 공유하는 꽤 괜찮은 방법은 믿을 수 있는 컴퓨터에 의존하는 것이다. 대표적으로는 "클라이언트 서버" 모델(client–server model)이 있다. 현재도 가장 널리 사용되는 효율적인 방식 중 하나이다.
수십 년간 비잔틴 장군 문제를 해결하기 위한 수많은 시도들이 있어 왔다. 지금도 수많은 방식들이 경쟁하고 있는 상태이다. 컴퓨터들이 돌아가면서 투표를 하게 끔 하기도 하고, 특정 조건을 충족하지 못하면 페널티를 주는 방식도 등장했다. 물론 데이터의 상태 값을 끊임없이 공유해야 하기 때문에 이에 대한 수많은 인센티브 방식도 있다.
이와 같이 제시된 수많은 해결 방법 중, 어떠한 방식이 가장 좋은지에 대한 선택을 어떻게 할 수 있을지에 대한 고민이 필요하다. 이는 앞서 TCP/IP가 선택되었던 것과 동일한 방식으로 접근해 볼 수 있다. 비잔틴 장군 문제의 핵심은 서로 믿을 수 없는 컴퓨터가 데이터의 상태 값을 공유할 수 있도록 하는 것(무신뢰성)이다. 그렇다면, 그 공유할 수 있는 데이터의 크기가 급격히 증가해도 처리가 가능한지 여부(확장성), 네트워크 속도가 빨라졌던 것처럼 데이터를 공유하는데 처리되는 시간이 줄어들 수 있는지 여부(즉시성), 그 외에도 기존의 데이터 상태 값의 변화가 손상되지 않고 기록되는지 여부(보안성) 등을 따져 볼 수 있다. 무엇보다 데이터 저장과 관련해서는 비용이 지속적으로 들어가는 행위이기 때문에, 이것이 특정 주체 없이도 지속 가능할 수 있는지 여부(지속가능성)도 중요하다. 그리고 더 이상의 프로토콜 변화가 없을지(안정성)도 중요한 고려 요소이다.
앞선 글에서 소개했듯이, 사토시는 1억 명의 사용자들이 하루 1억 건 가량의 트랜잭션을 발생시켜도, 이를 즉시(수초 이내) 사용함에 문제가 없는 방식으로 애초부터 비트코인 프로토콜을 설계해 두었다.(확장성, 즉시성) 비트코인 프로토콜에 대해서는 고정(set in stone) 되어야 한다는 점에서도 명시적으로 언급하였다.(안정성) 그리고, 비트코인 네트워크 상의 모든 데이터는 그 자체로 아주 신뢰도 높은 데이터이므로, 누군가를 신뢰하지 않고 사용이 가능하다.(무신뢰성)
비트코인의 제대로 된 이해를 위해서는, 단순히 토큰의 이동을 기록하는 장부로써 만이 아닌, 그 어떤 데이터라도 기록할 수 있는 데이터베이스로 이해하는 편이 훨씬 도움이 된다. 곰곰이 생각해보면, 장부든 데이터베이스든 데이터를 기록함에 있어 큰 차이는 없다는 사실을 쉽게 알아차릴 수 있다.
백종찬 님의 아래 글 내용처럼, 사토시는 한 트랜잭션(좀 더 정확히는 한 트랜잭션 안의 개별 Output. 하나의 트랜잭션에는 수많은 Output이 존재 가능하다.)에 약 4.3GB 데이터를 기록하는 OP_CODE도 처음부터 마련해 두었었다. 이 정도 수준의 확장성을 처음부터 고려했었다는 증거이다.
사실 이를 이해해야, 비트코인 네트워크의 지속가능성에 대한 명확한 이해가 가능해진다.
현재 비트코인 네트워크의 유지는 블록보상에 대부분을 의존한다. 그렇지만 비트코인의 채굴량은 이미 정해져 있고, 블록보상은 4년에 한 번씩 반감기를 거치며 절반씩 감소하기 때문에, 결국 블록보상은 0으로 수렴한다. 블록보상은 마이너들의 인센티브 중 하나인데, 이것이 사라지면 마이너들에게 남은 인센티브는 개별 트랜잭션의 수수료의 합뿐이다. 이 경우, 다수의 사용자들이 다양한 종류의 데이터를 비트코인 네트워크에 기록하고자 하는 수요가 많을수록, 마이너의 인센티브는 충분해진다. 즉, 수많은 데이터를 빠르게 기록해주고 수수료를 마이너가 벌 수 있도록 하는 것만이 비트코인 네트워크가 생존해 나갈 수 있는 유일한 방안이다.
비트코인 네트워크 상 데이터를 지키는 이들(보안성)은 마이너이지 사용자가 아니다. 다시 말해, 마이너의 인센티브 존재만이 마이너의 존재를 가능케 해주며, 마이너가 존재해야 비트코인 네트워크는 존재할 수 있다.
확장성, 즉시성, 안정성, 보안성, 무신뢰성, 무허가성 그리고 지속가능성 등의 많은 기준 모두를 문제없이 해결한 방식은 비트코인이 유일하다. 대부분 블록체인 합의 알고리즘 프로토콜은 완성된 상태가 아니기 때문에 "안정성" 문제가 존재한다. 그리고 데이터의 상태를 충분히 저장하고 빠르게 공유할 수 있는지에 대한 "확장성", "즉시성"에도 큰 제약사항들이 많다. 혹은, 특정 컴퓨터(노드)를 신뢰해야만 하는 문제도 있다. 이 경우 비잔틴 장군 문제를 해결했다고는 볼 수 없다. 따라서 이러한 측면에서 보았을 때, 사토시가 처음 제안했던 비트코인 프로토콜만이 온전히 비잔틴 장군 문제를 해결한 방식으로 판단된다.
(참고)
비트코인 프로토콜이 만들어지기까지 수많은 선행 기술의 연구들이 존재했다. 그 역사는 80년대까지 거슬러 올라간다.
비트코인에서 사용한 합의 알고리즘은 Proof of Work(PoW)이다. 이 방식은 신호이론(Signalling Theory)을 기반으로 한다. 비트코인의 블록체인에 포크가 발생하여 여러 체인이 생긴 경우, 가장 긴 체인을 올바른 체인으로 선택한다. 이는 그것이 가장 비싼 신호(가장 많은 해시파워가 사용)이기 때문이다. 얼핏 보면 이는 자원의 낭비라고도 여겨진다. 그렇지만 이것은 신호이론을 이용하여 더 효율적으로 데이터 정합성, 무결성을 보장하는 방식이다.
신호이론에 따르면 동물들은 물론, 사람들도 전략적으로 수많은 신호를 주변에 보내고, 이를 통해 더 유리한 생존 방법을 탐색한다. 이것은 모두에게 더 유리한 방식이므로 지속 가능하게 작동할 수 있다. 지속 가능하지 않은 신호들은 이미 사라졌을 것이다. 예를 들어, 공작새의 화려한 꼬리는 생존에 불필요해 보인다. 그렇지만 이는 그만큼 천적에게 눈에 잘 띄지만 살아남을 수 있는 우월한 수컷임을 증명하는 신호이다. 포식자를 마주친 가젤이 높이뛰기를 하는 것은 포식자보다 빠르다는 자신감을 표현함으로써 다른 사냥감을 찾는 것이 나을 것이라고 보내는 신호이다. 이 또한 불필요한 에너지 낭비라 여길 수도 있으나, 가젤의 세계에서 오랫동안 잘 작동해온 방식이다. 인간세상에서 사람들이 더 높은 학력을 취득하려 하고, 또 고용주는 피고용인의 학력을 능력에 대한 신호로 받아들여 왔다. 그 외에도, 고급차와 좋은 집이 무엇을 상징하고 어떤 신호를 보내는 것인지 우리는 이미 잘 알고 있다.
비대칭적으로 정보를 보유한 상황에서, 가장 비싼 신호를 믿을만한 정보로 선택하는 과정은 결과적으로는 다른 방식들에 비해 적은 비용으로 정보를 온전히 공유할 수 있는 방식이라는 것이, 신호이론의 핵심이다. 그리고 이러한 방식을 이용하여 "비잔틴 장군 문제"의 해결한 것이 바로 "비트코인"이다. 그리고 놀랍게도 비트코인은 아무런 문제 없이 10년 이상 잘 작동해 오고 있다.
다른 더 좋은 비잔틴 장군 문제 해결 방식은 없을까? 이 부분에 대해서 더 좋은 방식이 존재할 수 있다 혹은 없다가 수학적인 방식으로 증명되었단 얘기를 아직까지 들어보진 못했다. 물론, 더 나은 방식이라고 주장하는 수많은 블록체인들이 존재하나, 실질적으로 온전히(위에서 언급한 주요 요소들이 해결되어) 작동하는 블록체인을 본 적은 없다. 그리고 무엇보다, 2009년 초부터 지금까지 실제 정상 작동해온 "시간"이란 경험치는, 어떤 방법을 써도 따라잡을 수 없는 한계로 존재한다.
우리는 바퀴를 재발명하려거나, 잘 작동하고 있는 TCP/IP 프로토콜을 바꾸려 하지 않는다. 같은 이유로, 확장성 문제까지 고려해 잘 작동하고 있는 비잔틴 장군 문제 해결 방식을 놓아둔 채, 다른 프로토콜을 찾기 위해 시간과 노력을 쓰는 것은 에너지 낭비행위가 아닐까 생각한다. 이미 비트코인 프로토콜은 확정되어(set in stone) 잘 작동해왔고 앞으로도 별다른 수정사항 없이 잘 작동될 것이다. 이제 그 위에 새로운 애플리케이션 레이어를 추가하고, 더 큰 부가가치를 창출하는 서비스를 개발하는 것에 더 많은 에너지를 쏟는 것이 가장 현명하게 미래를 준비하는 방법이 될 것임을 전하고 싶다.