상세 컨텐츠

본문 제목

<파투생>의 비트코인 관련 정보 / 3. 비트코인 채굴 이란? (채굴의 원리)

본문

파이어! 투자 생초보 파투생입니다!

 

 

비트코인 채굴에 관하여 많이들 얘기를 들어봤을겁니다!

저 또한 마찬가지고 그냥 수학적문제를 풀어 비트코인을 얻는 방법 이라고만 알고 있었는데

문득 궁금해졌습니다. 어떤 원리로 어떤식으로 채굴을 하는건지 채굴이 어떤걸 말하는건지그래서 조금 깊게? 들어가봤습니다. 많이 부족하겠지만, 나름 공부하고 정리 해봤습니다.좀 길어질 수 있을거같아요!

 

비트코인 채굴
들어가기전
- 블록체인 이란? 
들어가서
1. 비트코인 채굴이란?
2. 비트코인 채굴의 원리
3. 비트코인 채굴이 완전히 끝나면?

먼저, 채굴에 대하여 알아보기 전, 블록체인에 대하여 알아보자.
블록체인 이란?

블록+체인 두단어를 합쳐져있으며, 

블록 - 거래내역 같은 데이터를 저장하는 단위

체인 - 서로 연결 되는것을 말그대로 체인으로 표현.

 

가치(데이터)를 저장한 블록들을 고도의 암호화 기술을 이용하여 결합한 원장

 

이런 기술력이 왜 거래를 하는데 필요할까

 

거래에는 신뢰가 매우 중요하다.

 

현재까지 우리가 거래(송금 등)를 하기 위해선 우선 제 3자에게 기대여야한다.

A와 B가 거래를 하려하는데 둘만의 거래에는 둘 외에는 신뢰성이 없어 누구 하나가 거짓말이라도 한다면?

 

예를들어 A에게 B가 10만원을 빌렸다.  

1. 그 후 시간이 지나 B가 A에게 돈을 받기위해 연락을 했는데 A는 돈을 빌린적 없다고 말한다. 혹은 5만원을 빌렸다말한다.

2. 이런상황을 방지하기위해 거래내역서를 만들것이다. 근데 한쪽에서 거래내역서를 불태웠다면? 혹은 수정을 해버리면?

 

이런 상황을 대비하여 제 3자를 끌어들인다.

 

A와 B가 하는 거래를 C가 받아적는다. 

그리고 그 거래내역서를 통하여 그리고 제3자 C가 증인으로써 거래에는 신뢰도가 쌓인다.

하지만 만약 A가 C를 포섭하여 내용을 바꾸거나 C가 내역서를 잃어버리면?

 

그런데 제3자가 한명이 아닌 10명 아니 100명 아니 10000명이라면?

포섭하기도 어렵고 누군가가 잃어버려도 또 다른 9999명이 내역서를 가지고 있다.

그래서 차라리 모든 거래내역을 모두에게 공개하고 거래의 신뢰도를 쌓는다.

 

하지만 여기서 거래내역서를 수정할수 없어야하며,

너무 많은 거래내역을 어떻게 가지고 있을것이냐, 그리고 그 많은 사람들이 내역서를 모두 대조해 볼것인가

등의 문제점이 생긴다.

 

이부분을 해결한 기술이 바로 블록체인이다.

 

블록체인은 거래내역을 *해시함수화 한다.

해시함수 - 임의의 길이의 입력 메시지를 고정된 길이의 출력 값으로 압축시키는 함수. 컴퓨터 암호화 기술의 일종 

 

해시함수의 종류는 *SHA-256이며 거래내역을 해시함수화 시키면 고정된 64자리의 문자열로  16진수 해시결과값이 나타난다.

SHA-256 -  SHA-256는 어떤 길이의 값을 입력하더라도 256비트의 고정된 결과 값을 출력한다.

일반적으로 입력 값이 조금만 변동하여도 출력 값이 완전히 달라지기 때문에 출력 값을 토대로 입력 값을 유추하는 것은 거의 불가능하다.

충돌확률이 매우 작은 함수 중 하나.

아주 작은 확률로 입력 값이 다름에도 불구하고 출력 값이 같은 경우가 발생하는데 이것을 충돌이라고 한다. 이러한 충돌의 발생 확률이 작을수록 좋은 함수라고 평가된다.
SHA-256 부터는 우리가 사용하는 입력값의 가짓수를 수억개 단위로 놓고 보아도, 충돌값이 나올 확률은 그냥 지구 대멸종을 야기할 소행성의 충돌 확률 보다도 더 낮다고 생각하면 된다한다.

 

0,1,2,3,4,5,6,7,8,9 그리고 A,B,C,D,E,F, 의 16개의 16진수를 64자리(256bit)로 나타내는데

이 함수 기술이 중요한점이 해시함수 결과값(Hash Value)은 입력정보가 한글자만 바뀌어도
전혀 다른 결과값이 만들어진다.

 

예를들어

안녕하세요 - 1F24C1A432CD3424... (편의상 16개만 적겠다) 이 결과값이 나온다면 안녕하세요에서 점 하나만 찍어도

안녕하세요. - 23C13FBA33A214EF... 같이 완전히 다른 결과값이 만들어진다.

그래서 결과값을 토대로 입력값을 유추하는건 사실상 불가능하다. (2^256의 확률로 시도를 해본다면 가능하긴하나 굳이..)

그리고 이 결과값은 혹시나 블록이 위조되더라도 결과값이 완전히 달라져 알아보기가 매우 쉽다.

위조 또한 어렵다. 그 이유는 채굴에 대해 알아볼때 알 수 있다.

 

이 함수값은 사람의 지문처럼 아무리 닮은 사람이라도 전세계에 한명한명 지문은 다 다르듯이

점 하나 차이도 완전히 다른 결과값을 만들어내며

그 어떤 내용이든 크기든 상관없이 모든 결과값은 64자리(256bit) 함수로 나타난다.

 

데이터는 이전 데이터에 연결되어있고 이전 데이터는 그 전의 데이터에 연결되어 체인의 형태를 띰
하나를 바꾸려면(해킹) 연결된 모두를 바꿔야한다. (해킹 매우어려움)

 

결과적으로 블록체인은 모두에게 거래장부 원본을 가지게하고 공개함으로써

기존의 중앙집중(은행)돼 있던 위험성을 탈피하고자 

탈중앙화를 목적으로 만들어진 기술력이다. 라고 간단하게 알고 있음 좋을거같다.

 

이렇게 블록체인이 어떤 기술인지를 알아봤고 이제 비트코인 채굴에 대하여 알아보겠다.

 

1. 비트코인 채굴 이란?
채굴 또는 마이닝(mining)이란
암호화폐의 거래내역을 기록한 블록을 생성하고 그 대가로 암호화폐를 얻는 행위를 말한다.
1개의 암호화폐를 생성하기 위해서는 마치 금과 같은 광물을 캐는 것처럼 많은 시간과 노력이 필요한 일련의 작업이기에 채굴이라는 표현을 사용하기 시작했다.

현재 우리는 채굴의 보상으로 6.25개의 비트코인을 얻을 수 있다.

채굴은 분산원장 시스템이라는 광산에서 *합의 알고리즘이라는 작업을 동해 코인을 소유하는 것을 표현한 용어이며

*작업 증명, 합의 알고리즘과 그에 따른 보상을 의미하며 블록체인에 새로운 블록을 추가하는 일련의 과정을 뜻한다.

 

*합의 알고리즘 - 분산원장 시스템에서 노드는 네트워크상에 분산되어 있으며, 원장에 포함시키기 위한 새로운 기록을 생성, 채택하고 이를 배포해야 한다. 그러나 노드 간의 분산원장 동기화는 동시에 일어나지 않기 때문에 네트워크상에는 일시적으로 서로 다른 기록이 포함된 원장들이 존재할 수 있고, 노드들 중에는 신뢰할 수 없는 참여자가 포함될 수 있다고 가정한다. 합의 알고리즘(consensus algorithm)은 그런 상황에서도 분산원장 시스템 내의 노드들이 서로 간의 통신을 통해 최종적으로 동일한 기록을 채택하게 하는 방식이다.

**알고리즘이란, 주어진 문제를 논리적으로 해결하기 위해 필요한 절차, 방법, 명령어들을 모아놓은 것입니다. 
 사람은 숙제 다했어? 라고 물어봤을때 응 다했어 라고 한다면 그 안에 수학 숙제, 영어 숙제등을 모두 다했다 라고 이해할 수 있지만, 컴퓨터는 혼자 그렇게 이해하고 실행할 수 없어 절차,방법 등을 모두 입력하여 실행시켜야한다.

이것을 알고리즘이라고 한다.

 

비트코인의 합의 알고리즘은 POW(proof of work)로 작업증명 방식이다. 

우린 이제 이것에 대하여 알아볼것이다.

 

2. 비트코인 채굴의 원리

앞서 말한 POW 작업증명 방식인데,
이것에 대하여 한번 알아보자.

블록체인의 핵심 아이디어는 데이터를 추가하기 위해선 어떤 어려운 작업을 수행해야 한다는 것이다.

이 작업이 블록체인을 안전하고 일관성있게 만들어준다.

또한 이 어려운 작업을 수행한 참여자에게는 보상이 주어진다 (사람들이 채굴을 통해 코인을 얻는 방식이다).

 

블록체인에서 네트워크의 참여자들(채굴자)은 네트워크를 유지하기 위해 블록을 생성하고 이에 대한 보상을 받는다.

이 작업의 결과로 블록은 블록체인에 안전하게 추가되어 전체 블록체인 데이터베이스의 안정성을 유지한다.

 

채굴자가 데이터를 블록에 넣어서 블록체인으로 보낸다.


비트코인을 누군가가 보낸다면 그 거래내용이 확인되지않을것이다.
하지만 채굴자가 해당 거래내역을 보고 확인한다.
그 데이터를 바디블록에 추가한다. 이러한 데이터를 여러개 넣어 하나의 블록이 다 차게되면
블록을 닫고 블록체인에 올린다.
채굴자들이 데이터들을 블록체인에 올리는 작업을 끝내야만 거래내역들을 확인할수 있다.

그리고 블록체인에 올리기 위하여 작업증명을 한다. 

이 작업증명으로 채굴자들이 얻는 것은 거래수수료와 비트코인 총 두가지의 보상을 얻는다.

이 보상으로 채굴자들은 동기부여를 가지고 블록체인을 만들어 우리의 거래내역을 블록체인화 시켜준다. 

 

“어려운 작업을 수행하고 이를 증명한다"의 전체 메커니즘을 작업 증명 (Proof of Work, PoW)이라고 부른다.

이는 엄청난 컴퓨팅 파워를 요구하기 때문에 작업이 무거우며 고성능 컴퓨터에서조차 빠르게 수행하기 어렵다.

또한, 작업의 난이도는 시간이 지남에따라 증가한다.

비트코인에서 이 작업의 목표는 특정 요구사항을 충족하는 블록의 해시를 찾는 것이다.

그리고 이 해시가 증명 역할을 하기 때문에 증명을 찾는 작업이 실질적인 작업이다.

많은사람들이 수학문제를 풀어서 작업을 증명한다 라고 알고 있는 부분이 이부분이다. 

 

먼저, 블록에는 블록 헤더와 블록 보디가 있다.

블록 헤더는 블록의 정보가 담겨있고

블록 보디는 블록의 거래내역(영수증) 이 있다.

 

채굴자들은 블록 보디에 거래내역을 넣고

*거래내역에도 우선순위가 있다. 대표적으로 두가지 높은수수료를 주는 거래내역, 오래된 거래내역 두가지다.

거래자들은 수수료를 자유롭게 설정할 수 있다. 안줄수도 있고 줄수도 있고, 그래서 빠른 거래처리를 원하는 사람들은

수수료를 높게준다한다.

블록 헤더의 목표값과 같거나 목표값보다 낮은 논스값을 구하는 것으로 작업증명을 해야한다.

자, 이게 채굴의 노동의 시작이다.

블록 헤더에는 이렇게 6가지의 정보가 들어있는데

1. 버전은 크게 설명할 것 없이 비트코인 채굴할때 쓰는 프로그램의 버전

 

2. 이전블록의 해시값 -> 말그대로 이전 블록의 해시값이다. 

이부분이 중요한게, 이전블록의 해시값이 체인 역할을 하는것이다.

이전 블록체인과 새로 만들어진 블록체인이 서로 이어져있기 때문이다.

 

3.머클루트 해시값 ->https://terms.naver.com/entry.naver?docId=5917600&cid=66682&categoryId=66682&expCategoryId=66682

참조

 

4.타임 -> 블록의 타임스탬프 (생성된 블록의 날짜,시간 표시)

 

5. 비트 -> 목표값(target)을 구하는 난이도 조절용 수치. bits로 표기한다. 

 

6. nonce -> 블록을 만드는 과정에서 해시값을 구하기 위해 1씩 증가하는 계산 횟수.

(채굴자가 유일하게 수정 할 수 있는 부분, 답을 구해야하는 부분 - 나머지는 채굴자는 어떤 수정도 할 수 없다)

 

그리고 바디에는 거래내역이 표시되어있다.

 

자 여기서 채굴이라 부르는 증명 작업을 해야하는데

어떤식으로 진행을 하게 되느냐하면

 

채굴자들이 블록을 생성하려고 할 때 블록에 들어가야 할 모든 데이터를 전달받지 않는다.
바로 nonce 값이 비어 있는 미완성 블록을 받게 된다.
완성된 블록을 만들기 위해 채굴자는 nonce에 들어가야 할 적합한 값을 찾아줘야 한다. 
조금 더 자세히 말하자면 블록 해시값을 특정 숫자보다 작게 만들 수 있는 nonce 값을 찾아야한다.

어떻게 그 목표값은 어떻게 알 수 있느냐,

먼저 최근 만들어진 블록체인을 보겠다.

https://www.blockchain.com/btc/block/711112

 

Blockchain.com Explorer | BTC | ETH | BCH

The easiest and most trusted transaction search engine and block explorer.

www.blockchain.com

이 사이트에 들어가면 최근에 만들어진 블록체인의 정보를 알 수 있다.

위와 같이 나타난다.

 

위 사진을 본다면 해시값, 타임스탬프, 몇번째 블록체인지, 어떤 버전인지, 비트(목표값)이 얼마였는지,

논스가 몇번이었는지, 몇개의 보상을 받았고 보상수수료가 얼마였는지도 다 나와있다.

 

여기서 채굴자들은 bits를 이용하여 목표값을 알아내고 nonce에 0부터 셀수도 없을 만큼의 많은 숫자를 대입해보며

목표값에 같거나 낮은 해시값을 찾아내야한다.

 

여기서 나온 bits(목표값)는 386,689,514 이다.

이걸 어떻게 같거나 낮은 해시값을 구할 수 있는지 해시화하는 계산을 해보자면 

bits 386,689,514 를 16진수화 시킨다.

그래서 나온 170c 69ea 이란 목표값 8자리에서 앞 2자리는 0x(16진수를 표현하는 접두어)를 포함해 10진수화 시킨다.

즉 0x17 을 10진수화 시킨다 그렇게되면 답은 23이 된다.

이 23에 x 8b 계산해준다 = 184 이걸 나누기 4해준다. 그렇게되면 답은 46

여기서 나온 46은 170c 69ea중 17을 제외하고 0c 69ea 포함 46자리 중 나머지 40자리는 0으로 

그리고 oc 69ea 앞에 0은 256 - 184 해준다 그렇게되면 답은 72

72를 똑같이 나누기 4 해준다 그렇게되면 답은 18 ㅡ> 이게 앞에 0이되며 (사실 이건 안구해도 뒷자리에서 64를빼면 앞자리 0숫자)

그렇게되면 <0000 0000 0000 0000 000c 69ea 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000>

이렇게 총 64자리의 목표값이 나온다.

이 목표값보다 같거나 낮은 해시값을 구하면된다. 

위 bits를 16진수화 시키는건 https://defuse.ca/big-number-calculator.htm 이 사이트에서 하면 된다.

쉽게 알아볼 수 있다. 16진수 시키려면 Output Base: 에서         

Decimal         Hexadecimal         Octal  중 Hexadecimal을 선택해 입력하고

16진수를 10진수화 하려면 Decimal 를 선택하여 변환하면 된다.    

이건 수학이나 컴퓨터 잘하는 사람이라면 잘 아는 용어나 계산법이지만 낯선 나에게는 이 사이트에 기댈 수 밖에없다.

 

Online Big Number Calculator

Online Big Number Calculator Base Prefixes: 0x - Hexadecimal, 0 - Octal Math Operations: +, -, *, /, %, ^, (, ) Bitwise Operations: OR, AND, XOR, SHL, SHR, <<, >>, |, &

defuse.ca

이 값은 Nonce를 0부터 거의 무한대까지 앞에 19자리의 0이 나올때까지 막노동(?)으로 숫자를 대입해가며 해시값을 찾는것이다.

이걸 우린 작업증명이라고 한다. 그렇게 nonce값을 찾아내면 블록체인이 되며 그 채굴자는 비트와 거래수수료를 보상받는다.

 

그래서 이번 블록의 해시값은

0000 0000 0000 0000 0005 ee47 3e33 c1cb f378 8c46 8e87 0dbc f20a beff 9134 788f 이 나왔는데

우리가 구한 목표값

<0000 0000 0000 0000 000c 69ea 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000> 보다 낮은 걸 알수있다.

 

이건 그냥 구하는 방법을 원리적으로 알아본거고 

사실 채굴자들은 채굴 프로그램이 채굴을 다해서 내부적으론 크게 할일없고

외부적으로 프로그램 버전을 업데이트 한다거나 발열이나 고장나는것에 대해서 신경을 쓰면 된다고 한다.

 

그리고 이 논스값을 대입하는건 엄청난 전력과 에너지를 소모하는 작업이라 컴퓨팅 파워가 높은 컴퓨터일수록 

더 빠르게 찾아낸다고한다. 그래서 그래픽카드가 좋을수록 좋고 좋은게 필요하다보니 그래픽 카드값이 올라가고

구하기가 힘들어졌다고한다.

 

비트코인에서 블록체인은 사토시나카모토에 의해 10분에 한개씩 만들어지게 설계되었는데

이론상 이 Nonce값을 구하는 건 1분 짧게는 몇초에도 가능하다고 한다. 길게는 한시간이상까지그래서 난이도를 자동적으로 조절할 수 있다.2주라는 시간동안 2016개(10분에 한개 = 1시간 6개ㅡ> 24시간 144개 ㅡ> 14일 2016개)를 생성하는데시간상 2주보다 짧은 시간에 2016개가 만들어졌다면 난이도를 높여(0의 갯수를 늘리는) 시간을 좀 더 걸리게 만들고2주보다 긴 시간이 걸렸다면 난이도를 낮춰(0의 갯수를 낮추는) 시간을 좀 더 빠르게 하게 한다고 한다.그렇게 난이도 조절하는데 2주마다 (정확히는 2016개가 만들어졌을때) 자동적으로 조절한다.

 

블록체인이 무조건 10분에 하나씩 만들어지는게 아니라 평균적으로 10분에 하나씩 만들어지게 설계되어있는 것이다.

 

이 과정을 거쳐 작업증명을 하고 블록체인을 만들고 채굴자는 보상을 받는다.

 

3. 비트코인 채굴이 완전히 끝나면?
- 이부분에 대해선 간단하게 말하겠다.
나도 답은 모르니..

https://slowandsteady-fire.tistory.com/entry/%ED%8C%8C%ED%88%AC%EC%83%9D%EC%9D%98-%EB%B9%84%ED%8A%B8%EC%BD%94%EC%9D%B8-%EA%B4%80%EB%A0%A8-%EC%A0%95%EB%B3%B4-2-%EB%B9%84%ED%8A%B8%EC%BD%94%EC%9D%B8-%EB%B0%98%EA%B0%90%EA%B8%B0-%EB%9E%80

 

<파투생>의 비트코인 관련 정보 / 2. 비트코인 반감기 란?

파이어! 투자 생초보 파투생입니다! 오늘은 비트코인 반감기에 대하여 궁금해져서 한번 알아봤습니다.! 반감기가 어떤건지 어떤 형태로 진행되는건지 가볍게?! 한번 알아보겠습니다! 1. 비트코

slowandsteady-fire.tistory.com

반감기에 대해선 여기서 알아볼 수 있는데

비트코인 발행은 모두 2140년이 되면 끝이난다.

더이상 비트코인이 발행되지않는다.

 

그렇게되면 채굴자들은 비트코인을 더이상 발행되지 않기때문에 채굴을 하지않고 

블록체인 만드는 작업이 엄청 느려지거나 아예 안하며 네트워크가 유지되지 못할 수 있지않냐는 불안함을 표현한다.

 

그래서 나카모토가 고안한 방법이 바로 채굴시에 얻는 수수료라고한다.

채굴하여 받게되는 보상은 비트코인 과 수수료다. 수수료 또한 비트코인으로 받게되는데

이 수수료가 채굴에 동기부여를 준다 고 말하는 사람도 있고

 

또 어떤 전문가는 

미래엔 채굴은 국가에서 운영하게 되거나 발전소와 결합하는 형태가 되지않을까 라고 말한다.

 

무엇이 되든 채굴은 멈추지 않을것이라 말한다.

 

한 전문가는 비트코인은 0 아니면 영원히 오른다 라고 말한다.

 

미래에 어떻게 될지 모르겠지만 개인적으로 난 비트코인에 내 투자인생을 걸었다.

그만큼 확신이있고 자신이있다!

 

 

오늘은 채굴의 원리에 대해 알아봤다.

분명 더 많은 공부와 계획을 하며 글을 쓰려했는데

막상 정리를 못하여 이렇게 지저분하게 끝난거같다 ㅠㅠ

분명 빼먹은 부분이나 잘못된 부분이 있을것이다.

지적해주신다면 받아들이고 수정해나가겠습니다.

혹시나 궁금한 점이 있으시다면 댓글 달아주세요.

어떻게든 찾아서 답변드리겠습니다!

관련글 더보기

댓글 영역