본문 바로가기

비트코인

비트코인 채굴(마이닝)이란? 채굴이유

비트코인 채굴(마이닝)이란? 그리고 채굴 이유에 대해 알아보겠습니다. 채굴 이해를 쉽게 설명하고자 '복잡한 연산 문제를 해결하는 과정이다.'라고 설명하는 경우가 많은데 이는 많은 과정을 생략하여 표현한 내용입니다. 좀 더 정확히 표현하자면 거대한 주사위를 굴려 특정 값 이하의 결과 값을 얻고 그것을 증명하여 장부를 기록하는 일련의 과정을 말합니다. 아래의 과정을 따라 정독하시면 비트코인 채굴의 의미를 좀 더 자세히 이해하실 수 있습니다 :)

  1. 주사위를 굴리는 이유
  2. 해시함수
  3. 작업증명 (Proof of Work)
  4. 채굴 (Mining)
  5. 난이도 조절과 목표 숫자 (Target number)

  주사위를 굴리는 이유  


A와 B의 거래가 성사되려면 자금의 이동을 기록하고 왜곡되지 않도록 관리하는 거래장부 관리자가 있어야 합니다. 그러나 장부 기록자가 폭력이나 뇌물로 위협받게 된다면 거래의 신뢰가 깨져버리게 됩니다. 즉 특정 장부기록자가 정직할 것이라 믿었지만 이 중앙성으로 인해 신뢰가 깨져버렸습니다. 비트코인은 탈중앙성, 즉 정부나 제삼자와 상관없이 신뢰할 수 있는 시스템을 구현했습니다. 그 방법은 거래기록의 탈중앙성을 위해 장부를 기록할 수 있는 이를 셀 수 없이 많게 하고 누가 장부를 기록할지 모르게 한다면 거래 기록에 신뢰를 가져올 수 있게 됩니다. 이때 장부 기록할 권한자를 뽑기 위해 주사위를 굴리기로 합니다.

   해시함수  


주사위를 굴린다는 것은 새로 만들어진 블록에 거래 기록을 기입할 사람을 뽑는 것입니다. 이때 SHA-256 함수 (아래 링크 참고)
에 1. 직전 블록의 해시값과 2. 기록할 거래내용 그리고 3. 랜덤 하게 주어지는 논스값 세가지를 입력값으로 사용합니다. SHA-256 함수를 사용하면 입력값의 작은 변화에 전혀 예측할 수 없는 값이 출력되며 그 출력값의 자릿수는 256bit로 동일합니다. 이때 나온 결과값이 네트워크에서 약속한 목표 숫자 (Target number) 보다 작다면 거래 장부 기록자로 당첨됩니다. 목표 숫자란 0부터 2^256 이라는 셀 수 없이 큰 수의 사이에 한 숫자입니다. 0부터 목표숫자 사이의 범위에 해당하는 해시값을 출력해낸 이가 주사위 굴리기의 승자가 되는것입니다. 만약 0 부터 목표숫자 사이의 값을 네트워크내에 어떤 노드에서도 찾지 못한다면 계속 해시함수 연산을 계속해서 수행하게 됩니다.

해시(Hash) 함수란? 그 특성에 대해 알아봅니다.

해시 함수란? 개념과 특성은 무엇일까요. 오늘은 블록체인 알고리즘에 널리 사용되고 있는 해시 함수에 대해 알아보겠습니다. 특히 해시 함수중 비트코인 알고리즘에 사용되고 있는 SHA256 함수

ydairus.net


랜덤하게 주어지는 논스값과 직전 블록의 해시값 그리고 기록할 거래내용을 인풋으로 쓰기 때문에 입력에 따른 해시함수 결괏값이 계속해서 바뀌게 되고 해시값의 출력 범위가 0부터 2^256이기 때문에 수억, 수조 번의 해시함수를 계산해내야 0부터 2^256 사이의 값, 즉 목표 함수보다 작은 범위의 숫자를 출력하게 됩니다.

  작업 증명 (Proof of work)  


누군가 엄청난 컴퓨팅 파워를 통해 주사위 굴리기의 당첨 확률을 독점해버리는 상황을 막을 수 있어야 합니다. 이를 해결하기 위해 주사위 굴리기 게임에 참가하기 위해서는 해시값 연산에 필요한 전기에너지 사용료를 게임 입장료로 사용합니다. 많은 연산이 필요할수록 많은 전기에너지 사용비가 수반됩니다. 이때 당첨자가 얻어낸 해시값이 목표 숫자보다 작은 것이 맞는지, 이전 장부의 기록을 가지고 충실하게 계산해냈는지 등을 당첨자 외 참가자들이 증명해냅니다. 즉 거짓 거래정보를 기록하려는 이는 엄청난 에너지를 소모하고도 작업 증명과정에서 장부 조작에 실패하게 됩니다.

작업 증명 시스템의 중요한 속성은 물리적 비용을 발생시킨다는 점입니다. 따라서 작업 증명 시스템에서 참여자에게 압력을 행사해 네트워크를 공격하려면, 각 참여자의 채굴장 컴퓨터를 탈취해야 할 뿐 아니라 그 전기세 고지서도 대신 납부해야 하는 것입니다.

  채굴
  

출처 : 서울신문

위와 같이 작업 증명(Proof of Work)을 통해 비트코인 장부에 기록할 수 있는 권한을 추첨하는 방식을 흔히 채굴(mining)이라고 부릅니다. 당첨자는 직전 블록에 기입된 거래 내용과 현재 생성된 블록에 기입할 거래정보를 입력값으로 많은 전기 에너지를 소모해가며 해시값을 얻어냈습니다. 그 외 참가자들은 그 해시값 계산에 이상이 없는지 작업 증명을 거래에 신뢰성을 부여합니다.

이러한 거래장부를 기입할 블록 생성 시스템이 돌아가려면 적절한 보상이 필요합니다. 블록에 현재 거래내용을 기입할 수 있는 권한을 갖게 된 당첨자에게 많은 전기 에너지를 소모한 대신 비트코인을 보상하게 됩니다. 바로 이것이 비트코인이 공급되는 절차인 것입니다.

  난이도 조절과 목표 숫자 (Target number)  


비트코인의 가치를 알아는 보는 이들이 이것을 통해 거래를 하고 매수하게 됩니다. 비트코인의 가격이 올라가고 더 많은 채굴자들이 참여할게 될 것이고, 위의 절차대로 생각해보면 2100만 개로 유한한 비트코인의 공급되는 시기가 빨라지게 될 것입니다. 왜냐면 해시함수를 연산시키는 참여자가 많아지게 되기 때문입니다. 또한 블록에 장부를 기입하기도 전에 다음 블록에 거래 내용을 기입할 당첨자가 생기게 됩니다. 이렇게 된다면 거래의 순서가 뒤죽박죽 기입될 위기가 생길 수도 있습니다. 반대로 채굴자의 수가 줄게 되면 비트코인 공급 기간에 차질이 생길 것이며 거래를 증명할 참여자가 줄어들어 네트워크의 신뢰성에 위기가 올 것입니다.

이것을 해결해줄 혁신은 바로 '난이도 조절'입니다. 사토시 나카모토는 거래내용이 기입될 블록 생성시간을 10분으로 기준을 정했습니다. 2주 동안의 평균 블록 생성 시간을 계산해 그것이 10분보다 빨랐다면 목표 숫자를 더 낮추게 됩니다. 즉 해시함수의 연산 결과 얻게 되는 해시값이 0부터 2^256의 숫자 중 2주 전의 목표 숫자 값보다 더 작게 설정합니다. 이렇게 되면 더 많은 전기 에너지를 소모하고 더 많은 시간을 소요하여 해시값을 찾아야 하므로 블록 생성 주기가 다시 10분으로 맞춰지게 됩니다. 반대로 네트워크 내에 블록 생성 참가자가 줄게되면 난이도 조정을 통해 목표숫자를 좀더 큰 값으로 설정하게 됩니다. 이는 좀더 저렴한 전기 에너지 소모, 블록 채굴시간을 줄여줘 다시 평균 블록생성 시간을 맞추게 됩니다. 이렇게 정해지는 10분을 통해 2100만 개의 유한한 비트코인이 언제 시장 공급이 완료되게 될지 예상할 수 있게 됩니다.

해시함수의 입력값이 생성되는 과정이나, 해시값 도출 시 나머지 참여자들의 수학적으로 작업 증명을 해내는 과정이 생략됐지만 주사위를 굴리는 이유, 해시함수, 작업 증명, 채굴 그리고 목표 숫자에 대한 개념을 통해 비트코인 네트워크를 얘기해보았습니다. 특히 작업 증명과 목표 숫자를 통해 난이도 조절 과정을 이해하며 감탄하게 된 기억이 있습니다. 비트코인에 투자하며 이러한 신뢰성 네트워크에 대한 이해를 쌓아간다면 좀 더 즐거운 투자가 되지 않을까 생각합니다 :) 감사합니다.

반응형