KEEP!T Column 비트코인 뽀개기(5편)
KEEP!T Column
안녕하세요! KEEP!T입니다. 최초의 암호화폐인 비트코인을 누구나 쉽게 이해할 수 있도록 '비트코인 뽀개기'라는 주제로 콘텐츠를 연재하고 있습니다. 비트코인의 블록 구조는 크게 블록 해시, 블록 헤더, 블록 바디 정보로 나누어볼 수 있으며, 지난 4편을 통해 블록 해시 정보를 구하는 과정까지 살펴보았습니다. 이번시간에는 마이닝이란 무엇이며, 비트코인의 마이닝 과정이 어떻게 이루어지는지에 대해 살펴보도록 하겠습니다. 혹시 앞선 비트코인 뽀개기 시리즈를 읽지 않으셨던 분들은 아래의 링크를 통해 읽어보시면 좋을 것 같습니다.
채굴(마이닝)
채굴의 필요성
탈 중앙화된 금융 거래시스템인 비트코인 네트워크는 중앙에서 관리 감독하는 기구나 서버가 없기 때문에 기존의 중앙에서 관리하던 서버 역할을 대체할 수 있는 노드들이 반드시 필요합니다. 즉, 비트코인 네트워크에 연결된 수 많은 노드들 중 누군가는 비트코인 거래 내역을 기록하고, 검증하며 검증된 거래 내역을 블록에 담아 공유할 수 있어야합니다. 또한, 악의적인 사용자에의해 잘못된 거래 기록이 담긴 블록이 전파되는것을 방지하기 위해 새롭게 생성된 블록의 유효성 검증 과정이 반드시 필요합니다.
이러한 작업을 수행하기 위해서는 각 노드들의 컴퓨팅 자원을 소모해야하며, 아무런 인센티브 없이 컴퓨팅 자원을 공유하기엔 어려움이 있습니다. 비트코인 네트워크에서는 새로운 블록을 생성하고 전파한 노드들에게 보상의 개념으로 비트코인을 지급함으로써 네트워크가 정상적으로 운영될 수 있도록 인센티브 제도를 도입하고 있으며, 이러한 작업을 통해 보상을 얻는 행위를 우리는 채굴
혹은 마이닝
이라고 표현하고 있습니다.
채굴 과정
채굴자는 새로운 블록을 생성하고, 검증하는 과정에서 소모된 자원에 대한 '보상'으로 비트코인을 지급 받게됩니다. 그렇다면 새로운 블록을 생성하는 조건은 무엇일까요? 바로 target 보다 작은 블록 해시 결과 값을 갖는 블록을 생성하는것입니다. 채굴자는 새로운 블록을 생성하기 앞서 아래와 같이 nonce 정보를 제외한 모든 정보를 미리 알 수 있습니다.
- 버전 : 새로운 블록을 생성하는 소프트웨어 버전 정보
- 이전 블록 해시 : 블록체인에 연결된 마지막 블록의 블록 해시 정보
- 머클 루트 : Mempool에 대기중인 거래 내역을 블록 바디에 저장 후 해당 거래 내역을 머클 트리한 결과 값
- 난이도 목표 : 블록이 10분에 한번식 생성될 수 있도록 네트워크에 설정된 난이도 목표 값
- 타임 : 블록을 생성한 시간
- 논스 : 알 수 없음
새로운 블록을 생성하는 과정을 이해하기 위해서는 앞선 비트코인 뽀개기 4편에서 언급된 블록 해시 연산과정에 대한 이해가 반드시 필요하며, 해시 함수의 특징에 대한 선행학습이 필요합니다.
해시 함수의 특징은 입력 값의 일부만 변경되어도 전혀 다른 결과 값을 출력하는 특징이 있으며, 결과 값을 토대로 입력 값을 유추할 수 없다는 특징을 가지고 있습니다.
즉, 블록 해시 연산 과정 중 nonce 정보가 변경될때 마다 블록 해시 결과 값은 전혀 다른 결과 값을 출력하게되며, 어떤 nonce 정보를 입력해야만 target 보다 작은 블록 해시 값을 구할 수 있을지 유추하는것은 불가능합니다.
결국 새로운 블록을 생성하기 위해서는 nonce 값을 1식 증가시키면서 target보다 작은 블록 해시 결과 값을 찾을 수 박에 없습니다. 채굴자가 새로운 블록 찾는 과정의 전반적인 프로세스 흐름도는 아래의 그림과 같습니다.
비트코인 네트워크는 약 10분에 한번식 블록이 생성될 수 있도록 설계되었으며, 채굴자들이 새로운 블록을 찾는데 소요되는 시간이 10분으로 유지될 수 있도록 2주마다 난이도 목표값을 재조정할 수 있도록 설계되었습니다.
언뜻 보면 아무런 의미도 없고 불필요해 보이는 연산과정들을 통해 51% 공격에 대한 대비를 할 수 있었습니다. 이와 관련된 자세한 내용은 계속적인 비트코인 뽀개기 시리즈 연재를 통해 자세히 다루도록 하겠습니다.
이번 비트코인 뽀개기 5편에서는 채굴이란 무엇이며, 왜 채굴이란 프로세스가 필요했는지에 대한 관점으로 포스팅을 진행하였습니다. 다음 비트코인 뽀개기 6편에서는 스테일 블록이 무엇이며, 비트코인의 거래는 어떻게 이루어지는지에 대한 내용을 찾아뵙도록 하겠습니다.
yahweh87
참고자료
https://en.bitcoin.it/wiki/Block_hashing_algorithm
이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-변경금지 4.0 국제 라이선스에 따라 이용할 수 있습니다.
좋은 글 감사합니다.
블럭체인에 대해서 좀더 가까워진 느낌이에요
블랙체인에 대한 정보
잘보구 갑니다.
채굴에 대한 설명 굿~! ㅎㅎ
좋은글입니당 고급정보입니당
다른데서 잘보기 힘든정보인데
감사합니당