CLIEN

본문 바로가기 메뉴 바로가기 보기설정 테마설정
톺아보기 공감글
커뮤니티 커뮤니티전체 C 모두의광장 F 모두의공원 I 사진게시판 Q 아무거나질문 D 정보와자료 N 새로운소식 T 유용한사이트 P 자료실 E 강좌/사용기 L 팁과강좌 U 사용기 · 체험단사용기 W 사고팔고 J 알뜰구매 S 회원중고장터 B 직접홍보 · 보험상담실 H 클리앙홈
소모임 소모임전체 ·굴러간당 ·아이포니앙 ·주식한당 ·MaClien ·일본산당 ·방탄소년당 ·개발한당 ·안드로메당 ·나스당 ·자전거당 ·이륜차당 ·소시당 ·물고기당 ·소셜게임한당 ·골프당 ·바다건너당 ·AI그림당 ·패스오브엑자일당 ·걸그룹당 ·노젓는당 ·스팀한당 ·클다방 ·요리한당 ·덕질한당 ·AI당 ·키보드당 ·육아당 ·콘솔한당 ·여행을떠난당 ·가상화폐당 ·3D메이킹 ·X세대당 ·ADHD당 ·날아간당 ·사과시계당 ·배드민턴당 ·야구당 ·농구당 ·블랙베리당 ·곰돌이당 ·비어있당 ·FM당구당 ·블록체인당 ·보드게임당 ·활자중독당 ·볼링친당 ·캠핑간당 ·냐옹이당 ·문명하셨당 ·클래시앙 ·쿠키런당 ·대구당 ·DANGER당 ·뚝딱뚝당 ·디아블로당 ·개판이당 ·동숲한당 ·날아올랑 ·전기자전거당 ·e북본당 ·갖고다닌당 ·이브한당 ·패셔니앙 ·도시어부당 ·FM한당 ·맛있겠당 ·포뮬러당 ·젬워한당 ·안경쓴당 ·차턴당 ·총쏜당 ·땀흘린당 ·하스스톤한당 ·히어로즈한당 ·인스타한당 ·IoT당 ·KARA당 ·꼬들한당 ·어학당 ·가죽당 ·레고당 ·리눅서당 ·LOLien ·Mabinogien ·임시소모임 ·미드당 ·밀리터리당 ·땅판당 ·헌팅한당 ·오른당 ·영화본당 ·MTG한당 ·소리당 ·노키앙 ·적는당 ·방송한당 ·PC튜닝한당 ·찰칵찍당 ·그림그린당 ·소풍간당 ·심는당 ·라즈베리파이당 ·품앱이당 ·리듬탄당 ·달린당 ·Sea마당 ·SimSim하당 ·심야식당 ·윈태블릿당 ·미끄러진당 ·축구당 ·나혼자산당 ·스타한당 ·파도탄당 ·퐁당퐁당 ·테니스친당 ·테스트당 ·빨콩이당 ·공대시계당 ·터치패드당 ·트윗당 ·창업한당 ·VR당 ·시계찬당 ·WebOs당 ·위스키당 ·와인마신당 ·WOW당 ·윈폰이당
임시소모임
고객지원
  • 게시물 삭제 요청
  • 불법촬영물등 신고
  • 쪽지 신고
  • 닉네임 신고
  • 제보 및 기타 제안
© CLIEN.NET
공지[점검] 잠시후 서비스 점검을 위해 약 30분간 접속이 차단됩니다. (금일 18:15 ~ 18:45)

가상화폐당

강좌와팁 [강의] 비트코인의 채굴이란 어떤 수학문제를 푼다는 것인가? (Part 1) 14

22
2021-12-22 22:07:07 수정일 : 2021-12-22 23:20:22 58.♡.36.225
꾸둥이


안녕하세요,

우리가 흔히 비트코인 채굴하면 어떤 수학문제, 또는 퍼즐을 푸느라 전기를 많이 잡아먹는다고들 하는데, 

과연 그게 어떤 행위를 한다는 것인지에 대해 알아보고자 합니다.


문송하지만, 암호학이나 프로그래밍에 대한 배경지식이 없다 보니 채굴이라는 과정을 기술적으로 이해하고 싶었습니다. 

그래야 추상적으로만 들리던 블록체인 탈중앙화의 원리를 알 수 있겠다고 생각했기 때문입니다. 

그래서 최대한 쉽게 이해되실 수 있도록 한번 설명해 보겠습니다.


먼저 채굴이라는 작업증명방식(Proof of Work, POW)을 이해하기 위해 가장 먼저 이해해야 하는 개념은 ‘해시’ 와 ‘블록’ 입니다.


1. 해시

간단합니다. 해시란 어떠한 Input 값을 넣으면 16진수의 64자리 숫자 배열이 나오는 함수입니다 

(16진수는 0~9, a~f 까지의 16가지 숫자를 말함).

즉, 제가 Input 값으로 ‘홍길동’을 넣으면 9C6B9B1B1.... 라는16진수의 64자리 고유한 숫자를 뱉어냅니다. 

1.jpg

[그림 1]


여기서 중요한 부분은

  • 누구나, 언제나, 어디서나 홍길동의 해시값을 구해도 9C6B… 값이 나온다는 점 (홍길동의 디지털 지문이라고 볼수있음) 
  • 한 글자만 달라도, 예를들어 ‘홍길동전’을 넣는다면 B8BA08B069B…로 전혀 다른 아웃풋이 나온다는 점 (아웃풋은 랜덤임)
  • 홍길동이 아니라 100페이지짜리 홍길동전을 다 넣는다고 해도 아웃풋은 64자리 숫자로 일정하다는 점 
    (이 개념을 응용한다면 디지털화 된 사진, 동영상 등도 64자리 숫자로 해시화 가능)
  • 해시값을 가지고 인풋값을 역으로 유추할 수는 없다는점. ( X->Y값은 고정, but Y -> X 값 찾는 것은 불가능, 역상저항성이라고 함)

입니다.


2. 블록

해시의 원리를 이해했다면 블록으로 넘어가 봅시다. 비트코인 네트워크에 있는 하나의 블록 구성은 간단하게 아래와 같습니다.

2.jpg

[그림 2]


실제 블록안에 포함된 정보는 훨씬 더 다양하지만 (난이도, 타임스탬프, 코인베이스 등등), 채굴의 개념을 이해하기 위해서 중요한 부분만 크게 4가지를 말씀드리면,

① 블록넘버: 블록체인의 번호. 1번이면 첫번째 블록을 의미

② 난스: 채굴에 사용될 가장 중요한 숫자 (가장 중요)

③ 자료: 거래장부 내역이 작성되는 곳. 실제 트랜젝션이 일어난 내역을 여기에 담아서 블록화 함

④ 해시:  ①+ ②+ ③을 인풋으로 한 해시값

입니다.


자 여기서 채굴이란 무엇인지를 말씀드리겠습니다.

채굴자는 먼저 약 10분동안 발생한 여러 거래 내용들을 모읍니다.

그러면 ① 번의 블록번호와 ③ 번의 거래내용들은 변하지 않는 상수가 되겠죠,

그리고 난스값을 1,2,3,4,5,6,….. 이렇게 하나씩 무차별 대입을 시도합니다.

그럼 난스값을 1씩 증가시킬 때마다 ④ 번 해시값은 계속해서 변화하겠죠?

그러다가, 우연히 해시값이 0000 으로 시작하는 난스값을 먼저 찾게된다면, 바로 그게 채굴에 성공했다라고 보는 겁니다.

이해되셨나요?


예를 들어보겠습니다.

현재까지 100개의 블록들이 연결되있다면, 다음번에 채굴할 블록의 번호는 101이겠죠 (상수)

다음 A가 B에게 1비트코인, C가 D에게 3비트코인을 준 두개의 거래 기록을 블록에 담는다고 하면 (상수)

여기서 논스를 무차별 대입합니다

3.jpg

[그림 3]


여기서 난스가 0일때는 블록+난스+자료의 해시값이 6993f….입니다

4.jpg

[그림 4]


그런데 어떤 채굴자가 31489라는 난스를 대입했더니 블록+난스+자료의 값이 00003d… 이렇게 시작을 합니다.

그러면 이 31489 난스값을 가장 먼저 찾은 채굴자가 채굴에 성공을 하게 되는 것이고, 보상으로 비트코인을 받게 되는 겁니다.

여기서 0000..으로 시작하는 난스 31489를 찾기위해서는 0부터 무차별 대입을 해나가야 하지만, 반대로 난스값을 알고 0000..으로 시작하는지 검증하는 것은 누구나 금방 대입해보면 알 수 있습니다.

이 방식은 내가 에너지를 쏟아서 난스를 찾았다는 사실, 즉 내 작업을 남들에게 증명할 수 있는 방식이라고 해서 작업증명방식(Proof of Work)이라고 하는 겁니다.


0이 4개로 시작하는 난스값을 찾는 것은 제 PC로도 할수있을 정도로 크게 어렵지는 않습니다. 그러나 0의 자리수가 점점 늘어난다면?? 난이도는 기하급수적으로 올라가겠죠?

현재 이 시점에서 비트코인의 난이도는 어느정도일까요? 한번 직접 찾아봅시다.

먼저 https://www.blockchain.com/explorer 사이트로 접속하면 Latest Block의 내용을 볼 수 있습니다.

현재 12월 22일 저녁 9시 50분 시점, 블록넘버는 715244번 입니다 (Height, 높이라고 표현함)

5.jpg


해시값은 000000000000000000092d5eba73c2454ef4ccf72b55ac50e312bf31d056a537 이네요. 즉 첫 19자리 숫자가 0으로 시작해야 하는 난이도 입니다. 이건 제 PC로는 찾기가 어려울 것입니다.

밑으로 내려가면 난스값은 3,967,710,241이라고 나와있습니다.

채굴기에 GPU같은 것들이 쓰이는 이유도 이렇습니다. 난스값을 병렬로 빠르게 때려 넣어서 빨리 0으로 19자리 시작하는 해시값을 찾아내야하기 때문이죠.

우선 이번 글에서는 여기까지 설명 드리도록 하겠습니다

궁금하신 부분 있으시면 댓글 남겨 주시고, 이 내용은 https://youtu.be/zmG380S2_N0 영상을 기반으로 작성했습니다


감사합니다


출처 : https://youtu.be/zmG380S2_N0
꾸둥이 님의 게시글 댓글
  • 주소복사
  • Facebook
  • X(Twitter)
댓글 • [14]
사과맥주소세지
IP 121.♡.210.209
12-22 2021-12-22 22:17:51 / 수정일: 2021-12-22 22:23:44
·
오 정말 좋아요! 초록 분홍창 블록 입력해보는 내용은 어디서 직접 해 볼 수 있나요??
꾸둥이
IP 58.♡.36.225
12-22 2021-12-22 22:25:58
·
@사과맥주소세지님 https://andersbrownworth.com/blockchain/hash 여기서 직접 해보실수 있습니다 ^^
사과맥주소세지
IP 121.♡.210.209
12-22 2021-12-22 22:29:56 / 수정일: 2021-12-22 22:31:17
·
와우 감사합니다-! 앞으로도 올려주세요. 유투브도 잘 살펴보겠습니다!
Mercyme
IP 218.♡.41.123
12-22 2021-12-22 22:39:07
·
좋네요
한가지 궁금한게
왜 해시값이 0000000...으로 시작되는걸 찾아야하는건가요?
약속인걸까요??
꾸둥이
IP 58.♡.36.225
12-22 2021-12-22 23:05:29
·
@Mercyme님 네 맞습니다. 64자리의 해시값에서 0으로 시작하는 자리수가 많아진다는 뜻은, 해시값의 숫자 크기가 작아진다는 뜻입니다. 그래서 비트코인의 난이도가 올라간다는 뜻은 점점 더 작은 해시값을 찾아라라는 의미 입니다.
이러한 채굴난이도는 0의 자리수를 늘리고 줄이는 것으로 조절이 가능하며, 한 블록의 난스값을 찾는데 약 10분 정도가 소요되도록 알고리즘화 되어있습니다.
만약 채굴경쟁이 심화되서 채굴자들이 많아진다거나, 성능좋은 채굴기를 통해 컴퓨팅 파워가 강해지면 10분보다 빠른 속도로 채굴에 성공하겠죠? 그러면 자동으로 난이도는 올라가도록 설계가 되어있습니다. 반대로 10분보다 오래걸린다면 난이도가 낮아지게 되겠죠 (난이도 조절 쿨타임은 2주)
꾸둥이
IP 58.♡.36.225
12-22 2021-12-22 23:12:42
·
@Mercyme님 처음에는 저도 이 숫자를 찾는것이 무의미한 것이라고 생각했습니다. 그치만 본문에서도 언급했듯 채굴이라는 행위의 핵심 포인트는 '해시값을 찾는 것은 많은 에너지(전기)가 소모되나, 이를 검증하는 것은 매우 쉽다' 라는 부분입니다.
이 메커니즘을 통해 비트코인 블록 속에 담긴 거래내역들의 보안성과 신뢰성을 담보할 수 있는 것이죠.
예를들어 비트코인을 해킹하고자 마음먹은 사람이 있다고 한다면,
1. 먼저 수십억원의 전기세와 채굴장비를 들여서 채굴에 성공하고, 거래내역들을 조작한다
2. 그렇게 된다면 비트코인의 가치가 떨어질 것이다 (조작된 거래내역이 블록에 박제되기 때문에)
3. 그럼 내가 해킹을 하기위해 투자했던 그 많은 돈들은 다 휴지조각이 되버린다.
4. 따라서 그럴 돈이 있으면 그 돈으로 성실히 거래내역들을 기록해서 비트코인을 받는게 이득이다.
라는 사고실험을 해볼수있습니다.
UMP
IP 211.♡.82.117
12-23 2021-12-23 08:58:28
·
좋은 글 감사합니다 ㅎㅎ
ilovemac
IP 211.♡.173.86
12-23 2021-12-23 11:30:19
·
처음 알았네요. 몰랐던 개념이 좀 잡힙니다. 감사합니다.
ㅎr느ㄹi
IP 210.♡.88.240
12-23 2021-12-23 14:50:40
·
아.. 이과지만 정독하고 갑니다.
snakemaster
IP 116.♡.230.203
12-23 2021-12-23 15:59:46
·
좋은 정보 감사합니다.
오늘도 이렇게 새로운 지식을 얻게 됐네요.

그리고 질문 하나만 드리겠습니다.
0이 19개로 시작하는 난이도 일때,
19개까지는 0이고 그 뒷자리는 다른 해시값으로 나오는
또 다른 난스값이 있을 수 있나요?

1. 있을 수 없다.
2. 있을 수 있지만 그 중 가장 먼저 찾은 난스값으로 채굴을 인정한다.

이부분이 궁금하네요.^^
꾸둥이
IP 117.♡.20.43
12-23 2021-12-23 16:25:54
·
@snakemaster님 정말 좋은 질문 해주셔서 감사합니다!
정답은 2번에 가깝습니다. 조금 더 자세히 설명 드리겠습니다.

비트코인 오픈 네트워크 상에는 수많은 채굴자들이 있기 때문에,
A라는 채굴자가 채굴 성공한 다음 블록이 네트워크 모든 노드(사용자)들에게 전파되기 전
저 멀리 있는 다른 채굴자 B도 채굴에 성공하여 두개의 채굴된 블록이 병렬로 가게되는 현상도 발생할 수 있습니다.
그러나 이렇게 2개의 블록체인으로 나뉘는 현상은 일시적이고, 결국 각자의 블록체인 중 더 긴 블록으로 통합되게 됩니다.
만약 A 버전의 블록이 더 길다면, 그쪽으로 통합되서 B 버전의 블록은 A버전으로 통합되는 것이죠.
우리가 비트코인을 거래소 간 송금할 때, 통상적으로 6 컨펌 (Confirmation)을 거쳐야 입금이 완료되는 것도 이 때문입니다.
6 컨펌이란, 내가 송금한 거래내역이 블록에 실리고나서 6개의 블록이 더 붙을때까지를 기다리는 것인데, 이것은 혹시나 동시에 채굴된 다른 짧은 쪽 블록에 내 거래가 실려서 거래가 실리지 않거나 이중지불이 일어날 가능성을 막기 위해서 입니다 ^^
snakemaster
IP 116.♡.230.203
12-23 2021-12-23 16:30:41
·
@꾸둥이님 오오오! 빠르고 속시원한 답변 정말 감사합니다. 😃
znzndl
IP 175.♡.66.6
12-23 2021-12-23 18:02:45
·
음,, 미세하게 수정할 게 있네요. 위에서 3번 장부라고 말한 건, 머클트리 해시를 말하는 것 같은데, 정확히 , 큰 틀에서 말하자면, 변하지 않는 값, 즉 상수가 아닙니다. 모든 블록 첫번째 거래는 coinbase라고 해서, "이 블록을 채굴하는 사람에게 비트코인을 보상으로 준다"라는 있기 때문이죠. 그래서 채굴을 시도 하는 사람마다 각자의 데이터를 넣기 때문에, 큰 틀, 즉 비트코인 체계 전체에서 보자면, 마이너 마다 머클트리 해쉬 값이 다릅니다. 머클 트리 값이 다르다면, 결국 블록 헤더가 마이너마다 다르죠
꾸둥이
IP 117.♡.11.128
12-23 2021-12-23 18:39:53
·
@znzndl님 좋은 댓글 감사드립니다!
말씀 주신대로, 큰 틀에서는 채굴자 마다 소프트웨어 버전도 조금씩 다르고, 블록에 포함할 트랜잭션이 다르기 때문에 각자 다른 조건에서 해시값을 구하는 것이 맞습니다. 머클트리는 각 트랜잭션 쌍을 해시화하는 것이기 때문에 머클루트 해시값도 당연히 다르겠죠.
다만 본문에서는 ''각 채굴자관점에서 나머지 값을 상수''로 놓고 난스를 때려넣어서 0000~으로 시작하는 값을 찾는다에 방점을 두고 있었습니다. 상수라는 표현에 오해가 있을수있었겠군요.
다음에 기회가 된다면 심화과정으로 머클트리, 코인베이스, 헤더와 바디 등 블록에 실제로 담기는 내용, 노드의 종류 등이 대해 좀 더 다뤄보도록 하겠습니다!
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB / 업로드 가능 확장자 jpg,gif,png,jpeg,webp
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
목록으로
글쓰기
글쓰기
목록으로 댓글보기 이전글 다음글
아이디  ·  비밀번호 찾기 회원가입
이용규칙 운영알림판 운영소통 재검토요청 도움말 버그신고
개인정보처리방침 이용약관 책임의 한계와 법적고지 청소년 보호정책
©   •  CLIEN.NET
보안 강화를 위한 이메일 인증
안전한 서비스 이용을 위해 이메일 인증을 완료해 주세요. 현재 회원님은 이메일 인증이 완료되지 않은 상태입니다.
최근 급증하는 해킹 및 도용 시도로부터 계정을 보호하기 위해 인증 절차가 강화되었습니다.

  • 이메일 미인증 시 글쓰기, 댓글 작성 등 게시판 활동이 제한됩니다.
  • 이후 새로운 기기에서 로그인할 때마다 반드시 이메일 인증을 거쳐야 합니다.
  • 2단계 인증 사용 회원도 최초 1회는 반드시 인증하여야 합니다.
  • 개인정보에서도 이메일 인증을 할 수 있습니다.
지금 이메일 인증하기
등록된 이메일 주소를 확인하고 인증번호를 입력하여
인증을 완료해 주세요.