[TOC]
채굴(Mining)은 블록체인 네트워크에 노드로서 트랜잭션을 검증하여 분산원장을 기록하고, 보상으로 암호화폐를 얻는 것을 뜻한다. 땅을 파서 광물 따위를 캐내는 행위에서 유래된 용어이다.
블록체인 기반의 암호화폐에서 새로운 블록을 생성하고 그 대가로 암호화폐를 지급받는 노드들을 **채굴자(Miner)**라고 한다. 토큰 이코노미와 크립토 이코노미를 통해 채굴하는 행위는, 블록체인 네트워크를 유지하면서 개인에게는 이익을 줄 수 있다.
비트코인의 경우 10분에 한 번씩 일정량의 블록이 생성되는데, 생성된 비트코인을 채굴에 참여한 작업자 중 해시퍼즐이라는 문제를 푼 작업자에게 지급하게 된다. 해시퍼즐은 특정한 조건을 갖춘 해시를 찾아내는 일련의 과정을 말한다.
노드(Node)가 비트코인 네트워크에 접속하면, 비트코인 채굴자는 다음과 같이 몇 가지 작업을 수행한다.
-
네트워크 동기화: 새롭게 네트워크에 합류하면, 다른 노드에게 과거 블록들을 요청해 블록체인을 다운로드한다.
-
트랜잭션 검증:새로운 트랜잭션을 수신한 노드는 반드시 해당 트랜잭션이 올바른 트랜잭션인지 검증하는 과정이 필요하다.
비트코인에서의 트랜잭션 검증 단계
- 원본 데이터를 자신의 개인키로 암호화를 진행하여 디지털 서명을 진행
- 원본 데이터와 디지털 서명된 데이터를 노드에 전파
- 트랜잭션을 받은 노드는 해당 트랜잭션이 진짜인지에 대한 검증을 위해 트랜잭션을 송신한 노드의 공개키를 이용하여
난독화(암호화)->(복호화인 것 같음) 진행 난독화-> (복호화인 것 같음)된 거래 데이터와 원본 데이터를 비교하여 수정된 데이터가 있는지 데이터의 무결성을 검증- 수신받은 트랜잭션이 진짜 거래로 판단될 경우 블록체인에 해당 트랜잭션을 업데이트하고 블록체인 네트워크에 연결된 노드들에게 해당 트랜잭션을 다시 전파
-
블록 유효성 검사: 채굴자와 풀 노드는 특정 규칙에 따라 수신한 블록을 평가하여 유효성 검사를 시작한다.
-
새로운 블록 생성: 채굴자는 네트워크에 브로드캐스팅된 트랜잭션의 유효성을 검사한다.
-
작업 증명(PoW) 수행: 채굴 과정의 핵심으로, 채굴자가 해시 퍼즐을 풀어 유효한 블록을 찾는다.
이 때, **블록 헤더에 있는 논스(nonce, 임시값)**를 사용하여 채굴자는 논스값을 계속 바꿔가며 결과 해시값이 미리 결정된 목표값보다 작을 때까지 반복 계산한다.
Q. 블록 헤더의 nonce와 트랜잭션의 nonce는 어떤 차이가 있을까?
- 블록 헤더의 nonce: 입력값 중의 하나로 해서 계산되는 블록의 해시값이 특정 숫자보다 작아지게 하는 값으로 쓰인다.
- (이더리움) 트랜잭션의 nonce: 발신 주소의 속성이며, 발신 주소의 context 안에서만 의미를 갖는다. 하지만, nonce는 명시적으로 블록체인 계정 상태에 저장되지 않고, 해당 주소에서 발생한 확인된 트랜잭션 건수를 세어서 동적으로 계산되는 값으로 쓰인다.
-
보상 수령: 해시 퍼즐(PoW)의 해를 구한 노드는 즉시 결과를 브로드캐스팅하고, 다른 노드들은 그 결과를 검증하여 그 블록을 승인한다. 승인되면 채굴자는 비트코인과 관련된 트랜잭션 수수료를 보상으로 받는다.
네트워크의 채굴 노드는 이더해시(Ethash)라는 독자적인 작업증명 알고리즘을 사용해 블록을 생성하고자 경쟁한다. 이더해시 알고리즘에 대한 입력은 nonce라고 하는 임의로 생성된 숫자를 포함하는 블록 헤더이며, 그 출력은 32byte의 16진수이다. 논스를 수정하면 출력도 수정되는데, 예측할 수 없는 방식으로 수정된다. 네트워크가 채굴된 블록을 수용하려면 블록 헤더에 대한 이더해시 출력이 네트워크 난이도보다 적어야하며 또 다른 32byte의 16진수가 채워질 대상으로 사용되며, 목표 난이도를 상회하는 블록을 브로드캐스트하는 모든 채굴자는 블록 보상을 받게 된다.
해시 퍼즐(PoW)의 해를 구한 노드는 즉시 결과를 브로드캐스팅하고, 다른 노드들은 그 결과를 검증하여 블록을 승인한다. 블록이 승인되면, 채굴자는 비트코인과 관련된 트랜잭션 수수료를 보상으로 받는다.
비트코인의 작업증명(PoW) 해를 구하는 시간으로 10분이 소요되도록 알고리즘이 형성되어 있기 때문에, 더 많은 채굴자가 등장하고, 빨리 채굴할수록 채굴 난이도가 상승하게 된다. 이 보상은 일정량을 지속해서 보상하는 것이 아닌, 반감기로 인해 2009년 초반에는 블록 하나를 생성할 때마다 50개의 비트코인을 보상으로 받을 수 있었지만, 2018년에는 12.5개의 비트코인을 블록 보상으로 받을 수 있는 등 시간이 지날수록 블록 보상에도 변화가 생긴다. 또한, 비트코인의 총공급량은 약 2,100만 개로, 희소 가치가 부각될 것이다.
거래 수수료(Transaction Fee)
거래 수수료는 채굴자들이 특정 거래 기록득을 블록에 포함해서 블록체인에 추가할 수 있도록 제공되는 인센티브이다. 거래 수수료를 사용하는 이유는 다음과 같다.
-
네트워크 상의 스팸 공격을 줄이기 위해서
거래 수수료는 대규모 스팸 공격과 이를 실행하는데 무척 많은 비용이 들게 한다.
-
트랜잭션을 확인하고 유효성을 검증하는 사용자에게 인센티브를 제공
네트워크에 일조하는 행동에 대한 보상
대부분의 블록체인에서 거래 수수료는 합리적인 수준으로 저렴하지만, 네트워크 트래픽에 따라 비싸질 수도 있다. 또한, 더 많은 수수료를 지불할수록 다음 블록 추가에 대한 우선순위가 높아져 확인 과정이 더 빨라진다.
해시율(Hashrate)
해시율은 초당 해시 계산 개수 비율, 즉 블록을 찾기 위해 비트코인 네트워크 상의 채굴자들이 해시를 계산하는 속도이다. 예를 들어, 150m Terahashes/s
는 초당 15,000,000,000,000,000,000
개의 해시값이 계산됨을 의미한다.
비트코인 초기에는 개인의 CPU 자원이 사용되었기에 해시율이 낮았지만, 이후 전문 마이닝풀과 Application Specific Integrated Circuits(ASICs)가 도입되며 해시윤이 기하급수적으로 증가하였고, 그 결과 비트코인 채굴 난이도도 급격하게 증가하게 되었다.
TPS(Transaction per Second)
TPS는 초당 처리할 수 있는 트랜잭션의 개수를 의미한다. 예를 들어 100만 TPS
는 1초 당 100만 건의 트랜잭션을 처리할 수 있는 속도를 말한다. 원장이 분산화되고, 참여 노드가 증가할수록 TPS는 느려지고, 수수료는 증가하게 된다.
채굴 풀(Mining Pool)은 채굴하는 채굴자들이 모여서 만들어진 채굴자 조합을 나타낸다. 서로 다른 풀들이 모여 결합된 해시파워(Hash Power)로 함께 암호화폐를 채굴하고, 보상을 나누어 가진다.
하지만, 채굴 풀이 존재함으로 51% 공격의 위험이 생길 수 있다.
종류
- BTC.com에서 확인 가능
- 국내에는 마이닝풀 허브(Mining Pool Hub)
새롭게 등장한 채굴 풀 모델로는 커시터디(Custody, 수탁업무) 서비스 형태의 채굴 풀이 있다. 지분증명(PoS) 서비스를 이용하려면 특정 노드가 자산으로 스테이킹해서 운영하게 되는데, 그 자산이 어느 정도 이상 있어야지 많은 돈을 받을 수 있는 구조이다. 따라서, 채굴 풀을 이용해서 돈이 적은 사람도 PoS 채굴 풀에 합류해 함께 이익을 얻을 수 있다. 사용자들은 돈만 제공해주고 노드는 채굴풀이 돌리니 보상에서 일정 수수료를 제외하고 자신이 받아가는 형태의 새로운 채굴풀이다.
스테이킹(Stacking): 자신이 보유하고 있는 가상화폐 중 일정 지분량을 고정하는 것으로, 가상 화폐의 보유자가 가격의 등락과 상관없이 가상 화폐를 예치하고, 예치 기간 일정 수준의 이익을 얻을 수 있다.
이런 형태의 채굴 풀이 한 단계 더 성장학 방식이 위임지분 증명(DPoS) 방식을 사용하는 채굴 풀인데, 이것은 사용자가 시스템에 스테이킹을 해두고 투표를 통해 채굴자(노드)를 선정하는 시스템이다.
CPU 채굴은 오리지널 비트코인 클라이언트에서 사용할 수 있었던 첫 번째 타입의 방식이다. 사용자는 노트북, 데스크탑 컴퓨터를 사용해서도 비트코인을 채굴할 수 있었다. CPU 채굴은 비트코인 탄생 후 1년 정도 사용된 방법으로, 현시점에서는 더 이상 이익이 되지 않는 방법이다.
비트코인 네트워크 난이도가 증가함에 따라 채굴자들은 더 빠른 채굴을 위해 GPU나 그래픽 카드를 사용해 채굴을 수행하였다.
장점
- 보통 OpenCL 언어를 사용하여 프로그램된 빠르고 병렬적인 계산 제공
- CPU에 비해 성능 면에서 우수
- Overclocking 기술 등을 사용해서 GPU Power를 최대치로 누릴 수 있음
- OpenCL: 개방형 범용 병렬 컴퓨팅 프레임워크로, CPU, GPU, DSP 등의 프로세서로 이루어진 이종 플랫폼에서 실행되는 프로그램을 작성할 수 있게 해준다.
- Overlock(오버로크): gradually increasing the clock speed of the video card to boost its performance.
한계점
- GPU 채굴은 특별한 Motherboards를 요구함
- 여러 그래픽 카드 수용을 위한 추가적인 하드웨어가 필요함
- Overheating
- 많은 수요에 따른 비싼 가격
FPGA(Field Programmable Gate Arrays)는 기본적으로 특정 연산을 수행하도록 프로그래밍 가능한 집적회로이다. FPGAs는 보통 Verilog나 VHDL과 같은 Hardware Description Languages(HDLs)에 프로그램되어 있다.
FPGA는 GPU와 비교해 더욱 뛰어난 성능을 제공한다. 그러나 접근성, 프로그래밍 난이도, FPGA를 설정하고 프로그래밍하기 위해 특별한 지식을 요구하는 부분 등으로 인해 널리 이용되지는 못하였다. 그리고 이후 ASICs의 도입으로 FPGA 기반 시스템은 빠르게 사라지게 되었다.
- Double SHA256은 빠르게 FPGA 프로그래머들에게 매력적인 작업이 되었고 몇 개의 오픈소스 프로젝트도 시작하였다.
- X6500 Miner, Ztex, Icarus와 같은 채굴 하드웨어는 FPGA 채굴로 이익이 날 때 개발되었다.
- Xilinx, Altera와 같은 다양한 FPGA 제조사들은 FPGA 하드웨어와 채굴 알고리즘을 프로그래밍하는 데 사용될 수 있는 개발 보드를 생산하였다.
ASICs는 SHA256 연산을 수행하기 위해 디자인되었으며, 높은 해시율을 제공한다. 일반 개인이 지불하기에는 비용이 매우 크다.
Copyright © 2022 Song_Artish