Post

블록체인이란?

시작전에..

현재 굉장히 각광받고 있는 기술이며, 개발자과 관련 없는 사람도 한 번 쯤은 들어본지 꽤나 된 기술이다. 인터넷에 떠다니는 많은 글 들을 읽어 봤지만 이해하기 힘든 경우도 많았고, 이번에 블록체인 관련 ‘Mastering’ 시리즈로 유명한 BitCoin Mastering이란 책을 읽으면서 어느정도 개념을 정리할 수 있을 것 같아서 이번 포스팅을 시작하게 되었다.

블록체인이란?

1982년 David Chaum의 논문 “Computer Systems Established, Maintained, and Trusted by Mutually Suspicious Groups”으로 처음 제안이 된 프로토콜이며, 1991년 Stuart Haber와 W.Scott Stornetta의 논문 “How to time-stamp a digital documen”의해 설명되었다. 그 이후로 2008년 “Satoshi Nakamoto”의 비트코인에 의해 처음 대중적으로 알려지게 되었다. 블록체인은 거래가 담겨져 있는 블록이 이전 블록과 연결되어 있는 형태의 정돈된 목록이며, 각 블록은 블록의 헤더에 “SHA256” 암호화 해시 알고리즘을 이용하여 해시를 생성하며, 블록 헤더의 “이전 블록 해시”필드를 동해 “부모 블록”이라 할 수 있는 이전 블록을 참조한다. 각 블록에서 부모 블록을 연결해 주는 해시의 배열은 첫 생성 블록까지 이어지며 이것을 체인이라한다. “Satoshi Nakamoto”는 BitCoin 백서에서 해시와 체인을 구분하여 칭하였지만, 현 시대에선 블록체인이라고 통상 칭한다.

블록체인 - 블록구조

블록은 공개 장부인 블록체인에 거래들을 포함시키기 위해 한데 합쳐 놓은 컨테이너 데이터 구조이다. 블록은 메타데이터를 담은 헤더와 그 뒤 블록 크기를 결정하는 거래목록이 길게 나열되어 있다.

아래는 블록 구조이다.

블록 구조

크기필드명설명
4바이트블록 크기블록의 크기 (단위: 바이트)
80바이트블록 헤더여러 필드가 블록헤더를 생성
1~9바이트거래 카운터거래 갯수
가변적거래블록에 기록된 거래

블록 헤더

블록의 가장 중요한 정보들을 가지고 있는 부분이다. 블록 헤더는 메타데이터의 3가지 집합으로 구성되어 있다.

첫 번째로 이전 블록과 연결 값인 이전 블록의 해시값이 있다.

두 번째 집합은 난이도, 타임스탬프, 난스(nonce) 이며 채굴 경쟁과 연관되어있다.

세 번째 집합은 머클 트리 루트이다. (머클 트루는 너무 내용이 많아 추후 포스팅 예정) 간단히 짚고 넘어간다면, 블록 내의 거래를 효율적으로 요약하는 데이터 구조이다.

This post is licensed under CC BY 4.0 by the author.