블록체인 기술의 핵심적인 부분 중 하나인 '마이닝'에 대해 깊이 있게 탐구하고자 한다
최근 블록체인의 기초를 복습하면서 '블록 생성' 코드를 세세히 분석해 보는 과정에서, 마이닝에 대한 이해가 부족하다는 것을 깨달았다
비록 이전에 기본적인 개념 정리를 진행했음에도 불구하고, 여전히 마이닝에 대한 개념이 완전히 잡히지 않았다
따라서 이번 글을 통해 마이닝에 대해 보다 구체적이고 상세하게 알아보고자 한다
1. 마이닝 (Mining, 또는 채굴)이란?
비트코인을 얻는 방법에는 대체로 세 가지가 있다
1️⃣ 이를 거래소에서 구입한다
2️⃣ 상품 및 서비스를 제공한 대가로 받는다
3️⃣ 새로운 비트코인을 채굴한다
여기서 마이닝(채굴)은 비트코인의 공공 원장에 거래 기록을 추가하는 과정을 가리킨다
이 과정은 모든 거래의 모든 거래의 정확성을 확인하고 네트워크 상에 있는 모든 참여자들이 이 원장을 열람할 수 있도록 하려는 것이다
이를 통해, 합당한 비트코인 거래와 '이중 지출(double-spending)' 이라고 불리는, 이미 사용된 돈을 다시 사용하는 부정한 거래를 구분하게 된다
채굴 - 컴퓨터 처리능력 (processing power)을 사용하여 수행 기록을 남기는 과정
블록체인 - 모든 비트코인 거래가 기록되어 있는 분산형 공공원장
2. 마이닝 과정
비트코인 채굴 (mining)은 새로운 블록이 블록체인에 추가되는 프로세스이다
트랜잭션들을 포함한 블록은 비트코인 네트워크상의 '채굴 노드'의 채굴 프로세스를 통해서 인증(validated)된다
이 과정은 채굴자들이 컴퓨팅 경쟁을 통해 특정 숫자를 찾게되며, 이는 Proof of Work(PoW) 라는 원칙에 기반한다
마이닝은 크게 다음의 두 가지 주요 작업을 포함한다
1️⃣ 새로운 블록 생성
2️⃣ 보상받기
1️⃣새로운 블록 생성
마이너들은 거래를 검증하고, 블록에 포함시킨 뒤, 해당 블록을 블록체인에 추가하려고 경쟁한다
이 과정에서 마이너들은 복잡한 수학적 문제를 해결해야 하는데, 이를 "작업 증명(Proof of Work)"이라고 한다
첫 번째로 문제를 해결한 마이너가 그 블록의 유효성을 증명하고, 블록체인에 추가할 권리를 얻게 된다
2️⃣보상받기
마이너가 새로운 블록을 블록체인에 성공적으로 추가하면, 그들은 두 가지 형태의 보상을 받는다
1. 블록 보상 : 새로 채굴된 코인 (ex: Bitcoin의 경우, 일정 시간마다 감소하는 보상)
2. 거래 수수료 : 블록에 포함된 거래들의 수수료
3. 마이닝의 핵심 : Partial Hash Inversion
이 과정은 마이너가 새로운 블록의 해시값이 네트워크의 현재 목표 난이도보다 낮은 값을 가지도록 만드는 것이다
"Partial" 은 해시 값의 일부분만을 대상으로 하며,
"Inversion" 은 해시 함수의 출력을 변경 (뒤집는다는 의미로 사용)시킨다는 것을 의미한다
마이너(miner; 채굴자)는 "Nonce"라는 값을 변화시키면서 반복적으로 해시를 계산하고, 그 값이 목표 난이도보다 낮은 값이 나올 때 까지 이 과정을 계속한다
🧐 Nonce(Numver used once) 란?
한 번만 사용되는 숫자를 의미한다
블록체인에서의 마이닝 과정에서,
마이너들은 블록의 해시 값이 특정 목표값(목표 난이도) 보다 낮아지도록 하는 nonce 값을 찾는다
Nonce 값은 블록 헤더에 포함되며, 마이너는 이 값을 변경하면서 계속해서 새로운 해시값을 계산한다
이 프로세스는 컴퓨팅 파워와 전기등의 많은 자원을 소비한다
이 프로세스는 또한 조작과 중복 지불 공격으로부터 시스템을 보호함과 동시에 새로운 가상회폐가 비트코인 환경에 추가될 수 있도록 해준다
대략 하나의 새로운 블록은 10분마다 생성되는데, 이는 비트코인의 발생 빈도를 조절하기 위함이다
이 빈도는 비트코인 네트워크 상에서 조정된다
비트코인 코어 클라이언트 코드 상에 "money supply"를 조절하기 위해 인코딩 되어 있다
4. 채굴자가 하는 일
비트코인 네트워크에 노드가 연결된 이후, 비트코인 채굴자는 아래와 같은 작업을 수행한다
- 네트워크와의 동기화 :
비트코인 네트워크에 새로운 노드가 참여하게 되면, 새로운 노드는 다른 노드에 블록 히스토리를 요청하여
블록체인을 다운로드한다
여기서는 채굴자의 관점에서 기술하였으나, 이러한 다운로드는 채굴자만 수행하는 것은 아니다 - 트랜잭션 인증 :
네트워크 상의 트랜잭션 브로드캐스트는 풀 노드에 의해서 서명과 아웃풋을 검증하여 인증된다 - 블록 인증 :
채굴자와 풀 노드는 특정 규칙에 대한 검증을 수행하여 받은 블록에 대한 인증을 수행한다
이 프로세스는 nonce 값을 확인하는 것과 블록 내의 각 트랜잭션을 검증하는 것으로 구성된다 - 새로운 블록 생성 :
채굴자는 새로운 블록을 인증한 이후에 트랜잭션 브로드캐스트를 결합해서 네트워크 상에 새로운 블록을 제안(propose)한다 - PoW 수행 :
이 작업은 채굴 프로세스의 핵심이며 컴퓨팅적인 퍼즐을 풀어서 채굴자가 새로운 유효한 블록을 찾는 방식이다
비트코인의 블록 헤더(header)는 32비트 nonce 필드를 가지고 있으며 채굴자는 결과 해시값이 사전에 정의된 타켓 난이도보다 적을 때까지 반복적으로 nonce 값을 변경해야 한다 - 보상 수령 :
채굴자 노드가 PoW를 해결하면, 해당 노드는 즉각 그 결과를 브로드 캐스트하고 다른 노드들은 그것을 검증하고 수용하게 된다
아주 낮은 확률로 거의 동시에 다른 노드가 블록을 발견하여, 발견한 블록이 네트워크 상에서 받아들여지지 않는 경우가 존재한다
하지만, 일단 블록이 수용되면 채굴자는 12.5 비트코인과 연관된 트랜잭션의 수수료를 받게 된다
🧐 PoW(Process of Wokr) 란?
블록체인 네트워크에서 일반적으로 사용되는 합의 알고리즘 중 하나로, 네트워크의 참여자들(마이너들)이 높은 계산능력을 사용하여 복잡한 수학적 문제를 해결하는 과정이다
마이너들은 nonce 값을 변경하면서 블록의 해시값을 계산하고, 이 해시값이 미리 정의된 목표 난이도보다 낮은 값을 가지도록 한다
이를 통해 블록이 유효하게 만들어지고, 이 블록을 블록체인에 추가할 권리를 얻는다
5. 채굴 알고리즘
채굴 알고리즘은 아래와 같은 단계로 구성된다
- 비트코인 네트워크로부터 이전 블록의 헤더를 얻는다
- 네트워크 상에서의 트랜잭션 브로드캐스트 세트를 제안할 블록에 넣어서 합친다
( : 트랜잭션들이 네트워크에 broadcast 되고, 이러한 트랜잭션들이 하나의 블록으로 그룹화되어 다음 블록을 형성하게 될 것) - 이전 블록 헤더값의 double 해시를 계산하고nonce와 새롭게 제안된 블록을 SHA256 알고리즘을 사용해 결합한다
- 결과 해시값이 현재의 타겟 난이도보다 낮은지 체크하고, 낮다면 PoW를 푼 것이다
PoW 성공 시, 발견된 블록은 네트워크에 브로드캐스트 되고 채굴자는 보상을 받는다 - 만약 결과 해시값이 현재의 타겟 난이도보다 낮지 않다면, 위 과정을 반복하며 nonce 값을 증가시킨다
🧐 트랜잭션 브로드캐스트 세트?
네트워크 상에서 전파되고 있는 트랜잭션들의 집합을 말한다
즉, 현재 네트워크 상에서 알려진(브로드캐스트 된) 모든 트랜잭션들의 목록이다
🧐 Double hashing (double SHA-256 hashing)?
데이터를 두 번 연속으로 SHA-256 해시 알고리즘을 사용하여 해싱하는 과정을 말한다
이렇게 두 번의 해싱을 진행하는 이유는 보안 강화를 위해서이다
'BlockChain' 카테고리의 다른 글
[BlockChain] ERC-20 Contract 만들기 (Truffle, Remix) (2) | 2023.10.12 |
---|---|
[BlockChain] Use MetaMask (1) | 2023.10.11 |
[BlockChain] Truffle과 Ganache를 이용한 EVM Smart Contract / React 구현 및 배포 (1) | 2023.10.04 |
[Block Chain] 스마트 컨트랙트(Smart Contract) (0) | 2023.09.26 |
[Block Chain] 이더리움의 계정 시스템 ( EOA / CA ) (0) | 2023.09.25 |