커버스토리 제 1159호 (2018년 02월 07일)

'알쏭달쏭' 블록체인 한 번에 이해하기

[커버스토리: Part1 블록체인 경제학]
컴퓨터공학·암호학·경제학의 환상적인 조합…“블록을 이어가며 신뢰 구축”

[한경비즈니스=오명운 IT 칼럼니스트] 올 초 비트코인만큼 세상을 떠들썩하게 만든 것이 또 있을까.

기술적인 내용은 이해하기 어렵고 가격 급등락으로 생긴 에피소드가 자극적이어서 가격에 대해 특히 부각되고 있다.

하지만 가격적 측면을 잠시 덮어두고 비트코인이 가치를 가질 수 있는 것인지 아닌지 그 본질에 한 걸음 더 다가가는 것이 좋을 것 같다.

비트코인은 블록체인의 응용 결과물

간단하게 정의하면 블록체인은 비트코인의 바탕이 되는 ‘체계’다. 비트코인은 블록체인을 ‘화폐’에 응용한 결과물이다.

블록체인이 바탕이고 비트코인은 블록체인 바탕 위에서 구현된 하나의 서비스 또는 상품이란 얘기다.

그래서 블록체인은 비트코인뿐만 아니라 다른 암호화폐의 바탕이 될 수 있고 실제로도 그렇다. 또한 블록체인은 암호화폐뿐만 아니라 다른 서비스나 상품의 바탕이 될 수도 있다.

재미있는 것은 블록체인이 비트코인의 바탕이 되는 체계이지만 블록체인이 만들어진 후 비트코인이 만들어진 것이 아니라는 점이다.

블록체인은 비트코인을 만들기 위해 고민하던 중 탄생한 신기술이다. 이렇게 블록체인과 비트코인을 구별할 수 있지만 누구나 참여할 수 있는 ‘공개형 블록체인’과 그 블록체인에 참여하는 대가로 주어지는 비트코인을 분리할 수는 없다.

블록체인은 어떻게 비트코인이라는 화폐의 바탕이 되는 체계가 될 수 있을까. 아니, 그보다 먼저 화폐는 무엇일까. 너무 모호한 것 같으니 질문을 바꿔보자.

현대사회에서 화폐의 ‘실체’는 무엇일까. 과거에는 금이나 은 등 실제 실물이 화폐의 역할을 담당했지만 점차 그 실물에 대한 교환 증서가 화폐의 역할을 담당하게 됐다.

1971년의 닉슨 쇼크(리처드 닉슨  미국 대통령이 발표한 달러 방어 정책인 금·달러 태환 정지로 발생한 충격) 이후에는 사실상 그 실물(금)에 대한 교환을 보장해 주지 않는 불태환 화폐가 됐고 2008년 금융 위기 이후에는 양적 완화라는 미명하에 막대한 양의 화폐를 찍어내기도 했다.

그럼에도 불구하고 여전히 우리는 그 화폐를 가지고 큰 문제없이 살아가고 있다. 어째서 이런 일이 가능할까.

화폐의 실체는 바로 믿음이다. 금으로 교환해 준다는 보장은 사라졌지만 화폐로 여전히 치킨을 먹고 맥주를 마실 수 있다고 모두가 믿고 있다. 화폐는 모두의 ‘신뢰’를 받고 있는 것이다. 비트코인이 가상화폐·디지털화폐·암호화폐처럼 화폐라는 용어를 달고 있는 이유도 ‘신뢰’할 만한 대상이 될 수 있기 때문이다. 그리고 그 신뢰의 원천이 바로 블록체인이다.

그러면 블록체인이 어떻게 신뢰의 원천이 될 수 있는지 차례차례 알아보자.

블록체인, 거대한 분산 공개 장부

A가 B에게 1만원을 보내는 상황을 생각해 보자. A가 은행 사이트에 접속해 잔액을 확인하고 B의 계좌 정보를 입력한 후 공인인증서나 OTP(일회용 패스워드) 등의 비밀번호를 입력하고 확인 버튼을 누르면 A의 잔액에서 1만원이 차감된다. 당연히 B의 잔액에는 1만원이 더해진다.

개인의 재산이 오가는 이 송금 과정은 매우 중요하다. 그래서 송금 거래에 필요한 모든 확인 과정은 은행에서 수행되며 그 기록도 은행에 저장되고 외부에 공개되지 않는다.

이에 따라 송금에 대해 우리가 믿는 곳은 은행 한 곳이다. 송금 과정에서 모든 것이 은행 하나에 집중돼 있다. 거래 은행의 서버가 정상적으로 동작하지 않거나 은행의 기록이 사라지게 되면 우리는 재산을 잃고 만다.

하지만 이런 어처구니없는 불상사는 쉽게 일어나지 않는다. 은행 시스템에는 일반적인 시스템에 비해 훨씬 높은 보안 수준을 적용하도록 법으로 규정하고 있고 소프트웨어뿐만 아니라 보안 전담 인력 배치, 보안 장비 도입 등으로 한층 더 위험을 낮추려고 노력한다. 하지만 이런 조치를 위해서는 많은 비용이 수반된다.

블록체인은 이 문제를 완전히 다른 각도에서 바라본다. 즉 거래 정보를 감추지 않고 모두에게 공개하고 누구나 거래 정보를 생성할 수 있으며 거래 정보를 모두에게 복사해 사본을 저장하고 그 사본끼리 내용을 서로 맞춘다. 2~3중화 수준이 아니라 수천~수만중화 처리로 기록이 사라지는 일을 원천적으로 막고 내용이 맞지 않는 사본은 폐기하는 것이다. 그래서 블록체인을 거대한 ‘분산 공개 장부’라고 부르기도 한다. 이렇게 수천, 수만의 분산 처리를 통해 기록이 없어지는 것을 막을 수 있지만 이것만으로는 기록의 위·변조까지 막을 수는 없다. 또한 거래의 진위 여부를 확인할 수도 없다. 블록체인은 이 문제를 암호학의 도움을 받아 해결하는 기술이다.

◆모든 거래 정보에 디지털 서명 포함

디지털 서명은 공인인증서를 떠올리면 쉽게 이해할 수 있다. 은행의 인터넷 뱅킹 서비스를 이용해 송금할 때 우리는 공인인증서를 선택하고 비밀번호를 입력하는데 이것이 바로 디지털 서명이다.

디지털 서명을 통해 그 송금이 진본이라는 것을 입증할 수 있고 송금 사실을 나중에 부인할 수 없게 된다. 이 디지털 서명은 암호학을 바탕으로 만들어져 있다.

블록체인에 담겨 있는 모든 거래 정보에는 디지털 서명이 포함돼 있어 거래 정보가 진본이라는 것을 신뢰할 수 있다.

이제부터는 블록체인의 내부로 들어가 볼 차례다. 가장 널리 알려진 암호화폐인 비트코인을 기준으로 블록과 블록체인에 대해 살펴보자. 블록체인이라는 체인을 이루는 원소인 블록은 무엇일까. 



하나의 블록에는 여러 개의 거래가 포함된다. 이를테면 ‘A가 B에게 100원을 송금한다’와 같은 것이 하나의 거래다. 비트코인 정보 사이트인 블록체인인포에 따르면 비트코인 블록 하나에는 약 2000개의 거래 정보가 포함될 수 있고 블록 하나의 물리적인 크기는 약 1MB다.

블록은 블록 헤더와 거래 정보, 기타 정보로 구성된다. 블록 헤더는 또 소프트웨어 버전, 앞 블록의 고유 번호, 블록 내 모든 거래 정보의 해시 값, 블록 생성 시작 시간, 난이도, 난스(Nonce : Number used once) 등 6가지 정보로 구성된다.

거래 정보는 ‘A가 B에게 1비트코인을 보낸다’와 같은 다수의 입출금 거래 정보로 구성된다. 기타 정보에는 블록 헤더와 거래 정보에 포함되지 않는 데이터로 구성된다.

거대한 분산 공개 장부인 블록체인은 이러한 블록들이 이어져 만들어진 블록의 집합체다. 블록들은 어떻게 이어져 있을까. 바로 블록 헤더의 6가지 정보 중 하나인 바로 앞 블록의 블록 고유 번호를 기준으로 이어져 있다. 



<그림1>과 같은 구조다. 블록체인이 어떻게 생겼는지 살펴봤으니 이제 블록체인의 핵심을 파고 들어가 보자.

블록체인의 핵심, ①작업 증명과 보상

블록체인이 신뢰의 원천이 될 수 있는 첫째 핵심 요소는 작업 증명(POW : Proof of Work)이다. 흔히 ‘어려운 수학 문제를 푼다’ 정도로 설명되기도 하는데 작업 증명은 새로 만든 블록의 고유 번호를 계산하고 새 블록을 블록체인에 이어 붙이는 작업을 완료했다는 것을 증명하는 것이다.

어려운 수학 문제는 결국 블록의 고유 번호를 계산하는 것을 말한다. 블록의 고유 번호를 계산하는 이유는 고유 번호가 있어야 블록을 블록체인에 연결할 수 있기 때문이다. 블록의 고유 번호는 해시(hash)라는 함수를 통해 계산된다.

다행히 블록체인을 이해하는데 해시 함수를 수학적으로 분석할 필요는 없다. 패스트푸드점에서 흔히 볼 수 있는 해시브라운을 떠올려 보자.

감자를 으깨고(hash) 튀기면 해시브라운이 나온다. 똑같은 감자를 으깨고 튀기면 언제나 똑같은 맛과 크기의 해시브라운이 나온다. 하지만 반대로 해시브라운을 다시 감자로 만들 수는 없다.

그래서 어떤 감자를 으깨야 특정한 맛과 크기의 해시브라운이 나오는지 추측할 수 없다. 특정한 맛과 크기의 해시브라운을 얻으려면 감자를 여러 번 바꿔 가면서 으깨고 튀겨본 후 맛과 크기를 비교해 볼 수밖에 없다.

감자와 해시브라운 사례를 통해 입력 값이 같으면 해시의 계산 결과 값은 항상 같게 나온다는 것을 이해할 수 있다. 또 특정 결과 값이 나오는 입력 값을 예측할 수 없고 특정 결과 값이 나오는 입력 값을 예측할 수 없으므로 직접 계산해 보지 않고서는 답을 구할 수 없다는 원리 또한 파악할 수 있다.

해시 계산을 한 차례 수행하는 것은 어렵거나 오래 걸리는 일이 아니지만 특정 조건을 만족시키는 해시 계산 값이 나오게 하는 입력 값을 구하려면 상당히 많은 횟수의 계산을 반복해야 한다. 시간도 오래 걸린다.

하지만 입력 값을 구했다면 그 입력 값으로 해시를 계산한 결과가 특정 조건을 만족시키는지 확인하는 일은 아주 쉽다. 입력 값이 같으면 해시 계산 결과 값은 항상 같기 때문에 해시 계산 한 차례만 수행한 후 그 결과 값이 특정 조건을 만족시키는지 확인하면 된다.

해시 함수의 특징을 정리하면 답을 구하는 데 오랜 시간이 걸리지만 구한 답이 맞는지 검증하기는 매우 쉽다는 것이다.

이러한 특징 때문에 블록의 고유 번호를 계산할 때 해시 함수를 사용한다. 아무 해시 값이나 블록의 고유 번호가 될 수 있는 것은 아니다. 어떤 입력 값을 넣고 해시를 계산한 결과가 특정 조건을 만족시켜야 그 해시의 계산 결과 값이 블록의 고유 번호가 될 수 있다. 그러면 입력 값과 특정 조건이 무엇인지 알아봐야 한다.

블록의 고유 번호 역할을 하는 블록 해시는 버전, 앞 블록의 블록 해시, 블록 내 모든 거래 정보의 해시, 블록 생성 시각, 난이도, 난스 등 6가지의 블록 헤더 정보를 입력 값으로 하고 SHA256 해시 함수로 계산한 값으로, 32바이트의 숫자 값이다.

이름은 블록 해시이지만 그 값은 블록 전체를 해시한 값이 아니라 6가지 블록 헤더를 해시한 값이다. 거래 정보를 담고 있는 블록은 블록 해시라는 고유 번호가 붙어야 실질적으로 유효하게 된다.

블록 내 모든 거래 정보의 해시 값을 나타내는 머클트리(merkle tree : 해시트리) 해시는 개별 거래 정보의 해시 값을 계산하고 둘씩 짝지어 합친 후 다시 해시하는 일을 반복해 최종적으로 하나의 해시 값으로 구해진다.

거래를 블록에 담은 후 블록 해시를 계산하므로 블록 해시를 계산할 때 머클트리 해시는 이미 정해져 있다. 지금까지의 내용을 바탕으로 블록 해시의 입력 값인 블록 헤더 정보를 구성하는 과정을 그림으로 나타내면 <그림2>와 같다.



블록 헤더 정보 중에서 버전, 바로 앞 블록의 블록 해시 값, 머클트리 해시, 블록 생성 시각, 난이도는 블록 해시 계산을 할 때 이미 정해져 있다. 즉, 난스를 제외한 5가지는 블록 해시를 만드는 시점에서 이미 확정돼 변하지 않는 값이다.

입력 값을 바꿔 가면서 해시 계산을 반복해야 블록 해시를 구할 수 있는데, 블록 헤더 정보 중  값을 바꿀 수 있는 것은 난스뿐이다. 나머지 정보는 모두 확정된 값이다. 이에 따라 해시 계산 결과 값이 특정 조건을 만족시킬 때까지 난스만 바꿔 가면서 해시 계산을 반복해야 블록 해시를 구할 수 있는 것이다.

입력 값을 알았다면 특정 조건을 이해해야 한다. 특정 조건은 ‘해시 값이 어떤 정해진 값보다 작아야 한다’는 것이고 그 정해진 값은 블록 헤더의 난이도에 따라 정해진다.

지금까지 설명한 블록 해시 계산 과정을 정리하면 난스를 바꿔 가면서 해시 계산을 반복해 그 결과 값이 난이도에 따라 정해진 특정 값보다 작게 나오면 그 결과 값이 바로 블록의 고유 번호인 블록 해시가 된다.

앞서 설명한 것처럼 블록의 고유 번호를 계산하고 새 블록을 블록체인에 이어 붙이는 작업을 완료했다는 것을 증명하는 것이 작업 증명, 흔히 말하는 ‘채굴’이다.

작업 증명을 수행하는 과정을 <그림3>과 함께 살펴보자. <그림3>은 블록해시가 ‘000000a84…’라는 특정 값보다 작게 나오게 하는 난스 값을 구하는 작업 증명 과정을 나타내고 있다. 블록 헤더의 6개 정보 중에서 난스 외의 모든 항목의 값은 이미 정해져 있으므로 회색으로 표시했다. 그림에서 난스가 0일 때의 해시를 구해 보니 ‘000000a84…’보다 큰 ‘fa8cbaeed…’가 나와 작업 증명에 실패했다. 



다시 난스가 1일 때의 해시를 구해 보니 ‘932d16e2e…’가 나와 또 실패. 이렇게 난스가 2일 때의 해시, 3일 때의 해시를 계속 반복해 구하고 계속 실패하다가 난스가 82,764,351일 때 해시를 구해 보니 드디어 ‘000000a84…’보다 작은 ‘000000a83…’이 나와 작업 증명에 성공했다.

이렇게 난스 값을 구하는 채굴 작업에는 엄청나게 많은 횟수의 해시 계산이 필요하다. 이 작업은 해당 계산을 수행하는 채굴기와 그 채굴기를 돌릴 수 있는 막대한 양의 전기를 필요로 한다. 따라서 투입 비용에 대한 보상이 없다면 아무도 채굴을 하지 않을 것이다.
아무도 채굴을 하지 않으면 아무 거래도 확정될 수 없으므로 비트코인은 존재 가치가 사라진다.
비트코인에서의 보상은 새로 발행되는 비트코인과 해당 블록에 포함되는 거래 수수료의 합이다. 비트코인의 새로운 발행은 채굴자가 블록을 처음 구성할 때 채굴자의 지갑으로 일정량의 비트코인이 입금되는 거래를 그 블록의 첫 거래로 추가하는 방식으로 이뤄진다.

새로 발행되는 비트코인의 보상은 최초에 50BTC에서 시작돼 블록체인에 21만 개의 블록이 추가될 때마다 절반으로 줄어들어 2018년 1월 현재 블록당 12.5BTC가 새로 발행되며 보상의 일부로 채굴자에게 주어진다.

거래 수수료는 각 거래 당사자끼리 자율적으로 정할 수 있고 거래가 블록에 추가되는 우선순위를 결정하는데 거래 수수료가 입력 값으로 사용되기도 한다.

◆블록체인의 핵심, ②충돌 해소

블록체인의 첫째 핵심이 블록 단위에서 처리되는 작업 증명과 보상이라면 블록체인의 둘째 핵심은 충돌 해소다.

이는 블록 단위가 아니라 블록체인 단위에서 처리되는 일이다. 어떤 충돌을 의미하는 것인지 또 왜 해소해야 하는지 알려면 블록체인을 분산 환경에서 바라볼 필요가 있다. 앞서 블록체인은 거대한 분산 공개 장부라고 했다.

이 분산 공개 장부는 블록체인에 참여하는 다수의 노드(컴퓨터)에 복사돼 있고 다수의 노드는 P2P로 연결돼 블록체인 네트워크를 형성한다. 그리고 하나의 거래 정보가 발생하면 이 거래 정보는 블록체인 네트워크에 분산돼 있는 수많은 노드에 전파돼야 한다.



<그림4>에서처럼 사용자 F가 지갑 애플리케이션(이하 지갑 앱)에서 C에게 수수료 0.001BTC와 함께 1.6BTC를 보내면 지갑 앱은 블록체인 네트워크상의 노드 A에 거래 정보를 전송한다. 거래 정보를 받은 노드 A는 먼저 해당 거래의 유효성을 검증한 후 그 거래를 아직 블록 생성 작업이 시작되지 않은 후보 블록에 추가하고 인접한 다른 노드에 그 거래 정보를 전파한다.

노드 B도 마찬가지 방식으로 유효성을 검증한 후 블록체인 네트워크상의 다른 노드에 거래 정보를 전파하며 이 거래는 결국 블록체인 네트워크 전체 노드에 전파된다.

블록에 거래 정보가 채워지면 노드는 블록을 생성한다. <그림5>처럼 캐나다에 있던 노드와 호주에 있던 노드는 상당히 멀리 떨어져 있으므로 각 블록에 담겨 있는 거래의 내용과 순서는 서로 다를 수 있다.



새로 만들어질 블록은 <그림5>와 같이 현재 마지막 블록인 파란블록의 다음에 추가될 예정이다. 이때 캐나다의 노드와 호주의 노드가 거의 동시에 난스 값을 찾아 블록 생성에 성공했다. 캐나다의 노드가 생성한 블록을 빨간 블록이라고 하고 호주의 노드가 생성한 블록을 초록 블록이라고 하자.

캐나다 노드의 인접 노드에서는 전달받은 빨간 블록의 블록 해시를 다시 계산해 그 값이 정말로 특정한 숫자보다 작은 올바른 값인지 검증한 후 자신이 가지고 있던 파란 블록에 빨간 블록을 추가한다.

호주 노드에 인접한 노드에서도 마찬가지 방식으로 기존의 파란 노드에 초록 노드가 추가된다. 이 방식이 계속되면서 빨간 블록과 초록 블록은 전 세계에 분산돼 있는 노드에 전파된다. 포르투갈에 있는 노드에는 빨간 블록이 먼저 전파된 후 초록 블록이 전파됐다. 포르투갈 노드에서는 늦게 도착한 초록 블록은 무시된다.

러시아에 있는 노드도 나름 열심히 난스 값을 구하고 있었지만 구하기 전에 아쉽게도 초록 블록을 먼저 전달받아 초록 블록을 검증한 후 파란 블록 다음에 초록 블록을 추가했다.

그리고 초록 블록에 이을 새로운 블록의 난스 값을 구하기 시작하고 잠시 후 빨간 블록을 전달받았다. 늦게 도착한 빨간 블록은 러시아 노드에서는 무시된다.

이번에는 러시아 노드가 가장 먼저 난스 값을 구해 새로 보라 블록(X블록)을 생성하고 초록 블록 다음에 보라 블록을 추가한 후 <그림6>과 같이 인접 노드에 전파했다.



포르투갈에 있던 노드에는 파란 블록 다음에 빨간 블록이 추가돼 있는 상태였는데 파란 블록과 초록 블록에 이어진 새로운 보라 블록을 전달받았다. 포르투갈에 있던 노드에는 다음과 같이 블록체인의 분기가 발생한다.



빨간 블록과 초록 블록의 내용은 서로 다르다. 블록체인은 신뢰의 원천이 되는 체계라고 했는데, 이렇게 정보가 갈라지는 체계를 믿을 수 있는 것일까.

블록체인에서는 이렇게 분기가 발생해 충돌이 일어날 때 어느 블록체인을 믿을 것인지에 대한 기준이 마련돼 있다.

그렇지 않으면 분산돼 있는 장부 내용의 동기화가 깨지기 때문이다. 기준은 블록체인에 분기가 발생해 충돌하게 될 때는 더 많은 작업 증명이 수행돼 길이가 더 긴 블록을 선택하는 것이다.

즉 포르투갈 노드에 더 긴 블록체인을 가진 보라 블록이 전파되는 순간 빨간 블록은 파란 블록에서의 연결이 끊어지고 고아가 된다.

블록 생성은 평균 10분이 소요될 정도로 연산량이 큰 작업이다. 따라서 앞에서 발생한 것처럼 A블록과 B블록이 거의 동시에 생성돼 분기가 발생할 가능성은 그리 높지 않다.

그리고 길이가 같은 블록체인이 충돌하더라도 머지않아 블록체인의 길이가 달라져 분기에 의한 충돌이 해소되는 순간이 금방 다가온다.

실제로 블록체인인포를 통해 길이가 긴 블록체인에 의해 고아가 되는 블록의 수를 확인할 수 있다. 이에 따르면 최근 1년간 대부분 2개 이하, 최대 3개 이내에서 블록체인의 분기에 의한 충돌이 해소됐다.

하지만 일시적으로나마 이러한 분기 상태가 발생할 수 있기 때문에 실제 거래 상황에서는 보통 어떤 거래가 포함된 블록 이후 3~5개의 블록이 더 추가된 후에야 그 거래를 최종적으로 유효한 것으로 확정한다. 일시적으로 분기가 발생하더라도 그 이후 3~5개의 블록이 추가되는 과정에서 분기 상태가 해소되고 결국 하나의 블록체인만 남기 때문이다.
그러면 고아가 된 빨간 블록에 있던 거래 중 유실되는 거래가 생기지 않을까. 빨간 블록에 있던 거래 중에서 초록 블록에 포함되지 않았던 거래T가 있을 수 있다. 그러면 빨간 블록이 고아가 되면 거래T는 결국 유실되는 것이 아닐까 하는 의문이 들 수 있다.

하지만 유실은 발생하지 않는다. 거래T는 초록 블록에는 포함되지 않았더라도 보라 블록 또는 보라 블록 이후의 블록에 결국에는 포함되게 된다.

왜냐하면 보라 블록은 초록 블록을 부모로 해서 생성되는데 거래T가 초록 블록에 포함되지 않았으므로 초록 블록에 이어 생성되는 보라 블록 또는 보라 블록 이후의 블록에서는 거래T를 아직 블록체인에 포함되지 않은 다른 거래들과 마찬가지로 취급하며 블록에 추가하기 때문이다.

디지털은 복사가 가능하므로 이중 지불이라는 문제가 항상 따라다닌다. 블록체인도 예외는 아니다. 예외는 아닌 정도가 아니라 수많은 노드에 복제되는 방식이므로 이중 지불 문제가 반드시 생길 것 같다.

일단 동일한 기기에 담긴 지갑에서는 이중 지불을 할 수 없다. 예를 들어 하나의 기기에 설치돼 있는 지갑의 잔액이 5만원일 때 이 지갑에서 5만원을 지불하는 순간 잔액이 0이 되고 다시 5만원을 지불할 수 없기 때문이다.

그래서 이중 지불은 보통 물리적으로 떨어진 두 개의 지점에서 생각해 볼 수 있는 문제다. 장부가 복제돼 있으므로 캐나다에서도 자신의 잔액은 5만원이고 호주에서도 자신의 잔액은 5만원이다. 그러면 캐나다에서도 A에게 5만원을 보내고 이 거래가 아직 도달하지 않은 호주에서도 B에게 5만원을 보내면 어떻게 될까.

시작할 때는 멀리 떨어진 두 곳에서 이중 지불이 실행됐지만 두 거래는 블록체인 네트워크를 타고 전파되다가 어디에선가 반드시 만나게 돼 있다. 그 만나는 지점에서는 두 거래 사이에 반드시 선후 관계가 생긴다.

그 지점에 먼저 도달한 거래는 유효한 거래로 인정되지만 늦게 도달한 거래는 이미 잔액이 0인 상태에서 5만원을 보낸 것이 되므로 무효한 거래로 판별돼 블록에 포함되지 않고 버려지게 된다.

따라서 이중 지불된 거래 중 하나는 결국에는 무효화되는 방식으로 이중 지불 문제가 해결된다.

블록체인의 핵심, ③완료된 거래 정보의 변경 불가

거래 정보의 해시 값은 해당 거래가 포함된 블록의 머클 해시 계산에 입력 값으로 사용되고 머클 해시는 블록 해시의 계산에 입력 값으로 사용된다.

블록 해시는 앞서 살펴본 것처럼 다음 블록의 블록 헤더 정보로 사용돼 다음 블록의 블록 해시를 계산하는데 입력 값으로 사용된다.



따라서 어떤 거래 정보가 변경되면 그 거래 정보가 포함된 머클트리의 머클 해시가 변경되고 머클 해시가 변경되면 블록 해시가 변경된다. 즉 블록 #1의 거래 정보를 변경하면 블록 #1의 블록 해시 값이 바뀌므로 변경된 블록 #1의 블록 해시와 그다음 블록인 블록 #2의 블록 헤더에 이전의 블록 해시로 저장된 값이 서로 달라진다.

따라서 체인을 유지하려면 블록 #2 이전의 블록 해시 값을 00009afa2로 갱신한 후 블록 #2의 난스 값을 다시 구해 블록 해시를 새로 구해야 하고 연이어 블록 #3, #4의 블록 해시도 모두 새로 계산해야 한다.

그리고 블록 해시는 작업 증명에 성공해야 구할 수 있으므로 거래 정보를 변경한 블록부터 그 이후의 모든 블록을 순서대로 다시 채굴해야 한다.



블록 하나를 채굴하는데 평균 10분이 소요되므로 어떤 악의적인 노드가 바로 앞 블록의 거래 정보를 변경하고 채굴하는 그 10분 동안 다른 선의의 노드들은 거래 정보가 변경되지 않은 원래의 블록체인에 계속 블록을 이어 나가게 된다.

그래서 그 10분 후에는 악의적인 노드의 블록체인의 길이는 다른 선의의 노드들이 보유한 블록체인의 길이보다 1개 더 짧아지게 되고 두 블록체인이 만나게 되는 순간 길이가 짧은 블록체인은 버려지게 된다.

완료된 거래 정보를 변경하려면 변경하려는 거래 정보가 포함된 블록부터 그 이후의 모든 블록을 순서대로 다시 채굴해 새로운 블록체인(A)을 만들어야 하는데, 그동안에도 변경되지 않은 원래의 블록체인에는 다른 노드들에 의해 블록이 계속 추가되고 A보다 길이가 길어지게 되므로 A는 폐기되며 완료된 거래 정보의 변경은 실패하게 된다.

그런데 악의적인 노드가 다른 노드들보다 연산 능력이 훨씬 뛰어나다면 어떻게 될까. 그러면 악의적인 노드에 있는 블록체인에 블록이 추가되는 속도가 다른 블록체인에 블록이 추가되는 속도보다 더 빠를 것이고 언젠가는 악의적인 노드의 블록체인의 길이가 가장 길어지게 된다.

이렇게 되는 순간 악의적인 노드에 의해 변경된 거래 정보가 유효한 거래 정보로서 전체 블록체인 네트워크에 퍼지게 되며 과거 거래 정보의 변경이 성공하게 된다. 이를 51% 공격이라고 한다.

하지만 경제적 관점에서 생각해 보면 이런 일이 발생할 가능성은 사실상 없다. 일단 거래 정보가 변경될 수 있다는 사실이 알려지는 순간 블록체인의 신뢰는 깨지게 된다.

만약 악의적인 노드가 오랫동안 가장 큰 연산 능력을 가지고 있었다면 악의적인 노드가 생성한 블록이 많을 것이고 그에 따른 보상액도 많이 보유하고 있을 것이다.

이런 상황에서 블록체인의 신뢰가 붕괴되면 큰 피해를 보는 쪽은 악의적인 노드 자신이기 때문에 거래 정보를 변경할 경제적 동기가 없다.

악의적인 노드가 갑자기 많은 연산 능력을 가지게 됐다고 해도 블록체인의 신뢰 붕괴로 가치가 사라진 블록을 채굴해 봤자 앞으로 가져갈 수 있는 경제적 이익은 없다. 따라서 경제적으로 이익을 볼 수 없는 거래 정보의 변경은 사실상 발생하지 않게 된다.

최초의 탈중앙화 SW 기술

지금까지 ‘블록체인이 어떻게 비트코인이라는 암호화폐의 신뢰의 원천이 될 수 있는가’라는 물음에 대한 답을 찾아봤다. 블록체인은 거래 당사자 간 신뢰 확보를 위해 중앙 기관을 필요로 하지 않는 탈중앙화를 달성한 최초의 소프트웨어(SW) 기술이다.

비트코인은 화폐에 한정돼 있지만 그 이후에 개발되고 있는 많은 암호화폐들은 단순한 화폐를 넘어 블록체인 위에서 당사자 간의 계약을 프로그램으로 실행할 수 있는 탈중앙화 플랫폼을 지향하고 있다.

블록체인이 세상을 바꿀 수 있는 기술이라고 평가받는 이유도 이처럼 탈중앙화 플랫폼의 바탕이 되기 때문이다. 보다 나은 세상을 만드는 데 기여할 수 있는 기회의 문이 천천히, 하지만 분명히 열리고 있다.

[기사 인덱스]

PART1: 블록체인·암호화폐 한번에 이해하기

- '알쏭달쏭' 블록체인 한번에 이해하기

- 암호화폐 블록체인, 경제시스템을 해킹하다

- 9번째 생일 맞은 비트코인의 제너시스

- 암호화폐를 움직이는 사람들 '누구'

- 블록체인에 푹 빠진 세계의 중앙은행들

PART2: 블록체인, 산업 지도를 바꾼다

- 삼성SDS, 기업용 블록체인 플랫폼 개발...2015년부터 집중 투자

- 하나은행, 블록체인으로 '글로벌 결제 허브' 만든다

- 글로스퍼 '지역화폐의 진화'...블록체인으로 활용성 업그레이드

- 메디블록, 앱으로 활용하는 내 비밀스런 의료 정보

- 블록체인으로 게이머와 개발사 직접 잇는다

- 나이지리아 진출...'코인'에 신용정보 저장

- 이더리움 기반 모바일 게임 '크립토 탱크'

- 월마트, 돼지고기에 부착한 블록체인 '안전 이력서'

- 자율주행차 안전, 블록체인이 지킨다

- 코닥, 130년 사진 명가의 암호화폐 실험

- 글 올리면 돈 되는 '스팀잇'의 마법

- 에스토니아, 암호화폐 발행준비...두바이 '블록체인 정부' 선언

- 통신·SI·금융업계 "블록체인 신시장 잡아라"

PART3: 미리보는 '블록체인 혁명'

- 최공필 금융연구원 미래금융연구센터장 "암화화폐와 법정화폐 모두 통용되는 세상 올 것"

- 김서준 해시드 대표 "참여자 모두 돈 버는 '토큰 이코노미' 가능하죠"

- 장화진 한국IBM 대표 "AI IOT 빅데이터 등 블록체인 위에 자리 잡을 것"

- 김형중 고려대 정보보호대학원 교수 "암호화폐 빠진 블록체인은 무용지물일 뿐"


당사의 허락 없이 본 글과 사진의 무단 전재 및 재배포를 금합니다.

입력일시 : 2018-02-06 18:09

가장 기대되는 인터넷전문은행의 서비스는 무엇입니까.
투표하기 결과보기

2018.09
통권1191
Business 통권1191호 이미지
'스파오' 성공 스토리
지난호 보기정기구독신청
배너