Blockchain 기술

블락체인 구성

블락들이 연결된 만들어지는 블락체인
토픽 내용을 시작하기 전에 먼저 다음과 같이 마음속으로 속삭여 보시라고 말씀드리고 싶네요.
"나는 내용이 아무리 어렵게 쓰여 있어도 아주 쉽게 받아 들일 수 있다!"
방금 학습에 있어서 매우 중요한 것을 알려드렸습니다. 어떤 것을 접하더라도 할 수 있다는 믿음이 있다면 그 학습 능력은 놀랄만치 올라간다는 것을요.

전 토픽에 나왔던 블락체인 흐름도를 보시죠.

스크린샷 2017-03-13 오후 2.43.49

[거래 흐름, 출처]

바로 전 토픽에서 다룬 부분이 위 그림의 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)의 해슁함수 결과값을 저장하는 것입니다. 이렇게 하면 데이터 절약이 되겠죠?그림 3 링크드 리스트로 구성된 블록
[블락체인 구조, 출처]

블락체인은 블락이 서로 연결된 링크드 리스트 구조입니다.

 

다음 토픽에서는 채굴 과정을 보다 상세히 다뤄 보겠습니다. 채굴 과정은 블락체인이 돌아가는데 필수적인 과정이고, 아주 기발한 방식이므로 꼭 알고 넘어가면 좋습니다. 

이번 토픽의 홈워크는 아래 동영상을 단지 보는 것입니다.  소감을 댓글에 남겨주셔도 좋습니다.

블락체인 기반 블로그 Steemit에 Vote가 10개 이상되면 다음 타픽 진행하겠습니다.(희망사항)

Steemit 바로가기

https://steemit.com/blockchain/@etainclub/blockchain-6

 

댓글

댓글 본문
  1. 안39
    아식이란 것이 필요
  2. 이타인
    이후 토픽에서 설명될 건데요, 간단히 말씀드리면 특정해쉬값을 네트워크가 정하지 않고, 단순히 해쉬값은 뭐 보다 작아야 한다. 이런식으로 제약을 둡니다. 그보다 작은 해쉬값이 나오면 채굴 성공입니다. 물론 다른 채굴자보다 빨리 찾아냈을 때에 한해서요.
    네트워크상에서 채굴 프로그램을 돌리는, 즉 거래들을 모아서 블락을 생성하려는 노드는 어떤 노드든 채굴 노드가 될 수 있습니다. 이것도 뒤에서~
    대화보기
    • 이타인
      비트코인 설계자가 블락생성이 매 10분마다 되도록 블락생성 난이도를 조종하는 코드를 넣어놨습니다.
      이후 토픽들에서 궁금한 부분들이 좀 해소되면 좋겠네요.
      대화보기
      • yoniverse
        그리고 특정한 해시값이라는 것은 블록체인 네트워크 자체에서 생성해내는 값이고, 그 값을 도출해낼 수 있는 입력값을 빨리 찾는 채굴노드가 보상을 받는다는거죠? 비트코인 네트워크에 있는 어떠한 노드도 채굴노드가 될 수 있는건가요?
      • yoniverse
        블록생성주기 내에 수학문제를 못풀어서 블록생성이 안될 수도 있는지도 궁금하고
        특정한 해시값을 산출해낸다는 게, 암호학시간에 배웠던 해시함수의 역상저항성을 깨는 내용같은데..
        어떻게 그걸 풀어내는지도 궁금합니다.
        아직은 궁금한 점 투성이네요. 암튼 재밌습니다. 좋은 강의 감사합니다.
      버전 관리
      이타인
      현재 버전
      선택 버전
      graphittie 자세히 보기