토픽 내용을 시작하기 전에 먼저 다음과 같이 마음속으로 속삭여 보시라고 말씀드리고 싶네요.
"나는 내용이 아무리 어렵게 쓰여 있어도 아주 쉽게 받아 들일 수 있다!"
방금 학습에 있어서 매우 중요한 것을 알려드렸습니다.
어떤 것을 접하더라도 할 수 있다는 믿음이 있다면 그 학습 능력은 놀랄만치 올라간다는 것을요.
전 토픽에 나왔던 블락체인 흐름도를 보시죠.
[거래 흐름, 출처]
바로 전 토픽에서 다룬 부분이 위 그림의 2번 트랜잭션 전송까지입니다. 다음이 3번 트랜잭션 공유입니다. 이전 토픽에서 트랜잭션을 생성하고 이것을 개인키로 디지털 서명한 후 블락체인 네트워크에 전송하는 것까지 다뤘습니다. 위 그림에서 처음 트랜잭션을 수신한 노드는 해당 트랙잰션을 주변으로 전파시킵니다. 블락체인 네트워크는 이런 식으로 트랜잭션들이 노드간 공유되어 존재하게 됩니다.
트랜잭션들은 블락체인 네트워크 노드간 공유됩니다.
블락체인은 말 그대로 블락이 연결되는 구성입니다. 특히 일열로 연결되는 구조입니다. 그럼 블락(Block)은 뭣인가하면 블락은 트랜잭션들의 집합입니다. 하나의 블락내에 여러 개의 트랜잭션들이 있는 것이죠. 어떤 블락체인을 사용하느냐에 따라 하나의 블락에 포함되는 트랜잭션의 개수가 달라집니다. 비트코인 블락체인 네트워크는 현재 블락의 크기(Block Size)가 1MB입니다. 이곳을 보면 최신 블락을 볼 수가 있습니다.
최신 블락을 보면 트랜잭션 하나당 대략 998kB/1121B= 890 바이트를 차지하고 있네요. 트랜잭션의 크기는 거래 내용에 따라 변경될 수 있습니다. 또한 하나의 블락에 트랜잭션 개수가 일정하지 않는데 1MB를 넘지않는 범위에서 블락이 생성됩니다. 또 블락이 생성되는 시간(Block Time)이 있는데 말 그대로 블락인 생성되는 주기가 있습니다. 비트코인 네트워크의 경우는 약 10분입니다. 즉 새로운 블락은 10분마다 생성된다는 것입니다. 그렇다면 의문이 들 것입니다. 내 트랜잭션이 블락체인 네트워크에 기재되려면 10분이나 걸린다고? 이걸 결재 시스템으로 사용할 수가 있을까?라는 의문이 들겁니다. 실제 10분 이상이 걸립니다. 특히나 안전한 거래를 위해서는 내 트랜잭션이 들어있는 블락 이후로 최소 6개의 블락이 더 생겨야 거래를 컨펌(Confirm)하기도 합니다. 와우.. 그럼 거래 후 1시간이 지나야 결재가 되는거란 말인가? 하고 하실 수 있지만, 실제 생활에서의 소액 거래는 트랜잭션이 블락체인 네트워크로 전송된 시점에 가결재 하는 방식으로 사용됩니다. 추후에 트랜잭션에 문제가 있다면 나중에 처리되는 방식으로 사용합니다. 거래 금액이 큰 경우는 보다 안전한 거래를 위해 몇 번의 블락이 생성된 후 결재가 완료되도록 하는 것이 좋습니다.
여러 트랜잭션들이 모여 하나의 블락을 구성합니다.
자 그럼 이제 그 유명한 '채굴(Mining)'이 등장합니다. 채굴기라던지 채굴로 돈 벌었다던지, 채굴공장, 채굴 대행 등등 하도 신문에서 떨들어대서 들어보셨을 겁니다. 최근 채굴이 인기를 끌면서 고급 비디오 카드들이 동나는 사태까지 벌어졌을 정도였으니깐요.
채굴이란 단어는 정말 잘 어울리는 단어입니다. 마치 금광에서 금을 캐는 작업을 채굴이라고 하듯이 블락체인 네트워크에서 '블락(Block)'을 캐는 또는 생성하는 작업을 채굴이라고 합니다.
그런데 말입니다. 블락은 누가 생성하는 것일까요?
바로 블락체인 네트워크에 블락 생성을 담당하는 '채굴 노드(Mining Node)'들이 채굴합니다. 이들 노드는 블락체인 네트워크에서 공유되고 있는 트랜잭션들을 모아서 블락 만들기를 시도합니다. 이 때 발생되는 문제점이 있습니다! 트랜잭션들이 네트워크 노드들에게 공유되고 있으므로, 동일한 트랜잭션이 서로 다른 블락으로 생성될 수 있습니다. 블락체인 네트워크에서는 이를 방지하기 위해 채굴 노드들간 경쟁을 시킵니다. 즉 블락을 빨리 만드는 노드에 블락 생성 보상(Reward)을 주는 방식으로 경쟁을 시킵니다. 이때 채굴 노드들간 경쟁시키는 방법이 수학 문제(Math Problem) 푸는 것입니다. 엄밀히는 특정 해쉬값이 나오도록 거래에 추가할 임의값(Nonce)를 빨리 찾아내는 노드가 경쟁에서 이기게 됩니다.
여러 트랜잭션들이 모여 하나의 블락을 구성합니다.
이렇게 경쟁에서 이긴 채굴노드가 생성한 블락을 기존의 블락체인에 연결시킵니다. 말 그대로 블락들이 체인(Chain)처럼 연결되는 구조를 생각하시면 됩니다. 따라서 새로 생긴 블락은 이전 블락의 정보를 가지고 있습니다. 블락체인은 컴퓨터용어로 링크드 리스트(Linked List)와 같이 쭉 연결된 데이터 구조입니다. 이 때 이전 블락의 데이터를 저장하기 위해 이전 블락 전체 내용을 저장하는 것이 아니라 이전 블락의 블락 헤더(Block Header)의 해슁함수 결과값을 저장하는 것입니다. 이렇게 하면 데이터 절약이 되겠죠?
[블락체인 구조, 출처]
블락체인은 블락이 서로 연결된 구조입니다.
다음 토픽에서는 채굴 과정을 보다 상세히 다뤄 보겠습니다. 채굴 과정은 블락체인이 돌아가는데 필수적인 과정이고, 아주 기발한 방식이므로 꼭 알고 넘어가면 좋습니다.
이번 토픽의 홈워크는 아래 동영상을 단지 보는 것입니다. 소감을 댓글에 남겨주셔도 좋습니다.
포스팅한 내용이 유익했다면 아래의 스팀잇의 게시글 하단에 투표해주세요!
투표하셔도 스팀이나 스팀파워가 소모되지 않습니다.
강좌를 오픈튜토리얼스에서 온라인 강좌형태로 보실 수도 있습니다.
오픈튜토리얼스 바로가기
초보자를 위한 Blockchain 강좌 시리즈
- #1 강좌를 시작하며
- #2 블락체인 맛보기
- #3 Blockchain에 등장하는 용어들
- #4 블락체인에서의 거래 생성
- #5 디지털 서명
- #6 블락체인 구성
- #7 채굴 - 작업 증명
- #8 채굴 - 상세 동작
- #9 채굴 - 블락체인의 분기
- #10 채굴 - 신규 화폐 발행
- #11 채굴 - 블락 전파
- #12 재미삼아 하는 채굴 - 준비사항
- #13 재미삼아 하는 채굴 - 코인 주소(지갑) 만들기
- #14 재미삼아 하는 채굴 - 채굴 프로그램 설치
- #15 재미삼아 하는 채굴 - 마이닝풀 가입 및 채굴 시작
- #16 재미삼아 하는 채굴 - 채굴 화면 설명