블록체인에 대한 쉬운 이해 1

디지털 기술에 대한 지식이 없어도, 이 글을 읽고 나면 블록체인이 무엇인지, 블록체인이 어떻게 작동하는지, 블록체인의 문제가 무엇인지 이해할 수 있다.

강정수 · 2018년 01월 17일

이코노미스트는 2015년 10월 31일 블록체인에 대한 기획기사를 발행했다. 그 제목은 The trust machine이다. 인간 사회의 신뢰를 기계가 대신할 수 있다는 블록체인의 '가능성'을 매우 간결한 제목에 담았다. 기계가 사회 신뢰를 가능케하는 정부, 법원, 은행, 학교 등 사회 기관(institute)을 대체할 수 있다는 이야기다. 공상과학같은 주장이다. 그러다보니 블록체인에 환호하는 사람도 많다. 새로운 시대의 시작을 이야기하는 사람도 작지 않다.

이 글을 읽고 있는 여러분들은 세상과 담을 쌓고 살지 않는다면 블록체인과 비트코인에 대한 뉴스 또는 설명글을 한번쯤은 접해봤을 것이다. 암호화폐가 무엇인지, 블록체인이 어떻게 작동하는지 다양한 설명을 들어보아도 이를 이해하기란 여간 쉬운 일이 아니다. 맘 잡고 이해를 시도하지만 그 복잡한 작동 방식에 대한 설명의 도입부에서 쉽게 포기한다. 이렇게 복잡한 것이 왜 필요한가, 이렇게 쉽게 설명할 수 없는 기술이 세상을 바꾼다고? 이 글은 블록체인의 작동방식을 이해하기 위해 여러 차례 시도했지만 실패를 경험했던 분들을 위한 설명글이다. 이 글을 읽고 나면 디지털 기술에 대한 지식이 없어도 블록체인이 무엇이고 그것이 어떻게 작동하는지 그리고 문제점은 무엇인지 좀 더 잘 이해할 수 있다.

블록체인은 어떤 문제를 해결하고자 하는가?

이해의 출발점은 적절한 질문에서 시작한다. 여기에 강정수와 그의 친구 박대근이 등장한다. 박대근은 현재 부산에서 휴가를 보내고 있다. 휴가 삼 일째되는 날 박대근은 강정수에게 전화해서, "야, 돈 떨어졌다. 30만원만 부쳐!"라고 대뜸 쏘아붙인다. 마음 착한 강정수는 "그래 바로 송금할께."라고 답한다. 강정수는 주거래 은행인 우리은행 혜화지점에 전화를 걸어 담당자에게 "제 통장에서 박대근의 통장으로 30만원 이체 부탁드립니다"라고 말한다. 그 담당자는 "네, 바로 이체하겠습니다"라고 답한다.
은행 담당자는 강정수의 계좌 또는 장부(Ledger)를 열어, 먼저 강정수의 계좌 또는 장부에 30만원을 이체할 수 있는 잔고가 있는지 확인한다. 잔고가 충분함을 확인한 은행 담당자는 강정수의 계좌 또는 장부에 아래와 같이 기록한다. 이를 통해 이체 다른 말로 거래(transaction)가 성사된다.

image
그림 1. 강정수의 은행 계좌 또는 장부

강정수는 박대근에게 전화를 해서, "야 돈 부쳤다. 은행가서 30만원 찾아 써라!"라고 말한다. 박대근은 "고맙다."는 말 한마디를 하고 전화를 뚝 끊는다.

강정수와 박대근의 은행 계좌 사이에는 어떤 일이 발생했을까? 박대근과 강정수 사이에는 '5만원권 6장' 등 물리적 실체를 가진 거래(transaction)가 일어나지 않았다. 두 명 모두 '은행'을 '신뢰'하였고, 중개인(middleman)인 은행 담당자은 두 명의 계좌에 '기록' 행위를 통해 거래를 성사시켰다. 강정수와 박대근은 이 계좌 또는 장부의 기록에 대해 통제할 능력은 없다.

여기서 사회 및 경제 시스템의 문제점을 확인할 수 있다. 두 사람 사이에 진행된 거래에 대한 신뢰는, 은행 담당자 또는 은행이라는 제3자(third-parties) 또는 중개인(middleman)에 대한 의존을 통해 가능하다. 이 글을 읽고 있는 여러분은 이렇게 질문할 수 있다. "제3자, 중개인을 신뢰하는 것이 뭐가 문제인가요?"

그럼 이렇게 반문해 보자.

  • 은행 담당자가 "-30만원"이 아니라 "-50만원"을 강정수의 계좌 또는 장부에 기록한다면?
  • 그리고 박대근의 계좌/장부에 "+30만원"이라 기록하고 은행 담당자 자신의 계좌/장부에 "+20만원"을 기록한다면?
  • 또는 은행 담당자가 실수로 강정수의 계좌/장부에 "-3만원"이라 적고 박대근의 계좌에 "+30만원"을 기록한다면?
  • 강정수의 장부가 보관된 우리은행 혜화점에 화재가 발생한다면?

위와 같은 일이 일어날 가능성은 매우 낮다. 사회는 다양한 법과 제도를 통해 위와 같은 일이 일어나면 은행 담당자를 처벌하거나 피해를 받은 사람에게 보상 청구권을 부여하기 때문이다. 제도가 은행 거래(transaction)에 대한 신뢰를 뒷받침한다.

여기서 다시 질문을 던저보자.

  • 돈을 이체하는 일은 무엇인가? (이는 '장부에 기록'하는 일이다.)
  • 이 장부에 기록하고 이 장부의 조작 또는 실수를 막는데 제3자 또는 중개인이 꼭 필요할까? (아니, 블록체인에는 제3자가 필요없어.)
  • 장부 시스템을 유지하기 위해 다양한 법과 제도가 꼭 있어야 할까? (아니, 블록체인은 신뢰를 위한 제도가 필요없어.)

블록체인은,
제3자의 도움없이 당신과 나 사이의 거래를 가능케하고
그 거래를 기록한 장부 시스템을 유지하는 기술 개념이다.

블록체인을 제3자의 도움없이 기록을 관리하는 장부 시스템이라 정의할 수 있기 때문에 디지털 기술 전문가들은 블록체인을 (진일보한) 데이터베이스(Database) 개념이라 부른다.

블록체인이 작동하기 위해서는 참여자가 많아야

그럼 이제부터 블록체인이 어떻게 작동하는지 알아보자. 첫번째 전제조건은 참여자의 수다. 제3자의 도움없이 장부를 운영할 수 있다는 생각을 가진 사람이 강정수와 박대근 단 두명일 경우 블록체인은 작동할 수 없다. 은행을 포기한 사람이 최소 3명 이상이 있어야 한다. 참여자가 6명이라 가정하자. 이들은 이름 등 서로가 누구인지 알 필요가 없다. 제3자 없이, 은행없이 거래가 가능한 시스템을 운영하겠다는 뜻만 확인할 수 있으면 된다. 그래서 이제 강정수와 박대근은 사라지고 그 6명을 1번, 2번, 3번, 4번, 5번, 6번이라 부르자. (그리고 이들 6명은 네트워크로 연결되어 있다.)

두 번째 필요한 것은 '종이 상자'와 종이 낱장

6명 모두 빈 종이 상자를 하나씩 갖는다. 그리고 여기에 담을 종이를 마련한다. 종이 한 장은 위 그림 1의 기능을 갖는다. 종이 한 장은 이체 등 거래를 기록하는 장부다. 종이 한 장에는 각 10개의 거래 기록을 적을 수 있다. 10개 거래 기록이 적히면 이 종이 한 장을 빈 종이 상자에 담고, 다른 빈 종이에 다시 10개의 거래를 기록하는 방식이다. 여러분들의 (종이) 은행 통장에 기록이 꽉차면 다른 종이 통장을 발급하는 형식이다.


그림 2. 블록체인 참여자

블록체인에서 거래는 어떻게 이뤄지나?

2번이 6번에게 30만원을 이체한다고 가정하자. 은행이 있을 경우, 2번은 은행 담당자에게 연락해 6번에게 30만원을 이체하라고 주문한다. 블록체인에서는 2번이 큰 소리로 외친다. "여러분, 저 2번입니다. 제가 6번에게 30만원을 이체합니다. 모두들 종이를 꺼내 2번이 6번에게 이체한다고 기록해주세요!" 이 소리를 들은 1번부터 6번까지 모두는 먼저 2번이 30만원을 가지고 있는지 살펴본다. 그리고 충분한 돈을 확인하면 각자 자신의 종이에 '2번이 6번에게 30만원 이체'라고 기록한다. 이렇게 모두가 기록하는 방식을 통해 거래는 이뤄진다.

이렇게 4번과 3번 사이에, 5번과 6번 사이에, 6번과 1번 사이에 거래가 이뤄지고, 이 모든 거래 행위는 참여자 6명 모두의 종이에 기록된다. 거래 기록이 쌓이다보면 종이 한 장이 꽉 차게된다. 더 이상 기록할 여백이 없다면, 모두들 새로운 종이를 꺼내든다. 이 때 앞 선 종이, 기록으로 꽉 찬 종이는 '종이 상자'에 봉인한다.

봉인할 땐 암호가 필요해

종이 상자에 종이를 보관하는 행위, 이를 봉인이라 부르자. 한 번 봉인되면 종이에 기록된 것을 수정할 수 없고, 봉인된 종이는 종이 상자를 벗어나지 못한다. 또한 봉인할 때 각 종이에 참여자 6명이 동의하는 암호를 함께 적는다. 참여자 6명 모두가 이 봉인 과정을 신뢰하고, 따라서 봉인된 종이는 조작될 수 없음을 믿는다. 이 신뢰가 존재하는 한 참여자 모두는 종이 상자의 종이 낱장에 기록된 거래 또한 신뢰할 수 있다.

블록체인의 마술은 봉인 방법에 있다

각자가 가진 종이 상자에 기록으로 가득찬 종이 한 장을 봉인하는 것을 블록체인에서는 마이닝(mining)이라 부른다. 은행 또는 은행 담당자는 그들이 정확히 기록하고 기록된 것을 조작하지 않는다는 신뢰를 약속한다. 블록체인에서는 이 봉인하는 방법이 신뢰의 핵심이다. 이를 위해서는 봉인된 종이는 참여자 뿐 아니라 외부의 그 누군가에 의해서도 조작될 수 없어야 한다.

참여자 6명은 신뢰할 수 있는 봉인 기술을 떠오르는 미디어 스타 공학 미디어 긱블에게 의뢰했다. 봉인되는 종이에 봉인 번호(=암호)를 추가하는 방법을 통해 봉인된 종이가 조작되지 않은 진짜임을 보증하고 싶다고, 그리고 참여자가 필요한 것은 이 봉인 번호를 생성하는 기계라고 긱블에게 주문한다. 오래지 않아 긱블은 '긱블 머신'이라는 마법의 기계를 납품한다.

긱블 머신: 마법의 봉인 머신

그림 3의 긱블 머신은 다음과 같이 작동한다. 왼쪽 input 영역에서 종이 상자을 투입하면, 오른쪽 output 영역에는 이 종이 상자에 무언가가 추가되어 나온다.


그림 3. 긱블 머신, 블록체인에서는 이를 Hash Function이라 부른다.

예를 들어 그림 4처럼 "8431"이 적힌 종이가 담긴 종이 상자를 긱블 머신 왼쪽에 투입하면 오른쪽에는 그 상자에 "3c7fv"가 추가로 기입된 상자가 나온다. 어떻게 "8431"에서 "3c7fv"이 나올 수 있을까? 이 방법은 긱블 머신을 제작한 긱블도 모른다. 그러니 마법의 상자다.


그람 4. 긱블 머신, input에서 output이 나오는 규칙은 그 누구도 모른다.

긱블 머신이 작동하는 과정의 또 다른 특징은 비가역성(irreversibility)이다. 만약 오른쪽 "3c7fv"라는 결과값이 생기면 긱블 머신은 스스로도 왼쪽에 무엇을 입력했을 때 "3c7fv"가 나오는지 답하지 못한다. 그러나 왼쪽에 "8431"을 입력하면 언제나 변함없이 긱블 머신은 오른쪽에 "3c7fv"를 추가한다. 이 부분이 이해하기 어렵다면 그냥 넘어가도 좋다. 쉽게 말해 긱블 머신 스스로도 자신의 작동원리를 설명할 수 없다. 따라서 참여자 6명이 관찰을 통해 그리고 논리적 추론을 통해 긱블 머신의 작동원리를 이해하는 것을 불가능하다.(그만큼 긱블 머신에 대한 조작은 어렵다.)

이제 앞으로 다시 돌어가서, 참여자에게 필요한 것은 봉인 번호(=암호)임을 기억하자. 참여자들은 공통으로 긱블 머신을 통해 스스로에게 과제를 던진다. 왼쪽에 어떤 것을 입력하면 오른쪽에 첫 세 문자/숫자가 "111"로 시작하는 결과값이 나올 수 있을까? 그 input 값을 참여자 6명 모두 각자 찾아보자!

그림5처럼 긱블 머신의 작동 원리는 모른다고 했는데 "111.."이 output에 나올 수 있게하는 왼쪽의 input을 과연 찾을 수 있을까?


그림 5. 미션: output에 "111.."을 가능케 하는 input을 찾아라!

매우 단순하고 솔직히 무식한 답변이 가능하다. 우주에 존재하는 가능한 모든 문자와 숫자 조합을 긱블 머신 왼쪽에 임의 순서로 입력해 보는거다. (최근 컴퓨팅 성능이 향상되면서 입력을 자동화하면) 불가능한 미션은 아니다.


그림 6. 수천 번의 시도 끝에 ouptut 첫 부분에 "111"를 포함하는 input 값 중 하나가 83703임을 알게되었다. 야호!

"83703"은 매우 어려운 과정을 통해 얻을 수 있다. 그러나 만약 당신, 아니 참여자들이 처음 세 문자/숫자가 "111"로 시작되는 output을 가능케 하는 input이 "83703"이라는 것을 안다면, 이를 검증하는 일은 너무나 쉬운 일이다. 왜냐하면 모두에게 주어진 마법의 긱블 머신의 왼쪽에 "83703"을 입력하면 output이 무엇인지 바로 알려주기 때문이다.

요약하면, output 과제가 주어지면 그에 맞는 input을 맞추기는 정말 정말 어려운 일이지만, output과 input이 주어지면 이 둘의 조합이 맞는 것인지 아닌지를 검증하는 것은 긱블 머신 때문에 매우 쉬운 일이다. 이 긱블 머신을 블록체인에서는 Hash Function이라 부른다.

봉인 번호를 만들어 보자

또 다른 과제가 주어졌다. input 영역에 두 개의 종이 상자가 있다. 첫 번째 종이 상자에는 "47063"이 적힌 종이가 담겨 있다. 그리고 오른쪽 output 영역은 이 번에도 "111"로 시작되는 output을 요구하고 있다. 그럼 왼쪽 input 영역에 있는 두 번째 종이 상자의 종이에 어떤 문자/숫자 조합을 입력해야, 긱블 머신은 두 개의 종이 박스를 input으로 받아 output에 "111.."을 추가할 수 있을까?


그림 7. 미션: 봉인 번호를 찾아라!

답은 찾는 방법은 앞선 과정에서 설명했던 것처럼 하나 밖에 없다. 단순 무식하게 우주에 존재하는 모든 문자/수의 조합을 입력하는 행위를 output에 "111.."이 나올 때까지 무한 반복하면 된다.


그림 8: 찾았다! 봉인 번호!

이렇게 단순 작업을 무한히 반복하다 보면서 또는 수 천 번의 실패 이후 "90371"이 output에 "111.."을 추가할 수 있음을 알게 되었다. 이 "90371"이 참여자들이 찾는 봉인번호다.


그림 9. 어렵게 찾은 봉인 번호를 첫 번째 종이 상자에 입력한다!

봉인 번호 "90371"은 첫 번째 종이 상자의 해당 종이에 기록된다. 이렇게 봉인 번호가 종이에 기록되면 봉인 과정은 끝난다. 이 봉인 번호를 블록체인에서는 "Proof of Work"이라 부른다. 왜? 봉인 번호를 찾기 위해 정말 정말 많은 노력을 했기 때문이다. ㅎ

참여자 모두가 해당 상자에 들어 있는 종이의 진위 여부를 판명하기 위해 해야하는 일은 하나다. 바로 봉인 번호가 적힌 종이가 담긴 종이 상자를 긱블 머신의 왼쪽에 입력하면 된다. 그럼 바로 진위 여부를 확인할 수 있다. output에서 "111.."을 확인할 수 없다면 이 종이 상자에 담긴 종이는 조작되었을 가능성이 높다. 때문에 바로 폐기한다.

이렇게 봉인 번호가 만들어지고 이를 활용하는 방법을 다른 종이 그리고 다른 종이 상자에도 적용할 수 있다. 요약하면 그림 10에서 "?"로 표시된 봉인 번호(proof of work)를 찾아내고 이를 기록하고, 이를 통해 종이의 진위 여부를 알아내는 봉인 과정이 블록체인이 신뢰를 만들고 이를 유지하는 방법의 핵심이다.


그림 10. 봉인 번호("?")를 찾고 이를 기록하는 과정이 블록체인이 신뢰를 만드는 방벙

물론 실제 블록체인에서 "111.."이라는 단순한 과제는 없다. 때문에 봉인 번호를 찾는 일은 실로 어려운 과제다. 이를 해결하기 위해 참여자는 많은 시간 뿐 아니라, 이를 자동화하여 찾아내는 컴퓨터에 막대한, 실로 막대한 전기를 공급해야 한다.

자 그럼 이 글의 막마지를 행해 달려보자. 조금만 더 인내심을 가진다면 블록체인의 핵심을 이해할 수 있다.

참여자 각자가 봉인 번호을 (먼저) 찾기 위해 노력한다!

여기서 던질 질문은 그럼 누가 봉인 번호를 찾는가이다. 봉인 번호는 참여자 6명 모두 찾을 수 있다. 종이 한 장이 기록으로 꽉 차면, 이를 종이 상자에 봉인해야 한다. 봉인하기 위해서는 봉인 번호가 필요하다. 봉인 번호를 찾기 위해 이들 6명 모두는 노력한다. 당연히 먼저 찾는 사람에게는 달콤한 상금이 기다리고 있다.


그림 11. 3번이 봉인 번호를 먼저 찾아 나머지 참여자들에게 외친다. "봉인 번호는 90371이야!"

가정이다. 3번이 봉인 번호 "90371"을 찾아 참여자 모두가 들리게 이를 큰 소리로 외친다. 이를 듣자마자 나머지 참여자들은 이 번호가 맞는지 확인해 본다. 맞다면 3번에게는 보상이 주어진다. 봉인 번호를 계산하기 위해 자신의 컴퓨터도 이용했고 전기도 많이 사용했기 때문이다. (그런데 그 보상은 하늘에서 떨어지는 것이 아니라, 다른 참여자의 계정에서 받아온다다.) 그 보상으로 주어지는 것 중의 하나가 비트코인이다. 비트코인이라는 달콤한 보상이 네트워크로 연결된 참가자 6인 모두를 일하게 만든다. 승부는 종이 한 장에서 끝나지 않았다. 다음 거래들을 기록한 종이는 이론적으로 무한하다. 다음 종이에서 봉인 번호를 둘러싼 치열한 승부가 기다리고 있다. 이 경쟁과 경쟁 이후 기다리고 있는 보상이 참여자를 계속 행동하게 한다.

참고로 복수의 거래가 기록된 종이 한 장을 블록(block)이라 부르고, 복수의 종이를 담고 있는 종이 상자를 블록체인(blockchain)이라 부른다.

몇가지 개념을 더 이해한다면 블록체인 개념 대부분을 이해할 수 있다. 이것은 1부보다 더욱 짧은 2부에서 설명한다.