블록체인 구조 ( 비트코인 기반 )
채굴자들의 합의에 의해 10분마다 단위 거래 장부인 블록을 생성하고 , 이전 블록과 해시 포인터로 연결한다 . 이전 블록의 해시 값을 블록 헤더에 유지한다 . 블록을 p2p네트워크를 통해 모든 참여자에게 전송하고 , 필요한 참여자는 누구나 블록체인 유지 가능하다 . 이 말은 모든 거래내역을 공개한다를 의미한다 .
블록체인이라는 체인을 이루는 원소인 블록은 무엇일까??
è 블록은 유효한 거래 정보의 묶음이다.
è 비트코인의 블록 하나에는 평균 약 1800개의 거래 정보가 포함될 수 있으며 , 블록 하나의 물리적인 크기는 평균 0.98Mbyte이다. 블록은 블록 헤더와 거래 정보 , 기타 정보로 구성된다 .
è 블록헤더는 6개의 정보로 구성된다 ( version , previousblockhash , merklehash , time, bits, nonce)
è 거래 정보는 입출금과 관련한 여러가지 정보를 가지고 있다.
è 기타 정보는 블록 내에 있는 정보 중에서 블록 헤더와 거래 정보에 해당하지 않는 정보를 말하며 , 블록 해쉬 계산에 사용되지 않는다.
블록 헤더는 다음의 6가지 정보로 구성된다.
1. Version : 소프트웨어 / 프로토콜 버전
2. Previousblockhash : 블록 체인에서 바로 앞에 위치하는 블록의 블록 해쉬
3. Merklehash : 개별 거래 정보의 거래 해쉬를 2진 트리 형태로 구성할 때 , 트리 루트에 위치하는 해쉬값
4. Time : 블록이 생성된 시간
5. Bits :난이도 조절용 수치
6. Nonce : 최초 0에서 시작하여 조건을 만족하는 해쉬값을 찾아낼 때까지의 1씩 증가하는 계산 회수
7. 블록 헤더가 중요한 이유는 블록의 식별자 역할을 하는 블록 해쉬가 이 블록 헤더의 6가지 정보를 입력값으로 해서 구해지기 때문이다.
블록 해쉬는 무엇인가??
1. 블록의 식별자 역할을 하는 블록 해쉬는 6가지의 블록 헤더 정보를 입력값으로 하고 , 여기에 SHA256해쉬 함수를 적용해서 계산되는 값으로써 , 32바이트의 숫자값이다 .
2. 이름은 블록 해쉬이지만 , 그 값은 블록 전체를 해쉬한 값이 아니라 , 블록 헤더를 해쉬한 값이다 .
블록체인 구조 한눈에 보기
개별거래 à 개별거래의 해쉬값들 à 머클트리의 해쉬값 à 블록헤더 ( 머클트리해쉬) à 블록해쉬
개별거래 정보는 결국 머클 트리의 해쉬값인 merklehash 값으로 집약된다.
블록 헤더의 6가지 정보 중에서 version , previousblockhash , merklehash , time , bits 이렇게 5가지는 블록 해쉬를 만드는 시점에서 이미 확정되어 변하지 않는 값이다.
하지만 마지막 nonce는 확정되어 있지 않고 새로 구해야 하는 값이다. 이 nonce값을 구해서 최종적으로 블록 해쉬값을 구하고 , 이 블록 해쉬값을 식별자로 가지는 유효한 블록을 만들어내는 것이 바로 작업 증명 ( proof of Work ) , 채굴이다 .
블록 체인은 앞에서는 분산 공개 장부라고 했는데 , 기술적으로는 블록이 이어져서 만들어진 블록의 집합체라고 말할 수 있다.
블록들은 어떻게 이어져 있는걸까??
블록 헤더의 6가지 정보 중의 하나인 previousblockhash 값은 현재 생성하고 있는 블록 바로 이전에 만들어진 블록의 해쉬값이다.
블록은 바로 앞의 블록 해쉬 값을 포함하는 방식으로 앞의 블록과 이어지게 되는 것이다 .
거래들을 순서대로 모아서 하나의 블록으로 만들어 정규 블록으로 합의를 본다 à 거래 장부의 원본이 된다 .
다음의 거래 내역은 이전 거래내역을 기반으로 만들어지기 때문에 “이전 거래가 반드시 진짜본이라는 것이 증명”되어야 한다
이전에 발생했던 거래 내역의 결과를 기반으로 다음 거래가 이루어진다.
'학부공부 > 블록체인' 카테고리의 다른 글
블록체인의 정말 간단한 정의 (0) | 2018.10.01 |
---|
#IT #먹방 #전자기기 #일상
#개발 #일상