비트코인 2000만원 시대, 블록체인을 가장 쉽게 이해할 수 있는 강의

조회수 2020. 12. 3. 09:39 수정
번역beta Translated by kaka i
번역중 Now in translation
글자크기 설정 파란원을 좌우로 움직이시면 글자크기가 변경 됩니다.

이 글자크기로 변경됩니다.

(예시) 다양한 분야의 재밌고 유익한 콘텐츠를 카카오 플랫폼 곳곳에서 발견하고, 공감하고, 공유해보세요.

블록체인과 암호화폐의 이해, 샌프란시스코 대학교 정은진 부교수

화폐를 중앙은행이 아닌 다른 주체가 발행할 수 있을까요? 10년, 20년전까지만 해도 웬만한 사람들이 그게 무슨 뚱딴지 같은 소리냐고 했겠지만, 블록체인 기술에 기반을 둔 암호화폐 시장이 본격적으로 활성화된 이후부터는 이야기가 달라졌습니다.


하지만 해당 업계에 크게 관심이 없던 사람들 입장에서는 새롭다 못해 외계어처럼 느껴지는 관련 개념과 원리를 잘 모를 수밖에 없습니다. 그리고는 '비트코인', '떡상'이라는 말만으로 이 업계를 일확천금과 패가망신의 경계가 놓인 무언가로 치부하고 말 수도 있겠죠.


이에 대한 기초적인 이해를 돕기 위해 EO가 '보안 전문가' 샌프란시스코 대학교 부교수 정은진 님을 만나고 왔습니다.

샌프란시스코 대학 정은진 부교수 인터뷰

Q. 자기소개 부탁드립니다.


저는 샌프란시스코 대학교에서 부교수로 일하고 있는 정은진입니다. 학교에서 컴퓨터 사이언스 전반에 걸쳐서 여러가지 강의를 다 하고 있는데요. 1999년에 분산 시스템과 비잔틴 오류 허용을 공부하기 시작했고, 2001년, 2002년부터 인증*, 보안, 암호학**을 공부했습니다. 2006년에 인증으로 박사 학위를 받았고, 지금은 앞서 말씀드린 분야들이 모두 만나는 블록체인 판에서 여러 가지 재미있는 프로젝트와 강연을 하고 있습니다.

* 사람이나 컴퓨터가 주장하는 아이디의 실소유자임을 증명하는 것

** 정보를 도청하거나 위·변조하는 것을 막기 위한 기술을 연구하는 학문

샌프란시스코 대학 정은진 부교수 인터뷰

Q. 블록체인에 대한 이야기를 하기 전에 비잔틴 오류 허용이라는 개념을 먼저 이해해야 한다고 알고 있는데요. 어떤 개념인지 설명해 주실 수 있을까요?


옛날 얘기를 해드릴게요. 4세기 무렵, 비잔틴 제국이라는 나라가 있었어요. 이 나라의 군대에는 두 갈래의 파벌이 있었다고 해요. 전쟁에 나가면 그 둘은 힘을 합쳐서 적을 무찌르는 게 아니라 어떻게 하면 서로를 사지로 내몰지를 연구했다고 합니다.


두 파벌을 크게 왼쪽 장군과 오른쪽 장군으로 비유해서 설명해 볼게요. 왼쪽 장군이 오른쪽 장군에게 내일 새벽 5시 즈음 어두침침할 때 산에서 내려가자는 전령을 보냈다고 쳐요. 그럼 오른쪽 장군은 전령을 죽여버릴 수도 있고, 전령이 안 온 듯이 대답을 하지 않을 수도 있어요.


반대로 오른쪽 장군이 응답해서 새벽 5시에 내려가자는 전령을 왼쪽 장군에게 다시 보냈다고 해봐요. 근데 이 전령이 중간에 적군에게 잡혀서 죽어버릴 수 있겠죠. 그럼 왼쪽 장군은 오른쪽 장군이 착한 사람이라서 보낸 전령이 적군에게 죽은 건지, 아니면 나쁜 사람이라 전령을 죽여버렸는지 알 수 없습니다.


이 개념이 왜 블록체인에서 중요하냐면, 블록체인은 그 자체로 '이런 거래 내역이 있습니다'라고 쓴 장부이기 때문이에요. 거래 내역으로 증명이 되려면 두 주체 간에 합의가 필요하겠죠. 근데 A가 비트코인 100개를 주겠다고 B에게 말해놓고 자기 장부에서는 그 기록을 지워버릴 수도 있어요. 그 합의의 여부가 블록체인에서 중요해졌기 때문에 오래전 쓰인 이런 컴퓨터 사이언스계 논문 속 내용이 다시 화제의 중심이 된 거예요.

샌프란시스코대학 정은진 부교수 인터뷰

Q. 그렇다면 블록체인은 무엇인가요?


블록체인에는 블록(block)과 체인(chain), 두 개의 단어가 합쳐져 있습니다. 블록은 한마디로 데이터를 저장하는 용량단위예요. 책으로 치면 한 페이지, 카메라로 치면 SD 카드 1개가 되겠죠.


체인은 말 그대로 이 블록들을 계속 엮어놓은 거예요. 만약 촬영한 영상이 담긴 SD 카드 10개를 누군가에게 그냥 주면 그 10개에 담긴 영상들이 어떤 순서로 찍힌 건지 알기 어렵죠. 그래서 보통 사람들은 정렬을 할 수 있게끔 각각에 날짜나 시간 등을 표기합니다. 블록체인은 그 정렬을 하는 데 해시 함수라는 아주 특이한 개념을 써요.


중학교 때 많이 배우는 y=f(x)에서 f(x)는 함수인데요. 해시 함수는 그 f(x) 중에서 특별한 성질을 지닌 함수를 말합니다. 이 함수에 x값을 넣으면 y값은 빨리 찾을 수 있는데, y값을 넣으면 x는 찾기 어려워요. 그래서 페이지 1과 2를 연결하는 방법으로, f(페이지 1의 내용)에 해당하는 y값을 페이지 2 시작 부분에 넣어둡니다. 그러면 페이지 1과 2가 있을 때 어느 게 먼저인지 쉽게 알 수 있죠.


조금 더 쉬운 예를 들면, 빨강색과 노란색을 섞으면 주황색이 나오잖아요. 섞어서 주황색을 만드는 건 부어서 저으면 그만이니까 금방 할 수 있어요. 반대로 이미 주황색인 상태에서 무슨 색과 무슨 색을 섞었는지를 분리하는 것은 어렵죠. 이걸 비가역성*이라고 부릅니다.

* 이미 일어난 일을 되돌리기 어려운 성질


이런 블록체인의 성질은 거짓말을 하기 어렵게 만듭니다. 블록 1, 2, 3, 4, 5, 6가 있을 때, "저게 블록 6가 아니고 이게 블록 6야"라고 말할 순 있어도 "저게 블록 1이 아니고 이게 블록 1이야"라고 할 순 없거든요. 왜냐하면, 해시 함수는 1에서 2로 가는 건 쉽지만, 거꾸로 2에서 1로만 가기도 어려우니까요. 그런데 블록 6에서 블록 1을 뽑아내려면 얼마나 어렵겠어요.

Q. 이 원리를 바탕으로 블록체인이 실생활에서 가장 많이 쓰일 때는 언제일까요?


앞서도 말씀드렸듯이 거래장부로 가장 많이 쓰이고 있어요. 또 하나 더 예를 들어볼게요. A라는 사람이 B라는 사람에게 비트코인 하나를 주겠다고 해서 'A가 B에게 1 비트코인을 주었음'이라고 쓴 블록 2가 있다고 가정해 볼게요. 그런데 A 입장에서 갑자기 B에게 주기로 한 비트코인을 주기 싫어졌어요. 그럼 거래 내역이 없는 블록 2.1을 만들어서 B에게 비트코인을 준 사실을 없었던 거로 할 수 있겠죠.


이렇게 체인이 계속 쪼개지는 현상을 포크*라고 부릅니다. 이런 현상이 일어나지 않기 위해서는 해당 블록체인을 만들고 있는 모든 사람이 'A가 B에게 1 비트코인을 주었음'이라고 쓰인 블록 2가 맞는 블록이라는 데 합의해야 합니다.

* 갈림길이 갈라지듯이 블록체인이 둘러 나뉘는 현상. 한 블록에서 해시 함수로 이어진 블록이 두 개 이상일 때 발생한다.

샌프란시스코대학 정은진 부교수 인터뷰

Q. 그 합의를 해나가는 과정을 합의 알고리즘이라고 하는 건가요?


맞습니다. 그 합의를 블록별로 하다 보면 결국 마지막에 한 개의 체인만이 남게 되는데요. 마지막으로 남은 이 체인을 정격 체인(Canonical Chain)이라고 부르고, 이 체인에 들어 있는 거래만 실제로 일어난 거래라고 인정을 받습니다.


가령, 'A가 B한테 비트코인 1개를 줬음'이 정격 체인에 들어가 있어야 B는 A에게 받은 비트코인을 쓸 수 있어요. 물론, 블록 2.1을 만든 A처럼 주기로 해놓고 안 주고 싶어 하는, 나쁜 일을 하는 노드*들도 있어요. 그럼에도 불구하고 대부분은 어떻게든 합의에 성공하고, 정직한 사람들끼리는 합의에 성공할 수 있다는 게 비잔틴 오류 허용이라고 할 수 있습니다.

* 블록 만들기에 참여하는 컴퓨터


비잔틴 오류 허용을, 'Byzantine Fault Tolerance'를 줄인 BFT라고 부르는데요. 지금 나오고 있는 블록체인 알고리즘은 대부분 BFT의 요소를 어느 정도 가지고 있습니다. 그래야 바이러스가 걸린 노드나 네트워크가 불안정한 노드가 들어와도 전체 시스템이 진행될 수 있으니까요.


그래서 블록체인은 이 순서대로 이해하시면 좋습니다. 첫째, 블록과 체인, 두 단어를 각각 나눠서 이해한다. 둘째, 블록체인이 포크 현상을 겪어 가지를 치지 않고 체인을 유지하기 위해서 필요한 것이 합의 알고리즘임을 이해한다. 셋째 합의 알고리즘으로는 어떤 종류가 있는지를 알아본다. 그렇게 하나씩 천천히 이해하다 보면 작업증명(Proof of Work)이나 지분증명(Proof of Stake) 같은 합의 알고리즘 종류가 있다는 걸 알게 되는 거죠.

샌프란시스코 대학 정은진 부교수 인터뷰

Q. 그렇다면 어떤 블록이 맞는 블록이라는 걸 합의하기 위해 쓸 수 있는 가장 흔한 방법은 무엇인가요?


선거를 하는 겁니다. 여기서 증명은 우리가 보통 선거를 할 때 명단에 내 이름이 올라와 있어야 투표를 할 수 있듯이 투표인단에 들어가기 위한 것이에요.


그중 작업증명은 그 투표인단이 되기 위해서 노력했음을 증명하라는 것이죠. 지분증명은 이 생태계 안에서 자신이 투표를 잘할 거라고 기대할 수 있는 지분이 있음을 증명하라는 것이고요.


이외에 다른 여러 가지 증명 방식도 있지만, 목적은 대부분 둘 중 하나입니다. 내가 다음 블록을 정할 수 있는 리더가 되기 위한 증명 혹은 투표인단에 들어가 투표권을 얻기 위한 증명이죠.

Q. 그런데 인터넷에서의 투표는 익명성의 손실로 인해 어렵다고 알고 있습니다.


네, 인터넷에서 본인을 증명할 수 있는 수단을 거쳐서 투표하면 익명성이 없어집니다. 실생활의 선거로 예를 들면, 제가 대선에서 몇 번 대통령 후보를 찍었는지 다 나오는 거죠. 비밀 투표가 불가능한 거예요.


만약 누군가 "아니, 블록 하나 고르는데 굳이 비밀 선거까지 해야 해?"라는 의견을 내서 동시에 거수하는 식으로 방식이 바뀌었다고 해볼게요. 근데 인터넷에서 한꺼번에 손을 들려면 모든 컴퓨터가 같은 시간을 가리키고 있어야 하는데, 그렇지 않습니다. 크게는 2분, 적게는 1분 미만으로 오차가 존재해요.


다시 또 어떤 사람이 "아, 그래. 2분 동안 다 같이 투표해서 결과를 내면 되겠다"라고 말했다고 쳐볼게요. 그럼 누가 집표와 개표를 해서 결과를 알려줄 건가요? P2P(peer-to-peer) 시스템하에 모두가 동등한 인터넷 사회에서 내가 절대적으로 믿을 수 있는 사람은 나 자신뿐이기 때문에 그건 불가능해요. 오히려 투표라는 행위가 의미 없어지죠.


그래서 비트코인의 개발자인 나카모토 사토시가 이 문제를 해결하기 위한 기발한 아이디어를 냈습니다. 투표를 하지 않는 대신 반장을 뽑자는 거예요. 블록 하나당 한 명씩 뽑은 반장이 맞는다고 하는 블록이 맞는 블록으로 하자는 식이에요.


그 반장을 뽑는 합의 알고리즘으로 작업증명과 지분증명, 또 권위증명(Proof of Authority), 신뢰성증명(Proof of Believability) 등 많은 것이 있습니다. 그렇게 뽑힌 반장이 블록 3이 맞는 블록이라고 하면 블록 3'는 버려지는 거죠.


또 한 가지 방법은 앞서 말한 투표인단을 뽑아서 그들이 투표를 하는 겁니다. 왜냐하면, 전 세계의 비트코인 사용자가 모두 어떤 블록 내용에 투표를 해서 OK 싸인이 나기까지 시간이 얼마나 걸리겠어요. 경우에 따라서는 며칠씩 걸릴 수도 있거든요. 그럼 과연 해당 거래가 거래로서 기능한다고 할 수 있을까요? 대신 한 번 뽑아둔 투표인단이 여러 개의 블록 내용에 투표하면 진행이 빠르지 않겠냐는 거죠.

Q. 간접민주주의 방식처럼 보이는데, 이런 방식을 활용하는 암호화폐로는 무엇이 있나요?


잘 알려진 코인으로는 이오스나 이더리움 캐스퍼가 대표적입니다. 이 암호화폐에서 투표인단을 뽑기 위해 흔히 쓰이는 증명 방식이 지금은 지분증명인데요. 이더리움으로 예를 들면, '이더리움 이만큼 갖고 있으니 표 한 장 주세요' 같은 식이에요. 돈을 주고 표를 사는 느낌이 없지 않아 있죠.


이런 방식이 과연 진정한 민주주의냐고 묻는다면 그건 좀 아닌 것 같아요. 하지만 우리가 블록체인, 가상화폐로 민주주의를 실천하려는 건 아니니까요.


그와 별개로 이렇게 투표하는 합의 알고리즘이 사실 굉장히 복잡하잖아요. 거의 모든 암호화폐 합의 알고리즘이 이런 서비스를 굳이 자신의 시간과 전기, 컴퓨터 리소스를 들여서 생태계에 제공하는 노드들에게 '블록 리워드'라는 인센티브를 제공합니다. 이 블록을 생성했기에 그에서 나오는 대가를 챙기는 것, 이 블록에 투표했기 때문에 투표라는 서비스를 제공한 만큼의 대가를 받는 것, 이런 행위가 모두 일종의 채굴이라고 할 수 있고요.

Q. 비트코인, 그리고 암호화폐가 핫해진 근본적인 이유는 ICO에 대해서도 설명해 주시면 좋을 것 같아요.


일단 작명의 천재가 지은 이름이 아닌가 싶어요. ICO는 IPO(Initial Public Offering, 기업공개)에서 따와서 최대한 비슷하게 지은 신조어인데요.


IPO가 회사가 어느 정도가 궤도에 올랐을 때, 주식회사가 되어서 상장을 하는 거잖아요. 이걸 하면 스타트업의 창업자나 초기 투자자는 미리 받은 주식을 높은 가격에 팔아서 큰 돈을 벌 수 있게 되고요. 어떻게 보면 스타트업, 벤처하는 사람들에게는 꿈과 같죠.


ICO는 그런 IPO의 좋은 이미지를 빌려온 겁니다. 처음 들으면 'IPO랑 비슷하게 좋은 건가?'라고 생각할 수 있는데, 사실 ICO를 하는 데는 아무런 규제가 없었어요. ICO를 하는 회사가 어떤 기술력이 있고, 돈을 벌 순 있는지 등 아무런 검증이 필요없었죠.


단순하게 보면 암호화폐 사업자가 어떤 규제나 검증도 없이 "나 이런 사업할 거야. 그러니까 너희가 나한테 투자하면 내가 그만큼의 코인을 줄게"라고 한 겁니다. 그 제안에 혹해서 투자한 사람들은 과연 다 좋은 결과를 얻었을까요? 절대 그렇지 않았죠.


왜냐하면, ICO는 기존의 벤처 투자로 따졌을 때 완전 초기 투자에 가깝기 때문입니다. 그런데도 ICO는 IPO 같은 이미지를 구축해서 그에 걸맞은, 초기 투자임을 감안하면 막대한 금액을 당겨온 거예요.


그러니 사람들도 점점 ‘검증되지 않은 회사에 이렇게까지 투자해도 되나?’라며 걱정하기 시작했죠. 규제 정책이 정리될 때까지 일단 ICO를 금지한 나라들도 꽤 많이 생겼고요.

Q. 2018년을 기준으로 가장 큰 관심을 모았던 ICO는 무엇이었나요?


실리콘밸리에서 파일코인이라는 암호화폐가 ICO를 하면서 가장 핫했습니다. 파일코인은 블록체인 안에서 일종의 마켓플레이스를 제공하는 암호화폐예요.


이를테면, 내 컴퓨터에 남는 50기가의 하드디스크 공간을 다른 사람에게 백업스토리지로 제공하겠다고 하는 겁니다. 그때 또 어떤 사람이 그중 5기가 정도를 한 달에 5천 원 정도 지불하고 사용하겠다며 경쟁 입찰을 할 수 있고요.


이때 만약 저에게 주기로 한 5천 원을 주지 않으면 돈을 내놓으라고 할 수 있는 거래 내역이 블록체인에 기록됩니다. 그렇게 제가 5기가를 제공한 서비스로 받은 코인이 파일코인이에요. 제가 구매자의 파일을 안전하게 보관하고 있음을 증명하는 게 서비스증명(Proof of Service)이고요.


이런 과정하에서는 채굴이 없어집니다. 거래내역이 블록체인에 들어가지만, 블록체인과 별개로 다른 레이어가 하나 더 있다고 할 수 있으니까요. 요즘은 이런 애플리케이션 레벨의 서비스에 중점을 둔 증명 방법도 많이 생기고 있습니다.

샌프란시스코 대학 정은진 부교수 인터뷰

Q. 보안 전문가로서 재미있게 보고 있는 블록체인의 단면으로는 무엇이 있나요?


저는 정보 보안, 사생활 보호 등 보안을 오래 연구했습니다. 그래서 블록체인이 처음 나왔을 때, 사적인 정보를 블록체인에 올리겠다는 사람들이 가장 이해가 안 갔어요. 블록체인에 올리면 모두가 그 내용을 볼 수 있으니 '사생활을 블록체인에 올리면 안 될 텐데?'라고 생각하며 이상하게 여겼죠.


비트코인이 잘되는 이유도 거래에 어느 정도의 익명성이 있기 때문이잖아요. 반면, 익명성이 전혀 보장되지 않는 제 신용카드 명세서 같은 걸 블록체인에 올릴 순 없죠.


이런 부분에서 근래에 블록체인에 데이터를 올리긴 올리되, 암호화를 하거나 어느 정도의 익명성을 보장하는 식으로 처리하는 연구가 활발히 이루어지고 있습니다.


더불어 사생활 보호가 어느 정도 된다던가, 정보 보호 차원에서 누가 데이터를 쓸 수 있는지를 통제할 수 있는 방향으로 아이디어도 많이 나오고 있어서 개인적으로 재미있게 보고 있습니다.

* 본 아티클은 2018년 11월 공개된 <누구나 한 번에 이해할 수 있는 블록체인 강의 | 샌프란시스코 대학 부교수 정은진 [리얼밸리 시즌 2 EP 10]>의 내용을 바탕에 두고 있습니다.

👆🏻샌프란시스코 대학 정은진 부교수가 암호화폐 투자에 임하기 전에 알려주는 블록체인의 기초 강의를 영상으로도 만나보세요.


글·편집 김정원

melo@eoeoeo.net






EO(Entrepreneurship & Opportunities)


이 콘텐츠에 대해 어떻게 생각하시나요?