부록. 블록체인 기술의 쉬운 이해
책의 서두에서 밝혔듯이 이 책은 독자 여러분들을 비트코인 투자의 정문 앞까지만 내려놓는데에 그칩니다. 따라서 비트코인의 구체적인 매매를 위한 인터넷 사이트 사용법과 같은 시시콜콜한 사항들은 소개하지 않습니다. 비트코인 투자에 관한 이야기는 이쯤하고, 이제 비트코인에 사용되어진 핵심 기술인 “블록체인”에 대해 설명하겠습니다.
앞서 이야기 했듯이 순전히 비트코인 투자만을 위해서라면 이 블록체인 기술에 대한 내용은 알 필요가 전혀 없습니다. 이번 장에 “부록”이란 이름을 붙인 것도 특별히 블록체인 기술 자체에 관심이 있는 분이 아니라면 읽을 필요가 없는 내용이기 때문입니다. 하지만, 비트코인과는 달리 블록체인 기술은 그 기술 자체로서 나름의 가치를 가지고 있고, 많은 분들이 궁금해 하는 부분이기 때문에 한 개의 장을 할애하여 최대한 쉽게 소개해 드립니다.
– 블록체인 기술의 목적은 무엇인가?
블록체인 기술은 “증명 시스템”의 일종입니다. 즉, 블록체인은 무언가를 증명하기 위해 만들어진 기술입니다. 증명의 대상은 무궁무진한데, 어떤 사람의 신분이 될 수도 있고, 어떤 물건의 재고상황이 될 수도 있으며, 상품의 거래내역이 될 수도 있습니다. 마지막처럼 블록체인을 상품의 거래내역을 증명하는데 사용한다면 비트코인과 같은 가상화폐가 되는 것입니다. 여기서 우리는 블록체인 기술이 꼭 가상화폐에만 사용되는 것은 아니라는 것을 알 수 있습니다.
사실, 블록체인 기술의 등장 이전에도 증명 시스템은 존재해 왔습니다. 이러한 기존의 전통적인 증명 시스템과 블록체인 시스템은 무엇이 다른걸까요?
– 블록체인과 전통적인 증명 시스템의 차이
전통적인 증명시스템은 “중앙집권식 증명시스템”입니다. 예를 들어, 어떤 사람의 신분을 증명한다고 가정합시다. 즉, 우리 앞에 서있는 홍길동이란 사람이 진짜 홍길동이 맞다는 것을 증명하는 것입니다. 이를 위해 주민등록증, 여권, 운전면허증, 공무원증등 다양한 신분증들이 사용될 수 있습니다. 이들 각각은 모두 증명과 발급을 담당하는 중앙 기관들이 존재합니다. 주민등록증은 행정안전부, 여권은 외교부처럼 말입니다.
반면 블록체인 시스템은 이 같은 중앙기관이 존재하지 않습니다. 대신 시스템에 참여한 여러 사람들 각자가 평등한 입장에서 증명기관이 되어 증명합니다. 이러한 증명 기록들이 서로 연결되어 방대한 체인(연결망)을 이루게 되는데, 눈치가 빠르신 분이라면 이제 이 기술의 이름이 블록-“체인”인 이유를 알 수 있으실 겁니다.
그렇다면 기존의 중앙집권식 증명시스템 대신 블록체인 시스템을 사용해야만 하는 이유가 뭘까요? 사실 그냥 기존의 방식을 계속 써도 큰 지장은 없습니다. 인류 역사 이래로 수천년동안 줄곧 사용되던 방식이기 때문입니다. 블록체인 시스템으로 대체해야 할 필요성이 정말로 있는건지 약간 애매한 구석이 있는 것도 사실입니다. 그럼 이번엔 질문을 약간 바꿔보도록 하지요.
기존의 중앙집권식 증명시스템과 비교하여 블록체인 시스템이 갖는 장점은 뭘까요?
– 블록체인 시스템의 장점
블록체인 시스템에 중앙집권기관이 없다는 사실과, 증명작업이 평등한 구성원들 사이에 이루어진다는 점에 주목을 해보면 아나키즘(무정부주의)적 사상이 은근하게 느껴집니다. 실제로 사토시 나카모토는 미국의 달러패권주의에 대항하여 비트코인을 개발했다는 이야기도 있습니다. 이 때문에 중앙기관의 횡포와 조작에서 벗어나 평등한 신뢰관계를 실현할 가능성이 있다는 거시적이고 고상한 이유를 블록체인 시스템의 장점으로 들기도 합니다.
좀더 현실적인 장점으로는 외부로부터의 해킹이나 고의적인 부정증명으로부터 안전하다는 것이 있습니다. 예를들어 외교부의 컴퓨터가 해킹을 당하여 허위의 여권 1000개가 발급되었다고 가정해 봅시다. 또는 외교부 직원이 돈을 받고 엉터리 여권 1000개가 발급되었다고 가정해도 좋습니다. 이 경우 대한민국 정부가 발행한 모든 여권의 신뢰성은 한순간에 무너지게 됩니다. 해외 각국은 더 이상 대한민국 여권은 믿을 수가 없게 되어 한국인의 입국을 허용하지 않을지도 모릅니다. 이처럼 기존의 중앙집권식 증명 시스템은 증명을 담당하는 기관의 신뢰성이 어떤 이유에서든 무너지면 그동안의 모든 증명결과가 전부 부정된다는 약점을 가집니다.
반면에 블록체인 시스템은 중앙기관 자체가 존재하지 않으므로 이 같은 약점이 이론적으로는 존재하지 않습니다. 해킹을 하기 위해서는 모든 구성원이 가지고 있는 증명과 관련된 정보를 거의 실시간으로 동시에 조작을 해야 하는데 현재의 컴퓨터 성능으로는 매우 어려운 일입니다. 아울러 특정인이 증명작업을 독점하는 것이 아니므로, 고의적인 허위 입증의 문제도 일어나기 힘듭니다.
– 블록체인 시스템의 구동원리
이제 본론으로 들어가 블록체인 기술 자체의 구동 과정에 대해 살펴보겠습니다. 사실 이 기술에 대한 모든 부분을 일반인이 완벽히 이해하는 것은 매우 어려운 일입니다. 이 책에서는 일반인들을 위한 “교양”수준에서 최대한 쉽고 지루하지 않게 이해한다는 목적에 맞추어 설명하겠습니다. 이를 위해 지금부터는 블록체인 시스템을 단계적(Step-by-Step)으로 직접 만들어 보는 기회를 갖도록 하겠습니다.
먼저 블록체인도 여러분이 즐기는 게임이나 인터넷을 할 때 쓰는 웹브라우저 프로그램과 같이 컴퓨터안에서 작동되는 프로그램의 일종이라는 것을 알아야 합니다. 따라서 이 시스템은 프로그래밍 과정을 통해 만들어 집니다. 즉, 추상적인 아이디어를 프로그래밍 코드로 바꾸는 소위 “코딩(coding)”이라는 작업을 통해 이루어 집니다.
예를 들어 어떤 수학 계산을 하는 프로그램을 만들기 위해 다음과 같은 아이디어를 생각해 냈다고 가정합시다.
이러한 순서도로 그린 아이디어는 컴퓨터가 알아먹을 수가 없으니, 코드로 구현해줍니다. 다음과 같이 말이죠.
N = input()
M = 1
F = 1
while true :
F = F * M
If M == N
print F
break
else
M=M+1
위 그림과 코드의 내용은 전혀 중요하지 않습니다. 아이디어를 코드로 바꾸어 컴퓨터에 입력해준다는 개념만 알면 충분합니다. 이 책은 프로그래머를 위한 책이 아니므로 코드화 시키는 것은 제외하고, 블록체인 시스템을 만드는 아이디어를 차례대로 구상하는 작업만 하겠습니다. 각 단계를 이해하면 자연스럽게 전체 블록체인 시스템의 구동원리를 이해할 수 있을 것입니다. 먼저 어떤 종류의 시스템을 만들지를 정해야 하는데, 우리는 이 책의 주제인 비트코인 가상화폐 시스템을 만들 것입니다. 먼저 블록 한 개를 만든 후 이 블록을 두개의 구간으로 나눕니다.
여기서 윗 구간은 머리, 아래부분을 몸통이라 이름 지읍시다. 몸통에는 비트코인의 거래 내역이 저장됩니다. 즉, 일종의 거래 장부와 같은 역할을 하게 됩니다.
이제 실제 비트코인 거래가 이루어졌다고 가정합시다. 철수가 영희에게 1개의 비트코인을 송금합니다. 이 거래내역을 위에서 만든 블록의 몸통에 기록합니다.
철수가 영희에게 비트코인 1개 송금함. |
그리고 이러한 블록이 일정시간 마다 새롭게 하나씩 생성되게 만들겠습니다. 실제 비트코인 시스템의 경우 약 10분에 1개의 블록이 생성됩니다.
위와 같이 새로 생성된 빈 블록을 아까 만든 블록과 연결하고 각각 “N” , “N-1”이라고 임의로 이름을 붙이겠습니다.
N1: | N-1: |
철수가 영희에게 비트코인 1개 송금함. |
이제 가장 중요한 작업을 해야 합니다. N-1 블록이 진짜라는 것을 증명하는 작업입니다. 증명은 “해시함수(hash function)”란 특이한 이름의 함수와 관련된 수학 문제를 푸는 방식으로 이루어집니다. 이 문제를 풀게 되면 자연스럽게 N-1블록이 진짜라는 것이 증명되는 것입니다.
그런데 왜 이 기묘한 수학문제를 풀면 증명작업이 이루어지는 것일까요? 이 부분을 이해하는 것이 가장 어렵습니다. 해시함수는 블록의 특징들을 입력받아 복잡한 난수형태로 바꿔주는 함수입니다. (이 과정은 일종의 “암호화” 작업인데, 그래서 가상화폐를 암호화폐라고 부르기도 한다고 이 책의 서두에서 말했습니다.) 이 난수를 “해시값”이라고 합니다. 즉, 해시값은 블록의 특징을 나타내주는 유일무이한 고유값이 됩니다. 마치 한국인에게 있어서의 주민등록번호와 비슷한 역할을 하는 것입니다.
<해시함수의 예시>
위의 그림을 보면 왼쪽의 각기 다른 영어문장이 중간에 있는 해시함수에 들어가니, 오른쪽처럼 난수가 생성됩니다. 난수를 가만히 살펴보면 입력된 문장의 고유값이므로 각각이 모두 다르다는 것을 알 수 있습니다.
이 수학문제를 풀이하는 과정은 이 해시값이라는 고유값을 검증하는 과정으로 이루어져 있고, 이렇게 문제풀이를 하는 과정이 이 책의 “3.비트코인 채굴업” 부분에서 살펴보았던 “채굴작업”입니다. 채굴 사업에 뛰어든 수많은 사람들이 컴퓨터를 이용해 경쟁적으로 이 수학 문제 풀이를 하게 되며, 가장 빨리 문제를 풀어낸 사람이 철수와 영희의 거래로부터 발생되는 “거래수수료”와 더불어 자동적으로 새롭게 생성되는 “일정한 양의 비트코인”을 보상으로 수령받게 됩니다. 즉, 이들 채굴업자는 거래를 증명해주는 일을 하고 보상으로 비트코인을 받는 것입니다. 따라서 채굴업자들이 없으면 거래를 증명해줄 사람이 없게 되고, 결국 비트코인 시스템은 운영되기 힘들게 됩니다. 이것이 채굴작업이 비트코인 시스템의 필수요소인 이유인 것입니다.
그리고 위에서 새롭게 비트코인이 생성된다고 하였는데, 영원히 무한정 생성된다면, 비트코인의 가치가 떨어질것입니다. 뭐든지 흔해 빠진 것은 가치가 없게 되니까요. 따라서 시간이 지날 때 마다 서서히 새롭게 발행되는 비트코인의 양은 줄어들게 설계되어 있습니다. 4년마다 절반씩 줄어들게 되어, 최종적으로는 총 2100만개가 생성됩니다.
아무튼 위와 같이 수학문제 풀이에 성공을 하면, 이전블록인 N-1의 해시값을 N1블록 머리부분에 기록을 해줍니다. 이렇게 하면 과거의 정보를 현재에 기록하니 과거와 현재가 연결되어 역사를 이어나갈수 있습니다. 소위 체인을 만들게 되는 것입니다.
N1: N-1 해시값 | N-1: |
철수가 영희에게 비트코인 1개 송금함. |
앗! 그런데 이와중에 또다른 거래가 발생되었네요. 이번엔 길동이가 미영이에게 비트코인 2개를 송금하였습니다. 이 거래 역시 같은 방식으로 처리해줍니다. 먼저 거래장부인 몸통에 거래내역을 적어주고…
N1: N-1 해시값 | N-1: |
– 길동이가 미영에게 비트코인 2개 송금함. | – 철수가 영희에게 비트코인 1개송금함.
– 길동이가 미영에게 비트코인 2개 송금함. |
10분이 지나자 새로운 블록이 또 생성됩니다.
N+1: | N1: N-1 해시값 | N-1: |
– 길동이가 미영에게 비트코인 2개 송금함. | – 철수가 영희에게 비트코인 1개송금함.
– 길동이가 미영에게 비트코인 2개 송금함. |
또다시 수많은 채굴업자들이 경쟁적으로 수학문제 풀이를 하게 되고, 이 과정을 통해 N1블록이 진짜라는 것이 증명됩니다. 역시 같은 방식으로 새로 만들어진 N+1 블록에 N1블록의 해시값을 기록해줍니다.
N+1:N1 해시값 | N1: N-1 해시값 | N-1: |
– 길동이가 미영에게 비트코인 2개 송금함. | – 철수가 영희에게 비트코인 1개송금함.
– 길동이가 미영에게 비트코인 2개 송금함. |
이런식으로 계속 반복이 됩니다. N+2, N+3,N+4… 매 10분마다 한 개씩 생성되니 블록이 엄청나게 늘어나겠지요? 다음과 같이 말입니다.
… | … | … | … | … | … | … | … | … | … |
… | … | … | … | … | … | … | … | … | … |
… | … | … | … | … | … | … | … | … | … |
… | … | … | … | … | … | … | … | … | … |
… | … | … | … | … | … | … | … | … | … |
… | … | … | … | … | … | … | … | … | … |
… | … | … | … | … | … | … | … | … | … |
… | … | … | … | … | … | … | … | … | … |
….
자, 여기까지 여러분이 프로그래머라고 가정하고 간단하게 비트코인을 이용한 블록체인 시스템을 만들어 보았습니다. 우리는 비트코인을 그 증명의 대상으로 삼았는데, 거래장부에 비트코인 대신 투표내역을 적어주면 선거관리시스템이 되는 것이고, 상품의 재고내역을 적어주면 재고관리시스템이 되는것입니다. 활용방법이 무궁무진하지요?
이처럼 블록체인 기술은 인간이 필요에 의해 컴퓨터 기술로 고안해낸 훌륭한 도구입니다. 그 기술의 내용이 매우 복잡하여 신비롭게 느껴지게 되고 그로인하여 이 기술을 사용한 비트코인 자체에 필연적으로 가치가 있어야만 한다는 생각이 들 수도 있습니다. 하지만 앞서 밝혔듯이 사용된 기술의 대단함과 기술이 적용된 대상이 투자 가치가 있는지 여부와는 서로 꼭 관련이 있는 것은 아닙니다. 즉, 엔지니어로서 바라보는 비트코인과 투자자로서 바라보는 비트코인은 달라야 한다는 것입니다. 투자자로서 비트코인을 대하시는 분들은 반드시 이점을 명심해야 할 것입니다.