How does Bitcoin Mining Work?

Leo Bang·2021년 8월 21일
0

De-Fi Roadmap

목록 보기
2/3
post-thumbnail

본 시리즈는 githubDeFi Developer Roadmap Repo의 로드맵을 참고함

본 포스트는 InvestopediaHow does Bitcoin Mining Work? 을 토대로 작성했습니다. 완벽히 직역한 것은 아니고 작성자 입맛에 따라 어느정도 가감 및 수정은 있지만 기본적인 기조는 원 글을 따라감을 밝힙니다.


채굴 메커니즘이 궁금하다면 The "Explain It Like I'm Five" version 부터 읽어도 좋다.


KEY TAKEAWAYS

  • Bitcoin miner들은 기존의 blockchain에 검증된 transaction들이 담긴 새 block을 추가하는 것에 대한 보상으로 Bitcoin을 얻게 된다.

  • 채굴 보상은 복잡한 hashing puzzle을 처음으로 풀어낸 miner에게 돌아가며, 채굴자가 보상을 얻을 확률은 해당 network의 mining power에 얼마를 점유하고 있는지에 따라 달라진다. (solution을 얻고 보상을 얻어갈 확률)

  • 채굴 작업을 위해서는 GPU (Graphic Processing Unit)이나, ASIC (Application Specific Integrated Circuit)이 필요하다.


A New Gold Rush

채굴을 통해 획득하는 Bitcoin 보상은 채굴자들이 더욱 열심히 채굴에 임할 동기를 부여한다. 그렇다면 Bitcoin은 채굴 작업에 왜 보상을 제공할까?

Blockchain 메커니즘을 모른다면 어리둥절 하겠지만, 채굴하는 과정 자체가 해당 네트워크가 제대로 돌아가게 도와주기 때문이다. 쉽게 비유하자면 채굴자들은 제조공장에서 불량품들을 색출한 후, 정상적인 상품만을 모아 포장해내는 공정 노동자의 역할을 수행한다고 생각하면 된다.

채굴자들은 채굴하는 과정에서 Bitcoin transaction이 정당한지 검증하고 새로운 블록에 담아 기존의 blockchain과 연결한다. 후술 하겠지만 이 채굴 과정에 드는 computing power가 무지막지하기 때문에 bitcoin protocol은 채굴자들이 본 chain에 건강하고 정당한 정보만을 담아준 것에 대한 보상으로 Bitcoin을 지급하는 것이다.


How to Mine Bitcoins

채굴자들은 Bitcoin transaction이 정당한지 검증하며, auditor로 일한 대가를 받게 된다. 이렇게 transaction들을 검증하면서, 채굴자들은 double-spending 문제를 예방하게된다.

Double spending 이란 Bitcoin 보유자가 악의적으로 동일한 bitcoin을 두 번 transaction에 태우는 시나리오를 말한다. 이에 대해서는 개별 문서로 따로 다루도록 하겠다.

채굴자들은 1MB의 Bitcoin transaction, 즉 1개의 block을 verify하면 보상을 받게 된다. 이 1MB 제한은 Bitcoin의 창시자 Satoshi Nakamoto에 의해 정의되었는데, block size가 너무 작아 충분한 transaction을 담을 수 없다 vs transaction을 더욱 빨리 verify할 수 있다 에 대해 여전히 논쟁이 분분하다.

아무튼, 1MB worth of transaction이 채굴자가 bitcoin을 보상으로 받아갈 수 있게 되는 1개 블록의 단위라는 것만을 알아두자.

1MB의 transaction은 이론상으로 1개의 transaction이 될 수도 있고, 수천개의 transaction으로 이루어져있을 수도 있다. 각 transaction이 얼마만큼의 data를 포함하는지에 따라 달라진다.


"그럼 내가 transaction을 verify하느라 ㅈㄴ게 고생해도 보상을 못받을 수 있다 이말임?"

Yes. bitcoin을 얻기 위해서는 노력과 운, 둘 다 맞아 떨어져야 한다.

  • 채굴자는 ~ 1MB의 transaction을 verify해야한다. 이건 노력의 영역이다.
  • 채굴자는 최초로 정답, 혹은 가장 근접한 값이라도 얻어야한다. 이 process를 POW, proof of work(작업증명) 이라고 한다. 이 부분이 바로 운의 영역이다.


수학 문제에 대한 정답은 뭔말임?

굿뉴스: 고등 혹은 대학 수학 문제를 직접 계산하는 일이 아니라는 것이다. 채굴자는 단지 target hash와 같거나 작은 16진법의 64자리 숫자를 가장 먼저 찾아내는 노가다를 하는 것 뿐이다.

밷뉴스: 정말 단순 노가다라는 점. 사람이 진행할 만한 수준은 절대 아니고 첨단의 computing power를 동원해도 어려운 노가다라는 점이다. 채굴을 성공적으로 하려면 채굴자는 엄청나게 높은 "hash rate"가 필요하다.


Mining and Bitcoin Circulation

채굴자에 대한 동기부여와 Bitcoin 생태계의 유지 외에도 mining은 또 한가지 중요한 역할을 한다. 바로 새로운 cryptocurrency를 발행하는 유일한 방법이라는 것이다.

토큰을 "minting"한다는 이야기를 들어보았을 것이다. "Minting"의 사전적 정의는 "주조"로, 원래 화폐를 찍어내서 시장에 유통할 때 이용하는 용어이다. 암호화폐의 경우 POW의 대가로 채굴자에게 보상을 지급하는 것이 새로이 코인을 발행하는 유일한 방법이다 보니, 채굴작업을 "minting" 이라고도 흔히 쓴다.

Satoshi Nakamoto가 genesis block을 생성하면서 처음으로 보상으로 얻은 bitcoin을 제외하고는, 암호화폐 시장에 유통되는 모든 bitcoin들은 채굴자들 덕분에 세상에 나오게 된 것이다. (엄밀히 말하자면 사토시 역시 채굴자 중 하나지만)

채굴되는, 즉 Block을 생성하는 대가로 지급하는 bitcoin이 갈수록 줄어들면서 2140년에는 더 이상 새로운 bitcoin이 시장에 유통되지 않을 예정이다. 물론 보상이 없어지니 채굴에 대한 수요는 현저히 떨어지겠지만 이 것이 채굴 작업이 완전히 멈출 것이라는 이야기는 아니다.

Bitcoin protocol에 따라 정식으로 지급하는 bitcoin 보상 (새로 유통되는)이 없어질 뿐, transaction을 보낼 때 동봉하는 transaction fee는 여전히 채굴자의 몫이기 때문이다.


How much a Miner Earns

Bitcoin의 채굴 보상은 매 4년마다 반으로 줄어든다. Bitcoin이 2009년 처음 채굴되었을 때는 블록 하나당 50 BTC를 얻었다.

2012년에는 블록 당 25 BTC, 16년에는 12.5BTC, 그리고 20년 5월 11일에는 블록당 6.25 BTC로 보상이 줄어들었다.


What Do I Need to Mine Bitcoins?

블록체인이 원활하게 돌아가기 위해 Bitcoin 네트워크는 1개의 블록이 10분 주기로 생성되게끔 유도한다. 문제의 난이도를 조절하는 방식으로 블록의 생성주기를 유도하는데, 난이도 조절은 매 2,016개의 블록마다, 어림잡아 2주 정도마다 시행된다.

Bitcoin이 처음 나왔을 때 문제의 난이도는 1이었다. 갈수록 채굴자가 늘어나고, computing power가 강력한 제품들이 등장함에 따라 19년 10월 기준 Bitcoin의 난이도는 13조에 달한다.

그말인 즉슨, Bitcoin을 채굴해보겠다 도전하려면 상당히 고사양의 GPU나 ASIC을 갖추거나 높은 hash power를 지닌 mining pool에 참여해야한다는 말이다.


The "Explain It Like I'm Five" version

1에서 100까지의 숫자를 맞추는 업다운 게임을 한다고 해보자. 대신, 매 도전마다 업다운을 알려주지는 않으며, 목표값을 아예 맞추거나 그보다 작은 값을 제시했을 때도 우승할 수 있는 그런 게임이라고 상정해보자. 참여자는 A, B, C이며 진행자는 답을 19로 정해두었다.

A가 21을 답으로 던진다. 목표값인 19보다 높기 때문에 오답이다.

이번에는 B는 14를, C는 16을 답으로 동시에 제출한다. 둘 다 19보다는 작은 값이기 때문에 정답이다. 그런데 위에서도 설명했듯이 이 게임에는 단 한명의 우승자만 존재한다. 그렇다면 B와 C 둘 중 누구를 우승자로 낙점해야할까?

목표값에 보다 가까운 값을 제시한 C가 우승자가 될 것이 합리적인 추론일 수 있지만, Bitcoin의 보상체계는 그렇지 않다. 동시에 정답에 도달한 miner가 둘 이상일 경우, BItcoin은 어떤 채굴자가 Bitcoin 네트워크에 더 많이 기여했는지에 따라 보상을 전달한다.

다시 말해서, 더 많은 transaction을 소화해서 Bitcoin의 블록들이 건강한 상태를 유지할 수 있게한 채굴자에게 보상을 돌린다는 말이다. 목표값에 도달해서 블록을 형성했지만 POW의 논리에 의해 선택받지 못한 블록은 Orphan block이라 불리고, 선택받지 못한 채굴자 역시 보상을 받지 못한다.


What Is a "64-Digit Hexadecimal Number"?

ELI5의 설명에는 1부터 100까지의 수를 맞추는 것으로 예시를 들었지만 실제로 Bitcoin의 hash problem은 64-Digit Hexadecimal Number의 가능성을 모두 고려해야한다.

0000000000000000057fcc708cf0130d95e27c5819203e9f967ac56e4df598ee

이게 16진법의 64자리수이다. 말그대로 16진법으로 작성한 64자리의 수를 말한다. 알파벳이 보이는 이유는 16진법을 채택했기 때문이다. 쉽게 말해 포커 카드의 KQJ가 각각 13, 12, 11의 값을 상징하는 것과 같다고 보면 된다.

채굴자는 64자리의 수를 모두 계산해낼 필요는 없다.


"64-digit hexadecimal numbers"는 Bitcoin mining이랑 뭔 상관인데?

바로 위에서 1부터 100까지의 수 중 목표값으로 내정한 숫자를 Bitcoin 채굴 프로토콜에서는 target hash라고 불린다.

채굴자들이 비싼 컴퓨터랑 수백대의 쿨러를 밤낮내내 돌려서 구하고자 하는 값이 바로 target hash이다. 채굴자는 nonce 값을 무작위로 가능한 한 많이 생성해내서 target hash에 대한 추측을 던지는 것이다.

Bitcoin 채굴에서 nonce는 32 bits 사이즈이다 - 256bit인 target hash에 비하면 훨씬 작다. target hash 보다 작은 값을 생성하는 nonce 값을 찾아낸 최초의 채굴자가 보상을 얻게 된다.

현실로 치자면, 16면체의 주사위를 64번 돌려서 target hash보다 작은 수를 나오게 하는일과 동일하다.

아래 Block #490163 에 대한 스크린 샷에서 블록이 어떻게 생성되는지 확인할 수 있다. "winning hash" 를 도출해낸 nonce 값은 731511405 이고, 해당 block의 target hash도 확인할 수 있다. "Relayed By" 인덱스를 보면 Antpool이 적혀있는데, Antpool은 해시 파워가 높은 mining pool 중 하나이다. (mining pool에 대해서는 밑에서 더 다룸)

또한 해당 블록은 1768개의 transaction을 verify해서 담고있으며, 이에 담긴 transaction fee, main chain으로부터의 길이인 height, 문제의 난이도, transcaction의 사이즈 (아까 1MB여야 한다 했지? 보면 999.263kB로 매우 근사하다.) 등등 모든 정보를 확인할 수 있다. 시간내서 다른 블록도 찾아보자.


그래서 target hash를 어떻게 도출해내냐고.

위에서 target hash와 같거나, 작은 값을 도출해내는 nonce 를 찾아야 reward를 받을 수 있다고 했다. 그럼 상식적으로 Bitcoin측에서 target hash를 높게 잡아둘 일은 없겠지? 개나소나 쉽게 nonce 값을 찾아버릴테니 말이다.

따라서 Bitcoin Protocol은 target hash의 최소값은 정해두지 않았지만, 최대값은 정해두었다. 어떠한 target hash도 다음 64자리수 보다 큰 값으로 내정될 수 없다.

00000000ffff0000000000000000000000000000000000000000000000000000

10진법 이외의 수에 익숙하다면 바로 알겠지만, 저게 최대 target hash이니 만약 가장 확률이 높은 위의 문제를 맞춘다 치더라도 최소한 앞자리 8자리는 모두 0으로 시작하는 값을 도출해야 reward를 얻을 수 있다.

확률은 계산 안해봤는데 암튼 16진법으로 이루어진 64자리수의 모든 경우의 수를 분모로, 위의 수보다 작은게 몇 개 있는지를 분자로 계산하면 나올 것이다. hash function은 무작위로 값을 뱉어내니 확률은 극악이다.

다음은 이해를 돕기 위해 random한 hash값과 target hash를 비교하며 어떤 것이 정답으로 통과 될 수 있는지 보여주는 그림이다.


What Are Coin Mining Pools?

누누히 말했지만, 채굴의 보상은 target hash를 충족하여 블록을 생성해낸 단 하나의 채굴자에게 돌아간다.

A, B, C 세명이 동일한 hash power를 가지고 채굴에 참여한다고 가정하자. 채굴의 보상은 1 BTC이며, 각 채굴자는 매 블록마다 33.3%의 확률로 1BTC를 가져간다.

그런데, 어느 날 C가 용산에서 최신 그래픽 카드를 사와서 C의 hash power가 A와 B에 비해 높아졌다고 하자. 이제 A B C가 블록을 채굴할 확률은 각 25%, 25%, 50%다. A와 B는 눈을 감았다 뜨니까 채굴 확률이 10% 정도 떨어진 셈이다.

A와 B는 새 그래픽 카드를 구매할 여력이 없었기에 다른 전략을 세운다. 둘이 서로 손을 잡고, 연산작업을 같이 한 후에 둘 중 하나라도 채굴에 성공할 경우 서로 공평하게 나눠갖기로.

이전에는 25%의 확률로 1BTC를 획득할 수 있었다면, 이제는 50%의 확률로 0.5BTC를 획득할 수 있게 되었다. 물론 기대값은 동일하지만, A와 B는 그래도 보상을 얻을 수 있는 확률이 두 배로 늘었다. 한번에 들어오는 보상은 적어도, 정기적으로 보상을 얻을 수 있는 것이다.

이처럼 Mining Pool은 둘 이상의 개인이 모여 채굴 확률을 높이고, 그 보상을 나눠갖는 시스템을 형성하는 것을 말한다. target hash 쪽에서 언급한 AntPool이 mining pool 중 하나이다. Mining pool은 채굴자들과 third-party로 이루어져 있으며 채굴 보상을 획득하면 모든 참가자들에게 기여한 만큼의 보상을 분배한다.

위의 예는 3명이기 때문에 그냥 도박수를 노리는게 좋을 수도 있겠지만, 현실의 채굴자 수와 이미 자리잡은 채굴장의 hash power를 감안하면 pool에 참여하는 것이 더 현명할지도 모른다. 참고로 $1,000 달러를 들여서 살 수 있는 그래픽카드로는 0.001%의 mining power도 얻지 못한다. 9999번 개삽질을 해야 1번 보상을 얻을까말까 한 것이다.




References

profile
me, myself and code

0개의 댓글