프로그래밍/Block Chain

[Bitcoin] 채굴과 합의

YuminK 2025. 4. 30. 20:36

채굴

채굴은 새로운 비트코인이 통화 공급량에 추가되는 과정이다. 또한 채굴을 통해 사기거래나 이중지불 문제로부터 비트코인을 보호한다. 채굴자들은 비트코인 네트워크에 처리 능력을 제공하고 그에 대한 대가로 비트코인을 받는다. 채굴자들은 새로운 거래들을 승인한 후 전 세계에 존재하는 장부에 승인된 거래들을 기록한다. 새 블록에는 지난 블록 이후에 발생한 거래들이 들어 있으며 10분마다 채굴되어 블록체인에 추가된다. 블록의 일부가 되어 블록체인에 추가된 거래는 '승인' 되었다고 간주되며, 승인된 거래를 전송받은 새로운 소유주는 해당 비트코인을 소비할 수 있게 된다. 

 

채굴자들은 채굴 작업에 대해 2가지 종류의 보상을 받는다. 하나는 새 블록 각각에서 새로운 코인을 생성하는 것이고, 나머지 하나는 해당 블록 내에 들어 있는 거래로부터 거래 수수료를 받는 것이다. 보상금을 받기 위해 채굴자들은 암호화 해시 알고리즘을 기반으로 하는 어려운 수학 문제를 풀기 위해 서로 경쟁한다. 이 수학 문제에 대한 해답을 작업 증명(Proof of work)라고 한다. 

 

비트코인 채굴자들은 거래로부터 수수료를 챙긴다. 모든 거래에는 거래 수수료가 포함될 수 있으며, 해당 거래의 입력값과 출력값 사이의 차이만큼 남은 잉여금이 수수료가 된다. 

 

분산화된 합의

비트코인은 중앙 통제 기관이 없지만 모든 풀 노드가 권위있는 기록이라고 신뢰할 수 있는 공개 장부 완본을 보유하고 있다. 블록체인은 중앙 통제 기관에 의해서 생성되지 않고 네트워크 내에 있는 모든 노드에 의해 독립적으로 수집된다. 불안정한 네트워크 연결을 통해 전송되는 정보에 따라 움직이는 노드 전부는 네트워크 내에서 어떻게든 동일한 결론에 도달할 수 있고 모두 똑같은 공개장부 복사본을 수집한다. 

 

 - 포괄적인 판단 기준에 근거하여 모든 풀 노드가 각 거래마다 독립된 검증 실시

 - 작업증명 알고리즘을 통해 증명된 계산법을 사용하여 채굴 노드들이 검증된 거래들을 새로운 블록에 독립적으로 추가

 - 모든 노드들이 새 블록을 독립적으로 검증한 후 체인에 블록을 연결

 - 모든 노드가 작업증명을 통해 이루어진 최고 누적 연산 체인을 독립적으로 선택

 

작업증명 알고리즘

채굴자들은 거래로 가득 차 있는 후보 블록을 구성한다. 그 다음 블록 헤더의 해시를 계산하고 현재의 목표값보다 작은지 계산한다. 이러한 값을 만족시키는 논스 값을 찾는다. 

 

블록체인 분기

블록체인은 분산화된 데이터 구조이기 때문에 블록체인의 복사본들의 내용이 항상 동일한 것은 아니다. 블록들이 다른 시간에 다른 노드에 도착할 수도 있기 때문에 노드들은 블록체인에 대해 다른 관점을 가지게 된다. 이 현상을 해결하기 위해 각 노드는 항상 작업 증명을 가장 많이 시행한 블록체인을 선택해서 연장하려고 한다. 이러한 체인을 최장 체인(longest chain)이라고 한다. 블록체인의 버전 사이에서 불일치가 일시적으로 발생하면서 체인의 분기가 생기게 되는데, 더 많은 블록이 여러 분기 중 한 곳에 추가되면 결국 재수렴이 발생하면서 이 현상이 해결된다. 

 

분기는 두 개의 후보 블록들이 최장 블록체인을 형성하기 위해 경쟁할 때마다 발생한다. 또한 이러한 분기는 일반적인 상황에서 두 명의 채굴자가 짧은 시간 간격을 두고 작업증명 알고리즘의 솔루션을 찾았을 때 발생한다. 두 채굴자가 각자의 후보 블록에 대한 솔루션을 발견하게 되면 '채굴에 성공한' 블록을 바로 옆에 있는 이웃 노드로 즉시 전송하고 이웃 노드들은 해당 블록을 네트워크에 전파하기 시작한다. 

 

비트코인의 블록 생성 간격인 10분은 신속한 승인 시간과 분기가 발생할 가능성 사이에서 절충해서 설계한 것이다. 블록 생성 시간이 빠르면 빠를수록 거래 처리 속도는 빨라지지만 블록체인 분기가 좀 더 빈번하게 발생하고, 블록 생성 시간이 느려지면 분기 수는 줄어들지만 거래 정산 시간도 느려진다.  

 

출처: 마스터링 비트코인 챕터 8