- Today
- Total
프로그래밍 농장
머클트리 (Merkel Tree) 에 대하여 본문
실제로 블록은 다음과 같이 구성됩니다.
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)'가 될수있다. 하지만 이 머클트리의 이진트리 방식은 블록데이터의 일부만 다운받는 '라이트 노드'로 우리가 가지고 다니는 모바일로도 쉽고 빠르게 특정 거래를 찾도록 해준다.
이것이 머클트리가 블록에서 맡은 역할이다.
'블록체인' 카테고리의 다른 글
블록체인 밋업 컨퍼런스(2022 Blockchain Meetup Conference) (0) | 2022.07.20 |
---|---|
flutter crypto wallet (0) | 2022.05.24 |
[Solidity ] remix 테스트넷 연결 문제(Not possible to connect to the Web3 provider. Make sure the provider is running and a connection is open (via IPC or RPC) / can't detect injected web3 (0) | 2022.05.19 |
코엑스 IT 박람회 후기 (0) | 2022.05.18 |
DTO(Data Transfer Object) 정의 및 사용 방법 (0) | 2022.05.17 |