본문 바로가기
정보 보안/블록체인

블록 체인의 구조

by tryotto 2020. 2. 27.

# 블록체인의 구조


- 큰 틀에서의 구조 :


     1) 블록 해시 : 블록 헤더에 있는 내용들을 모두 합산한 값 -> SHA-1 해싱을 한 결괏값

> 역할 : 블록의 "식별자"


     2) 블록 헤더 : 버전, 이전 블록 해시, 머클 루트 값, 타임, 난이도 목표, 논스 (6가지) 로 구성

>1. 이전 블록 해시 : 이전 블록의 주솟값

      ** 블록 해시와 헷갈리면 안된다!!

         블록 해시는 "지금 이 블록의" 블록 주소를 의미하며,

         이전 블록 해시는 "이전 블록의" 블록 주소를 의미한다

>> 실제로 블록들을 하나의 "체인"처럼 연결해주는건 바로 이 부분때문이다.


>2. 머클 루트 : 블록 바디에 있는 트랜잭션들의 해싱 트리

- 의의 : 트랜잭션/블록 해시 의 무결성 증명 가능


     3) 블록 바디 : 트랜잭션들로 구성 (1번째~N번째 블록들에 대한 트랜잭션들)



- 큰 틀의 자료구조 : 링크드 리스트

     - 각각의 블록들이 체인처럼 연결되어 있다.


- 세부 구조 : 머클 루트란?


     - 구하는 방식 : 

1) 블록 바디에 있는 트랜잭션들을 모은다

2) 각각의 트랜잭션들을 2개씩 짝지어서 합산한다 (가까운 것끼리 짝)

3) 합산한 값을 해싱해서 새로운 하나의 노드를 만든다

4) 1-3 의 과정을, 단 하나의 노드만 남을때까지 반복한다

5) 최종적으로 남은 노드의 해싱값 = 머클 루트


     - 의의 :

1) 머클 루트 값을 계속 갖고 있는 상태에서, 만약에 누가 트랜잭션을 변환했을 경우 

    -> 필연적으로, 머클 루트 값이랑 다른 최종 해싱 값이 나온다

    -> 검증 과정을 통해, 해킹이 일어났다는 것을 알 수 있다.

>> 트랜잭션의 유효성 확인 가능

  2) (머클루트를 이용 -> 블록 해시 생성) 이기 때문에, 전체 블록 자체의 유효성 확인이 가능







# 블록 해시



- 의의 : 블록의 "식별자"


- 구하는 과정 :


     1) 버전, 타임, bits, 논스 정보는 리틀 엔디안 형태로 데이터를 변형

     2) 이전 블록 해시, 머클루트는 결과 값을 모두 반대 순서로 바꾸기

     3) 헤더 정보들을 모두 합산 (이어붙이기)

     4) 합산한 헤더 정보를 바이너리 형태로 변형

     5) 다시 SHA 형태로 변형 후 바이너리 형태로 또 변형

     6) 변형한 값을 다시 SHA 형태로 변형 (5~6번 과정은 합산한 정보를 2중 해싱한다고 생각하시면 됩니다.)

     7) 이렇게 얻은 결과 값을 다시 뒤집기




'정보 보안 > 블록체인' 카테고리의 다른 글

암호화폐의 해싱  (0) 2020.02.27
채굴이란?  (0) 2020.02.27
채굴의 구체적 과정  (1) 2020.02.27
합의 알고리즘  (0) 2020.02.27
암호화폐 지갑  (0) 2020.02.27