블록체인 기술은 인터넷으로 연결된 디지털 세상에 존재하는 특정 데이터의 소유권의 유일성을 식별할 수 있게 해주는 기술이다. 그런데 데이터는 늘 누군가에 의해 쉽게 바뀔 수 있다. 과거에 만들어진 데이터를 바꾸게 되면 그 이전의 데이터는 쉽게 사라지게 된다. 또한 데이터를 보관한 장치를 분실하거나 그 장치가 망가질 경우에도 데이터는 사라지게 되는 것이다. 이런 특성 때문에 우리는 보통 데이터를 복제하여 별도로 보관을 하게 된다. 이 경우에 2개의 데이터가 존재한다. 그런데 그 중 하나의 데이터 내용을 바꾸게 되면 2개의 데이터가 서로 다른 데이터가 된다. 이때 2개의 데이터 중에서 어떤 데이터가 실제 데이터인지를 즉 진본인지를 구분해 내기가 불가능한 상황이 만들어진다. 예를 들어 A가 B에게 어떤 약속을 한 디지털 문서를 보냈다고 가정하자. B가 그 내용을 약간 수정을 하여 보관을 한다. 나중에 B가 자신이 수정한 내용을 근거로 A에게 문제를 제기할 수 있다. 만약 A와 B가 법적인 분쟁이 발생하게 될 경우에 2개의 디지털 문서 중에서 어떤 문서가 진본 즉 최초에 만들어진 것인지를 식별해 내기가 어려운 상황이 발생한다. 디지털 데이터의 특성 때문에 발생하는 문제이다. 역으로 A가 데이터를 바꿀 수도 있다. 아울러 A가 보관하고 있던 디지털 문서를 망실했을 경우에는 아예 입증하기도 어렵게 된다. 이는 종이 문서로 된 경우에서도 발생할 수 있는 상황이다.

누구나 쉽게 복제 ·변조할 수 있는 디지털 데이터

이 같은 데이터의 변경은 디지털 세상에서는 쉽게 생긴다. 종이 문서에 비해 매우 쉽게 이뤄진다. 거래에서는 곧 이해 당사자 간의 분쟁으로 이어지는 결과를 초래한다. 두 당사자 간의 어느 일방이 의도적인 변경을 할 수 있다. 양쪽 당사자 모두가 자신들이 보유한 데이터를 바꿀 수도 있다. 더 나아가 제3자가 두 당사자 간의 분쟁을 유도하기 위해 해킹을 통해 어느 한쪽이 소유하고 있는 데이터나 양쪽이 갖고 있는 데이터를 모두 바꾸어 버릴 수도 있다. 이런 상황이 발생하게 되면 인터넷을 통해 거래를 하는데 큰 장애 요소가 된다. 예를 들어 상품 제조사가 인터넷을 통해 100개의 부품을 부품 공급사에 주문했다고 가정하자. 100개의 상품을 만들어 고객이 요구한 납기에 맞추기 위한 중요한 부품이다. 부품 공급사는 부품을 만들어 납품을 준비한다. 그런데 제3의 제조사가 부품 공급사에 더 좋은 가격을 제시하여 부품 공급을 요구한다. 부품 공급사는 처음 제조사가 요구한 주문서의 내용을 50개로 바꾸고 50개만 공급하기로 한다. 처음 제조사는 100개를 요구했는데 50개만 공급한 부품 공급사에 문제를 제기할 수 있다. 그런데 부품 공급사는 제조사가 당초 50개만 주문했다고 주장할 수 있다. 100개가 맞는지 50개가 맞는지를 디지털 주문서만을 놓고서는 확인할 수 없는 게 현실이다. 물론 이러한 경우는 어느 일방의 의도적인 행위의 결과이다. 인터넷 거래는 늘 이러한 상황을 예상해야 한다. 부품 주문자가 역으로 바꿀 수도 있다. 100개의 부품을 주문했는데 10개만 주문했다고 주장할 수도 있다. 결국 이러한 상황을 피하기 위한 방법으로 필연적으로 신뢰할 수 있는 제3자가 필요한 것이다. 디지털 주문서를 제3자에게 보관을 하는 것이다. 문제는 디지털 데이터의 경우 제3자가 보관하고 있는 데이터도 쉽게 바꿀 수 있고, 바뀐 것을 증명하기가 어렵다는데 있다. 그래서 거래 당사자들이 신뢰할 수 있는 제3자가 등장하게 된다. 신뢰할 수 있는 제3자의 개입은 곧 비용의 상승으로 이어진다. 즉 거래 수수료가 발생하는 것이다.

블록체인 스스로 ‘신뢰할 수 있는 제3자’ 역할

그런데 이 같은 신뢰할 수 있는 제3자의 개입을 배제하고 문제를 해결한 것이 블록체인이다. 즉 인터넷상에서 존재하는 데이터가 변조가 되더라도 이를 확인할 수 있도록 하고 변조된 데이터가 이용되는 것을 막게 한 것이다. 블록체인 기술이 갖는 가장 큰 장점이자 특징 중의 하나가 된다. 블록체인 스스로가 신뢰할 수 있는 제3자의 역할을 하는 체계를 갖게 된 것이다. 그 방식은 다소 복잡하다. 블록체인은 먼저 데이터를 최대한 많은 곳에 동일한 데이터를 복제해 둔다. 그리고 늘 복제된 데이터에 변경이 있었는지 확인을 한다. 그런데 어느 것이 변경된 데이터인지를 앞서 설명했듯이 확인할 방법이 없다. 예를 들어 1만개의 데이터가 있는데 이 중에서 1개를 제외한 나머지 9999개가 같은 데이터라고 가정을 하자. 이때 1개의 데이터가 원래 데이터고 나머지 데이터가 모두 변경된 것일 수 있다. 반대로 9999개가 변경되지 않은 원래의 데이터이고 1개가 변경된 데이터일 수도 있다. 블록체인은 이 문제를 단순한 방법으로 해결한다. 같은 데이터가 많은 쪽을 선택하여 이를 진본으로 삼는 것이다. 설사 변경된 것이 다수라 하더라도 이를 진본으로 삼는 원칙을 정한 것이다. 일종의 다수결의 원칙이다. 다만 선택은 강제적이지 않다. 끊임없이 이웃의 데이터와 비교하여 데이터가 다를 경우 어떤 쪽을 선택할지를 스스로 결정하게 하는 것이다. 이러한 결정이 반복되게 되면 언젠가는 하나의 데이터로 귀결되는 방식을 만들어 낸 것이다. 그런데 이러한 과정은 지나치게 많은 시간이 소요된다. 때로는 하나로 귀결되지 않고 몇 개의 군으로 나뉘어져서 선택의 과정이 지속되게 된다. 진본을 확정하지 못하는 상황이 있게 된다. 블록체인은 이를 해결하기 위해 해법을 만들어 냈다. 투표 대상을 정하고 일종의 다수결 투표와 같은 방식을 통해 동일한 결정을 하도록 한 것이다. 복제된 데이터를 갖고 있는 누군가가 먼저 자기 데이터가 진본임을 선언한다. 이때 그 데이터가 진본임을 입증하는 증거가 제시되어야 한다. 나머지는 그 증거가 맞는지만을 확인하고 맞으면 그 데이터를 진본으로 받아들여야 한다. 이는 강제적이다. 자기가 갖고 있는 데이터와 다르더라도 진본임을 입증하는 증거가 제시되면 자기 것을 버리고 그 데이터를 무조건 받아 들여야 한다. 그런데 누구나 자기 데이터가 진본임을 주장할 수 있다. 그렇게 되면 서로 혼란이 오게 된다. 다른 사람이 주장한 것을 받아들여야 하고 또 다른 데이터를 진본으로 받아들여야 한다. 문제가 해결되지 않는다. 결국 진본임을 주장하는 방식을 특별하게 고안하여 문제를 해결한 것이 블록체인 기술의 핵심이 된다.

‘진본’임을 입증하기 위해 특정 숫자를 찾는 ‘채굴’

진본임을 주장하는 방식은 의외로 간단하다. 갖고 있는 데이터에 특정한 숫자를 넣어 계산하여 정해진 특정한 데이터를 찾아내는 것이다. 그런데 이 숫자는 쉽게 추측하거나 수식을 사용하여 만들어 낼 수 없다. 오로지 어떤 숫자를 넣어 컴퓨터가 계산하게 하고 그 결과를 살펴야 한다. 특정한 데이터가 산출되지 않으면 다른 숫자로 반복한다. 운이 좋으면 한 번의 계산으로 특정한 숫자를 찾을 수 있다. 그런데 이러한 반복적인 계산은 평균적으로 일정 시간이 소요된다. 저마다 이런 방식으로 계산을 한다. 블록체인은 이러한 계산에서 가장 먼저 그 특정한 숫자를 찾는 사람에게 진본임을 주장할 수 있는 일종의 권리를 준다. 특정한 숫자를 찾은 사람은 자기의 데이터와 찾아낸 숫자를 모든 이웃에게 보낸다. 이러한 데이터를 받은 이웃은 받은 데이터와 특정한 숫자를 놓고 계산을 다시 해 본다. 이 계산은 매우 쉽다. 이미 특정한 숫자를 찾아 놓았기 때문이다. 계산하여 특정한 숫자로 정해진 데이터가 만들어지는지를 확인한다. 확인이 되면 그 데이터를 진본으로 여기고 이를 받아들이는 것이다. 이때 특정한 숫자를 찾아내는 행위를 블록체인에서는 마이닝 또는 채굴이라고 한다. 끊임없이 단순 반복해서 계산하는 과정을 거쳐야만 가능한 일이다. 채굴은 이를 금광에서 바위를 쪼고 끊임없이 파내야만 금이 나오는 과정에 비유해서 붙인 명칭이다. 이렇게 금을 채굴하면 그것이 금인지는 쉽게 확인할 수 있다. 컴퓨터로도 이와 유사한 방식을 구현한 것이다. 컴퓨터로 반복적이 계산을 해야만 특정한 숫자를 찾을 수 있게 한 것이다. 이를 통해 모두가 같은 데이터를 갖도록 만든 것이다.

이전 데이터에 새로운 데이터를 계속 연결하는 ‘체인’으로 데이터 변조 방지

그런데 아무리 많은 복제를 해두더라도 이를 모두 다른 데이터로 바꾸는 것이 가능하다. 일종의 해킹을 통해 데이터를 바꿀 수 있는 것이다. 그래서 변조가 이뤄지고 변조된 데이터가 다수 존재하게 되는 것을 막아야 한다. 다수가 갖고 있는 데이터를 쉽게 바꿀 수 없도록 하는 방법이 필요하게 된다. 비트코인이 처음 만들어질 때 이 방법을 고안한 것이 블록체인이다. 블록체인은 새로운 데이터의 이동 즉 거래 데이터를 전제로 한다. 그 거래 데이터의 이동이 곧 전자화폐인 비트코인의 이동이다. 이 이동이 이뤄질 때마다 위에서 언급한 많은 시간이 소요되는 계산을 하게 하는 것이다. 그런데 이동된 새로운 데이터만을 갖고 계산하는 것이 아니라 과거의 데이터에 새로운 데이터를 누적시키는 방식을 사용한다. 누적된 데이터에서 찾아낸 특정한 데이터를 새롭게 생긴 데이터와 합쳐서 특정한 숫자를 찾게 한 것이다. 즉 앞에서 특정한 숫자를 갖고 계산하여 찾아낸 특정한 데이터를 새로운 데이터에 포함시킴으로써 그 연결 고리를 잇는다. 여기서 새롭게 누적되는 데이터를 블록이라고 부른다. 새롭게 누적되는 블록에는 기존의 데이터로부터 유래되어 만들어진 특정한 데이터가 담겨져 있고 이 특정한 데이터를 통해 기존의 데이터와 새롭게 만들어진 블록이 연결되는 형식을 갖는 것이다. 이를 통칭하여 블록체인이라고 부르는 것이다. 블록체인은 단순히 기존의 데이터에서 만들어진 특정한 데이터를 다음 블록에 포함시켜 새 블록은 완성시키는 것이다. 이 과정에서 과거의 특정한 데이터가 제대로 계산되어 만들어진 데이터인지를 항상 검증을 하게 된다. 만약 데이터의 일부분을 바꾸려면 블록들을 연결하기 위해 만든 데이터도 새롭게 계산해서 바꾸어야 한다. 이 과정은 하나의 블록은 만드는데 소요되는 시간만큼 소요가 된다. 이를 통해 특정 블록의 데이터를 바꾸는 것을 어렵게 만드는 것이다. 블록의 데이터를 만드는 과정에 많은 시간이 소요되게 하고 이를 다수의 곳에 복제하게 함으로써 블록체인은 저장된 데이터가 변조되는 것을 막아내는 기능을 갖는다. 여기에 앞서 이야기한 전자화폐의 이중 지급 방지 체계를 결합한 것이 비트코인 블록체인과 비트코인의 탄생의 기술이 생겨나게 된 것이다.

● 한호현 (테크칼럼니스트·공학박사)

- 한호현은 정보통신분야 공학박사로 국회 4차산업혁명특별위원회 위원, 금융위원회 금융발전심의회 위원 등 다수의 기관에서 전문가로 활동하고 있다. 또한 정보통신산업진흥원 총괄본부장을 역임하였으며, 정보통신부, 현대정보기술 등 공공, 기업 등 다양한 분야에서 정보통신 관련 다양한 실무 경험도 갖고 있다.



주간한국