기사 공유하기

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

이 글을 읽고 있는 여러분이 세상과 담을 쌓고 살지 않았다면 블록체인과 비트코인에 대한 뉴스나 설명을 한 번쯤은 접해봤을 것이다. 암호화폐가 무엇인지, 블록체인이 어떻게 작동하는지 다양한 설명을 들어보아도 이를 이해하기란 쉬운 일이 아니다. 맘 잡고 이해를 시도하지만, 그 복잡한 작동 방식에 대한 설명의 도입부에서 쉽게 포기한다.

블록체인 기술을 '신뢰 기계'로 명명한 이코노미스트
블록체인 기술을 ‘신뢰 기계’로 명명한 이코노미스트

이렇게 복잡한 것이 왜 필요한가, 이렇게 쉽게 설명할 수 없는 기술이 세상을 바꾼다고? 이 글은 블록체인의 작동방식을 이해하기 위해 여러 차례 시도했지만, 실패를 경험했던 분들을 위한 설명이다. 이 글을 읽고 나면 디지털 기술에 대한 지식이 없어도 블록체인이 무엇이고 그것이 어떻게 작동하는지 그리고 문제점은 무엇인지 좀 더 잘 이해할 수 있다.

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

이해를 위한 출발점은 적절한 질문에서 시작한다. 여기에 강정수와 그의 친구 박대근이 등장한다.

박대근은 현재 부산에서 휴가를 보내고 있다. 휴가 3일째 되는 날 박대근은 강정수에게 전화해, “야, 돈 떨어졌다. 30만 원만 부쳐!”라고 대뜸 쏘아붙인다. 마음 착한 강정수는 “그래 바로 송금할게.”라고 답한다. 강정수는 주거래 은행인 우리은행 혜화지점에 전화를 걸어 담당자에게 “제 통장에서 박대근의 통장으로 30만 원 이체 부탁드립니다”라고 말한다. 그 담당자는 “네, 바로 이체하겠습니다”라고 답한다.

은행 담당자는 강정수의 계좌(또는 장부; Ledger)를 열어, 먼저 강정수의 계좌(장부)에 30만 원을 이체할 잔고가 있는지 확인한다. 잔고가 충분함을 확인한 은행 담당자는 강정수의 계좌(장부)에 아래와 같이 기록한다. 이를 통해 이체, 다른 말로 거래(transaction)가 성사된다.

blockchain01

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

강정수와 박대근의 은행 계좌 사이에는 어떤 일이 발생했을까?

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

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

‘제3자, 중개인을 신뢰하는 것이 뭐가 문제인가요?’ 

그럼 이렇게 반문해 보자.

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

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

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

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

[box type=”note”]

 

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

 

[/box]

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

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

그럼 이제부터 블록체인이 어떻게 작동하는지 알아보자. 첫번째 전제조건은 참여자의 수다. 제3자의 도움 없이 장부를 운영할 수 있다는 생각을 가진 사람이 강정수와 박대근 단 두 명일 경우 블록체인은 작동할 수 없다. 은행을 포기한 사람이 최소 3명 이상이 있어야 한다.

참여자가 6명이라 가정하자. 이들은 이름 등 서로가 누구인지 알 필요가 없다. 제3자 없이, 은행 없이 거래가 가능한 시스템을 운영하겠다는 뜻만 확인할 수 있으면 된다. 그래서 이제 강정수와 박대근은 사라지고 그 6명을 1번, 2번, 3번, 4번, 5번, 6번이라 부르자.

(그리고 이들 6명은 네트워크로 연결되어 있다.)

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

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

그림 2. 블록체인 참여자
그림 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이라 부른다.
그림 3. 긱블 머신, 블록체인에서는 이를 Hash Function이라 부른다.

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

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

긱블 머신이 작동하는 과정의 또 다른 특징은 비가역성(irreversibility; 변화한 상태에서 본래 상태로 돌아오지 않는 성질)이다. 만약 오른쪽 “3c7fv”라는 결과값이 생기면 긱블 머신은 스스로 왼쪽에 무엇을 입력했을 때 “3c7fv”가 나오는지 답하지 못한다. 그러나 왼쪽에 “8431”을 입력하면 언제나 변함없이 긱블 머신은 오른쪽에 “3c7fv”를 추가한다. 이 부분이 이해하기 어렵다면 그냥 넘어가도 좋다.

쉽게 말해 긱블 머신도 스스로 자신의 작동원리를 설명할 수 없다. 따라서 참여자 6명이 관찰을 통해 그리고 논리적 추론을 통해 긱블 머신의 작동원리를 이해하는 것을 불가능하다(그만큼 긱블 머신에 대한 조작은 어렵다.).

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

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

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

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

그림 6. 수천 번의 시도 끝에 ouptut 첫 부분에 "111"를 포함하는 input 값 중 하나가 83703임을 알게되었다. 야호!
그림 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. 미션: 봉인 번호를 찾아라!
그림 7. 미션: 봉인 번호를 찾아라!

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

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

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

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

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

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

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

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

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

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

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

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

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

가정이다. 3번이 봉인 번호 “90371”을 찾아 참여자 모두가 들리게 이를 큰소리로 외친다. 이를 듣자마자 나머지 참여자들은 이 번호가 맞는지 확인해 본다. 맞는다면 3번에게는 보상이 주어진다. 봉인 번호를 계산하기 위해 자신의 컴퓨터도 이용했고, 전기도 많이 사용했기 때문이다. (그런데 그 보상은 하늘에서 떨어지는 것이 아니라, 다른 참여자의 계정에서 받아온다.) 그 보상으로 주어지는 것 중의 하나가 비트코인이다.

비트코인이라는 달콤한 보상이 네트워크로 연결된 참가자 6인 모두를 일하게 만든다. 승부는 종이 한 장에서 끝나지 않았다. 다음 거래들을 기록한 종이는 이론적으로 무한하다. 다음 종이에서 봉인 번호를 둘러싼 치열한 승부가 기다리고 있다. 이 경쟁과 경쟁 이후 기다리고 있는 보상이 참여자를 계속 행동하게 한다.

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

[divide style=”2″]

지금까지 블록체인의 기본 개념인 마이닝(mining)과 해시 함수(hash function) 그리고 “Proof of Work”와 보상에 관해 설명했다.

이를 위해 우리는 참여자 6명과 종이 그리고 종이 상자를 가정했다. 참여자 사이에서 발생한 10개의 거래(transaction)를 종이-블록(Block)-에 기록하고, 이 종이에 봉인 번호를 적어 종이 상자-블록 체인(Blockchain)-에 봉인한다.

이 봉인 번호를 찾기 위해 긱블 머신이 필요하고, 긱블 머신의 작동 방식은 알려져 있지 않다. 긱블 머신의 기능은 두 가지다. input에 임의의 문자/수 조합을 입력해서 output에서 주어진 과제-예: “111…”-에 조응하는 문자/수의 조합을 찾는 기능이 첫 번째 기능이다. 이를 찾으면 누구나 보상을 받을 수 있어 참여자 6명은 행동할 충분한 동기를 가지고 있다.

긱블 머신의 두 번째 기능은 검증(verification)이다. 참여자 3이 봉인 번호를 먼저 찾아 이를 소리 질러 외친다면 이 번호가 정말 output에서 “111…”로 결과하는지 여부를 참여자 모두는 검증한다.

긱블 머신의 주요 기능: 거래 검증

여기서 한 가지 질문이 생긴다. 만약 참여자 3이 외친 번호를 긱블 머신 input에 입력했지만, output에서 과제로 제시된 “111…”이 나오지 않는다면? 그 이유는 다음 경우에 해당될 것이다.

  • 참여자 3은 진행된 거래를 잘못 들었을 수 있다. 또는 종이에 잘못 기록했을 수 있다. 거래 10개를 종이 한 장에 기록하고, 이를 봉인하기 위해 그 종이를 종이 상자에 담아 긱블 머신에 보내야 한다는 점을 상기해 보자. 참여자 3이 10개의 거래 중 하나라도 잘못 들었을 경우 또는 잘못 기록했을 경우 나머지 참여자와 다른 종이를 긱불 머신에 입력하게 된다. 당연히 output “111…”으로 결과하는 참여자 3의 input 조합은 다른 참여자의 그것과 다르다.
  • 참여자 3은 자신의 이득을 위해 또는 그 누군가를 위해 거래 내용을 자신의 종이에 의도적으로 다르게 기록했을 수 있다.

참여자 3이 어떤 이유로 다른 참여자의 종이에 기록된 것과 다른 거래 내용을 가졌는지는 중요하지 않다. 검증 과정에서 참여자 3이 나머지 참여자와 다른 거래 내용을 담은 종이를 가졌다면, 참여자 3의 선택은 단 하나다. 잘못된 봉인 번호를 불러일으킨 종이를 종이 상자에서 꺼내 폐기하고, 나머지 참여자에게서 해당 종이를 복사해서 종이 상자에 담아야 한다. 이를 거부한다면 참여자 3은 이 거래 네트워크에서 빠져야 한다.

이러한 검증 과정을 통해 봉인 번호를 먼저 찾은 참여자 3의 종이에 대한 진위만 검증하는 것이 아니다. 참여자 6명 모두는 봉인 번호를 먼저 찾든 아니면 다른 사람이 찾은 봉인 번호를 자신의 종이에 입력해서 이를 긱블 머신을 통해 검증하든 검증 과정에 참여해야 한다. 이 검증 과정을 통해 거래는 위조되거나 잘못 기록될 가능성이 매우 낮다. 왜 위조의 가능성이 0이 아니라 매우 낮을까. 이는 잠시 후 다시 설명한다.

무한한 보상 기회: 욕망의 노예?

모두가 거래를 함께 기록하고, 함께 검증하는 이유는? 앞서 설명한 것처럼 (비트코인) 보상 체계 때문이다. 10개의 거래를 담은 종이의 봉인이 완료되면 다른 빈 종이가 참여자 모두를 기다리고 있다. 이 종이를 봉인하는 과정에서 봉인 번호를 먼저 찾은 참여자에게는 또다시 보상이 기다리고 있다. 이 과정이 이론적으로 무한 반복된다.

지금까지 설명한 종이, 종이 상자, 긱블 머신, 봉인 번호, 검증, 보상이 블록체인을 구성하는 작동 원리이자 기본 개념이다. 이제 마지막으로 블록체인의 위조 또는 조작의 가능성을 좀 더 따져보자.

이미 봉인된 종이를 조작할 수 없나요?

참여자 모두는 함께 검증한 봉인 번호가 적힌 종이를 종이 상자에 봉인한다. 참여자 중 한 명에게 유혹이 생긴다. 이 봉인된 상자에서 종이를 꺼내 거래 내용을 위·변조하고, 긱블 머신에 이 종이를 담은 종이 상자를 input해서 주어진 과제-output에 “111…”-에 맞는 봉인 번호를 다시 찾고 이 새로운 봉인 번호를 거래가 조작된 종이에 적어 종이 상자에 보관하면 어떨까? 복잡해 보이나요? 쉽게 다시 설명하면 저장된 과거 거래 장부 꺼내서 이를 조작하고 그 장부 비밀번호를 바꿔서 다시 저장하는 겁니다.

이러한 이미 봉인된 종이 그리고 그 종이에 기록된 거래를 조작하는 참여자의 유혹을 차단하기 위한 긱블 머신의 규칙이 있다. 블록체인에 대한 쉬운 이해 1의 그림 7, 그림 8 그리고 그림 10을 다시 살펴보자. 여기에 그림 7을 다시 호출하자.

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

우리는 “47063”이 기록된 종이를 긱블 머신 input에 투여한다. 그리고 output의 주어진 과제-“111…”-를 찾기 위해 긱블 머신 input에 또 다른 종이-“?”로 표시된-를 함께 투여한다. 이 과정을 통해 “?”에 해당하는 봉인 번호 “90371”을 찾았다. 아래 그림8에 적힌 “90371”은 “47063”이 적힌 종이와 다른 종이를 통해 찾은 봉인 번호다. (“뭐야, 왜 진작 다른 종이라고 말 안 했어?”, “미리 설명하면 복잡하니까!”)

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

사실 긱블 머신에는 두 개의 종이가 아닌 세 개의 종이를 input 영역에 투입한다. 첫 번째 종이는 그림 7의 첫 번째 종이처럼 거래를 저장한 종이(Block)다. 두 번째 종이는 그림 7의 두 번째 종이처럼 봉인 번호를 찾기 위한 종이다. 세 번째 종이는 그림 12처럼 과거 봉인되어 저장된 종이다.

그림 12: 긱블 머신에 보내는 종이는 2개가 아니라 3개야!
그림 12: 긱블 머신에 보내는 종이는 2개가 아니라 3개야!

이 세 번째 종이는 이미 봉인 번호를 받아 봉인된 종이다. 왜 이렇게 복잡하냐고? 이미 봉인되어 저장된 종이에 기록된 거래의 조작을 막기 위해서다. 이 세 번째 종이는 ‘봉인된’ 다른 종이다. 이 종이는 그에 봉인 번호가 추가된, 다시 말해 모든 참가자들이 이미 긱블 머신을 통해 발견하고 검증한 봉인 번호가 적혀 있다.

이러한 과정을 통해 봉인할 하나의 종이는 앞서 봉인된 종이에 의존하게 된다. 누군가가 이미 봉인된 종이에 적힌 거래를 조작하고, 새로운 봉인 번호를 이 종이에 적기 위해서는 이 종이보다 앞선 종이의 내용까지 조작해야 하고, 이 앞선 종이를 조작하기 위해서는 다시 그 보다 앞선 종이를 조작해야 한다.

긱블 머신을 통해 ‘하나의 봉인 번호’를 알아내는 것도 매우 어려운 일임을 우리는 알고 있다. 다른 종이들도 조작하기 위해서는 그에 해당하는 복수의 봉인 번호를 새롭게 찾아야 한다. 따라서 상자에 담긴 종이의 수가 많을수록 조작은 그만큼 어렵다. 그냥 어려운 것이 아니라 지금의(!) 컴퓨팅 수준으로는 불가능에 가깝다.

한 명이 나머지 전체를 속일 수는 없지만…

또 다른 조작의 가능성이 남아 있다. 참여자 6명 중 4명이 합심하여 조작에 가담할 경우다. 이 경우 블록체인은 더는 존재 가치가 없다. 신뢰 생성을 인간 또는 기관(institute)에서 기계로 대체하고자 하는 블록체인의 존재 목적에 반하는 행위이기 때문이다. 이러한 일이 발생할 가능성은 매우 낮지만, 그렇다고 절대 불가능한 것은 아니다.

요약하면 블록체인은 ‘참여자 다수는 정직하다’는 전제에서 작동한다. 또는 ‘특정 집단에서 다수는 늘 정직하다’, ‘특정 집단에서 조작과 사기가 발생한다면 이는 소수에 의해서다’라는 전제 위에 블록체인은 작동한다.

이 (이론적) 전제가 무너질 때 블록체인도 함께 붕괴한다.

관련 글