블록체인 핵심기술 - 3. 채굴(Mining, 마이닝)

    블록체인에서 가장 이해가 안될수도 있는 채굴에 대해서 강의를 해보도록 하겠습니다. 채굴은 퍼블릭 블록체인에서 상당히 중요한 개념이며, 보상과 사용자에게 참여를 유도시키는 핵심기술중 하나입니다.


    다들, 채굴이 뭔지는 대충은 알고 있을 겁니다. 비트코인을 예로 들면, 문제를 맞춘 정답자에게 비트코인을 주게 되는 것이고, 퀀텀은 소유한 양에 맞춰서 이자를 주게 되는 방식이 있습니다. 그리고 최근에 가장 핫한 코인인 이오스같은 경우는 간접 민주주의 방식으로 모든 사용자에게 동등한 권리를 주지 않고, 대표자들에게 채굴의 권한을 준 후 나눠주는 방식이 있습니다.


    이러한 채굴에 대해서, 하나둘 모두 비교를 하고 싶으나 내용이 워낙 방대할 수 있어서 여기에는 일반적인 비트코인에서 사용되는 채굴 방식을 사례로 포스팅을 해보려고 합니다.




    채굴의 의미


    블록체인에서 채굴을 한다고 할 때, 사실 의미를 2가지로 해석을 할 수 있습니다. 하나는 코인을 캐내어서 얻는다는 대표적인 사전적 의미인 채굴 또 하나는 의미있는 값을 찾아낸다라는 뜻의 마이닝이라는 의미가 있습니다.

    전자는 일반적인 사전적인 용어이고, 후자는 데이터 마이닝, 데이터 분석쪽에서 쓰이는 용어입니다.


    블록체인 저자에 따라, 전자 혹은 후자로 해석을 하는 경우가 있습니다만, 둘다 맞기 때문에 굳이 나눌 필요 없이 보상 즉 리워드와 올바른 답을 찾아내는 과정의 마이닝 둘다 있다로 해석을 하시는게 편하실 겁니다.



    채굴이 왜 필요한가?


    바로, 이전 포스팅에서는 해시(Hash, 해쉬)에 대해서 설명을 했었습니다. 어떠한 문장이 와도, 일정한 길이의 난수값으로 리턴이 되는 것 정도로 해석할 수 있는 해시값이 바로 채굴에서 상당히 중요한 기술입니다. 참고로 여기서 설명하는 채굴은 비트코인에서 사용하는 POW(Proof-of-work)라는, 작업증명방식 채굴만을 설명하고 있습니다.



    비트코인은 탈중앙화 방식입니다. 탈중앙화 방식은 개개인의 컴퓨터 즉 노드가 거미줄처럼 엮여 있는 것이고, 서로간의 감시를 통해서 장부를 기록을 하게 됩니다. 이런걸 퍼블릭 블록체인이라고 하는데, 이때 과연 누가, 자신의 컴퓨터를 전기세를 감안하고 노드를 유지하려 할까요?


    쉽게 생각했을 때, 토렌트의 시드를 계속 유지하는 사람들 중에는 어떤 데이터를 받는 과정이어서 유지를 하거나 정말 공유하는 마음으로 유지를 하는 사람이 있지만, 대다수는 다운이 완료되는 순간 시드를 삭제합니다. 전기세 나가거든요 결국 그 사람들에게 무언가의 보상이 필요합니다. 그것이 바로 채굴로 통한 보상입니다.


    채굴 로직


    채굴은 문제를 가장 빨리 맞춘 사람에게 보상(코인)을 받고, 블록의 생성 권한까지 받게 됩니다. 사람들은 비트코인이라는 코인을 얻기(보상) 위해서, 사람들은 자신의 컴퓨터와 전기세를 기꺼이 헌납을 하고 채굴을 하게 됩니다. 


    노드를 유지하고 채굴을 하면서, 사람들은 장부의 조작을 감시하고 문제를 푸는 작업을 수행하게 됩니다. 아래는 문제의 방식을 쉽게 설명해보기 위해서 그림을 그려봤습니다.



    예시의 그림에서는 비트코인재단에서 앞자리가 "8f"인 해쉬값을 찾으라고 하였습니다. 사용자는 저 문제를 맞추기 위해서 무작위로 문자열을 생성하여 해시함수(Hash Function)에 보냅니다. 이 방식을 무작위공격(Brute force attack, 브루트포스 공격)이라고 합니다.  그림에서는 처음에 "iamaboy"를 해시함수에 넣으니 "8e"로 시작하는 문자열이 나왔습니다.


    정답이 틀렸으니, 문자열을 바꿔봅니다. 그리고 다시 해시함수에 던지며, 정답과 비교합니다. 이것을 계속 변경해보면서, 해시함수에 연산 요청을 하다가 정답과 맞게 되는 순간에 보상으로 코인을 획득하게 되며, 문제를 맞춘 사용자 즉 노드는 블록을 생성할 권한을 받게 됩니다.



    난이도 변경 방법


    초창기 비트코인은 개인의 노트북으로도 충분히 많은 양의 채굴을 할 수 있었습니다. 문제를 푸는 사람도 없었을 뿐더러 문제의 난이도가 매우 쉬웠기 때문입니다. 초창기의 비트코인의 문제처럼 내게 되면, 매우 빠른 시간내에 비트코인은 모두 발행을 하게 될텐데, 이를 방지하기 위해서 다양한 방식으로 난이도를 올리는 방식을 사용합니다. 여기서는 몇몇가지의 난이도를 변경하는 방법에 대해서 설명하겠습니다.


    위 문제에서 8f말고, 앞자리가 100이하인 숫자를 가져오라라는 것이 문제였다면 어땠을까요? 그럼 당연히 000부터 100까지 정답이 나올 수 있게 됩니다. 비트코인재단에서 문제의 난이도를 위해서, 1009값을 추가하면 어떨까요? 



    숫자가 하나만 추가됐는데 난이도는 기하급수적으로 오릅니다. 이렇게 문자열을 조절하는 방식으로도 난이도를 조절을 할 수 있고, 블록의 생성 시간을 강제적으로 조정을 할 수도 있습니다. 그러나 이런식의 값을 늘리게 되면 난이도가 너무 올라가기 때문에 이런식으로도 조절이 가능할 겁니다. "080"이하의 값을 찾아라 100에서 80으로 줄었으니 난이도는 20% 올라가게 됩니다.


    퀴즈를 어렵게 내는 것을 떠나서 블록의 생성주기를 늦게 하여, 보상에 대한 획득수를 조절 할 수도 있습니다. 예를 들어 보상을 5분마다 했었는데, 이 시간을 10분으로 늦춘다면 아무리 문제를 빨리 맞춰도 하루동안 받는 비트코인의 개수는 어쩔수 없이 줄어들게 될것입니다. 비트코인의 가격이 계속 오르는 이유는 바로 이 공급이 점점 줄어들기 때문입니다.


    공급이 꾸준히 유지가 된다면, 수요가 공급을 따라가야 가격이 오르게 되는데 수요가 따라가지 못하면, 당연히 코인의 가격은 내려가게 될 것입니다. 이런 원리이기 때문에 비트코인의 가격은 생각지도 못하게 가격이 오르게 되는 것입니다.(공급이 계속 줄어들기 때문...)


    POW는 재앙이 될수 있다.


    이처럼, 비트코인의 채굴 방식은 POW는 코인의 가격을 올리기(다른 말로 사람들이 매수하기에)에 매우 좋은 방식일 수 있으나, 최근 들어서 이 방식의 문제가 불거지면서 말이 많아지게 됩니다. 왜냐하면, 문제를 맞추기 위해서는 엄청난 수준의 컴퓨팅 파워와 전력이 필요하기 때문입니다. 


    이로 인해서, 연산에 최적화된 GPU의 가격이 한때 없어서 못살 정도로 비쌌던 것도 하나의 현상이었고(게임을 좋아하던 사람들에게 채굴자들은 원수로 보였을 겁니다.) 탈중앙화라는 목표와 다르게 조직적으로 채굴을 위한 채굴장이 생겨나게 되면서, 일반 사람들은 감히 엄두도 낼 수 없을 정도로 되어버렸습니다



    채굴장만 캐는 것도 문제지만 더 큰 문제는 바로 환경입니다아이슬란드 같은 소규모의 국가에서는 비트코인의 채굴에 쓰이는 전력이 가정용 전력을 앞지르는 사태까지 발생하였고, 이런 다양한 전기 재앙으로 전세계 국가들은 채굴세력들을 퇴출시키려고 하고 있고, 이더리움의 비탈릭은 작업증명인 POW에서 지분증명인 POS로 전환하려는 작업을 하는 것도 바로 그 이유입니다.


    채굴은 사람들에게 색다른 즐거움을 주기도 하지만, 잘못 설계되어지거나 악의적으로 누군가가 이용할 경우 문제가 심각할 수 있다는 사실을 알아야 될 것입니다최근에는 POW를 탈피하기 위한 다양한 방식의 채굴 로직이 등장하고 있으며, 이로 인해서 새로 나오는 코인들은 POW 방식이 아닌 새로운 방식으로 알고리즘이 설계된 코인들이 등장하고 있는 것 같습니다.



    동영상 강의


    강의 내용은 블로그와 동일합니다.

    댓글

    Designed by JB FACTORY