[Xangle Digest]
※해당 컨텐츠는 외부에서 기발간 된 컨텐츠입니다. 컨텐츠에 대한 추가적인 주의사항은 본문 하단에서 확인해주세요.
작성자: 김민성(블록체인 밸리 2기), 백용기(디사이퍼 9기), 이윤서(하이블록 1기), 이주원(이화체인 7기)
목차
채굴이란?
Step 1 - 트랜잭션 해싱하기
Step 2 - 해시 값들로 머클 트리 생성하기
Step 3 - 올바른 블록 해시 값 찾기
Step 4 - 채굴된 블록 전파하기 |
암호화폐 채굴(마이닝) 방법
마치며
채굴이란?
채굴은 이전 블록체인의 원리 아티클에서 블록체인에 블록이 등록되는 과정을 통해 설명드린 바 있는데요, 채굴을 한 문장으로 요약하자면 블록체인 네트워크 참여자 간 거래를 검증하고 블록을 제안 및 등록한 결과 보상으로 암호화폐와 거래 수수료를 받는 과정을 의미합니다. 오늘은 채굴에 대해서 조금 더 자세히 다뤄보도록 하겠습니다.
새로운 블록체인 트랜잭션이 생성되면 트랜잭션들이 임시로 저장되는 공간인 메모리 풀로 전송됩니다. 채굴자들은 메모리 풀에 모여있는 트랜잭션들을 수집하고 그 유효성을 확인한 후, 자신의 후보 블록으로 구성합니다. 이후 채굴자는 자신이 구성한 후보 블록을 유효한 블록으로 체인에 등록하기 위해 알고리즘에 의해 제시되는 복잡한 수학문제의 정답인 논스값을 다른 채굴자보다 먼저 찾아야 합니다. 이를 위해서는 많은 계산 리소스가 필요하지만, 성공적으로 채굴된 모든 블록은 채굴자에겐 블록 보조금으로서 새로 발행된 암호화폐와 거래 수수료로 구성된 블록 보상이 제공됩니다.
다음은 채굴 과정을 자세히 살펴보겠습니다.
Step 1 - 트랜잭션 해싱하기
블록 채굴의 첫 번째 단계는 메모리 풀에서 보류 상태의 트랜잭션을 가져와 해시 함수를 통해 하나씩 블록에 기록하는 것입니다. 블록체인의 원리 아티클에서 설명드렸듯, 해시 함수는 데이터를 입력될 때마다 고정된 크기 해시 값을 생성합니다. 각 트랜잭션의 해시 값은 식별자 역할을 하는 일련의 숫자와 문자로 구성되는데, 이는 해당 트랜잭션에 포함된 모든 정보를 나타냅니다.
Step 2 - 해시 값들로 머클 트리 생성하기
블록 채굴의 두 번째 단계는 블록에 담긴 모든 트랜잭션들의 해시 값들을 Merkle Tree (머클 트리)로 구성하는 작업입니다. 마찬가지로 블록체인의 원리 아티클에서 설명드렸듯,Merkle Tree는 각 트랜잭션 해시 값을 쌍으로 구성한 다음 이를 다시 해시 값을 구하여 형성되는 데이터 구조입니다. 이렇게 새로운 해시 값을 출력하는 작업을 단일 해시가 생성될 때까지 프로세스를 반복합니다. 마지막으로 출력된 해시 값을 Root Hash(또는 Merkle Root, 머클 루트)라고 합니다.
출처: 비트코인 devguide
Step 3 - 올바른 블록 해시 값 찾기
블록 헤더는 각 블록이 고유한 해시 값을 가지기 때문에 식별 가능합니다. 새로운 블록을 생성할때 채굴자들은 이전 블록의 해시를 후보 블록의 루트 해시와 결합한 값을 사용하여 새로운 블록 해시를 생성합니다. 이후 추가로 알고리즘에 의해 제시된 수학 문제에 임의의 숫자인 논스 값을 대입하며 정답을 찾는 과정을 가집니다. 자세한 과정은 작업증명(POW)의 “작업증명 과정”을 참고 바랍니다.
작업증명의 과정에서 채굴자들은 유효한 해시가 발견될 때까지 논스값을 여러번 대입해야 하는데, 이때 채굴 난이도(mining difficulty)가 고려됩니다.
채굴 난이도란 올바른 해시 값을 찾기 위한 어려움을 수치로 나타낸 것으로 프로토콜에 의해 주기적으로 조정되어 새 블록이 생성되는 속도가 일정하게 유지되게 하며, 새로운 코인 발행을 꾸준하고 예측 가능하게 만듭니다. 이때 난이도는 네트워크에 할당된 계산 능력(hash rate)의 양에 비례하여 조정됩니다.
신규 채굴자들이 네트워크에 새로 참여하게 되어 채굴 경쟁이 치열해질 때마다 난이도가 높아집니다. 반대로 채굴자들이 네트워크를 떠나는 상태에선 난이도가 내려가 새로운 블록을 채굴하는 것이 쉬워지는 형식으로 평균 블록 생성 시간이 일정하게 유지됩니다. 즉 난이도 조정을 통해 블록 생성 시간이 일정하게 유지되는 것입니다.
Step 4 - 채굴된 블록 전파 하기
앞서 언급된 바와 같이, 채굴자들은 유효한 블록 해시 값을 찾을 때까지 임의의 논스값을 대입하는 과정을 반복해야 합니다. 올바른 해시 값을 발견한 경우, 채굴자는 채굴에 성공한 블록을 네트워크에 전파합니다.
다른 모든 노드는 블록과 발견된 해당 해시 값이 유효한지 확인하고, 유효한 경우 새 블록을 각자의 블록 체인에 추가합니다.
새 블록이 노드들이 각각 저장하는 블록체인에 추가된다면, 후보 블록들은 검증된 블록이 되고 모든 채굴자들은 다음 블록 채굴 단계로 넘어갑니다. 제시간에 유효한 해시를 찾지 못한 모든 채굴자들은 자신이 작업하던 후보 블록을 버리게 되고, 새 블록에 대한 채굴 경쟁이 다시 시작 됩니다.
이때 동시에 두 개 이상의 블록이 채굴된다면 어떻게 될까요? 가끔 채굴자들이 동시에 유효한 블록을 전파하여 네트워크 내 서로 다른 두 가지 블록이 각각 전달되는 상태로 채굴이 종결되는 경우가 발생합니다. 채굴자들은 먼저 수신한 블록을 기반으로 다음 블록을 채굴하기 시작합니다. 이로 인해 네트워크가 일시적으로 두 개의 블록체인으로 분할됩니다.
이 블록체인들 간의 경쟁은 다음 블록이 채굴될 때까지 계속됩니다. 새 블록이 채굴될 때 먼저 채굴된 블록이 승자로 간주됩니다. 버려진 블록은 고아 블록(orphan block) 또는 오래된 블록(stale block)이라고 불리며, 이 블록을 선택한 모든 채굴자들은 승자 블록의 체인을 채굴하는 방향으로 다시 전환합니다.
암호화폐 채굴(마이닝) 방법
암호화폐를 채굴하는 방법은 새로운 하드웨어 기술과 합의 알고리즘의 등장과 필요한 장비와 프로세스의 변경에 따라 지속적으로 변화하고 있습니다
하지만 일반적으로 우리가 생각하는 암호화폐 채굴은 복잡한 수학 문제에 대한 해답을 특수 컴퓨터 장치를 사용해 값을 찾아내는 행위를 뜻합니다. 이번 섹터에서는 대표적인 방법들과 그 작동 원리까지 한 번 간단하게 살펴보겠습니다. 채굴 방식은 하드웨어에 따라 CPU, GPU, ASIC으로 나뉘며, 참여자들에 따라 솔로 마이닝과 마이닝 풀로 분류될 수 있습니다.
CPU 마이닝
CPU 마이닝은 PoW 합의 알고리즘에서 필요한 해시 함수 연산을 실행하기 위해 CPU를 사용하는 방식입니다.
Satoshi Nakamoto는 2008년 비트코인 백서인 ‘Bitcoin: A Peer-to-Peer Electronic Cash System’ 에서 이 방식을 제안했었고 비트코인 초기에는 이 방식을 사용했었습니다. 이 시기엔 채굴 난이도가 낮았기에 이정도 난이도의 연산은 CPU에서도 처리할 수 있습니다. 따라서 사실상 컴퓨터를 가지고 있는 사람이면 누구나 비트코인 채굴을 할 수 있는 구조였죠.
하지만 점점 더 많은 사람들이 채굴에 참여하기 시작하고 블록을 생성하는데 필요한 연산력인 해시레이트가 높아지면서 CPU 마이닝으로는 수익성 있는 유의미한 채굴이 점점 어려워졌습니다. 또한, 연산 능력이 월등히 뛰어난 전문 채굴 하드웨어(ex. ASIC)들이 계속해서 등장함에 따라 CPU 채굴은 더욱더 어려워졌습니다.
따라서 현재는 모든 채굴자가 채굴만을 위한 특수 하드웨어를 통해 채굴에 참여하기 때문에 더 이상 CPU 마이닝 방식은 시행되고 있지 않습니다.
GPU 마이닝
CPU 마이닝이 사실상 불가능해진 이후, 다양한 응용 프로그램을 병렬처리 할 수 있는 GPU를 이용한 채굴이 주목받기 시작했습니다.
일반적으로 GPU는 비디오 게임이나 그래픽 렌더링에 사용되고 있었지만, 채굴에도 GPU를 활용할 수 있습니다. GPU 마이닝은 CPU를 통한 마이닝보다 효율적이었고 ASIC에 비해 상대적으로 저렴한 비용으로 진입할 수 있었기에 유연한 채굴 작업이 가능했습니다. 다양한 코인들을 GPU로 채굴할 수 있으며, 해당 코인의 채굴 난이도와 합의 알고리즘에 따라 채산성도 다양합니다.
ASIC 마이닝
실제 ASIC 비트코인 채굴 시설 (출처: 셔터스톡)
암호화폐 채굴에서 ASIC(Application-Specific Integrated Circuit)이란 채굴만을 위해 개발된 특수 하드웨어를 말합니다.
ASIC 마이닝은 CPU, GPU 등 지금까지 개발된 어떤 채굴방식보다 효율적입니다. ASIC 채굴기는 지속적으로 발전 중이기 때문에 오래된 ASIC 모델은 수익성이 떨어지게 되어 종종 교체해야 하여 교체 비용이 듭니다. 또한 기기 자체 가격 또한 가격대가 높기 때문에 단위 비용이 CPU나 GPU보다 훨씬 비쌉니다.
따라서 ASIC 마이닝은 효율적이지만 채굴 환경을 구축하는 것에 큰 비용이 들어가게 되며, 이로 인해 ASIC 채굴 방식은 가장 비용이 많이 드는 채굴 방법들 중 하나입니다.
마이닝 풀
비트코인 채굴에 대한 블록 보상은 첫 번째로 블록 생성에 성공한 채굴자에게만 보상이 부여되기 때문에 마이닝 파워가 약한 채굴자들은 보상을 받을 기회가 적어집니다. 이 불안정한 보상 체계는 수익에 대한 불안정성으로 이어지기 때문에, 채굴자들은 마이닝 풀이라는 방법을 통해 안정적인 보상의 분배구조를 만들었습니다.
마이닝 풀의 개념을 간단하게 요약하면, 채굴자들끼리의 연대인 마이닝 풀을 형성하고, 이 풀 내에서 블록을 찾으면 그 보상을 마이닝 풀 내의 기여자들이 기여한 작업량에 따라 균등하게 분배하는 것입니다.
마이닝 풀에 대해 좀 더 자세히 알아보겠습니다. 이전 노드란? 아티클에서 소개한 것처럼, 채굴 노드는 풀 서버(Pool Protocol Servers)를 통해 풀 노드(full node)를 유지하고, 채굴 노드(Mining nodes)로 풀 채굴에 참여하는 형태(Pool mining)를 띄고 있습니다.
풀에 접근하는 방법에 따라 마이닝 풀은 단순 풀 프로토콜을 이용하는 방식과 스트라텀 프로토콜을 이용하는 방식으로 나눌 수 있습니다.
풀 프로토콜을 이용하는 방식 (출처: bitcoindeveloper)
풀 프로토콜을 이용하는 방식은 단순히 풀 노드와의 연결을 통해 풀 채굴에 참여하는 방식입니다. 이는 주로 채굴을 전담하는 채굴 전문 업체들이 많이 채택하는 방법입니다.
스트라텀 프로토콜 V2 (출처: Galaxy Digital research)
이와 달리 스트라텀 프로토콜을 이용하는 방식은 채굴 노드, 풀 노드, 그리고 라이트 노드(SPV Client)를 연결해 풀 채굴 환경을 제공하는 프로토콜로써 소규모 개인 채굴자들이 많이 선택하는 방법입니다.
위와 같은 마이닝 풀 방식은 철저한 경쟁에 의해 불공평성과 무작위성을 가지는 기존의 솔로 마이닝 방식의 비트코인 보상구조를 해시파워 기여도에 따라 나누어 배분함으로써 안정적인 보상구조를 구축했습니다. 또한 솔로 마이닝보다 개별 해시레이트에 대한 영향이 작기 때문에 비트코인 채굴에 대한 진입 장벽을 낮추고 효율성을 제고했습니다.
하지만 경쟁 채굴 구조에서 유의미한 양의 비트코인을 채굴하려면 결국 전문 채굴 하드웨어와 프로그램이 필요합니다. 위에서 설명한 것처럼 과거엔 개인의 CPU, GPU를 통한 채굴도 가능했지만, ASIC (채굴 작업을 처리하기 위한 용도로 제작된 주문형 반도체 채굴기계)가 등장한 이후엔 이전의 채굴 방식에 대한 경쟁력이 떨어져, 사실상 ASIC을 이용한 채굴만이 가능한 상황입니다.
2023년 2월 8일 기준 7일간 마이닝 풀 점유율(출처: Blockchain.com)
또한, 마이닝 풀 방식은 해시 파워를 극대화하여 채굴자들에게 효율적인 방식일 수 있겠지만, 마이닝 풀의 크기가 커질수록 네트워크 전체적으로 봤을 때 소수의 풀들이 채굴에 대한 지배력을 가질 수 있습니다. 이로 인해 절반 이상의 해시 파워를 장악한 개인 및 집단이 네트워크를 장악할 수 있는 51% 공격에 대한 우려가 제기되기도 합니다.
마치며
채굴은 비트코인과 같이 PoW 합의 알고리즘을 사용하는 블록체인 프로토콜에서 블록 생성과 보안 유지 등 중요한 역할을 담당합니다. 채굴자들은 블록을 생성하는 과정을 통해 보상을 얻어갑니다. 하지만 채굴은 전기 비용과 설비 및 유지, 코인의 시장 가격 등 다양한 요인의 영향을 받기 때문에 채굴자들은 다양한 잠재적인 위험 요소들을 면밀히 살펴보고 채산성 및 손익을 계산해야 합니다.
※ 참고자료
- https://academy.binance.com/en/articles/what-is-crypto-mining-and-how-does-it-work
- https://www.blockchain.com/explorer/charts/pools
- https://developer.bitcoin.org/devguide/mining.html
- https://docsend.com/view/szk48syby33q28zq
- https://www.coindeskkorea.com/news/articleView.html?idxno=71767
-> '암호화폐 채굴이란?' 원문 보러가기