본문 바로가기

비트코인가이드

비트코인 소개 동영상: 비트코인 이해하기⑦


사진: 영상 캡쳐





이 영상은 비트코인이 어떤 식으로 작동하는지 설명한다.


기본적으로 비트코인은 이름과 잔고가 담긴 디지털 파일 혹은 장부라고 할 수 있으며 이 파일을 교환해 비트코인을 거래한다. 밥이 캐롤에게 잔디 깎는 기계를 5.2비트코인에 팔았다면 밥의 잔고는 5.2비트코인 오르고 캐롤의 잔고는 5.2비트코인 낮아지는 것이다. 이 돈은 금이나 정부가 보증하는 화폐로 보장받는 것이 아니다. 밥은 다른 사람도 비트코인 시스템을 신뢰할 것이라고 생각해 잔디 깎는 기계를 디지털 파일에 있는 숫자와 거래한 것이다. 그렇다면 누가 장부를 기록하고 부정 기록이 없는지 확인할까? 비트코인은 중앙기구의 관리 없이 모든 참여자가 각자 장부를 가지고 보관한다. 실제로는 이름 없이 계좌만 사용하지만 이런 방법을 통하면 모두가 다른 사람의 잔고를 볼 수 있게 돼 익명성이 어느 정보 보장된다고 말한다. 각자 장부를 갖는데 돈을 보낼 때마다 어떻게 모두의 장부에 동일하게 기록되는 것일까? 기본 원리는 돈을 보낼 때 모두에게 내 계좌와 받는 사람의 계좌, 이체금액을 메시지로 보내 알리는 것이다. 그리고 그 후 전 세계 사람들이 장부를 업데이트한다. 물론 장부를 보관하지 않고 돈을 주고받는 데 비트코인 시스템을 이용할 수도 있다. 


송금이 계좌가 적힌 메시지를 생성하는 것만큼 쉽다면 엘리스가 밥의 계좌에 있는 돈을 어떤 식으로 쓰지 못하게 하는 것일까? 이 의문에 대해 이 영상은 수표에 서명하듯 비트코인도 송금하는 사람이 계좌의 실소유주인지 확인하기 위해 서명해야 한다고 말한다. 하지만 비트코인 서명은 손으로 쓰는 것이 아니라 수학에 기초한다. 새 계좌번호가 생성되면 그 계좌에 수학적으로 연결된 개인 키(비밀 키)도 같이 생기는데, 비트코인 지갑에 이 키가 저장되며 이 키로 서명도 한다. 개인 키와 거래 메시지가 특별한 암호 함수를 거치면 서명이 이루어진다. 계좌 소유주가 하는 거래인지 확실히 하기 위해 해당 거래에 또 다른 함수를 적용해 다른 사람이 이 서명을 확인하는데, 손으로 서명하는 것과 다르게 이런 서명은 거래할 때마다 다르기 때문에 복제하거나 나중에 다시 사용할 수 없다고 언급한다. 


수학적인 방식으로 이루어지는 서명은 누가 거래를 하는지 증명하는 역할을 하지만 언제 했는지는 알 수 없어 문제가 된다고 지적하면서 은행과 비트코인 시스템을 비교한다. 우선 기존 은행 시스템에서는 엘리스가 수표 2장을 써도 계좌에 한 사람에게 줄 수 있는 돈만 있다면 수표를 현금화하려는 첫 번째 사람에게 돈을 지급하고 두 번째 사람에게는 지급하지 않는다. 엘리스 계좌에 돈이 없기 때문이다. 수표를 발행한 순서에 따라 누가 돈을 받을지 결정되기 때문에 매우 중요하다고 할 수 있다. 하지만 일반 은행과 다르게 비트코인 시스템은 전 세계 사람들이 이용하기 때문에 이 순서를 알기란 여간 어려운 일이 아니다. 네트워크 지연으로 거래가 각 지역마다 다른 순서로 도착할 수 있고 사기를 치려고 시간기록을 속일 수도 있다. 비트코인을 받은 두 사람이 모두 첫 거래라고 생각해 물건을 보내면 엘리스가 사실상 같은 돈을 2번 지불하는 경우가 생길 수도 있다. 비트코인 네트워크에서는 이런 일을 방지하려고 모두가 참여해 거래 순서를 정하도록 했다. 거래가 새로 생기면 이 거래는 계류 중인 거래 풀a pool of pending transaction에 모여 있다가 순서대로 잠겨있는 커다란 체인으로 분류된다. 여기서 어느 거래를 다음에 선택할 것인지 추첨하듯이 수학을 통해 뽑는다. 참여자가 미결 거래 하나를 선택해 체인 끝과 거래를 연결하는 특별한 문제를 풀기 시작한다. 그러면 처음으로 문제를 푼 사람의 거래가 체인에서 다음으로 선택된다고 말한다.


그렇다면 이 연결 문제는 무엇일까? 이 문제는 암호 해시라는 특별한 함수에 바탕을 두고 있다. 입력 값을 섞어서 숫자를 만들어내는데, 이것이 특별한 이유는 돌이킬 수 없기 때문이다. 출력 값을 가지고 입력 값을 찾으려면 숫자를 추측해보는 시행착오를 많이 겪어야 하는데, 이것이 바로 비트코인에서 사람들이 하는 일로 출력 값이 특정 기준에 맞을 때까지 이 함수에 숫자를 무작위로 넣는 것이다. 무작위로 숫자를 넣는 것 외에 계류 중인 거래 풀과 체인에 있는 거래를 입력input할 수도 있는데 이때 연결 부분이 관여한다고 설명한다.


이런 수학적 추첨 방식을 통해 전 세계에서 어떤 거래를 다음에 처리할 것인지 결정한다. 하지만 수학은 지난 거래에 모두가 동의한다고 보장하는 역할도 수행한다고 언급한다. 처음으로 비트코인 네트워크에 참여했다고 가정해보자. 이제까지 있었던 거래 체인transaction chain 사본을 요청했는데 다른 버전을 여러 개 받았다면 어느 것을 믿어야 할까? 다수가 사용하는 버전을 믿는 것이 가장 이상적이기는 하지만 인터넷에서 어떤 것을 다수가 동의하고 사용하는지 알아내기 힘들다고 설명한다. 그렇다면 어떻게 한 사람이 중복 동의vote하는 것을 막을 수 있을까? 이때 비트코인은 동의할 때 수학문제를 풀도록 해 중복 동의를 방지한다고 말한다. 그러면 동의할 때 연산력을 써야 해서 한 사람 혹은 그룹이 대다수 사용자보다 동의를 더 많이 하거나 계산이 더 뛰어날 가능성이 적어지기 때문이다. 앞서 설명한 거래 순서 절차를 통해 동의 시스템도 작동하는데, 연결 문제의 입력input 부분이 체인 끝에 있는 거래이기 때문에 (무작위로 숫자를 넣는) 각 추측이 사실상 체인에 대한 동의로 볼 수 있다고 말한다. 하지만 동의수를 어떻게 계산할까?


암호 해시 함수는 통계적 특성이 뚜렷해서 동전 앞면이 100번 연속으로 나오려면 동전을 몇 번 던져야 하는지 추정할 수 있는 것처럼 주어진 값을 보고 문제를 해결할 때까지 추측이 몇 번이나 필요한지 추정할 수 있다고 말하며 체인 안에 연결고리가 거래 순서일 뿐만 아니라 많이 쓰는 체인이 어떤 것인지 알 수 있게 해주는 동의수로 볼 수 있다고 언급한다.


마지막으로 ‘비트코인은 어떻게 만드는 걸까?’라는 물음에 대해 체인에서 누군가 다음 거래를 고르는 연결문제를 풀 때마다 새로운 비트코인이 만들어져 계좌에 담긴다고 말한다. 이 문제를 푸는 것을 보통 “마이닝mining”이라고 하는데, 마이닝은 돈을 만드는 방법이기도 하지만 모든 사람의 장부가 일치하도록 하는 것이 주요 목적이라고 설명한다. 비트코인 시스템을 통해 간편하게 전 세계에 돈을 무작위로 분산하며 2140년쯤이 되면 비트코인을 더 캐낼 수 없으며 거래 수수료만 받게 될 것이라고 말하며 영상을 끝맺는다.





반응형