블록체인이란?
시작전에..
현재 굉장히 각광받고 있는 기술이며, 개발자과 관련 없는 사람도 한 번 쯤은 들어본지 꽤나 된 기술이다. 인터넷에 떠다니는 많은 글 들을 읽어 봤지만 이해하기 힘든 경우도 많았고, 이번에 블록체인 관련 ‘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)
이며 채굴 경쟁과 연관되어있다.
세 번째 집합은 머클 트리 루트이다. (머클 트루는 너무 내용이 많아 추후 포스팅 예정) 간단히 짚고 넘어간다면, 블록 내의 거래를 효율적으로 요약하는 데이터 구조이다.