블록체인에서 작업증명(PoW)이란?

블록체인에서 작업증명(PoW)이란?

PoW = Proof Of Work

= 블록체인에서 작업 증명을 의미한다.

작업 증명을 이해하기 위해서는 블록체인이 어떻게 작동하는지, 채굴과 해시라 부르는 것이 무엇인지도 알아야 이해하기 수월하다.

블록체인의 대장인 비트코인이 동작되는 원리를 먼저 확인해 봐야 한다. 각자의 지갑에서 서로 돈을 송금하고 수금할 때 돈을 보내는 사람과 받는 사람 간의 거래내역 즉, 트랜잭션을 블록에 기록하고 해당 블록의 적정성을 확인과 합의를 통해 이상이 없으면 돈이 보내진다.

여기서 작업 증명방식은 트랜잭션 발생 시 그 트랜잭션이 유효한지에 대한 합의와, 새로 생긴 블록이 가짜인지 검증하는 과정에서 사용된다.

출처: www.nitcoinmining.com

위의 사진은 비트코인을 채굴하는 과정을 그림으로 간략하게 표현한 사진이다.

먼저 생성된 트랜잭션이 유효한지 검증하고, 유효하다면 수많은 트랜잭션을 하나로 묶는다. 그리고 가장 최근에 생성된 블록의 헤더를 새로 생성될 블록에 해시로 저장한다. 그리고 작업 증명방식을 통해서 문제를 풀고 새로운 블록이 추가된다. 여기서 작업 증명방식에 대해서 좀 더 살펴보면.

출처: www.bitcoinmining.com

가장 최근에 생성된 블록의 헤더와, nonce, 새로 생성될 블록으로 해시값을 구해서 목푯값(Target Value)보다 작은 값을 구하면 새로운 블록이 생성되고, 그에 대한 보상으로 비트코인을 얻게 되는 것이다. 여기서 변할 수 있는 값은 nonce 값으로 0부터 1씩 숫자를 올려가면서 합당한 값이 나올 때까지 무한 반복한다. 쉽게 설명하면 새로운 블록을 얻기 위해 작업 증명방식으로 목푯값보다 낮은 값을 찾으면 되는 것이고, 이는 컴퓨터의 성능이 좋아질수록 더 빠르게 구할 수 있다. 고사양 컴퓨터로 빠르게 계산할수록 블록을 빠르게 생성할 수 있고, 비트코인도 많이 얻을 수 있다. 그럼 여기서 들 수 있는 의문은 왜 10분에 블록이 하나꼴로 만들어지는 걸까?

출처: www.bitcoinmining.com

그것은 바로 채굴의 난이도 조절에 있다. 새로운 블록을 만들고, 평균적으로 target value보다 작은 값을 찾는 시간이 줄어들 때마다 난이도가 올라간다. 반대로 찾는 데 오래 걸릴수록 그다음 난이도는 줄어들게 된다. 블록 생성은 이런 방식으로 설계가 돼있기 때문에 아무리 좋은 컴퓨터로 하더라도 평균적으로 10분에 블록이 하나 형성된다.

여기서 갖게 되는 의문은 그럼 왜 10분당 블록을 하나 형성하게 설계했을까?

그거에 대한 해답은 이중 지불 즉, 모든 노드가 동시에 블록을 생성할 수 없도록 만들기 위해서다. 디지털 세계에서는 Ctrl+C, Ctrl+V로 간편하게 복사하고 네 것도 내 것 내 것도 네 것이 된다. 10,000원짜리 디지털 화폐로 A 가게에서 꽃을 10,000원어치만 사야 하는데 이걸 복사해서 옆의 빵집에서도 10,000원어치 빵을 사게 되면 화폐로써의 가치가 사라지게 된다. 블록을 빠르게 여러 개를 생성하게 되면 어떤 블록이 유효한지 파악할 수 없게 된다. 그래서 10분당 블록을 하나만 만들도록 하는 것이다.

그럼 기존에 생성된 트랜잭션을 조작하게 되면 어떨까?

불가능하지 않지만 실현하기가 현실적으로 매우 어렵다. 하나의 값만 살짝 달라져도 해시값이 전혀 다르게 바뀌기 때문에 중간에 있는 거래내역 하나를 바꾸게 되면 그 뒤의 블록까지 다 수정해야 되고 상당한 에너지가 소모된다. 지금도 비트코인 채굴기 사용만으로도 한 국가의 1년 전기 사용량 이상을 사용하는 판국에 중간에 있는 블록을 변경하고 향후 생성될 블록까지 그 누구보다 빠르게 만들기란 거의 불가능에 가깝다고 볼 수 있다.

사토시 나카모토는 확률 증명을 통해서 블록 6개가 대립되도록 생성될 확률이 0에 가깝다고 했다. 비트코인으로 거래를 하려면 약 10분 정도 소요된다고 볼 수 있는데 가장 안전하게 거래하기 위해서는 1시간의 시간을 기다려서 제대로 거래가 됐는지 확인해야 된다고 나는 생각한다.

처음 비트코인을 채굴할 당시엔 집에 있는 PC의 CPU만으로도 충분히 채굴이 가능했다. 하지만 비트코인 가격이 폭등하면서 너도나도 비트코인을 채굴하려고 시장에 모여들자 CPU에서 GPU로 GPU에서 ASIC으로 전문 채굴기가 나타났고, 난이도가 엄청 올라갔다.

nonce 값을 조정해서 target value보다 작은 값이 나올 때까지 무한 반복 작업을 한다고 했는데 이 작업을 1초에 몇 번을 실행하냐를 나타내는 수치를 해시 파워라고 한다. A 노드의 해시 파워는 100이고, B 노드의 해시 파워가 10이면 A가 먼저 target value 값을 찾아낼 확률이 10배 높다. 말 그대로 확률이 높은 거지 B가 절대로 찾지 못한다는 건 아니다.

채굴은 100개의 노드가 참여했다고 해서 그 모든 노드에게 채굴의 보상을 주지 않는다. 가장 먼저 채굴한 노드에만 보상을 주게 되고, 나머지 99개의 노드는 아무런 보상도 받지 못한다. 즉 해시 파워가 높을수록 유리하다.

여기서 서로 다른 채굴기를 모아서 하나의 채굴기처럼 작동하도록 만든 네트워크를 풀이라고 한다. 내가 노력한 만큼 보상을 못받을 바에야 다같이 모여서 내가 노력한 해시 파워만큼만이라도 보상을 받자고 해서 만들어진 게 마이닝 풀이다. 일반 가정집에서 채굴(mining)을 하기에는 난이도도 많이 올라갔고, 예전보다 훨씬 고가의 장비가 필요한 만큼 마이닝 풀을 통해서 자신이 기여한 만큼 보상을 받는다.

하지만

작업 증명방식을 사용하게 되면서 여러 단점들이 생겨났는데

1. 채굴 난이도가 기하급수적으로 상승해서 개인 채굴자들은 채굴을 엄두도 못 내고 일부 기업들이 거의 독식하는 구조가 돼버렸다.

2. 하나의 블록을 생성하는데 필요한 해시 파워에 비례해서 전력 소모가 매우 높아졌다.

3. 속도가 매우 느리다.

4. 생각보다 수수료가 비싸다 등.

이런 단점들을 보완하기 위해서 PoS, 지분 증명방식으로 관심이 몰리고 있는 것 같다.

다음에는 PoS와 해시 함수에 대해서 공부해서 기록해야겠다.

from http://j-tone.tistory.com/16 by ccl(A) rewrite - 2021-09-18 11:00:41