Transactions of Bitcoin, why we should wait for one hour?

  “ 1 BTC 국내 거래가격 2,400만 원 돌파.” 비트코인 거래 가격이 무섭게 치솟고 있다는 기사가 오늘 하루 여러 언론 매체를 통해 전해지고 있다. 이렇다 보니 비트코인이 무엇인지 모르는 사람이 주변에 없을 정도다.“ 아, 1년 전에 비트코인 샀으면 지금 얼마냐….” 이런 후회 섞인 대화도 이곳저곳에서 듣곤 한다. 비트코인이 유명세를 치르다 보니“ 비트코인 거래는 한 시간은 기다려야 안전해”와 같이 비트코인의 특성에 대해 말하는 사람도 종종 눈에 띈다.

  “ 그런데 왜 비트코인 거래는 신용카드나 페이팔(PayPal) 거래와 달리 한 시간이나 기다려야 안전할까?”

  비트코인은‘ 블록체인’이라 불리는 자료구조에 거래(transaction) 내역을 기록하는데 이를 보통‘ 분산원장(distributed ledger)’이라고도 부른다. 이런 블록체인은 여러 개의‘ 블록’으로 구성되어 있다. 블록 크기는 1MB로 고정되어 있어 블록 하나에 기록할 수 있는 거래는 2,500건 내외로 알려져 있다.

[그림 1] 비트코인의 블록체인 예시

  비트코인 네트워크에 참여하는 노드들은 누구나 아직 기록되지 않은 거래 내역을 모아 새로운 블록을 생성하고 기존 블록체인에 추가할 수 있는데 이를 비트코인 ‘채굴 (마이닝)’이라 부른다. 물론 매우 어려운 문제를 풀어야 하지만 누구보다 먼저 풀 수만 있다면 새로운 블록을 생성하여 블록체인에 추가할 기회를 얻을 수 있다. 그런데 전 세계에 퍼져 있는 노드들이 제각각 블록을 생성하다 보면 [그림 1]처럼 하나의 블록 Bn에 서로 다른 블록들 Bn+1과 Bn+1′이 추가되는 경우가 가끔 발생한다.

  Bn+1과 Bn+1′과 같이 블록체인이 분기된 시점에는 어떤 블록이‘ 주류(主流, main) 블록’이 될지 혹은‘ 고아(孤兒, orphan) 블록’이 될지 아무도 모른다. 이는 어느 블록의 뒤로 다른 블록이 추가되느냐에 따라 주류 블록과 고아 블록이 결정되기 때문이다. 당연히 새로운 블록들이 뒤로 계속 추가되는 블록이 주류 블록이 된다. 주류 블록이 되어야만 해당 블록에 기록된 거래가 인정되고, 고아 블록의 거래는 무시된다. [그림 1]에서는 Bn+1의 뒤로 새로운 블록이 계속 붙었기 때문에 주류 블록이 되고, Bn+1′은 고아 블록이 된다. 비트코인의‘ 긴 블록 선호 정책’은 분산 환경에서 발생할 수밖에 없는 이러한 문제를 완벽하게 해결하고 있다.

  2009년 비트코인이 처음 세상에 등장한 이래 Bn+1′과 같은 길이가 1인 고아 블록이 종종 발생했다. 찾아보니 길이가 1인 고아 블록은 2009년 1월 3일부터 2017년 12월 7일 현재까지 총 167회 발생한 것으로 알려져 있다. 그럼 길이가 2 이상인 경우도 발생했을까? [그림 2]에서 보여주듯 길이가 2인 경우는 83회, 길이 3인 경우는 36회, 길이가 4인 경우는 14회, 길이가 5인 경우는 6회 발생했다. 길이가 6 이상인 고아 블록은 아직 발생하지 않았다.

[그림 2] 비트코인의 고아 블록 길이 현황(2017년 12월 7일 현재)

  현재까지는 주류 블록과 고아 블록이 서로 경합을 벌이더라도 길이가 6 이상 간 적은 없었다. 즉, 현재로는 자신을 포함 뒤로 6개의 블록이 있다면 자신이 고아 블록이 될 가능성은 매우 낮다. 물론 6은 ‘경험으로 알아낸(heuristic, 휴리스틱)’값 이기 때문에 항상‘ 참’일 수는 없다. 언젠가 길이가 6인 고아 블록이 나타난다면 자신을 포함해 블록 7개가 생성되어야 자신이 고아 블록이 될 가능성이 적다고 말할 수 있을 것이다.

  그렇다면 왜 한 시간을 기다려야 안전한 거래라고 말하는 걸까? 그 이유는 블록 하나를 만드는데 걸리는 시간이 평균 10분 정도 필요하고 6개의 블록이 만들어지려면 대략 한 시간이 걸리기 때문이다. 참고로 비트코인에서 블록 하나를 생성하려면 매우 어려운 문제를 풀어야 한다. 2017년 12월 7일 현재 초당 11,941,671,000,000,000,000개의 해시를 계산할 수 있는 컴퓨터가 평균 10분 정도 걸릴 만큼 어렵다. 이는 일반 PC로는 감당할 수 없는 엄청난 계산량이다.

[그림 3] 블록 생성 평균 시간(2일 간격 평균값, 2017년 12월 7일 현재)

  블록을 생성하는 문제는 확률에 기반을 두기 때문에 블록 생성 시간을 정확히 10분에 맞추기는 어렵다. 운이 좋으면 10분 안에 일반 PC로도 문제를 풀 수 있고, 운이 나쁘면 슈퍼컴퓨터를 사용해도 10분 안에 문제를 풀 수 없다. 다만, 컴퓨팅 성능이 좋으면 좋을수록 문제를 빨리 풀 확률은 높아진다. [그림 3]은 2011년 12월 3일부터 2017년 12월 7일 현재까지 이틀 간격으로 블록 생성 시간의 평균을 나타낸다. 이 기간에 가장 오래 걸린 블록 생성 시간은 47.8분 정도였으며, 가장 적은 시간은 4.7분 정도였다. 모든 블록의 생성 시간을 평균 내면 9.64분, 대략 10분이 된다.

  비트코인의 인기로 많은 사람이 채굴에 참여하고 더불어 컴퓨팅 성능도 나날이 좋아지고 있다. 그렇다면 블 록 생성을 위한 문 제 풀이 시간이 계속 줄 어야 하는데 어떻게 10분을 유지하는 걸까? 비밀은 계속 변하는 문제의‘ 난이도’에 있다.

[수식 1] 비트코인 난이도 계산 수식(개념)

  [수식 1]과 같이‘ 다음 난이도’는 최근 2,016개의 블록의 채굴 시간에 의해 결정된다.1 즉, 최근 2,016개의 채굴 시간이 이전보다 짧으면 다음 난이도는 올라가고 반면에 길면 다음 난이도는 내려간다. [그림 4]에서와 같이 비트코인의 인기를 보여주듯 채굴 난이도는 가파르게 상승하고 있다. 2009년 1월 3일에 생성된 첫 블록의 난이도를 1로 정의하면 2017년 12월 7일 생성된 #498068 블록의 난이도는 1,590,896,927,258.08로 약 1.59조 배 정도 어려워졌다.

[그림 4] 비트코인 채굴 난이도 추세(2017년 12월 7일 현재)

  채굴 난이도가 빠르게 상승하는 원인은 비트코인의 가치가 급상승하면서 그만큼 많은 사람이 성능 좋은 장비로 채굴을 하기 때문이다. [그림 5]는 사금 채취와 비트코인 채굴을 비교한 그림이다. 현재의 비트코인 채굴 난이도에서 PC를 이용한 채굴은 과거 쟁반을 이용한 사금(沙金) 채취와 비슷하다. 지금은 ASIC(Application Specific Integrated Circuit, 주문형 반도체)라고 해서 아예 비트코인 알고리즘에 최적화된 반도체칩을 이용하여 채굴하고 있다. 이렇다 보니 개인이 비트코인을 채굴하는 것은 거의 불가능하고 채굴은 대부분 기업이나 대규모 조직에서 대신하고 있다.

[그림 5] 사금(沙金) 채취와 비트코인 채굴의 비교

  지금까지 비트코인 거래가 안전하게 성사되려면 1시간을 기다려야 하는 이유를 비트코인 기술과 특성을 바탕으로 설명했다. 지금은 비트코인의 가치가 급상승하고 있어 투기의 한 종류처럼 인식되고 있지만, 분산 환경에서 중앙의 통제 없이 화폐 기능을 수행하고 있는 비트코인의 사상(思想), 즉 블록체인의 유용성과 가능성은 변함이 없다. 비트코인에 껴 있는 거품은 사그라들고 진정 블록체인의 가치가 조명 받는 날이 조만간 올 거라 믿는다.


1 실제 비트코인 난이도 계산 방법은 https://en.bitcoin.it/wiki/Difficulty 참고

비트코인 블록체인 월간SW중심사회2017년12월