SW/블록체인

블록체인 : 비트코인 네트워크에서 합의가 필요한 이유 : 마이닝 과정을 통한 합의 도출

얇은생각 2022. 1. 28. 07:30
반응형

채굴

채굴은 새로운 블록과 비트코인이 블록체인 네트워크상에 추가되는 과정입니다. 새로운 블록을 생성하기 위해서 채굴자들은 네트워크에 컴퓨팅 파워를 제공하고, 그에 대한 보상으로 비트코인을 지급받는 것입니다. 이러한 보상을 받기 위해 채굴자들은 자신의 컴퓨터를 이용해 암호화 해시 알고리즘을 기반으로 하는 어려운 수학 문제를 푸는데, 이것이 채굴의 기본이라고 할 수 있습니다.

블록체인 네트워크상에서 이 문제를 다른 노드들보다 빨리 해결해야 하고, 블록을 생성할 권한을 얻기 위해 각 노드들은 서로 경쟁하게 됩니다. 이 문제에 대한 해답을 찾는 과정을 작업증명 (Proof of Work)이라 하고, 이것은 채굴자가 새 블록을 생성하기 위해 어려운 계산을 하려고 했다는 사실을 증명하는 역할을 합니다. 또한 채굴을 통해, 동일한 비트코인 금액이 여러 번 소비되는 거래인 이중 지불을 방지할 수 있습니다.

채굴자들은 네트워크상에서 발생하는 새로운 거래들을 승인한 후, 전 세계의 노드들이 가진 장부에 해당 거래들을 기록하게 됩니다. 새 블록에는 지난 블록 이후에 발생한 거래들이 포함되며, 블록의 일부가 되어 블록체인에 추가된 거래는 승인되었다고 간주됩니다. 승인된 거래를 전달받은 노드는, 거래에 포함된 비트코인을 소유할 수 있습니다.

채굴자들은 마이닝을 위해 자신의 컴퓨팅 파워를 제공함에 따라 두 가지 종류의 보상을 받습니다. 하나는 새 블록으로부터 새로운 코인을 생성하는 것이고, 나머지 하나는 해당 블록 내에 들어있는 거래들에 대한 수수료입니다.

 

 

 

채굴로부터 생성된 새로운 블록의 의미

네트워크상에서 새롭게 생성된 블록들은 특별한 의미를 지니게 되는데, 그 블록들이 어떤 중요한 의미를 가지는지 설명해 드리겠습니다. 채굴자는 새로운 블록을 생성하기 위해, 다른 채굴 노드들과 경쟁하게 된다고 이미 설명 드렸습니다. 이때, 새로운 블록이 전파된다면 노드 사이의 경쟁이 실질적으로 종료되었다고 볼 수 있습니다.

즉, 새로운 블록을 수신한다는 것은 해당 경쟁에서 다른 누군가가 이미 승리하고, 본인이 패배했다는 것을 의미합니다. 하지만 이러한 경쟁의 종료는, 또 다음 블록을 위한 새로운 경쟁의 시작이 되는 것입니다. 다음으로, 비트코인의 채굴에 직접적으로 관여하는 노드에 대해 소개하겠습니다.

비트코인 네트워크상에 있는 몇몇 노드들은 채굴자라고 불리는 특수 노드들입니다. 채굴 노드는, 즉 마이너는 비트코인 상에 있는 미승인 거래를 전송받아서 다른 노드들에게 전파합니다. 또한 미승인 거래들을 새로운 블록에 추가하는 역할을 하기도 합니다.

 

 

 

마이닝 풀

초기에는 개인이 자신의 PC를 이용해 채굴에 참여했으나, 시간이 지날수록 경쟁하는 노드들이 많아지고 채굴의 난이도가 높아져 채굴이 어려워졌습니다. 이때 혼자 채굴하던 개인 채굴자들이 다른 사람들과 함께 마이닝 하여 채굴 확률을 높이도록 한 것이 바로 ‘마이닝 풀’입니다.

개개인의 컴퓨팅 파워를 인터넷을 통해 모아 채굴 확률을 높이고, 투자된 지분만큼 수익을 배분받습니다. 솔로 마이닝의 경우, 즉, 혼자 마이닝을 한다고 했을 때 보상을 모두 독차지하는 반면 채굴 확률이 매우 떨어집니다. 이렇게 마이닝 풀에 참여하여 함께 채굴하는 경우, 보상금을 나누어 갖지만, 채굴 확률이 높아지므로 적은 금액이라고 하더라도 꾸준히 수익을 얻을 수 있다는 장점이 있는 것입니다.

현재 다양한 마이닝 풀이 존재하며, 각 마이닝 풀마다 보상금을 분배하는 다양한 방식이 존재합니다. 대부분의 경우 마이너가 PoW (Proof of Work) 방식을 통하여 풀에 얼마나 기여했는지에 따라 지분의 크기가 결정됩니다.

 

 

 

마이닝 풀을 이용해 채굴하는 과정

자신이 얻고자 하는 암호화폐를 선택해야 합니다. 비트코인을 포함하여 다양한 화폐가 존재하기 때문에 마이닝 풀 목록을 참고하여 풀을 찾아야 합니다. 그리고 마이닝 풀별로 보상금을 분배하는 기준이 다르기 때문에 자신의 컴퓨터 사양 등을 고려하여, 자신에게 유리한 풀을 선택해야 이익을 극대화할 수 있습니다. 자신이 참여하고 싶은 풀을 찾았다면 해당 풀의 웹사이트에 계정을 만들고 채굴을 시작할 수 있습니다.

 

블록체인 : 비트코인 네트워크에서 합의가 필요한 이유 : 마이닝 과정을 통한 합의 도출 1

 

비트코인은 총 발행량이 정해져 있는 암호화폐입니다. 각 블록은 평균적으로 10분마다 생성된다고 말씀드렸습니다. 새로운 블록이 210,000개가 생성될 때마다 새로 생성되는 비트코인의 양이 절반으로 줄어듭니다. 이러한 규칙에 따르면, 평균적으로 약 4년의 주기를 가지고 통화 발행량이 감소하는 셈입니다. 비트코인 발행량은 시간이 갈수록 기하급수적으로 감소하여, 2140년경에는 더 이상 새롭게 발행되는 비트코인이 없게 됩니다.

그래프는 시간이 갈수록 점점 적은 양의 비트코인이 발행되고, 결국 한정된 양의 비트코인이 네트워크상에서 유지될 것이라는 것을 보여줍니다. 이렇게 되면 새로운 블록을 생성함으로써 얻는 비트코인 보상이 없어지기 때문에, 비트코인 채굴 수익의 많은 부분이 거래 수수료에서 발생하게 될 것입니다.

 

 

 

마이닝에 대한 전체적인 과정

마이닝을 하는 이유는 블록을 생성해서 블록체인에 연결하기 위함입니다. 또한, 블록을 생성하는 이유는 생성된 거래(트랜잭션)들을 블록에 포함시켜 거래를 확정시키기 위함입니다. 따라서 우선 비트코인 네트워크에 있는 몇몇의 노드들이 거래를 생성하는 것부터 시작하겠습니다. 이 노드들은 full node가 될 수도 있고, wallet 같이 light node가 될 수도 있습니다.

블록체인 : 비트코인 네트워크에서 합의가 필요한 이유 : 마이닝 과정을 통한 합의 도출 2

 

그림에 있는 비트코인 네트워크에서는 모두 full node이며, 노란색 노드는 miner의 역할을 수행하는 노드라고 가정하겠습니다. 몇몇 노드에서 트랜잭션을 생성하고, 해당 노드는 자신과 연결된 peer 노드들에게 생성한 트랜잭션을 브로드캐스팅합니다.

 

블록체인 : 비트코인 네트워크에서 합의가 필요한 이유 : 마이닝 과정을 통한 합의 도출 3

 

이 그림에서는 마이너가 트랜잭션을 받았을 때, 어떤 일을 하는지에 대한 설명입니다. 마이너는 우선 수신한 트랜잭션이 유효한지 검증을 합니다. 예를 들어서 트랜잭션의 syntax와 structure가 올바른지, input으로 사용된 UTXO가 mempool이나 블록체인 안에 이미 포함된 것인지 등을 검사합니다. 검사 결과 유효한 트랜잭션으로 판단되면, 이 트랜잭션을 memory pool(transaction pool)에 추가시킵니다.

또한, 이 트랜잭션을 자신과 연결된 peer 노드들에게 전파시킵니다. 만약 트랜잭션이 유효하지 않다고 판단되면, 이 트랜잭션을 버려서 무시합니다. 추가적으로 설명한 트랜잭션 검증 프로세스는 마이너 뿐만 아니라 비트코인 네트워크에 있는 모든 full node가 동일한 일을 수행합니다.

 

블록체인 : 비트코인 네트워크에서 합의가 필요한 이유 : 마이닝 과정을 통한 합의 도출 4

 

마이너들은 항상 쉬지 않고 마이닝을 합니다. 마이닝 하는 도중에 트랜잭션을 수신하게 되면, 검증을 완료한 뒤 해당 트랜잭션을 자신의 Memory pool에 채웁니다. 마이너가 마이닝을 중단했다는 것은 알맞은 nonce 값을 찾았거나 다른 마이너가 생성한 새로운 블록을 수신했다는 것을 의미합니다.

자신이 nonce 값을 찾아 새로운 블록을 만든 후, 브로드캐스팅을 했다면, 바로 그 블록의 블록헤더 해시를 PreviousBlockHash 에 넣고, 새로운 블록 바디를 구성하여 마이닝을 다시 시작합니다. 만약 다른 마이너가 생성한 블록을 받았을 경우라면, 그 블록의 유효성을 검증합니다.

그 블록이 유효하다면, 수신한 블록의 블록헤더 해시를 PreviousBlockHash에 넣고, 새로운 블록 바디를 구성하여 마이닝을 다시 시작합니다. 이때 새로운 블록 바디를 구성하는 절차에 대해서 말씀드리면, 우선 마이너 자신의 memory pool에 있는 트랜잭션 중에서 새로 생성된 블록에 포함된 트랜잭션들을 제거합니다.

그리고 먼저 마이너에게 보내는 coinbase 트랜잭션을 추가한 후, memory pool에 있는 트랜잭션 중 우선순위가 높은 트랜잭션을 우선적으로 블록 바디에 추가합니다. 그리고 이 블록 바디에 있는 트랜잭션들을 이용해서 머클루트를 계산하고, 이것을 블록헤더의 머클루트값으로 사용합니다. 이렇게 새로운 후보 블록이 구성되었다면, 마이닝이 시작됩니다.

 

블록체인 : 비트코인 네트워크에서 합의가 필요한 이유 : 마이닝 과정을 통한 합의 도출 5

 

Proof of Work(PoW)는 작업을 증명해서 블록체인 생태계에 기여하는 것입니다. 여기서 작업이란 결국 알맞은 nonce 값을 찾는 것이 됩니다. nonce 값은 후보 블록에서 유일하게 변경되는 값입니다. 따라서 이 값을 0부터 시작해서 1씩 증가하며 블록 헤더의 해시값을 계산합니다.

이때 계산된 해시값을 DifficultyTarget 값과 비교하는데, 이 값보다 작거나 같은 해시값이 나온다면, 맞는 nonce 값을 찾은 것입니다. nonce 값을 증가시켜 가며 해시값을 계산하는 것을 반복하게 되면 맞는 nonce 값을 찾기까지 아주 많은 컴퓨팅 파워가 필요합니다. 이렇게 자신의 컴퓨팅 파워를 소모하는 작업을 증명하는 것이 mining의 핵심인 PoW입니다.

 

 블록체인 : 비트코인 네트워크에서 합의가 필요한 이유 : 마이닝 과정을 통한 합의 도출 6

 

DifficultyTarget보다 같거나 작은 해시값을 도출하는, 알맞은 nonce 값을 찾은 후, 마이닝에 성공한 블록을 자신과 연결되어있는 peer 노드들에게 전파해야 합니다. 새로 생성된 블록을 전달받은 노드들은 먼저 블록의 유효성을 검증합니다.

예를 들어서 블록의 syntax나 structure가 올바른지, 블록 헤더의 해시가 DifficultyTarget보다 작은지 등을 검사합니다. 블록 유효성 검사를 제대로 통과하면, 각 노드는 자신이 보유하고 있는 local blockchain에 해당 블록을 연결합니다. 블록은 하나의 마이너만 생성할 수 있는 것이 아니기 때문에 여러 명의 마이너가 동시에 블록을 생성할 수도 있습니다.

이때 p2p 네트워크에서 지연 등의 이유로 각 노드는 다른 local blockchain을 보유하게 됩니다. 그림은 두 마이너가 동시에 마이닝에 성공해서 생성된 블록을 전파했을 때 나타나는 상황입니다. 3번 노드는 2번 마이너로부터 생성된 블록을 더 빨리 전달받아서 자신의 local blockchain에 연결했고, 그 이후 5번 마이너로부터 생성된 블록을 전달받아서 이를 고아 블록으로 처리했습니다. 블록이 생성되어 전파까지 이루어졌습니다. 하지만 고려해야 할 것들이 남아있습니다.

 

블록체인 : 비트코인 네트워크에서 합의가 필요한 이유 : 마이닝 과정을 통한 합의 도출 7

 

우선 두 마이너가 동시에 블록 생성에 성공했을 때, 블록의 전파지연으로 블록의 분기(fork)가 발생할 수 있습니다. 분기된 블록체인을 보여주는 아래의 그림에서, 검은색 선으로 연결된 체인이 메인 체인이고, 중간에 회색으로 분기된 체인에 연결된 블록이 고아 블록입니다.

그러면 블록체인이 분기된 상황에서, 어떻게 검은색 선을 메인체인으로 정할 수 있을까요? 비트코인에서는 가장 긴 체인을 메인 체인으로 정하게 됩니다. 그래서 블록이 하나 더 연결되어 있는 검은색 선의 체인이 메인 체인이라는 것을 알 수 있습니다. 그러면 어떻게 해서 검은색 선의 체인에 블록이 하나 더 연결된 것일까요?

그림을 보면 3개의 node가 하늘색 블록을 연결했고, 2개의 node가 파란색 블록을 연결했습니다. 이 비트코인 네트워크는 축소된 것이라 마이너가 둘밖에 없지만, 사실은 수많은 마이너 들이 비트코인 네트워크에 분포되어 있습니다. 그래서 이렇게 생각해 볼 수 있습니다.

상대적으로 해시 파워가 큰 마이너들이 previous 블록으로 연결한 하늘색 블록 뒤에 새로운 블록을 연결할 것이기 때문입니다. 결국은 하나의 메인체인으로 수렴하게 된다는 것입니다. 추가적으로 비트코인 네트워크는 10분마다 블록이 생성되는 것을 목표로 하기 위해서 2,016개의 블록이 생성될 때마다 DifficultyTarget값을 조정합니다.

 

 

참조

http://www.kmooc.kr/courses/course-v1:POSTECHk+CSED490U1+2021_T1/about

 

블록체인 입문

블록체인과 암호화폐 기술을 깊이 배우기에 앞서, 비 전공자들도 이해를 할 수 있는 수준으로 블록체인과 암화화폐에 대한 high-level 설명 및 응용 예시를 제공하고 실제 상황에 적용할 수 있다.

www.kmooc.kr

반응형