PoW (Proof of Work)


블록(Block)을 누가 생성할지를 정하는 대표적인합의 알고리즘(Consensus Algorithm) 중 하나이다.가상화폐시장의 초기에 등장한 비트코인(BitCoin, BTC)이 사용하고 있으며, 요즘에 우리가 알고 있는 모네로(Monero, XMR)라는 코인도 사용하는 합의 알고리즘이다.

 

참고로, 현재(2019.03.20 기준), 가상암호화폐 전체시장의 시가총액 60위 이내에 포함되어 있는 코인 중에 PoW를 사용하는 코인Bitcoin, Ethereum, Litecoin, Bitcoin cash, Bitcoin SV, Monero, Dash, Ethereum Classic, Zcash, Dogecoin, Bitcoin Gold, Decred, DigiByte, Bytecoin, Bitcoin Diamond, ABBC Coin, Komodo, Ravencoin, Verge, Siacoin로 총 20개가 있다.

코인마켓캡(coinmarketcap) 자료 참고 

 

 

(PoW) 합의 주체

PoW방식으로 합의를 만들어내는 직접적인 주체는 (Work) 능력이 좋은 사람들이다. PoW의 설계방식은 컴퓨터 성능(=컴퓨팅 파워, Computing Power)이 높은 사람들만 블록을 생성할 수 있으며, 이 사람들에의해 블록체인 합의가 결정된다.

 

 

(PoW) 합의 설계

1. 증명(Proof) 방식

PoW방식으로 합의가 설계된 블록체인 네트워크는 일정시간마다 발생되는 모든 거래(Transaction)들을 하나의 블록(Block)안에 포함시키고, 이 블록안에 작성된 모든 내용이 모두 진짜라는 것을 증명하는 어떤 행위를 해서, 블록체인 내 모든 노드들이 믿도록 만드는 것이다. 여기서 말하는 어떤 행위, 컴퓨터 계산을 이용해서 아래 공식에 맞는 어떤 값을 찾아내는 것을 말한다.

 

 

§ 공식

hash(hash(previous block header with transactions) + nonce)) < difficulty

 

§ nonce

난수라고 말하며, 이 값은 블록체인에서 존재하지만 모르는 값으로 직접 알아내야 하는 값을 말한다. 풀어야하는 공식에 들어가는 difficulty 값이 계산하기 어려울수록 nonce를 찾는데 걸리는 시간이 오래 걸리는 편이다. PoW의 핵심은 누구보다 빠르게 이 nonce를 찾아내는 것이고, 빠르게 찾아내는 그 노드(Node)가 만든 블록(Block)에 들어가는 거래(Transaction)들은 진짜라고 합의(Consensus)를 보는 것이다.

 

§ difficulty

난이도라고 말하며, 이 값을 블록체인에서 알아서 자동으로 조정되도록 설계되어 있다. 그 이유는거래들을 증명할 수 있는 블록을 만들어야 블록체인이 운영되는 것인데, 공식을 풀지 못해서 블록이 만들어지지 못하면, 운여이 안되므로, 주어진 시간동안 풀지 못하면 난이도는 내려가고, 잘 풀면 높아지게 하는 것이다. 이 값은 누군가 직접 변경이 불가능하지만, 이 값은 누구나 알 수 있는 값이다.

현재까지 시간에 따라 조정된 difficulty 그래프 참고 

 

2. 합의(Consensus) 방식

PoW 합의를 사용하는 모든 블록체인 코인들의 증명(Proof)방식은 앞에서 말한 내용과 모두 동일하다. 하지만, 증명은 누구나 할 수 있는 행위이기 때문에, 누가 증명해서 만들어낸 블록(Block)을 사용할 것인지를 선택해야 한다. 대표적인 코인 2가지에서 사용하는 방식을 살펴본다.

 


 

§ Longest Chain Rule (가장 긴 체인)

여기 저기서 만든 블록들 중에 가장 긴 블록을 사용하는 방식으로, 현재, 비트코인(Bitcoin)이 사용하는 방법이다.

 

§ Ghost Protocol : Greedy Heaviest Object Sub Tree (가장 무거운 체인)

여기 저기서 만든 블록들 중에 가장 무거운 블록을 사용하는 방식으로, 현재, 이더리움(Ethereum)이 사용하는 방법이다.


 

(PoW) 합의 취약점

만약, 컴퓨터 성능이 높은 사람들 중에 악의를 가진 사람이 있다면, 충분히 PoW 합의를 사용하는 블록체인 네트워크를 붕괴시킬 수 있는 상황을 만들 수 있다는 취약점이 있다. 이 취약점을 이용한 공격방법을 51% Attack이라고 하며, 본인이 블록체인 전체 컴퓨터 성능의 51%를 발휘할 수 있다면 공격할 수 있는 방법이다.

 

 

(PoW) 합의 주체 닉네임

PoW방식에서는 합의를 만들어내는 주체를 채굴자(마이너, Minor)라고 부르며 이들이 하는 행위를 채굴(Mining)이라고 부른다. 그 이유는 블록을 생성해서 블록체인 플랫폼에서 주어지는 보상을 받기 위해 어딘가에 존재하는 nonce값을 찾아내야 하는데, 그 행위가 마치 땅굴에서 보물을 찾는 것 같다고해서 채굴자라고 부르는 것이다.