본문 바로가기

비트코인가이드

비트코인 Q&A: 비트코인 마이닝이 작동하는 방식은?



기존 화폐 시스템에서는 정부가 돈이 필요하면 단순히 돈을 더 찍어내면 된다. 하지만 비트코인에서는 돈을 찍어내는 것이 아니라 발굴한다. 전 세계에 있는 컴퓨터가 각자 경쟁하면서 비트코인을 ‘캐낸다.’


마이닝mining은 어떤 식으로 일어나는가?


사람들은 항상 비트코인 네트워크로 서로에게 비트코인을 보내지만 누군가 이 거래 기록을 보관하지 않으면 아무도 누가 어떻게 지불했는지 기록을 찾을 수 없게 된다. 비트코인 네트워크는 정해진 기간 동안 블록이라는 목록에 모든 거래를 모아두는 것으로 이 문제를 해결한다. 이 거래를 확인하고 장부에 기록하는 것이 마이너가 하는 일이다. 


해시 만들기



이 장부는 긴 블록 목록으로, 블록체인이라고 한다. 네트워크상에서 비트코인 계좌 간에 이루어진 거래는 언제라도 모두 살펴볼 수 있다. 거래 블록이 새로 만들어질 때마다 비트코인 네트워크에서 일어나는 모든 거래를 기록하기 위해 긴 목록이 만들어지고 블록체인에 추가되며 지속적으로 업데이트된 블록체인이 모든 참여자에게 전송되면 어떤 거래가 있었는지 누구나 알 수 있게 된다.


하지만 장부는 믿을 수 있어야 하는데, 모두 디지털로 저장된다. 어떻게 블록체인이 조작되지 않은 그대로라고 믿을 수 있을까? 이때 마이너가 개입한다.


거래 블록이 만들어지면 마이너가 그것을 처리한다. 블록에서 정보를 꺼내고 수식에 적용해 뭔가 다른 것으로 바꾸는데, 이때 바뀐 뭔가 다른 것이 바로 해시라고 알려진 문자와 숫자의 무작위 조합이다. 이 해시는 그때 블록체인 끝에 블록과 같이 저장된다.


해시는 재미있는 특성이 있는데, 데이터 더미에서 해시를 만들어내는 것은 쉽지만 해시만 봐서 원래 데이터가 무엇인지 알아내기란 사실상 불가능하다는 것이다. 아주 많은 데이터에서 해시를 만드는 것도 아주 쉽지만 각 해시가 모두 다르다는 특성도 있다. 비트코인 블록에서 조그만 것 하나만 바뀌어도 해시가 완전히 달라진다.


마이너는 해시를 만들기 위해 블록에 있는 거래만 사용하는 것이 아니다. 다른 데이터도 사용하는데, 이 데이터 중 하나가 바로 블록체인에 저장된 이전 블록의 해시다.


각 블록의 해시는 그 전 블록의 해시를 이용해 만들어지기 때문에 마치 디지털 봉인을 하는 것과 같다. 현재 블록과 이후 모든 블록이 적법하다고 확인한다고 볼 수 있으며 블록에 손상이 있으면 모두가 알게 된다.


이미 블록체인에 저장된 블록을 바꿔 거래를 조작하려고 하면 해시가 달라져 버린다. 누군가 블록의 진위를 확인하려고 해시 함수를 적용하면 이미 블록체인에 있는 그 블록과 같이 저장된 해시와 다르다는 것을 발견해 블록이 조작됐다고 바로 들통 나게 된다.


다음 블록의 해시를 만드는데 각 블록의 해시가 사용되기 때문에 블록을 조작하려고 하면 다음 블록의 해시도 어긋난다. 이렇게 계속 체인이 이어지다보면 시스템 전체가 잘못될 것이다. 


비트코인 채굴 경쟁



이것이 바로 마이너가 블록을 ‘봉인’하는 방법이다. 마이너는 모두 블록을 캐내려고 고안된 소프트웨어를 사용해 이 봉인을 하려고 서로 경쟁한다. 누군가 해시를 성공적으로 만들어낼 때마다 그 보상으로 25비트코인을 받으면 블록체인이 업데이트돼 네트워크에 있는 모두가 그 사실을 알게 된다. 이런 과정 덕분에 마이닝이 유지되고 거래가 처리된다.


문제는 데이터 집합에서 해시를 만드는 것이 매우 쉽다는 점이다. 컴퓨터를 이용하면 쉽게 할 수 있다. 그래서 비트코인 네트워크는 이 과정을 조금 더 어렵게 만들어야 한다. 그렇지 않으면 순식간에 거래 블록 수백 개의 해시를 만들고 얼마 지나지 않아 비트코인이 모두 채굴돼 버릴 것이다. 비트코인 프로토콜이 ‘작업 증명proof of work’을 통해 이 작업을 조금 더 어렵게 만든다.


예전 해시라고 비트코인 프로토콜이 무조건 승인하는 것은 아니다. 특정한 방식으로 블록 해시를 확인하는데, 처음에 나오는 제로 개수가 일정해야 한다. 만들기 전까지 해시가 어떤 모습일지 알 도리가 없고 새로운 데이터 조각을 더하면 해시가 완전히 달라진다. 


마이너는 블록에 있는 거래 데이터에 관여하면 안 되지만 다른 해시를 만들기 위해 사용하는 데이터를 바꿔야 하며 ‘nonce’라는 무작위 데이터도 이용한다. 이 nonce는 해시를 만들 때 거래 데이터와 같이 사용된다. 해시가 포맷 기준에 맞지 않으면 nonce가 바뀌고 전체가 다시 해시된다. 맞는 nonce를 찾으려면 시도를 많이 해봐야 하는데, 네트워크에 있는 마이너들이 동시에 이것을 찾으려고 노력한다. 이것이 바로 마이너가 비트코인을 얻는 방법이다. 


How Bitcoin Mining Works

http://www.coindesk.com/information/how-bitcoin-mining-works/



반응형