BlockChain/블록체인

머클트리

Dev_2H 2022. 12. 18.
반응형
머클트리( Merkle Tree) 란?

SegWit 업그레이드를 얘기할 때 기존의 디지털 서명 데이터를  머클트리를 통해 저장하는 것.

 

머클트리란 여러 데이터에 대해 단계적으로 해시함수를 적용하여 하나의 해시값으로 나타내는 데이터 구조

즉, 여러 개의 데이터를 하나의 해시값으로 만드는 데이터 구조

 

블록체인에 이는 데이터를 위변조를 방지하고 데이터가 변하지 않았음을 보장하는데 머클트리는 사용됌

 


머클트리 동작방식

 

1. 데이터 ABCD에 해시함수를 넣어서 해시 A B C D 를 만든다

2. 해시를 두 개 씩 짝지어서 연결

3. 두 해시값을 해싱하여 하나의 데이터로 연결한다.

4. 하나의 해시값만 남을 때 까지 반복 

 

최종적으로 나온 해시값이 바로 머클 루트(merkle root)

머클루트는 트리의 루트이자, 모든 데이터들을 모아 해싱한 값 

 


머클트리가 무결성을 보장하는 방법

하나의 데이터가 변조되면 최종적으로 머클루트가 변경되기 때문에 변한 데이터들을 쉽게 찾을 수 있다.

 


 

블록체인에서의 머클트리

 

블록체인 블록 구조

모든 블록은 고유한 해시값을 가지고 있다.

블록의 해시값은 블록 헤더의 모든 값들을 연결하여 해싱한 값이 블록의 고유한 해시값이 된다.

 

 

1번 블록의 해시값은 그 다음으로 이어지는 2번 블록의 헤더에 포함된다.

즉, 모든 블록은 이전 블록의 해시값을 갖고 있다.

 

헤더에 존재하는 머클루트는 트랜잭션을 사용해 머클트리를 만들고 그 결과로 나온 머클 트리 값

즉 헤더에 담긴 머클루트는 트랜잭션에 대한 무결성을 보장하는 머클루트 값이다.

 


 

악의적인 노드가 있다면?

만약 악의적인 노드가 블록의 트랜잭션을 변경하고 머클 트리의 특성에 따라 머클루트의 값도 변경한다면

블록 헤더의 모든 값을 연결하여 해싱한 값인 블록 해시값도 변경된다.

 

이런 식으로 연결되어 있기 때문에 하나의 트랜잭션이라도 변경하는 경우, 해당 블록 이후에 모든 연결된 블록들을 수정해야 한다.

 

블록의 논스(Nonce) 를 찾는데 10분정도 걸리기 때문에 하나의 트랜잭션을 수정하기 위해선 모든 블록의 논스값을 다시 찾는 것은 매우 많은 비용이 들고 현실적으로 불가능하다.

 

 

'BlockChain > 블록체인' 카테고리의 다른 글

작업 증명 ( PoW )  (1) 2023.03.27
블록체인 채굴  (0) 2023.03.27
트릴레마  (0) 2022.12.20
세그윗 SegWit  (1) 2022.12.18
분산 데이터베이스  (1) 2022.12.18

댓글