오늘은 마이닝 즉 채굴에 관하여 이야기를 해보겠다.
현재는 코인의 시세가 많이 하락하여 채산성이 나오지 않을 뿐더러 채굴에 대한 관심과 채굴하려는 사람이 많이 감소한것은 사실이다. 10만원 선이 붕괴되며 대부분의 사람들이 채굴을 포기하게 되었다.
하지만 이럼에도 이 주제를 선택한 이유는 현재 블록체인 에서 채굴이라는 주제를 가지고 이야기를 하려는 이유는 블록체인을 이해하고 하기 위해서는 채굴이라 불리는 원리 자체를 이해하는 것이 중요하다고 생각한다.
Mining ?
Mining이란 사전적 의미로는 채굴, 채광 사업을 말한다. 채광이란 광산에서 광석을 캐는것을 의미하는데 금광석에 극미량으로 포함된 금을 여러 단계를 거쳐 추출하듯 표현하자면 블록체인 광산에서 복잡한 연산과정을 거쳐 거래 내역을 검증하고 그 거래 내역을 검증하고 그 대가로 코인을 지급 받는 형식을 의미한다.
사용자들은 서버(개인 컴퓨터)를 통해 코인을 얻기 위해 경쟁하면서 수학 문제를 풀어야한다.
코인에도 인플레이션을 방지하기 시간이 지나면 지날수록 암호의 난이도는 해시값과 비례하여 높아지기도 하고 낮아지기도 하며 발행량은 한정되어있어 점차 줄어든다.
거래소에서 거래되고 있는 코인들은 어떻게 생겨난 것일까?
모두 채굴을 통하여 나온 것들이다. 그렇다면 어떠한 방으로 코인의 채굴이 이루어질까?
채굴의 기본원리
채굴의 기본 원리를 알려면 해시 알고리즘에 대해 설명을 해야 한다, 해시 알고리즘은 암호화 기술의 한 종류이며 특정 분장을 알아보지 못하도록 변형해 주는 기술이다.
예를 들어 'MBL' 이라는 단어를 해시 알고리즘에 넣게 되면 '69F0BA165B '라는 문장이 나오게 된다. 뒤의 '69F0BA165B '이 문장을 만드는 과정을 해시 알고리즘이라 하고 문장의 값을 해시값이라고 표현한다.
해시알고리즘을 암호학 기술이라 하는 이유는 단 한 가지 이다. 'MBL'을 해시알고리즘에 넣은 값이 '69F0BA165B '라고 한다면 'M B L'의 해시 값은 '48ADE1F88E07F '로 나타나게 되는데 같은 글자이지만 약간의 변화에도 완전하게 다른 값을 표현하는데 이러한 변화를 눈사태 효과라고 한다.
일반적으로 해시함수는 공개 표준 함수 중 SHA-256라는 함수를 사용하고 있으며, 이는 256bit중 앞의 40자리를 0으로 채우고, 나머지 216자리를 조정하도록 되어 있다. 즉, 어떤 숫자나 텍스트를 입력하면, SHA-256 해시함수는 항상 256bit로 이루어진 2진수 값을 출력한다.
비트 코인의 경우, 공식 홈페이지에서 일정한 텍스트를 네트워크 내 사용자에게 보내고 이 텍스트의 해시 함수 실행 결과가 특정하게 공식적으로 정해져 있는 값보다 작으면, 블록을 생성하는데, 이러한 답을 독점할 수 없도록, 매번 입력하는 텍스트 앞에 임의의 텍스트를 추가하도록 장치를 했는데 이를 Nonce라고 한다.
위에 그림과 같이 간단하게 표현하자면 표준해시함수인 SHA-256은 전체의 퍼즐모양의 형태를 의미하며 블록 91에는 블록 90의 해시값을 포함하고 앞의 90번 블록과 연결하기 위해서는 91번 블록에 Nonce값을 찾아야 연결이 가능 하다. 즉, 네트워크 내 여러 사람들이 가능한 Nonce값을 대입하며, 실제로 해시 값 앞 부분 40bit가 0이되는 Nonce를 발견하면 블록 91은 앞에 블록90에 연결된다. 이러한 기본적 원리를 알아야 블록이 생성되고 진행되는 과정을 알 수 있다.
그렇다면 블록해란?
간단하게 말한다면 위 표의 내용을 담고 있는 해시 값인데 아래에서 부터 설명하자 개별 사용자들의 입금 내역을 해시 알고리즘에 넣게 되면 각각의 해시값이 나오게되고 이러한 여러개의 해시값을 머클트리라고 하는 알고리즘에 넣게 되면 머클트리 해시값이 나오는데. 여기에서 머클트리란 나무를 보게 되면 무수한 뿌리에서 한 기둥으로 합쳐지는 것을 볼 수 있는데 뿌리 부분의 해당하는 것이 개인의 거래 내역 즉, “A에게 B로 100만원 송금” 이라는 여러 개의 거래 내역이 하나의 문장으로 “A와 B는 거래 중이다” 라고 바꿔 말할 수 있다. 하지만, “A와 B는 거래 중이다” 라는 말 속에는 각각 개인의 무수한 정보가 담겨있는데 이를 한 문장 즉, 해시 값으로 바꾸는 것이 머클트리라 한다.
블록 헤더라는 곳에는 여러 정보가 담게 되고 최종적으로 해시 알고리즘에 넣게 되면 모든 정보가 담긴 해시 값이나온다. 이러한 블록에 해시 값에 대한 올바른 정답을 찾게 되면 이에 대한 보상으로 Coin을 지급하게 되며 다시 새로운 블록이 탄생한다.
최신 블록정보는 https://blockchain.info 에서 확인 가능하다.
그렇다면 이러한 코인을 많이 얻기 위해서는 어떻게 해야 할까? (hash/s)
Hash/s는 초당 해시 알고리즘 반복 수를 이야기하는데 이를 쉽게 설명하면
주머니 안에서 1~1000까지의 숫자가 적힌 공이 있다. 눈을 감고 공 하나를 꺼내 번호를 확인하는데 이때에 꺼낸 공의 숫자가 50보다 크면 다시 넣고 작으면 '빙고!' 즉 코인을 얻는다
이러한 공을 꺼내는 작업은 많이 반복하면 할 수록 확률이 늘어난다. 이러한 작업은 빠르게 하면 할 수록 확률은 비약적으로 상승한다. 즉 Hash/s를 높이면 코인을 더욱 많이 얻을 수 있다.
whattomine라는 사이트에서 확인이 가능하다.
여기 까지 블록 생성, 그리고 코인을 얻어가는 과정 그리고 hash/s에 관하여 설명해보았다. 어려운 내용도 많고 특히 용어가 어려워 보면서도 어려울 것이다. 읽으면서 이해가 안되는 부분이나 틀린 내용이 있다면 댓글 남겨주기 바란다.
다음 글은 채굴의 방식인 POW와 POS에 관하여 설명을 진행하겠다.