IMG-LOGO
Home 암호화폐 강의 비트코인뽀개기 5편

비트코인뽀개기[5편]


채굴(마이닝)

* 채굴의 필요성

탈 중앙화된 금융 거래시스템인 비트코인 네트워크는 중앙에서 관리 감독하는 기구나 서버가 없기 때문에 기존의 중앙에서 관리하던 서버 역할을 대체할 수 있는 노드들이 반드시 필요합니다. 즉, 비트코인 네트워크에 연결된 수 많은 노드들 중 누군가는 비트코인 거래 내역을 기록하고, 검증하며 검증된 거래 내역을 블록에 담아 공유할 수 있어야합니다. 또한, 악의적인 사용자에의해 잘못된 거래 기록이 담긴 블록이 전파되는것을 방지하기 위해 새롭게 생성된 블록의 유효성 검증 과정이 반드시 필요합니다.

이러한 작업을 수행하기 위해서는 각 노드들의 컴퓨팅 자원을 소모해야하며, 아무런 인센티브 없이 컴퓨팅 자원을 공유하기엔 어려움이 있습니다. 비트코인 네트워크에서는 새로운 블록을 생성하고 전파한 노드들에게 보상의 개념으로 비트코인을 지급함으로써 네트워크가 정상적으로 운영될 수 있도록 인센티브 제도를 도입하고 있으며, 이러한 작업을 통해 보상을 얻는 행위를 우리는 채굴 혹은 마이닝이라고 표현하고 있습니다.

채굴 과정


채굴자는 새로운 블록을 생성하고, 검증하는 과정에서 소모된 자원에 대한 '보상'으로 비트코인을 지급 받게됩니다. 그렇다면 새로운 블록을 생성하는 조건은 무엇일까요? 바로 target 보다 작은 블록 해시 결과 값을 갖는 블록을 생성하는것입니다. 채굴자는 새로운 블록을 생성하기 앞서 아래와 같이 nonce 정보를 제외한 모든 정보를 미리 알 수 있습니다.

  • * 버전 : 새로운 블록을 생성하는 소프트웨어 버전 정보
  • * 이전 블록 해시 : 블록체인에 연결된 마지막 블록의 블록 해시 정보
  • * 머클 루트 : Mempool에 대기중인 거래 내역을 블록 바디에 저장 후 해당 거래 내역을 머클 트리한 결과 값
  • * 난이도 목표 : 블록이 10분에 한번식 생성될 수 있도록 네트워크에 설정된 난이도 목표 값
  • * 타임 : 블록을 생성한 시간
  • * 논스 : 알 수 없음


  • * 새로운 블록을 생성하는 과정을 이해하기 위해서는 앞선 비트코인뽀개기 4편에서 언급된 블록 해시 연산과정에 대한 이해가 반드시 필요하며, 해시 함수의 특징에 대한 선행학습이 필요합니다.

    해시 함수의 특징은 입력 값의 일부만 변경되어도 전혀 다른 결과 값을 출력하는 특징이 있으며, 결과 값을 토대로 입력 값을 유추할 수 없다는 특징을 가지고 있습니다.

    즉, 블록 해시 연산 과정 중 nonce 정보가 변경될때 마다 블록 해시 결과 값은 전혀 다른 결과 값을 출력하게되며, 어떤 nonce 정보를 입력해야만 target 보다 작은 블록 해시 값을 구할 수 있을지 유추하는것은 불가능합니다.

    결국 새로운 블록을 생성하기 위해서는 nonce 값을 1식 증가시키면서 target보다 작은 블록 해시 결과 값을 찾을 수 박에 없습니다. 채굴자가 새로운 블록 찾는 과정의 전반적인 프로세스 흐름도는 아래의 그림과 같습니다.


    IMG

    비트코인 네트워크는 약 10분에 한번식 블록이 생성될 수 있도록 설계되었으며, 채굴자들이 새로운 블록을 찾는데 소요되는 시간이 10분으로 유지될 수 있도록 2주마다 난이도 목표값을 재 조정할 수 있도록 설계되었습니다.

    언뜻보면 아무런 의미도 없고 불필요해보이는 연산과정들을 통해 51% 공격에 대한 대비를 할 수 있었습니다. 이와 관련된 자세한 내용은 계속적인 비트코인뽀개기 시리즈 연재를 통해 자세히 다루도록하겠습니다.

    참고자료


    https://en.bitcoin.it/wiki/Block_hashing_algorithm


    IMG
    출처 : Keep!T / 작성자 : yahweh87