brunch

You can make anything
by writing

C.S.Lewis

by 리핏 Apr 19. 2017

수박 겉핥기로 알아보는 블록체인의 작동 원리

뉴스, SNS 등의 매체와 완전히 담 쌓고 사는 사람이 아니고서는 비트코인(Bitcoin)이라는 것에 대해서는 언젠가 들어본 적이 있을 것이다. 비트코인은 2009년 사토시 나카모토(Satoshi Nakamoto)라는 필명의 저자가 발표한 “Bitcoin: A Peer-to-Peer Electronic Cash System”라는 제목의 논문에서 고안된 암호화폐(Cryptocurrency)이다. 암호화폐란 컴퓨터의 비트(0과 1)로 이루어진, 손으로 만질 수는 없지만 철저히 암호화 되어 있어 실제 지폐, 동전 등의 돈과 마찬가지로 금전 거래에 사용할 수 있고 쉽게 위조하거나 훔칠 수 없는 화폐를 말한다.


지금도 인터넷 뱅킹, 모바일 결제 등을 통해 돈을 송금하거나 물건을 구입할 수 있는데 비트코인은 뭐가 그렇게 특별한 것일까? 그것은 비트코인은 은행, 카드사, 거래중개사 등의 중간 다리(middleman, intermediary)의 개입 없이도 거래 당사자들 간의 신뢰있는 P2P(peer-to-peer) 거래를 가능케 해주기 때문이다. 그로 인하여 중간 다리들을 거치면서 발생하는 시간 소모와 각종 수수료가 사라지고 거래 정보가 투명하게 공개되고 한 곳에 수집된 정보가 한방에 털리는 보안상의 위험에서도 벗어날 수 있게 된다.

블록체인(Blockchain)에 대해 알아보는 글에서 시작부터 비트코인 이야기만 하고 있는 이유는 비트코인이 바로 블록체인 기술을 활용한 첫번째이자 가장 널리 쓰이고있는 어플리케이션이기 때문이다. 비트코인이 카카오톡이라면 블록체인은 카카오톡과 같은 앱을 만들고 사람들이 쓸 수 있게 해준 스마트폰이라는 기반 기술 그 자체라고 비유할 수 있다. 즉 비트코인의 장점은 모두 블록체인이라는 기술의 구조적, 논리적 설계와 특징 덕분에 가능한 것이다. 이 글에서는 바로 이 블록체인의 작동 원리에 대하여 컴퓨터 비전공자들도 이해하기 쉽게 최대한 풀어서 설명해보고자 한다.

블록체인은 쉽게 말해 분산 원장(distributed ledger)이라고들 한다. 그러나 분산 원장이라는 표현은 블록체인을 처음 접하는 사람에게는 너무나 막연하고 전혀 쉽지 않은 설명이다. 누군가 나에게 블록체인이 도대체 뭐냐라고 묻는다면 나는 이렇게 대답할 것이다. “블록체인은 누구나 가지고 있어서 아무때나 확인할 수 있지만 아무도 조작할 수 없고 영구 기록되는 거래 장부이다.”


은행은 고객들의 거래 내역을 은행의 데이터베이스에 기록해 놓고 자기들만이 그 내용을 열람, 관리할 수 있도록 해놓았다. 그러나 블록체인에서는 모든 사람들이 모든 거래 내역을 자신의 장부에 기록하여 누구나 아무때나 그 장부를 열어볼 수 있다. 문제는 각자가 장부를 가지고 있으면 어떻게 모든 사람이 같은 내용의 장부를 가지고 있고 누군가가 장부를 조작하려는 것을 어떻게 막을 수 있냐는 것이다. 블록체인은 시간순으로 연결된 블록으로 구성된 장부이며 각 블록은 작업 증명(proof-of-work)이라는 과정을 통해 조작되지 않았음을 보증한다.


1) 블록에 기록하기

A가 B에게 100원을 보내고자 한다. A는 이 거래(트랜잭션)에 대하여 블록체인에 참여하고 있는 모든 사람들에게 알린다. 블록체인에 참여하고 있는 사람(노드)들은 먼저 A가 B에게 100원을 보내는 이 트랜잭션이 과연 유효한지 아닌지 확인한다. 즉 장부에서 A가 가진 돈의 획득 내역과 사용 기록을 검토하여 B에게 보낼 100원의 잔고가 남아있는지를 확인한다. 확인 결과 유효한 트랜잭션이라면 장부의 새 블록에 이를 기록한다. 블록의 가장 위에는 바로 앞 블록의 일련번호가 적혀있다. 이후 10분동안 일어나는 트랜잭션들에 대해서도 같은 확인 과정을 거쳐 유효한 경우에는 열어 놓았던 이 블록에 한 줄씩 계속 기록해나간다.


2) 블록 각인하기

이제 10분이 지났다. 그러면 각 노드들은 현재 블록에 기록된 트랜잭션들을 수정하기 어렵도록 각인하는 작업을 시작한다. 이 각인을 위해서는 시간이 많이 소요되는 어떤 문제를 풀어야 한다. 이 문제는 지적으로 어렵다기 보다는 무조건 많이 시도해봐야 답이 나오는 노가다성 문제인데, 조각 퍼즐을 맞추는 것처럼 푸는데는 시간이 오래걸리지만 그 답이 맞는지 틀렸는지는 바로 확인할 수 있다. 그리고 이 문제는 블록에 기록된 내용과 연결되어 있어서 동일한 내용의 블록이라면 동일한 답이, 한 글자라도 다른 것이 있다면 완전히 다른 답이 나오도록 되어 있다. (참고로 비트코인의 경우 SHA-256 해시 함수에 기반한 Hashcash 작업 증명 알고리즘을 사용한다.) 무수한 시도 끝에 가장 먼저 답을 찾은 노드는 그 답을 다른 모든 노드에게 알린다. 답을 전달 받은 노드들은 그 답이 정말 맞는지 확인하고 맞다면 각자 문제를 풀던 것을 중단하고 블록의 가장 끝에 이 답을 적어놓는다.


3) 블록 연결하기

이제 이 블록에는 바로 앞 블록의 일련번호, 10분 간의 거래 내역, 2)에서 찾은 답이 기록되어 있다. 이 세 가지를 조합하여 현재 블록의 일련번호를 생성하고 1)~3)의 과정을 계속 반복한다. 그러면 매 10분마다 새로운 블록이 만들어지고 각 블록은 바로 앞 블록의 일련번호를 가지고 있기 때문에 가장 최신의 블록에서 시작하여 최초의 블록까지 순차적으로 따라가면서 장부에 기록된 모든 내용을 볼 수 있게 된다.


1)과 3)은 블록체인의 구성에 관한 내용이라 그냥 그렇구나하고 받아들이면 되는 부분이다. 블록체인을 처음 접했을 때 어려운 부분은 2)에서 시간이 오래 걸리는 문제를 푸는 것이 어떻게 장부의 조작을 막을 수 있냐하는 것이다. 그렇다면 반대로 블록체인상에서 사기를 치려면 어떻게 해야하는지 알아보자. 일단 내가 가지고 있는 돈 보다 더 큰 금액을 사용하려는 시도는 모든 노드가 1)에서 거래 유효성 검증을 하기 때문에 불가능하다. 블록체인 안에서 사기를 치기 위해서는 결국 내가 이미 돈을 썼던 거래 내역을 없애고 그 돈을 다시 사용할 수 있게(double-spending) 장부를 조작해야한다. 기존 거래 내역을 수정하려면 해당 블록의 내용을 바꿔야하는데 2)에서 설명했듯이 블록의 내용이 바뀌면 답도 달라지기 때문에 문제를 다시 풀어서 답을 찾아야한다.


여기에서 장부를 조작하려는 악의적 노드는 난관에 봉착한다. 먼저 답을 다시 찾아내기 위해서는 막대한 컴퓨팅 파워가 필요하다. 모든 노드가 동시에 달라붙어서 풀었을 때 평균적으로 10분에 한 번 답을 찾을 수 있게끔 문제의 난이도가 설정되어 있는데 이것을 혼자 풀기 위해서는 모든 노드의 컴퓨팅 파워를 합친 것만큼의 자원을 본인이 소유하고 있거나 아니면 답이 나올 때까지 무한정 기다려야한다. 어찌됐건 운 좋게 조작된 블록에 대한 답을 찾았다고 가정해보자. 3)에서 각 블록은 바로 앞 블록의 일련번호를 가지고 있다고 하였다. 문제는 블록의 내용이 바뀌면 그 블록의 일련번호도 바뀌게 되므로 뒷 블록도 이에 따라 업데이트 해주어야 장부의 연결이 끊어지지 않는다는 것이다. 뒷 블록을 업데이트 했다는 것은 문제를 또 풀어야한다는 것이고 이것을 가장 마지막 블록에 다다를 때까지 반복해야한다. 또한 블록체인의 노드들은 동시에 여러개의 장부가 발견된 경우 가장 긴, 만드는데 가장 시간이 오래 걸린 체인을 유효한 것으로 받아들이도록 되어 있기 때문에 각 블록을 조작하는 이 작업은 다른 노드들이 새로운 블록을 생성하는 속도보다 빠르게 진행되어야만 한다.


결국 블록체인에 기록된 내용을 조작하려면 이 세상에서 가장 성능이 뛰어난 슈퍼컴퓨터를 가지고 있거나 블록체인 안의 사람들 중 과반수 이상을 설득하든 컴퓨터를 감염시키든 하여 자신의 편으로 만들어 같은 조작에 참여하도록 만들어야한다. 불가능하지만은 않다. 그러나 거래 내역을 조작함으로써 얻어지는 이득에 비하여 조작에 필요한 자원과 시간적 비용이 훨씬 더 크기 때문에 조작에 대한 동기 자체가 사라지게 된다는 것이 블록체인의 핵심이다. 이에 더하여 비트코인 블록체인에서는 블록 각인 문제를 가장 먼저 푼 사람에게 새로 발행된 비트코인을 보상으로 줌(이를 채굴이라고 한다)으로써 사람들이 컴퓨팅 파워를 블록체인에 대한 공격 보다는 이를 더더욱 견고히 하는데 사용하도록 유도한다.


지금까지 블록체인이 무엇이며 어떤 구조로 되어있고 왜 안전한 것인지 그 작동 원리를 수박 겉핥기식으로 얕게 한번 알아보았다. 이어지는 글에서는 블록체인의 적용 분야, Hashcash 알고리즘, 스마트 계약(Smart Contract)와 이더리움(Ethereum), 블록체인의 한계점 등에 대해 살펴보도록 하겠다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari