지능이라는 이름의 게임(16): 집단지능과 블록체인(8)

blockchain mining에 대한 이미지 검색결과

블록체인에서 신뢰가 창출되는 가장 중요한 과정은 채굴(mining)이다. 비트코인의 경우 채굴은 세 단계로 이루어져 있다.

1) 채굴자들(miners)은 검증이 필요한 블록(거래 내역이 기록된 원장)에 대해 주어진 조건에 맞는 해시값을 경쟁적으로 찾기 시작한다. 비트코인의 경우 10분마다 새로운 블럭이 생성되기 때문에 10분 이내에 채굴해야 한다. 해시값을 찾는데 성공[그것은 논스(nonce)라는 숫자로 인정된다]한 채굴자는 즉시 모든 노드(참여자)들에게 그 결과를 알린다.

2) 다른 노드(참여자)들은 그 결과의 유효성을 확인하고 문제가 없다고 판단되면 그 블록을 블록체인에 추가한다. 그리고 검증이 끝난 블록에 대해 추가로 검증 결과가 날아오더라도 무시한다. 전체 참여자들의 51% 이상이 그렇게 하면 합의(consensus)가 성립된 것으로 간주된다.

3) 채굴의 성공이 인정된[그것이 작업증명(Proof of Work, PoW)이다] 채굴자는 수고에 대한 인센티브를 받는다. 그리고  채굴자들은 새로운 블록에 대한 검증 경쟁에 들어간다.

블록체인의 합의 알고리즘에는 작업증명(PoW) 외에도 PoS(Proof of Stake), Delegated Proof of Stake(DPoW), Practical Byzantine Fault Tolerance(PBFT) 등이 있으나 소개를 생략한다(이 알고리즘들에 대한 간략한 비교 설명은 Consensus in Blockchain Systems. In Sort. 라는 블로그 포스팅을 참조하시오).

은행 거래에서는 거래내역이 기록된 장부(원장)가 생명이다.  각 고객이 저금한 액수, 인출한 액수, 이체 내력, 잔고, 대출 현황 등이 정확히 기재되어야 한다. 거기에 조금이라도 착오가 있으면 사고이다. 은행에서는 은행원들이 원장을 기재하고 관리하는 업무를 수행한다.

블록체인에서는 채굴자가 바로 은행원이 하는 역할을 대신한다. 그러나 두 가지 점에서 채굴자는 은행원과 다르다.

하나는, 은행에서는 은행원이 소정의 절차를 거쳐서 채용되고 기장에 있어 배타적 권한을 행사하지만, 블록체인(public blockchain의 경우)에서는 채굴 장비(컴퓨터 설비)만 갖출 수 있으면 누구나 채굴자(miner)가 될 수 있다.

bitcoin mining에 대한 이미지 검색결과

다른 하나는, 은행원은 은행 업무를 수행하면 월급을 받는 것으로 끝나지만 블록체인의 채굴자는 블록(원장)을 검증하면 소정량의 암호화폐를 인센티브로 지급받는다. 비트코인(Bitcoin)의 경우 현재 비트코인 12.5개를 받는다. 그런데 그러한 인센티브 지급은 곧 암호화폐의 발행이기도 하다. 채굴에서 난이도는 비트코인의 발행량을 조정하는 역할을 한다. 비트코인이 너무 많이 발행되면 인플레이션이 발생할 것이다.

국가에서는 중앙은행이 정책적인 결정에 따라 화폐를 발행하지만 암호화폐 시스템에서는 채굴행위를 통해서 암호화폐가 발행된다. 결국 채굴자가 암호화폐 발행자인 셈이다. 채굴이라는 메타포(metaphor)가 사용된 이유도 아마 그 때문일 것이다. 광산에서 금을 채굴하듯이 암호화폐를 채굴(곧 발행)한다는 것이다.

이해를 돕기 위해 모의 블록을 가지고 시뮬레이션을 하면서 채굴 과정을 살펴보자. 아래 그림을 클릭하면 MIT의 블록체인 사이트로 이동하고 블록이 나타날 것이다.

그 블록에는  다섯 가지 요소가 있다. 맨 위에 Block이라고 해서 블록의 번호가 쓰여있고, 그 다음 줄에는 Nonce라는 칸에 72608이라는 숫자가 쓰여 있다. 그 다음은 Data 칸인데 비어 있다. 그리고 그 아래에 Hash 칸이 있고 복잡한 숫자와 문자의 배열이 적혀 있다. 그런데 그 숫자를 보면 앞의 네 자리가 모두 0이다. 그 0들은 채굴의 조건(혹은 난이도)을 나타낸다. 그 조건을 충족하는 해시를 발생하는 논스(Nonce)를 찾는 것이 채굴이다. 모의 실험이기 때문에 0이 네 자리 뿐이지 실제로 비트코인에서는 앞 18자리가 0이다. 논스를 찾아내기가 훨씬 어려운 것이다. Hash 칸 아래에는 Mine이라는 네모 단추가 있다.

Data 칸에 윤영민 $20 이라고 적어 보라. 배경의 연초록색이 핑크빛으로 바뀌고, Hash가 0이 없는 다른 값으로 바뀔 것이다. 논스와 해시가 불일치한 상태가 되었다. 이제 논스의 숫자를 1부터 차례로 넣으면서 해시의 변화를 살펴보라. 아마도 12를 넣으면 해시의 첫 자리가 0이 되었을 것이다. 그렇게 앞 자리 네 개가 0이 되는 논스를 찾아야 한다. 필자는 해보지 않았지만 그런 방식으로는 하루가 걸릴 지도 모른다. 그것은 사람이 할 일이 못된다. Mine 단추를 눌러서 컴퓨터가 그 과정을 수행하게 하자. 아마도 1초 정도면 논스가 15607로 되고, 해시는 0000으로 시작되는 값이 되며, 박스의 배경색은 다시 연초록색으로 돌아갔을 것이다. 블록에 대한 채굴이 끝난 것이다.

블록체인은 참여자들 개개인의 신뢰성을 따지지 않는다. 참여자들이 선한 사람이든 투자자든, 아니면 사기꾼이든 조폭이든 괘념치 않는다. 그들이 설령 속임수를 쓰고 나쁜 짓을 하려고 해도 채굴과 같은 기술적인 방법으로 그들의 ‘도전’을 압도해서 시스템에 대한 신뢰를 창출하고 유지할 뿐이다. (윤영민, 2018-05-14)

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다