블록체인 이야기 네번째 시간, 작업증명(Proof of Work)을 알아본다.
사토시 나카모토는 비트코인 백서 초록에 다음과 같이 밝혔다.
“이 문서를 통해 P2P 네트워크를 이용해 이중지불을 막는 해결책을 제시하고자 한다. 이 네트워크는 암호화 함수를 실행하는 해싱 (hashing) 작업을 통해 해시 기반 작업증명 (proof of work) 체인에 시간을 기록하는 타임스탬프를 기록하는데 이는 작업증명을 다시 수행하지 않고서는 변경할 수 없는 기록을 생성한다. (중략)...”
위 문단의 뒷 부분을 쉽게 풀이해 보자면 이렇다.
기본적으로 작업증명(Proof of Work)이란 특정 Hash값을 찾는 방식으로 이뤄진다. 이 특정 Hash값을 찾기 위해 랜덤한 특정값을 넣어 그 값을 해쉬값과 비교해 정답이 나올 때까지 반복한다. 한 마디로 확률에만 의존한 무식하고 정직한 증명방식이다. (각각의 블록은 이전 블록의 기록을 포함한다.) 만약 중간블록을 위조하고 싶어도 블록을 위조하려면 그 블록 뿐 아니라 그 이후 모든 블록기록도 위조해야 한다는 뜻이다. 결국, 동일한 작업량으로는 절대로 진짜 블록체인길이를 따라잡을 수 없다.
이는 블록체인이 악의적 노드에 의해 변경될 수 없는 가장 큰 이유이며 비트코인이 유지되는 매커니즘 중 하나다.
지난 시간, 우리는 이중지불을 알아보면서 <테더링된 다수 컴퓨터들의 집합으로 블록체인은 소수의 악의적 행동을 막으면서 신뢰가능한 유효성 검사가 가능하게 된다. 작업증명(Proof of Work) 방식의 합의 알고리즘으로 문제를 해결하게 된다.> 라고 밝혔다.
오늘 ‘작업증명’이라는 표현을 알아보기 전에 먼저 알 것이 있다.
바로, 블록의 생성과 채굴(마이닝) 개념이다.
블록체인과 비트코인의 핵심은 “분산”이다.
개인과 개인이 거래 시, 제 3자를 통하지 않은 신뢰를 얻기위한 방법으로 시스템에 참여한 모든 사람이 거래 기록을 공유하고 거래가 일어날 때마다 그 거래기록을 공유해 위변조가 없게 한다. 그런데 그 과정이 몹시도 번거롭다.
거래 때마다 거래장부를 업데이트 시키는 게 보통 번거로운 게 아니다.
그 장부가 업데이트 되고 또 업데이트된 장부가 모두에게 공유되려면 그 일을 누가 하는가?
블록체인 생태계에 참여한 모든 구성원들이 한다.
블록체인이 없던 시절엔 총무 역할의 누군가 나서 고생했을 일이다.
‘혼자만 힘들 수 있느냐, 모두가 함께 하자.‘
그래서 PoW(Proof of Work)의 핵심은 “함께한다면”이다.
이 때, 모두가 참여하도록 자극할 동기부여가 필요하다.
자본주의 핵심이자 이 거대한 세계가 운영될 수 있게 동기부여가 될 근본 요인은 “보상”이다.
매 10분마다 비트코인 블록체인 상에서 새 블록이 추가 된다.
정확히는 제일 먼저 퍼즐을 푸는 컴퓨터가 거래를 블록에 추가할 수 있다.
여기서 블록생성에 필요한 일을 ‘채굴’이라 부르고 그 보상으로 비트코인이 제공된다.
다시말해 채굴 (마이닝)은 블록체인에 타당한 블록을 제출하기 위해 수학적 문제를 푸는 작업을 의미한다.
채굴자가 채굴(난해한 수학적 문제를 푸는 작업)을 통해 타당한 블록을 제공하면 보상을 받는데 이는 그가 컴퓨팅 파워와 자원을 기여했기 때문에 받는 것이다. 현존하는 가장 평등한 보상 매커니즘이자 누구나 참여 가능한 것이 채굴(마이닝)이다.
블록타당성을 입증하면 거래 수수료와 블록보상을 받을 수 있다. 새로운 암호화폐 코인은 이런 프로세스를 통해 만들어지고 암호화폐는 네트워크 채굴을 통해 얻어진다. 이런 과정을 ‘채굴’이라 부르는 이유는 마치 하나의 블록에서 아주 적은 양의 가치를 캐내는 것과 같기 때문이다.
블록체인은 계속 블록을 만들어 위변조가 불가능한 견고한 구조의 블록을 체인 형식으로 길게 쌓아나간다.
퍼즐을 풀고 네트워크에 타당한 블록을 추가하는 채굴자는 컴퓨팅파워와 전력을 들여 네트워크가 유지되도록 리소스를 제공해주는 것에 대한 보상을 받는다. 이 퍼즐을 푸는 과정을 작업증명(Proof of Work) 이라 한다.
다시 말해 작업증명(Proof of Work)은 채굴자가 컴퓨팅 파워와 자원을 활용해 퍼즐을 푸는 과정이다. 이 퍼즐은 수학적 문제로 매우 난이도가 높다.
비트코인은 누구에게나 공평한 ‘확률’방식과 열심히 일만 하면 되는 ‘수학적 증명 과정’ 프로세스를 도입하여 수 많은 참여자를 만들어냈다. 이것이 바로 작업증명(Proof of Work) 방식의 합의 알고리즘이다.
작업증명(Proof of Work)은 다수결에 의한 의사결정과정에서 대표자를 결정하는 문제도 해결한다. 따라서 작업증명(Proof of Work)은 본질적으로 한 개의 CPU당 한 번 투표하는 구조다.
다수의 결정은 가장 긴 체인을 나타내며 이는 가장 많은 작업증명(Proof of Work)에 노력이 투입된 것이 된다.
여러 암호화폐 역시 많은 컴퓨팅 파워와 자원을 사용하는 작업 증명 시스템에 기반한다.
그런데 이 작업증명(Proof of Work)은 많은 컴퓨팅파워를 필요로 한다.
이에 대한 대안으로 권한 증명(Proof of Authority, PoA)과 지분증명(Proof-of-Stake,PoS) 등이 활용되기도 한다.
이는 다음 시간에 알아보기로 한다.
오늘 얘기를 정리한다.
비트코인은
블록을 변경하려면 해당 블록 이후의 모든 블록을 수정해야 한다.
가장 긴 블록에 블록생성의 결정권을 준다. 고로 가장 긴 체인이 옳다는 규칙이 생긴다.
이 두 매커니즘으로 변경이 되지않는 보안의 절대성을 확보한다.
'알기쉬운 블록체인' 카테고리의 다른 글
블록체인 - 권한증명 PoA (Proof of Authority) (0) | 2018.10.25 |
---|---|
블록체인 - 지분증명 PoS (Proof of Stake) (0) | 2018.10.24 |
비트코인 - 이중지불 (Double-spending) (0) | 2018.10.19 |
비트코인 - P2P방식 (0) | 2018.10.18 |
비트코인과 블록체인 (0) | 2018.10.18 |