2019년 12월 26일
머클트리 (Merkle Tree)
I. 블록체인의 데이터 구조, 머클트리
가. 머클트리 (Merkle Tree)의 개념
- Leaf 노드는 데이터로 구성되고, 상위 노드는 자식 노드의 해시값으로 구성된 데이터 구조
나. 머클트리의 특징
무결성 보장 | Root 노드의 해시 값으로 모든 Leaf 노드의 데이터 변경 확인 가능 |
동일 해시값 크기 | 해시 함수 기반 데이터 노드 수와 관계없이 동일한 크기 |
빠른 검증 속도 | 이진 트리 구조 기반 빠른 속도의 검증 가능 O(log N) |
II. 머클트리의 구성도, 구성요소 및 매커니즘
가. 머클트리의 구성도
나. 머클트리의 구성요소
구성 요소 | 트리 요소 | 상세 설명 |
---|---|---|
Merkle Root | Root Node | 최종 Hash 병합 결과로 데이터 무결성 검증 대상 |
Hash Block | Non-Leaf Node | 자식 노드 2개의 Hash Data 병합 Hash 함수 결과 |
Data Block | Leaf Node | 트랜잭션, 파일 등의 원본 데이터 |
Hash Data | Node Data | 하위 노드 데이터 기반 Hash 함수값 |
다. 머클트리의 매커니즘
구분 | 적용 기술 | 세부 동작 |
---|---|---|
생성 | SHA-256 해시 함수 | – Data a H(a), Data b → H(b) 생성 – H(a) + H(b) → H(ab) 생성 – 머클트리로 머클루트 H(abcd) 생성 |
검증 | Binary Tree 구조 머클패스 탐색 | – Data b → Data b1로 변경 – 머클트리로 H(ab1cd) 생성 – 머클루트 불일치 : H(abcd)와 H(ab1cd) |
III. 머클트리의 활용 분야
- 다수 블록으로 분리되어 데이터 전송 시 데이터가 변조 여부를 검증하여 데이터 무결성을 보장