코인경제

코린이도 이해할 수 있는 코인 채굴원리와 채굴난이도 조절원리 그리고 해킹이 불가능한 이유(p.s 비트코인을 금에 비유하는 이유)

다사맥가이버 2024. 1. 25. 23:59

블럭체인이란

 Block Chain은 검색만 해도 설명이 자세히 되어 있는데 단순 해석하면 블록의 연결입니다. 그리고 그 연결은 단일한 선으로 처음부터 끝까지 이어져 있어야 합니다. 모든 블록체인 채굴자들은 계속해서 블록을 캐내고 새로 생긴 블록을 체인의 맨 끝에 잇는 작업을 합니다. 만약에 어떤 참여자 두 명이 동시에 블록을 캐낸다 해도 둘 중에 하나의 블록만이 인정됩니다. 이것이 해킹을 불가능에 하는 이유 중 하나입니다. 그 설명은 뒤에 자세히 다루기로 하겠습니다.

<비트코인의 채굴원리와 해킹이 불가능한 이유>

비트코인을 금에 비유하는 이유

 그러면 블록은 어떻게 생기는 걸까요? 블록은 아무나 막 갖다 붙일 수 있는게 아닙니다. 블록을 이어 붙이기는 극도로 어려워야 하죠. 그래야지 블록에 가치가 생깁니다. 마치 금을 캐는 것과 같습니다. 만약 금이 땅바닥에 널려 금을 캐기가 매우 쉬웠다면 어땟을까요? 당연히 금은 거의 가치가 없었겠죠. 그냥 땅에 줍기만 하면 될테니까요. 금이 땅바닥에 널린 시절~ 그런 시절엔 금이 넘쳐나니까 이집트에서는 사람 관을 금으로 만들고 오만가지 물건에 다 금을 사용해서 물건을 만들었을 겁니다. 근데 사실 금을 땅바닥에 줍는 것도 은근히 어렵습니다. 예를 들어 덮힌 나뭇잎도 치워야 하고 돌도 들어 옆으로 옮겨야 하고요. 근데 점점 땅바닥에 널린 금이 바닥나니까 땅을 좀 파줘야 금이 나오기 시작했을 겁니다. 처음엔 한 10cm만 파도 금이 나오다 점점 더 깊이 땅을 파야지 금이 나왔을 거고요. 현대에 가장 깊은 금광이 남아프리카 공화국에 있는데 그 금광은 3km 깊이에 이르게 되었다고 합니다.


 여기서 블록체인의 가치를 결정하는 블록체인 알고리즘도 금처럼 설계할 수 있을까요? 처음에는 채굴하기 좀 쉽다가 점점 갈수록 어려워지는 거죠. 실제로 비트코인의 경우 블록의 채굴은 일부러 점점 어려워지고 보상 코인은 점점 줄어드는 방식으로 설계되어 있습니다. 앞전 글에서 비트코인 반감기에 대해서 설명을 했는데요. 2009년 최초의 블록을 채굴한 것에 대한 보상은 50비트코인이었습니다. 바로 비트코인의 창시자 사토시 나카모토가 채굴한 제네시스 블록이죠. 2012년 11월엔 하나의 블록을 채굴할 때의 보상이 절반이 줄어 25BTC가 되었습니다. 그리고 그 후로도 반감기가 두번 더 있었고 현재는 하나의 블록 채굴에 6.25BTC만을 보상으로 줍니다. 네 번째로 줄어드는 일시는 2024년 4~5월로 예상되고 있습니다. 여기서 보상 비트코인이 어떤 신묘한 원리에 의해 절반씩으로 줄어드는게 아닙니다. 일부러 그렇게 설계를 한거죠. 그리고 심지어 비트코인은 전세계에 비트코인의 총 발행량이 2100만 BTC에 도달했을 때 더 이상 비트코인을 채굴할 수 없도록 설정되어 있습니다. 마치 전 지구의 금 매장량이 정해져 있듯이 말이죠.

채굴의 원리

 채굴 보상 코인 액수뿐 아니라 채굴의 난이도도 컴퓨터 연산 속도 발전에 맞춰서 계속해서 변화시켜줘야 합니다. 컴퓨터 자체의 연산 속도는 시간이 흐름에 따라 기하급수적으로 증가합니다. 만약에 채굴 난이도가 똑같고 컴퓨터 성능이 좋아지면 사람들은 점점 빨리 블록을 채굴하겠죠. 그러면 아무리 보상 코인을 절반씩 줄여도 코인이 더 많이 , 더 빨리 시중에 풀리겠지요. 금은 캐면 캘 수록 땅의 깊이가 깊어져 자연스럽게 채굴 난이도가 증가했습니다. 비트코인도 일부러, 인위적으로 난이도를 조정해 채굴이 더 어려워지도록 설계되었습니다. 비트코인은 전세계의 비트코인 블록체인 채굴 참여자 중에서 10분당 단 하나의 블록만을 채굴할 수 있도록 난이도를 적당히 조절하고 있습니다. 10분에 단 한 개만의 블록이 캐지는 정도의 난이도라는 거죠. 일부러 그렇게 되도록 맞춘다는 겁니다.

 그런데 어떻게 블록 채굴의 난이도를 인위적으로 조정할 수 있는 것일까요? 이제부터 블록체인 채굴의 핵심 개념, 그리고 블록체인은 왜 한 줄로 이어야만 하는가에 대한 이유에 대해 알아보죠. 일단은 해시 함수에 대해 알아보죠. 해시 함수는 어떤 입력 데이터를 넣으면 랜덤한 값이 출력되는 함수입니다. 이 해시 함수는 입력값이 같으면 출력값은 같고 입력값 문자열 중 한 글자라도 달라지면 아예 다른 출력값이 나오는 특수한 함수입니다. 이런 특성 때문에 출력값을 토대로 입력값을 유추하는 건 불가능에 가깝다고 알려져 있죠.

<해시함수의 원리>

 자 이제 블록에 적힌 데이터들, 그러니까 헤더 데이터와 거래 데이터들을 입력값으로 해시함수에 넣어 봅시다. 이제 입력 데이터에 1을 더해서 해시 함수에 넣어 봅시다. 해시 함수의 특징 덕분에 아까와는 전혀 달라 보이는 데이터가 나왔지만 이 출력값 역시 아무런 특징이 없죠. 2를 더해 보면요? 3을 더해 보면요? 10을 더해 보면요? 이렇게 더하는 숫자를 난스라고 부릅니다. 이 노가다를 "출력값 앞에 0"이 많이 나올 때까지 해야죠. 정확히 말하자면  "0"이 여덟 개 나올 때까지 해야합니다. 최초의 비트코인 블록, 그러니까 사토시 나카모토가 처음 채굴한 제네시스 블록은 사토시 나카모토의 개인용 컴퓨터로 0부터 시작해 20억에 이를 때까지 난스를 더해 해시함수에 넣어 보는 노가다를 했고 2,083,236,893을 더해서 해시 출력값 앞자리의 0을 여덟개 나오게 했습니다. 그리고 사토시 나카모토는 50BTC를 보상으로 받아갔죠. 지금 가격으로 30억 가까이 되겠네요ㅡㅡ;;. 이것이 비트코인 채굴의 핵심 개념! 블록을 아무나 캐지 못하게 만들기 위해 엄청난 난이도의 퍼즐을 제시하고 채굴자들은 컴퓨터의 천문학적인 노가다로 그 퍼즐을 풀게 만드는 겁니다. 엄청난 컴퓨터 연산으로 열심히 작업한 걸 증명해 채굴을 하고 보상을 받아간다는 개념, 이것이 바로 작업 증명입니다.

채굴의 난이도 조절은 어떻게?

 그럼 채굴 난이도를 어떻게 조절하는지 알아보죠. 간단합니다. 해시 출력값의 0의 갯수를 늘리면 되죠. 현재 60만 번째 블록의 해시 출력값은 0이 19개여야 정답으로 인정해 준다고 합니다. 최초의 난이도는 겨우 8개인데 고작 19개로 11개만 증가한거라고 생각할 수 있는데요~ "0"이 하나 늘어날 수록 16배 더 어려워집니다. 그럼 11개가 증가하면 2의 44승 , 즉 17조 배가 어려워지죠. 이 난이도는 앞서도 말씀드렸듯이 전세계 블록체인 네트워크 채굴하는 사람들 가운데 10분에 한 명 정도만이 정답을 찾을 정도로 조절된 난이도입니다. 이 해시 퍼즐이라는 건 인간이 평생을 걸려도 풀 수 없는 수준의 계산을 요구하며 이 난이도를 돌파하고 정답 해시를 맞출 수 있는 건 컴퓨터밖에 없죠. 이 퍼즐은 창의성이나 통찰력으로 푸는게 아니에요. 극한의 노가다만이 퍼즐을 풀 수 있습니다. 이 어마어마한 계산량을 감당할 수 있는게 바로 그래픽카드죠. 그리고 채굴에 이용되는 그래픽카드는 엄청난 양의 전력을 사용합니다. 그렇습니다. 채굴이란 이제 보통 사람들이 일반적인 컴퓨터로는 할 수 없는 시장이 되었죠. 엄청나게 많은 그래픽카드를 병렬로 연결하거나 심지어 채굴 전용으로 개발된 보드를 장착한 컴퓨터 엄청나게 많은 전기 사용량 그리고 상당한 시간을 들여야 하는 작업이 되었습니다. 

블록체인은 왜 해킹이 어려울까?

 그래서 블록체인은 왜 한 줄로 이어져야 하나요? 그건 바로 거래 내역을 조작하는 해킹으로부터 보호하기 위해서입니다. 블록체인 헤더 데이터에는 해시 출력값과 정답 난스가 적힙니다. 그리고 이 헤더 데이터는 장부의 거래 데이터와 함께 해시 함수로 통째로 들어가게 됩니다. 그래서 새로운 블록이 채굴되면 그 새로운 블록의 헤더에는 새로운 해시 출력값과 정답 난스가 적히게 되죠. 이건 체인이라 말씀드렸는데요 그냥 줄줄히 얽혀 있는 거죠.

 예를 들어 어떤 해커가 중간의 블록을 위조한다 쳐 봅시다. 거래 데이터에 A가 해커 자신에게 10코인을 송급했다는 데이터가 적혀 있습니다. 근데 해커는 이 데이터를 100코인으로 바꿨습니다. 해커 입장에서는 이렇게 하면 90코인이 더 자기의 전자지갑에 들어오게 되겠죠. 그런데 이렇게 거래 데이터를 조금이라도 바꾸면 즉 단 한 글자만 바꿔도 해시함수의 특정상 해서 출력값은 완전히 달라져 버리게 되거든요. 다음 블록에 적혀 있던 해시 출력값과는 완전히 달라집니다. 왜? 한줄의 블록으로 연결되어 있으니 해시함수 특성상 블럭 전체가 영향을 받는다는 거죠~~. 해커가 이 사태를 해결하기 위해서는 다시 한번 난스값을 노가다로 입력해서 0이 많이 나오는 해시 출력값을 찾아줘야 하는데 이걸 단시일 안에 할 수 있는 방법은 실제론 없죠. 그 난스 값은 전세계 블록체인 채굴자들이 다 달라붙어서 겨우 한 명만이 찾아낸 값이니까요. 만약에 해커가 어떻게 우연히 적절한 넌스 값을 찾아낸다고 해도 애초에 해시 출력값이 또 달라졌기 때문에 다다음 블록에서도 해시값이 안 맞아버리는 문제가 발생합니다. 이 모든 블록체인의 해시 출력값을 해커 한 명이 바꿀 수 있나요? 불가능 합니다. 그러므로 블록체인이 한 줄인 것입니다. 블록체인의 가치는 인터넷입니다. 그리고 가치는 누구나 탐내죠. 전세계의 수많은 인터넷 이용자들이 남의 가치를 훔칠 때 위조나 변조가 쉽다면 블록체인의 가치란 사라져 버릴 것입니다. 가치를 훔치는 일이 어려운 일이 되면요? 그정도도 안됩니다. 아예 불가능에 가까워야죠. 해킹이 불가능에 가깝도록 하기 위해서 블록체인은 모든 블록을 서로 잇는 방법을 택했습니다. 블록은 서로서로 이어져야 합니다. 현재의 블록은 과거의 블록과 이어져야 하고 그 블록은 태초의 블록까지 이어져 있어야 합니다. 


 이글을 보고 비트코인의 가치가 커져 보이는가요? 사토시 나카모토는 진짜 천재이지 않나요ㅎㅎ 개인적으로 생각하면 비트코인은 많이 떨어졌을때 조금씩 조금씩 사모으면서 장기적으로 보는 것도 괜찮은 투자방법이라 생각합니다. 지금이라도 늦지 않았으니 코인에 저와 함께 관심을 가져 보아요~~ 끝으로 바이낸스 거래소를 이용하여 거래 수수료를 할인 받고 싶다면 아래의 링크를 클릭해 주세요. 함께 부자되어 봅시다!!!

바이낸스 가입 안내서 (현물코드 : EH1FZQY0 / 선물코드 : angel)

 

1.아래 링크를 통해 가입하면 "현물 20% 수수료할인",  "선물 10% 수수료할인"을 받을 수 있습니다.
  (그냥 가입하면 수수료 혜택이 없으니 꼭 아래 링크를 클릭하여 가입하는걸 추천합니다)

   1) 바이낸스 정식 등록 퍼럴 코드 : 
"EH1FZQY0"  마지막 문자는 숫자 0 입니다. 오타 없도록 하세요.
   2) 아래 바이낸스 가입 링크 주소로 들어오면 레퍼럴 코드가 자동 입력이 됩니다.  

        https://accounts.binance.info/register?ref=EH1FZQY0

2. 선물 레퍼럴 코드 (선물 10% 수수료할인) : "angel"
  1) 선물 거래시 레퍼럴 코드 입력란이 한번 더 나옵니다.
  2) "angel"을 한번 더 입력하시면 10% 수수료 할인 혜택이 적용됩니다.'

3. 바이낸스 가입방법을 모르신다면 아래 링크를 통해 쉽게 따라할 수 있게 정리해두었습니다. 
 1) 로그    https://genius1c.tistory.com/333
 
 2) 유튜브    바이낸스 가입하기! 이 영상 하나로 정리끝!(가입/신원인증/보안설정 쉽게 따라하기)