본문 바로가기
코인.주식.NFT/코인

POW(작업증명) 및 POS(지분증명)

by thebirghtwide 2022. 5. 28.

 Proof of Work, Proof of Stake

 

 

Proof of Work : 채굴의 의미 

비트코인을 '채굴'한다. 대부분의 많은 사람들이 한번쯤 들어봤을 이야기라 생각한다. 왜 비트코인의 가치가 이렇게 올랐을까? 여러가지 해석이 있을 수 있지만, 그 중 하나를  '채굴'이라 말하고 싶다. 물론 코인의 가격상승 원인을 대부분 커뮤니티라 생각하지만, 이것 보다 채굴자들의 노동 즉 작업증명을 통해 가치가 전송될 수 있다는 것이 보다 근본적인 이유라 생각한다. 

 

'작업증명' 은 합의 알고리즘 쉽게 말해 '블록체인의 블록을 어떻게 생성할 것인가?' 에 대한 방법 중에 하나이다. 채굴자가 특정 수학적 문제를 풀면 블록을 생성할 수 있는 권한을 주는 방식을 말한다. 

 

채굴자는 우선 자신의 컴퓨터에 임시 블록 (candidate block)을 만든다. 이 임시 블록은 아직 네트워크를 통해 다른 블록체인 노드들에게 전파되지 않은 상태이다. 채굴자는 유저들의 트랜잭션을 맴풀(mempool)이라는 저장공간에 저장해놓고 그 중에서 몇 개의 트랜잭션을 선택하여 임시 블록에 포함시킨다. 채굴자 보상을 받기 위해 이 임시 블록을 네트워크에 전파하고, 모든 채굴자들이 그 특정 채굴자가 제안한 임시 블록을 그들의 컴퓨터에 저장해야 한다. 

 

그렇지만 아무 임시블록이나 블록체인에 연결될 수 있는 것은 아니다. 특정 채굴자가 임시 블록을 유효한 블록으로 만들고, 다른 노드들에 제안하여 현재 블록체인에 연결시키기 위해서 블록의 논스(nonce)값을 찾아야만 한다. 이 nonce가 수학적 문제에 대한 정답을 찾는 그런 것이다. 

 

 Nonce 찾기 

비트코인 블록 정보. 출처: https://blockstream.info/block/000000000000000000050d19f6883897c353b2ea6bca484273e3f4dc6a669113?expand

위의 표시된 000000000000000000050d19f6883897c353b2ea6bca484273e3f4dc6a669113 는 해당 블록의 블록 해시를 뜻한다. 블록 해시는 노란색으로 표시된 ( Timestamp, Version, Merkle Root, Bits, Nonce) 와 이전 블록의 블록 해시를 합쳐 암호화 해시함수(이하해시함수)에 입력값으로 넣고, 그 결과로 나온 결과값이다. 

 

여기서 Nonce를 제외한 모든 필드는 정적인 값, 즉 정해져서 변하지 않는 값이다. 따라서 채굴자는 nonce 값을 무작외로 대입하여 특정 조건을 만족하는 블록 해시값을 찾아야 하는 것이다. 바로 이 과정이 작업증명에서 말하는 '작업' 이 된다. 

 

보통  채굴 난이도는 몇 개의 0으로 시작하는 블록 해시값을 찾아야 하는지에 따라 기준을 타겟(target)이라하고 target이하의 블록 해시를 찾기 얼마나 어려운지의 난이도를 difficulty라고 한다. 비트코인은 블록생성 주기를 약 10분으로 유지하도록 설정되어 있는데, 만약 특정 조건을 만족하는 블록 해시를 찾을 때까지 10분보다 적게 걸린다면 더 많은 개수의 0으로 시작하는 블록 해시값을 찾도록 작업의 난이도가 바뀌게 된다. 

 

difficulty는 해시레이트(Hashrate), 즉 채굴에 사용되는 해시 파워(컴퓨팅 자원)의 총합과 긴밀한 관계를 가진다. 해시레이트가 높을수록 작업 증명을 사용하는 체인의 보안성은 높아진다고 할 수 있는데, 이는 작업 증명과정에 필요한 연산량이 늘어나, 연산에 드는 비용이 직접적으로 증가하기 때문에 새롭게 악의적인 포크를 발생시켜 기존의 Canonical Chain(정식 혹은 표준 체인)을 대체하고자 하는 공격의 가능성과 유인이 낮아지기 때문이다. 

 

 이중지불 방지 

이중지불이란 '이미 지불한 토큰으로 또 다시 지불하는 것' 을 의미 한다. 비트코인은 거래의 순서를 확정하는 매커니즘으로 '타임스탬프서버(Timstamp Server)로 정의 한다. 블록 해시는 위에서 살펴 보았다 시피 ( Previous hash, Timestamp, Version, Merkle Root, Bits, Nonce) 로 이루어져 있다. 이전 블록의 블록해시가 현재 블록의 블록 해시로 계산에 사용된다는 것은, 이전 블록의 내용이 바뀌게 되면 현재 블록의 해시도 완전히 바뀌게 된다는 것이다. 즉 한 번 거래를 체결한 이후로 누군가 과거의 기록을 조작 할 수 없도록 설계된 것이다. 

 

이런 식으로 각각의 블록들이 연결되어 '체인'을 형성하게 된다. 직선적으로 연결된 체인은 채굴자들의 컴퓨팅 자원을 소비한 누적된 결과이자 거래의 체결 순서를 보장하는 연속적 원장이라 볼 수 있다. 어떤 사용자의 거래가 담긴 블록 이후로 많은 블록이 쌓일수록 해당 블록의 수정하는 데 필요한 해시 파워가 증가하기 때문에 사용자의 거래가 확정될 확률이 높아지게 된다. 

 

하나의 블록에 이중지불을 시도하는 트랜잭션 두 개가 동시에 들어갈 수는 없나요?
제안된 블록에 대해 네트워크에 참여하는 각각의 노드들은 해당 블록에 담겨있는 트랜잭션을 
하나씩 검증하기 때문에 유효하지 않은 트랜잭션들(예를 들어 이중지불 시도)이 
하나의 블록에 담겨있을 경우 해당 블록을 인정하지 않습니다. 
보다 정확하게는 각 노드는 다음의 과정을 거쳐 블록을 검증하게 됩니다[6]:
1. 제안된 블록이 가지고 있는 PREVIOUS_BLOCK_HASH가 실제로 존재하는 직전 블록의 블록 해시값인지 검증한다.
2. 제안된 블록의 TIMESTAMP가 이전 블록의 TIMESTAMP보다 큰 값인지를 통해,
   블록의 순서가 시간적으로 올바른지 검증한다.
3. 논스와 블록 해시값 등을 확인하여 블록의 작업증명이 제대로 이루어졌는지 검증한다.
4. 이전 블록의 마지막 상태를 저장한다.
5. 이전 블록의 마지막 상태에 이번 블록에 포함된 트랜잭션들을 하나씩 적용시켜 최종적으로 바뀐 상태를 다시 저장한다. 
   이렇게 저장된 상태가 이번 블록의 마지막 상태가 된다. 트랜잭션을 하나씩 적용시키는 과정에서 오류가 발생하면 블록을 거부한다.
   여기서 5번이 트랜잭션들이 유효한지 검증하는 과정에 속합니다.

마무리

현재 비트코인의 가격이 많이 떨어지긴 했지만, 그럼에도 해당 가격을 유지하는 이유는 바로 채굴가격이 그 만큼 비싸기 때문이라고 말하고 싶다. 현재도 많은 사람들이 비트코인 채굴에 가담하고 있고, 해시레이트가 점점 높아지면서 비트콘인 하나를 채굴하기 위해 사용되는 비용도 어마무시하게 올라갔기 때문이다. 

 

 

관련글

 

간츄의 코인

 

'코인.주식.NFT > 코인' 카테고리의 다른 글

2022-10-19 코인 주요 장세  (0) 2022.10.19
2022-10-12 주요 코인 장세  (1) 2022.10.12
Enchantment Spell 에어드랍 대비 테스트 넷  (0) 2022.09.30
2022-08-11 코인 정세  (1) 2022.08.20
유동성과 거래량  (1) 2022.05.27

댓글