시리즈 1편부터 정주행하기 -> [쉽게 배우는 비트코인 작동원리]
공통장부의 필요성
친구들과의 단체 여행 중 지출 내역을 기록하기 위해 작은 수첩을 챙겨갔다고 가정해 보자.
매일 수첩에는 모두가 각자의 지출 내역을 돌아가면서 기록한다.
여행 후 정산 시에 실제로 남아있는 공금의 양과 수첩에 기록된 내용을 바탕으로 계산된 양 사이에 괴리가 있을 수 있다. 누군가 실수로 기입을 하거나 자신이 사용한 금액의 양을 의도적으로 줄여서 적을 수 있기 때문이다. 이 경우 영수증이라는 제 3자의 증명을 통해 수첩의 신뢰성을 검증한다.
모두가 동의할 수 있는 공통장부는 중요하다. 돈을 포함한 공유 기록의 공정성과 신뢰를 보장하는 시스템은 사회를 떠받드는 기둥과도 같다.
현대사회에서는 은행이나 정부와 같은 중앙 집중 시스템과 같이 신뢰할 수 있는 제3자가 다양한 장부를 보관 및 관리 감독한다.
image source: Lendio 하지만 이러한 중앙 의존적 질서에는 치명적인 결함이 존재한다.
중앙 주체가 실수를 하거나 권한을 남용할 경우, 모든 피해는 고스란히 사용자들에게 전달되기 때문이다.
이는 주로 은행의 파산, 국가의 무분별한 금융정책으로 인한 인플레이션으로 소비자들에게 다가온다.
따라서 특정 당사자에게 의존하지 않으면서도 모두가 동의하는 공유 원장(장부)이 필요했다.
2008년 가을, 미국발 금융위기로 인한 잿더미 속에서 Satoshi Nakamoto(사토시 나카모토)라는 필명의 학자는 이 난제를 해결하기 위해 [비트코인: 개인 대 개인 전자 화폐 시스템]이라는 논문으로 출사표를 던졌다.
그리고 여기서 우리의 무신뢰(trustless), 즉 신뢰할 필요가 없는 공통 장부를 향한 여정이 시작된다.
비잔틴 장군 문제
Byzantine Generals Problem(비잔틴 장군 문제)는 신뢰할 수 있는 중앙 주체가 존재하지 않는 상태에서 서로 믿을 수 없는 구성원들 간의 합의의 어려움을 나타낸 게임이론(수학적 사고실험)이다.
여기 Byzantium(비잔티움) 성을 함락시키기 위해 성을 에워싼 4명의 장군들이 있다.
A는 사령관이며, 공격해서 성을 함락시키거나 후퇴 후 다음 기회를 노리기 위해서는 과반수, 즉 3명 이상이 공통된 지시에 합의해야 한다.
또한 각 부대 사이에는 산 또는 강이 있어 지시에 대한 모든 정보는 전령이 전달하는 편지에 의존한다.
만약 이들 중 B가 배신자라는 상황을 가정해 보자.
상황:
1. A가 B, C, D에게 공격 명령을 내렸다.
2. B는 C와 D에게 거짓으로 A가 후퇴 명령을 내렸다고 전달한다.
3. C는 B와 D에게, D는 B와 C에게 처음 받았던 공격 명령을 전달한다.
이 경우 C와 D는 받은 3개의 편지 중 총 2개가 공격을 지시하였으므로 A와 함께 성을 공격하는 데 성공한다.
때로는 사령관이 배신자일 수 있다. 이 경우 다음과 같은 상황이 펼쳐진다.
상황:
1. A가 B, C에게는 공격 명령을, D에게는 후퇴 명령을 내린다.
2. D는 자신이 받은 대로 후퇴 명령을 C와 B에게 보낸다.
3. C는 B와 D에게, D는 B와 C에게 처음 받았던 공격 명령을 전달한다.
결과적으로 B, C, D 모두 받은 3개의 편지 중 총 2개가 공격을 지시하였으므로 A를 빼고 함께 성을 공격하는 데 성공한다.
하지만 만약 2명 이상의 장군이 거짓 정보를 퍼뜨린다면, 이들은 성을 함락시킬 수 없다. 거짓 정보의 양이 장군들이 합의할 수 있는 수준 이상으로 넘쳤기 때문이다.
위 사고실험을 수식화 하면 다음과 같다.
{3 x (배신자의 수)} + 1 = 합의를 위해 필요한 전체 장군의 최소 수
이는 곧 배신자의 수가 전체 중 1/3 미만으로 유지되어야 비잔틴 성을 함락시킬 수 있다는 뜻이다.
분산 시스템에서 생기는 합의의 어려움을 잘 보여준 비잔틴장군 문제는 비트코인을 이해하기에 앞서 꼭 짚고 넘어가야 할 중요한 철학적 토대가 된다.
금과 비잔틴장군 문제의 관계
오랜 세월 동안 사람들은 금과 같이 희소성이 있으며 오랜 기간 보관할 수 있는 물질을 돈으로 사용했다.
금은 누군가 함부로 더 캘 수 없다는 인식을 모두가 공유했기에 금을 보유한다는 사실이 한정된 자원 중 일부를 지니고 있다는 개념과 연결되어 보편적인 공통장부의 역할을 했다. 그렇게 비잔틴장군 문제는 해소되는 것처럼 보였다.
하지만 이러한 인식은 국가와 은행 같은 중앙집권식 기관이 들어서면서 산산조각 나게 된다. 이들은 금화 발행권을 독점한 후 금화의 순도를 떨어뜨려서 세뇨리지를 통해 없던 금을 발행하고, 금 대신 금에 대한 권리 증서를 초과발행 후 유통하면서 금의 신뢰도와 불변성을 추락시켰다.
image source: Lois Bullion 20세기를 지나면서 세계는 금에서 멀어져 점점 달러와 같은 법정화폐를 기반으로 금융 질서를 만들어나갔다.
화폐를 뒷받침하는 가치가 더 이상 금과 같은 희소자산에 명목상으로도 연동되어 있지 않기 때문에 국가들은 자체적인 금융 정책을 통해 통화량을 임의로 조정하고, 인플레이션이라는 숨겨진 세금을 매기기 시작했다.
물론 국가 주도의 통화정책으로 인해 얻을 수 있는 이점도 많지만, 극단적인 상황이 벌어졌을 시 개인의 은행계좌가 동결당하거나 국가의 부채가 천정부지로 치솟는 등 중앙 주체를 신뢰했을 때 벌어지는 참사가 세계 각지에서 일어나고 있다. 따라서 개인들에게는 도망칠 수 있는 도피처가 필요했다.
비트코인이 비잔틴장군 문제를 해결하는 방식
창시자 Satoshi Nakamoto는 비트코인을 통해 비잔틴장군 문제를 풀어내지는 못했다. 하지만 그는 획기적인 아이디어로 비잔틴장군 문제 자체를 우회할 수 있는 장부시스템을 고안해 냈다. 이를 두고 흔히 비트코인은 Byzantine Fault Tolerance(비잔틴 내결함성)을 지녔다고 표현한다.
그는 작업증명이라고 불리는 Proof of Work(PoW) 장부 생성 방식을 통해 비잔티움을 공격하려는 장군들 중 누군가 배신자가 되는 것이 경제적으로 매우 불리하게 만들었다.
image source: Good Audience 사진에 보이는 Block(블록)은 비트코인 장부의 단위이다.
블록 속에는 보이는 것처럼
Block 1(블록 1)
T1: Damian이 George에게 500 BTC 송금
T2: Bernad가 Gerald에게 200 BTC 송금
라는 개별 거래 내역들이 촘촘하게 기록되어 있다.
image source: mempool.space 비트코인은 특이하게도 모든 블록과 그 안에 담긴 거래내역이 모든 참여자들에게 공개된다.
당장 위 사진의 거래만 하더라도 링크를 누르면 다음과 같은 정보를 알 수 있다.
거래 ID: f53d....
포함된 블록: 875907번째 블록
거래 시간: 2024-12-23 01:53:33
거래 내용: bc1q... w8az라는 사람이 bc1q... 64qt라는 사람에게 약 0.01 BTC 송금
블록은 약 10분마다 새로 생성되는데, 블록을 만들기 위해 채굴자라고 불리는 이들은 아주 복잡한 수학 퍼즐을 푼다. 채굴자들이 엄청난 전기를 소모해서 퍼즐을 푼 후 블록을 생성해서 네트워크에 공개하면 시스템에서는 보상으로 비트코인을 준다.
모든 거래내역이 공개되기 때문에 만약 어떤 채굴자가 임의로 조작된 거래내역을 블록 속에 만들어서 네트워크에 올리면 지켜보고 있던 다른 참가자들이 합의를 통해 그 블록을 무효화할 수 있다. 이 경우 채굴자는 전기료만 날린 채 아무런 비트코인도, 장부 조작 이득도 얻지 못한다.
image source: linkedin 만약 악의적인 채굴자가 새 블록이 아니라 과거 블록을 바꿔서 장부를 조작하려면 해당 시점 이후 생긴 모든 블록을 다시 전기료를 지불하면서 채굴을 해야 한다.
모든 블록들은 과거의 블록과 체인처럼 연결되어 있기 때문에 과거의 특정 지점이 끊기면 그 이후 블록들의 연결고리도 전부 끊기기 때문이다.
이를 블록들이 체인으로 연결되어 있다 하여 "블록체인"이라는 이름이 붙여졌으며, 비트코인은 블록체인을 통해 불변성과 중립성을 유지한다.
비트코인은 많은 비용과 에너지를 녹여서 찍어낸 장부이다.
네트워크에는 다양한 길이의 장부가 존재할 수 있지만 가장 길이가 긴 장부가 가장 많은 비용이 들어갔기에 정본(正本)으로 채택된다.
따라서 장부를 만들기 위해 쏟아부은 작업을 증명함을 통해 합의에 이른다 하여 PoW, 즉 작업증명이라는 개념이 탄생하였으며, 이를 통해 탈중앙성을 얻은 비트코인은 비잔틴 장군 문제를 말끔하게 우회할 수 있었다.
다음 포스팅부터는 여기서 압축적으로 서술한 비트코인 기술을 토대로 비트코인의 작동방식을 조금 더 심층적으로 다룰 예정이다.
참고문헌
Kleppmann, Martin. “Distributed Systems 2.2: The Byzantine Generals Problem.” YouTube, YouTube, 29 Oct. 2020, www.youtube.com/watch?v=LoGx_ldRBU0.
Ponteves, Hadelin De, et al. “Byzantine Fault Tolerance.” Blockchain A-Z. 22 Dec. 2024, https://www.udemy.com/course/best-blockchain-az. Accessed 22 Dec. 2024.