블록체인과의 첫만남 그리고 블록체인이란?
최근 블록체인에 대해 알아보면서 시간가는 줄도 모르면서 공부했다.
기술적인 개념을 접하면서 많은 흥미를 느꼈고 이전에는 알지 못했던 지식을 얻을 수 있었다.
굉장히 흥미로운 기술임을 느꼈고 동시에 블록체인이 그리는 미래가 우리가 상상하던 미래와 어긋나게 될 수 있음을 느꼈다.
모든 기술에 장단점이 있는 것처럼 블록체인도 마찬가지라고 생각한다. 기술적인 면은 물론이고 블록체인이 추구하는 방향성에도 허점과 문제점이 존재한다고 생각한다.
이번 시리즈에서는 과연 블록체인이 꿈꾸는 미래는 완전한가에 대해 다뤄볼 예정이다. 또한 블록체인의 모순적인 면과 개인적인 의견도 이야기할 생각이다.
이번 편부터 블록체인과의 첫만남과 함께 기본적인 개념에 대해 살펴보도록 하겠다. 그리고 이후에 핵심적인 문제점과 모순 그리고 개인적인 바램을 이야기하도록 하겠다.
블록체인에 대해 기본적인 개념을 알고 있다면 곧장 3편으로 건너뛰어도 된다.
블록체인은 무엇일까?
블록체인은 비트코인일까?
최근 이슈의 중심이므로 작동 원리를 알고 나면 좀 더 정확하게 이해되지 않을까?
고등학교 시절 한 친구가 비트코인과 관련된 책을 추천해준 것을 계기로 비트코인의 존재에 대해 처음으로 인지하게 되었다. 당시에는 블록체인이라는 개념조차 몰랐다. 그저 코인이라는게 있고 가격이 오르는 중이라는 정도만 알고 있었다.
친구와 야자시간 동안 열띤 토론을 했고 결국 당시 가격인 150만원은 거품이라는 결론에 도달했다. 15만원이었다면 당장 구매했을 것이라는 이야기를 하며 100만원까지 하락하면 그때 다시 생각해보자는 이야기를 했다. 그렇기 때문에 언젠가 조용히 사라질 기술이라고 생각했다.
시간이 흘러 첫번째 코인 상승장이 대한민국을 강타했다. 소식을 듣고 고등학교 시절 구매했던 비트코인이 생각나서 로그인을 하고 가격을 확인해보았다.
당시 코인 열풍은 정말 대단했는데 실제로 많은 돈을 버신 분들이 커뮤니티에 등장했고 주식을 하시는 분들을 멋쩍게 만들 정도의 어마어마한 수익률을 보였다.
첫 열풍 당시에는 아무것도 모르고 투자하는 사람들도 큰 돈을 거머쥘 수 있었다. 그런 열기 속에서 덩달아 거래소에 로그인을 해보니 고등학교 시절 구매했던 소수점 몇자리의 비트코인은 꽤나 큰 현금을 안겨주었습니다. 학생 수준에서는 꽤 큰 돈이라 매우 흥분했던 것으로 기억하고 있다. 이후에도 꾸준히 매도 매수를 반복하면서 수익을 만들었다.
비트코인과의 첫만남 이후 블록체인이라는 개념이 비트코인의 핵심이라는 사실을 미약하게나마 인지하게 되었다. 물론 당시에는 새로운 미래를 만들 수 있는 혁신적인 기술이라는 이야기보다 수익률에 대한 이야기가 압도적으로 많았다. 그렇기 때문에 많은 사람들이 블록체인의 동작 원리에 대해 알지 못했다.
하지만 두번째 상승장 이후 달라진 분위기를 느꼈다. 처음으로 코인이라는 단어가 아니라 블록체인이라는 단어 그리고 기술력에 대한 이야기가 중심이 되기 시작한 것이다. 기술에 대한 진지한 논의가 시작된 것이 이때부터라고 생각한다.
최근 블록체인을 공부하면서 내부를 들여다볼 일이 생겼고 처음 접하는 흥미로운 개념들에서 많은 재미를 느겼다. 그래서 그와 관련된 이야기를 해보고자 한다.
먼저 단어의 의미부터 짚고 넘어가는 것이 좋겠다.
블록체인은 단어 자체에 핵심적인 의미가 표현되었다.
블록들의 체인 즉 블록들이 사슬처럼 연결된 일종의 네트워크라고 보면 된다. 네트워크라는 점이 꽤나 중요한 포인트라고 생각한다. 개인적으로 블록체인을 위대하게 만드는 것은 블록 생성에 대한 개념보다 네트워크에 대한 개념에서 비롯된다고 생각한다. 하지만 이런 기술이 어떻게 투명한 사회를 만들 수 있고 더 나은 민주주의를 만들 수 있으며 우리의 사회를 변화시킬 수 있을지에 대한 감이 잡히지 않을 수 있다.
하지만 동작방식을 들여다본다면 왜 이것이 가능할 수 있을지에 대해 알 수 있다. 물론 아직은 기술이 성숙하지 않아서 확신할 수 없지만 어쩌면 정말 가능할 지도 모른다고 생각한다.
지금부터 기술적인 이야기를 해보도록 하겠다.
블록은 트랜잭션이라는 기본 단위의 집합이다.
트랜잭션은 일종의 거래 기록인데 만약 A라는 사람이 B에게 10불을 지불한다면 해당 거래에 대한 한 건의 트랜잭션이 발생하는 것이다. 그리고 그러한 트랜잭션이 모여서 하나의 블록을 형성하게 된다.
그렇다면 블록은 어떻게 생겨나는걸까?
하늘에서 뚝 떨어지는 것이 아니라면 블록체인 네트워크에서 스스로 만들어내는 것일까?
여기서부터 누구나 들어봤을 법한 존재가 등장한다.
바로 마이너다.
그래픽카드 가격이 치솟는다는 뉴스를 들어본 분도 계실 것이고 비트코인이 환경에 악영향을 준다는 기사를 보신 분들도 계실 것이다. 모두 마이너와 관련된 내용이다.
마이너는 네트워크 내에서 트랜잭션들을 모으는데 모은 트랜잭션들로 블록을 채워넣는다. 그렇게 모으고 나면 마이너는 일종의 퀴즈를 풀게 된다. 이전에 그래픽 카드의 가격을 이야기했었다. 이 부분이다. 퀴즈를 풀어내는 과정에서 어마어마한 컴퓨터 파워(해쉬파워)가 필요하기 때문에 그래픽 카드의 가격이 치솟는다는 이야기가 나오는 것이다. 그만큼 많은 자원이 필요하기 때문에 그래픽 카드의 수요가 많아지는 것이다.
마이너는 전세계에 존재하는 다른 마이너들과 퀴즈 풀이 경쟁을 하고 가장 먼저 퀴즈를 풀어내는 마이너가 자신이 만들어낸 블록을 인정받게 된다. 여기서 블록을 인정받게 된다고 표현한 이유는 블록체인 네트워크의 특성과 관련이 있다. 차차 설명하겠다.
인정을 받은 블록은 이제 체인의 한 부분으로써 인정받게 된다. 이 점에 있어서 Longest Chain이라는 표현을 사용한다. 블록체인 네트워크에는 지금까지 쌓여온 블록 중 가장 신뢰할 수 있는 것은 가장 길게 형성된 블록들이라는 룰이 있다. 즉 블록들이 이어지면서 가장 긴 사슬 즉 긴 체인을 형성한 Longest Chain을 신뢰한다는 것이다. 그러니 가장 긴 체인에 마이너가 만들어낸 블록을 추가하는 것이다.
그런데 아무런 검증도 없이 누구나 어떤 블록이든 추가할 수 있는걸까?
그렇지 않다.
위에서 블록이 인정을 받는다고 이야기했다. 누구나 블록을 만들 수도 있다면 과연 어느 블록이 정당한 블록인지 알 수 있을까?
누군가는 사기를 칠 수도 있지 않을까?
블록은 거래의 기본 단위인 트랜잭션들이 모였으니 일종의 장부로 볼 수 있는데 누군가가 장부에 장난을 쳐놓진 않았을까?
블록체인(p2p)에서는 기본적으로 나를 제외한 모든 사람은 나쁜 사람으로 간주하기 때문에 이러한 논의는 블록체인의 보안성에 굉장히 핵심적인 부분이다. 그렇기 때문에 철저한 검증 과정이 필요한 것이고 단지 빠르게 블록을 만들어냈다고 해당 블록이 체인에 새롭게 추가될 수 없는 것이다.
퀴즈를 정당한 방법으로 풀어냈고 길게 이어진 블록들의 사슬 속에서 정당한 룰을 지켜서 만들어낸 블록이라는 것을 인정받아야만 주류 체인(Longest Chain)속에 추가될 수 있는 것이다. 그렇게 블록체인에 새로운 블록 즉 누구나 인정한 깨끗하고 문제없는 새로운 블록이 추가됨으로써 블록체인이 유지되는 것이다.
물론 마이너는 자원봉사자가 아니기 때문에 이러한 과정에서 수수료를 가져간다. 또한 컴퓨터 파워(해쉬파워)가 가장 강했던 마이너는 수수료 외의 또 하나의 보상을 가져가게 된다.
그 보상은 무엇일까?
바로 비트코인이다. 마이너는 일정량의 비트코인을 받게 된다. 즉 수수료 외에도 실제로 코인을 얻게 되는 것이다. 물론 얻게 되는 코인의 양은 시간에 따라 변하게 된다.
그럼 이제 앞에서 언급했던 퀴즈에 대해 알아보자.
퀴즈란 대체 무엇일까?
어떤 퀴즈를 풀길래 컴퓨터를 잔뜩 동원해야만 풀 수 있을까?
전세계의 모든 사람들이 금을 캐야 하는데 누군가는 빨리 풀 수 있는 방법을 알고 있고 누군가는 맨땅에 삽질한다면 과연 공정한 게임이 될 수 있을까?
나만 빨리 풀 수 있다는 점은 나만 알고 있는 비밀 알고리즘이 존재한다는 것을 의미한다. 그렇다면 뛰어난 알고리즘을 발견한 누군가가 존재하는 모든 금덩이를 채굴해버린다면 시스템이 존속될 수 있을까?
다시 한번 생각해보자. 그렇다면 누구도 꼼수를 쓰지 않고 풀어낼 수 있는 퀴즈는 무엇일까?
모두가 맨땅에 삽질하는 문제를 출제하면 되지 않을까?
그게 바로 브루트 포스 유형의 문제이다. 특정 범위에서 모든 값들을 대입해서 찾아내야만 하는 어떤 값이 존재한다면 누구든지 무작정 대입을 해야만 찾아낼 수 있는 값이기에 그 누구도 꼼수를 쓸 수 없다. 그저 할 수 있는 일이라고는 무작정 계산해서 정답과 비교해보는 과정을 맞추기 전까지 반복할 수 밖에 없다. 여기서 말하는 공정한 게임이란 A와 B가 똑같은 CPU파워를 갖고 있다고 가정할때 A가 특정한 알고리즘을 알고 있다고 해서 B의 정답률을 압도하는 일이 존재해서는 안된다는 것을 의미한다. 그런 일이 일어나서도 안되고 당연히 그런 알고리즘이 퀴즈상에 존재하는 것조차도 용납할 수 없다.
그렇게 전세계의 마이너들은 우주에 존재하는 모든 원자의 개수보다 많은 숫자의 범위에서 정해진 값과 맞는 값을 찾기 위해서 열심히 컴퓨터를 돌린다. 그리고 정답을 찾은 마이너가 자신의 블록을 주류 체인 즉 현재 가장 긴 체인인 Longest Chain에 추가할 수 있는 것이다. 물론 마이너는 이기적인 존재이기 때문에 보상을 받기 위해서 이 행위를 지속한다.
여기서 많은 숫자의 범위에서 정해진 값과 정답이 일치하는지를 비교한다고 했는데 생각해보면 우주에 존재하는 원자보다 많은 수의 범위라고 했다. 그중에서 단 하나의 값을 맞추는 것이 가능한지에 대한 의문이 든다.
맞는 말이다.
사실은 단 하나의 값이 아니라 그중에서도 특정 범위 내에서 만들어낸 값이 포함되는지를 확인하는 것이다. 이 부분은 꽤나 수학적인 부분을 다루기 때문에 관심이 있으신 분이라면 blockchain 의 nonce 에 대해서 검색해보면 관련 정보를 얻으실 수 있을 것이다. 이후에 시간이 된다면 이 부분도 링크를 걸어놓겠다.
그렇게 마이너들은 자신의 컴퓨터를 열심히 가동해서 경쟁을 한다.
대충 블록체인의 기본적인 개념에 대해 미약하게나마 감이 올 것이다. 한마디로 사슬처럼 얽힌 블록들의 나열이다. 물론 실제 사슬처럼 물리적인 연결은 아니다. HashPoint 라는 개념을 사용하여 나의 부모 블록이 누구인지를 가리키는 개념을 사용한다. 하지만 그저 긴 장부속에 있는 연속된 사슬이라고 이해해도 문제 없다. 그마저도 거추장스럽다면 그냥 공사장에 있는 사슬을 떠올려도 막연한 개념을 잡는데는 문제 없다.
지금까지 블록체인에 대한 기본 설명을 마쳤다.
하지만 아직 다루지 않은 개념들이 일부 남아있다. 해당 내용은 2편에서 다루도록 하겠다.
질문과 반론은 언제나 환영입니다.
읽어주셔서 감사합니다.