프로그래밍 농장

머클트리 (Merkel Tree) 에 대하여 본문

블록체인

머클트리 (Merkel Tree) 에 대하여

Tennessee201 2022. 5. 25.
728x90

실제로 블록은 다음과 같이 구성됩니다. 

1. 블록의 정체성을 띄는 데이터를 가진 블록헤더 

2. 해당 블록에 거래의 개수를 알려주는 거래 카운터

3. 가장 많은 공간을 차지하는 거래목록들

 

위 중 블록의 정체성을 갖게하는 1번 블록체더는 또 아래 3가지로 구성됩니다.

1. 현재 블록이 이전(previous)블록들과 연결되어 있음을 나타내는, 이전 블록의 해시값을 갖는 데이터

2. 난이도, 타임스태프, 논스 

3. 머클루트(Merkle Root)


머클루트(Merkle Root)란? 

블록하나에 모든 거래내역을 가지고 있는데도 왜 요약본을 더 가지고 있을까? 이것은 머클트리에 대해 좀 더 공부할 필요가 있다. 

-> 거래를 묶어주는 머클트리(Merkle Tree)

머클트리는 이진트리(Binary trees)라는 이름으로도 알려져 있다. 여기서 '이진트리'는 쉽게 말해서 거래를 두 개씩 묶는다는 말이다.

위 그림은 가장 단순하게 8개의 거래로 묶어 예를 든 것인데, 8개뿐만 아니라 몇 개의 거래 데이터가 있든 하나의 부리(Root)로 만들어 준다. 

이 과정은 그럼처럼 두 개씩 거래를 묶은 다음 알고리즘(SHA256이라는)을 통하여 해시값으로 나타내고, 이는 도 그렇게 묶은 값들을 다시 두 개씩 묵어서 해싱하여 수 백 개의 거래값들을 그림의 가장 곡대기에 위치한 하나의 데이터로 만들어주는 것이다.  (이떄 거래가 얼마가 되든 결국엔 요약된 어클루트의 용량은 32byte이다. )


특정 거래를 쉽고 빠르게 찾아주는 머클트리(Merkle Tree)

이렇게 두 개씩 묶어서 올라가게 되면 거래량이 기하급수적으로 늘어나도 특정 거래를 찾는 경로는 단순하다는 이점이 생긴다. 

거래의 건수인 N이 증가할 떄 마다 특정 거래의 경로를 찾는 경우의 수는 log2(N)으로 늘어나기 떄문이다. 


 

블록체인의 용량은 시간이 지날수록 지속적으로 늘어나기 때문에 이제는 성능이 좋은 컴퓨터만 모든 블록체인을 다운받는 '풀노드(full node)'가 될수있다. 하지만 이 머클트리의 이진트리 방식은 블록데이터의 일부만 다운받는 '라이트 노드'로 우리가 가지고 다니는 모바일로도 쉽고 빠르게 특정 거래를 찾도록 해준다. 

이것이 머클트리가 블록에서 맡은 역할이다. 

728x90