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

블록체인 작동 원리를 요약하고 조작 가능성을 어떻게 차단하는지 설명하고 있다.

강정수 · 2018년 01월 19일

블록체인에 대한 쉬운 이해 1에서 블록체인의 기본 개념인 마이닝(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이 아니라 매우 낮을까. 이는 잠시 후 다시 설명한다.

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

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

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

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

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

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


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

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


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

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


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

이 세 번째 종이는 이미 봉인 번호를 받아 봉인된 종이다. 왜 이렇게 복잡하냐고? 이미 봉인되어 저장된 종이에 기록된 거래의 조작을 막기 위해서다.

이 세 번째 종이는 '봉인된' 다른 종이다. 이 종이는 그에 봉인 번호가 추가된, 다시 말해 모든 참가자들이 이미 긱블 머신을 통해 발견하하고 검증한 봉인 번호가 적혀 있다.

이러한 과정을 통해 봉인할 하나의 종이는 앞서 봉인된 종이에 의존하게 된다. 누군가가 이미 봉인된 종이에 적힌 거래를 조작하고 새로운 봉인 번호를 이 종이에 적기 위해서는 이 종이보다 앞선 종이의 내용까지 조작해야 하고 이 앞선 종이를 조작하기 위해서는 다시 그 보다 앞선 종이를 조작해야 한다. 긱블 머신을 통해 '하나의 봉인 번호'를 알아내는 것도 매우 어려운 일임을 우리는 알고 있다. 다른 종이들도 조작하기 위해서는 그에 해당하는 복수의 봉인 번호를 새롭게 찾아야 한다. 따라서 상자에 담긴 종이의 수가 많을 수록 조작은 그만큼 어렵다. 그냥 어려운 것이 아니라 지금의(!) 컴퓨팅 수준으로는 불가능에 가깝다.

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

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

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

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