비트코인 채굴과 선순환 구조 (Virtuous Cycle of Bitcoin Mining)

비트코인에 관심을 가진 독자라면 왜 비트코인을 우리가 아는 화폐처럼 발행을 하지 않고 어려운 채굴과정을 거치는지 매우 궁금할 것이다. 이전 글에서 채굴은 (1)새로운 비트코인을 공급하기도 하지만 (2)블록체인이라 불리는 공유된 거래기록을 해커나 사기꾼으로부터 안전하게 보호하는 역할을 한다고 언급하였다. 이 글에서는 비트코인 채굴에 대해 간단히 설명하고 채굴의 의미에 대해 자세히 알아봄으로써 비트코인이 왜 새로운 유형의 화폐로써 자리잡을 가능성이 높은지를 살펴본다.

비트코인 채굴, 블록, 블록체인

비트코인 거래가 일어나면 이 거래는 비트코인 네트워크에 참여하는 노드에게 알려진다. 이렇게 알려진 거래를 기록하고 공식화하는 과정이 비트코인 채굴(mining)이다. 이 과정은 블록 단위로 일어난다. 블록(block)은 비트코인 거래를 약 10분 단위로 모은 것이다. 블록체인(block chain)은 현재까지의 블록이 모두 이어진 것으로 현재까지 일어난 모든 비트코인 거래가 시간순으로 기록된 장부이다. 아래의 그림은 필자의 거래가 포함된 블록에 대한 요약정보이다. 이 블록은 280035번째 블록이고 326개의 거래가 포함되어 있으며 거래금액은 약 3,140 비트코인(BTC)이다.

bitcoinblockinformaton
블록체인 요약정보(https://blockchain.info/block-index/457875): 비트코인과 관련된 모든 정보는 Blockchain.info와 같은 블록체인 탐색 서비스(Block chain browser)를 통해 찾아볼 수 있다.

새로운 블록은 규칙에 따라 채굴자(mining node)들이 처리를 하게되며 가장 먼저 처리를 끝낸 채굴자가 처리의 증거(proof of work)와 함께 “이것이 원본이다”라고 이웃 채굴자에게 알리고 이를 채굴자들이 확인하고 받아들이는 과정을 거치게 된다. 이렇게 받아들여진 블록은 기존의 블록체인을 이어가는 것이다. 이렇게 블록 및 블록체인을 공식화하는 과정이 바로 채굴이다(왜 채굴이라고 부르는지는 조금 후에 설명하겠다).

비트코인 채굴은 구체적으로는 블록의 요약본(hash)의 값이 주어진 숫자보다 작게 만드는 임의의 숫자(nonce) X를 찾는 것이다[Sathoshi Nakamoto, “Bitcoin: A Peer-to-Peer Electronic Cash System,” 2008]. 예를 들어 요약본이 최대 99999까지 가능한데 주어진 숫자인 00099보다 작거나 같은 요약본을 만드는 임의의 숫자를 찾는 것이다(이해를 돕기위해 10진수로 설명하였다).

bitcoinminingstep
블록의 요약본(Hash)은 바로 이전 블록의 요약본, 현재 블록의 거래, 임의의 숫자를 더한 문서에 기반하여 만들어진다

이때 블록의 요약본은 위 그림과 같이 이전 블록의 요약본(위의 블록에서는 000…bd4a)에 현재 블록의 모든 거래를 덧붙이고(실제로는 모든 거래의 요약본) 여기에 임의의 숫자 X를 덧붙인 문서를 요약(hashing)하여 만든다.

조건을 만족하는 X를 찾는 것은 우리가 일반적으로 방정식을 풀듯이 해를 찾을 수 있는 것이 아니라 모든 경우의 수를 대입해 보는 방법(brute force)밖에 없다. 비트코인의 경우 요약본의 크기가 256비트이고, 경우의 수가 10의 77승을 넘는다(위의 그림에서는 요약본이 16진수로 표시되어 있다). 이때 주어진 요약본의 값이 작으면 작을 수록(앞자리의 0의 수가 많을 수록) 조건을 만족하는 X를 찾는 것이 기하급수적으로 어려워진다.

이렇게 조건을 만족하는 임의의 수를 찾아 만든 현재 블록의 요약본을 이웃 채굴자에게 알리고 이를 다른 채굴자들이 맞는 것으로 받아들이게 되면 이를 블록의 해를 구했다고 하거나 블록을 찾았다고 한다. 위의 블록에서는 X에 해당하는 값(Nonce)이 3903909353이고 이를 이용한 요약본(Hash)의 값이 0000…e43cb이다.

거래기록의 보호

그러면 왜 이렇게 힘들게 공식화하는지가 궁금할 것이다. 이는 모든 거래기록이 공유되는 상황에서 해커들이 쉽게 이 기록을 조작하는 것을 방지하기 위한 것이다.

만약 해커가 자신이 쓴 돈을 다른 곳에 다시 쓰려고 한다고 가정하자. 그러기 위해서는 장부(블록체인)를 조작해야 한다. 비트코인 시스템에서는 블록체인이 진짜인지 가짜인지를 민주주의의 원칙에 의하여 결정한다[Sathoshi Nakamoto, “Bitcoin: A Peer-to-Peer Electronic Cash System,” 2008]. 블록체인의 복사본은 모든 노드들이 가지고 있는 데 여러가지 이유로 서로 다른 복사본을 가지고 있을 수 있다(이를 분기되었다(forked)고 한다). 이때 가장 많은 노드들이 가지고 있는 복사본을 진짜로 여기는 것이다(위의 그림에서는 Main Chain이라고 표시되어 있다). 만약 블록을 쉽게 공식화할 수 있다면 해커가 많은 숫자의 컴퓨터(정확하게는 IP)만 가지고도 기록의 조작이 가능해지는 것이다.

하지만 해를 찾기가 매우 어렵게 만듦으로써 블록체인을 조작하려면 해커는 선의의 채굴자가 가진 CPU파워보다 더 큰 파워를 가져야한다(51% 공격). 특히 해커가 조작하고자하는 블록 이후에 여러개의 블록이 이어진 경우에는 조작은 현실적으로 불가능하다고 하겠다.

이렇게 거래 기록을 안전하게 보호하는 방식은 기존의 은행이나 신용카드사에서 사용하는 방법과 매우 다르다 하겠다. 기존의 방식은 우리가 믿고 싶은 제3자가 모든 기록을 다 가지고 있고 이를 해커가 접근하지 못하도록 하는 방식이다. 그러다 보니 항상 구멍이 있기 마련이고 이를 해커들이 악용하는 것이다. 하지만 비트코인의 방식은 누구나 기록을 볼 수 있도록 하지만 이를 조작하는 것은 한 가지 방법밖에 없고 이것이 현실적으로는 불가능하도록 하는 것이다(2012년 시점에서도 하나의 거래를 조작하기 위해서는 수천억원을 들여야한다고 한다).

새로운 비트코인의 공급

비트코인 시스템이 제대로 작동하기 위해서는 앞에서도 언급하였듯이 엄청난 CPU파워가 필요하다. 하지만 비트코인 시스템에서는 누군가 통제하거나 강제를 하는 사람이 없기때문에 자발적인 참여를 기대할 수 밖에 없다. 이 자발적인 참여의 동기로써 블록의 해를 구한 채굴자에게 새로운 비트코인을 발행하는 것이다(위의 그림에서 Block Reward). 물론 거래수수료(Transaction fees)도 채굴자에게 제공된다. 해를 구한 채굴자가 비트코인을 얻기때문에 채굴이라는 용어를 사용하는 것이다.

한 블록당 발행되는 비트코인의 수는 4년마다 반으로 줄어들게 되어있어(처음에는 블록의 해를 구한 노드에게 50개, 현재는 25개의 비트코인이 발행된다) 발행가능한 비트코인 수는 수학적으로 2,100만개로 한정이 되어있다.

따라서 비트코인의 가치는 높아질수 밖에 없고 비트코인의 가치가 높아질수록 다른 채굴자보다 더 빨리 해를 구하기 위해서 더 많은 CPU파워를 투입하게 될 것이고 이는 더욱 안전한 시스템을 만들게 되는 것이다. 물론 초기에 비트코인이 전혀 가치가 없을때는 이를 이끌어갈 그룹이 필요했겠지만, 이제는 선순환 구조가 만들어졌다고 하겠다(네트워크에 기반한 모든 서비스가 마찬가지이다).

bitcoinminingvirtuouscycle1
비트코인 채굴은 비트코인의 가치가 높아질수록 더 많은 채굴자들이 참여하고, 이는 비트코인의 희소성 뿐 아니라 안전성을 높임으로써 비트코인의 가치가 더 높아지는 선순환 구조를 가지고 있다

결론적으로 채굴은 비트코인 시스템을 안전하게 보호하는 사람들에게 인센티브를 제공함으로써 시스템이 더욱 안전하도록 만들며, 비트코인의 공급을 조정함으로써 비트코인의 가치가 유지되도록 하는 선순환적인 시스템인 것이다.

글 : 노상규(오가닉 미디어랩)
출처 : http://goo.gl/dDmGR3

%d bloggers like this: