머클해시

[요약] 블록에 포함된 거래 내역을 나무 형태로 요약한 데이터 구조
1979년 머클트리를 개발한 랄프 머클(Ralph Merkle)의 이름을 따서 머클트리라고 부르며 해시트리(Hash Tree), 혹은 거래를 두 개씩 묶으므로 이진트리(Binary Tree)라고도 한다.
머클트리는 블록 내에서 다수의 원장(ledger)들을 암호화하고 합치는 과정을 반복하여 최종적으로 하나의 유닛(Unit)으로 암호화하는 방법이다. 머클트리의 형태는 블록이 보유하고 있는 거래 내역들의 해시값을 가장 가까운 거래내역끼리 쌍을 지어 해시화하고, 쌍을 지을 수 없을 때까지 해당 과정을 반복하여 완성되는데, 이 과정을 통해 다수의 데이터를 하나로 묶어 용량을 절약할 수 있다. 즉, 머클트리는 빠른 검색이 아니라 데이터의 간편하고 확실한 인증을 위해 사용한다.
이러한 '머클트리(Merkle Tree)' 혹은 '해시트리(Hash Tree)'라는 데이터 구조는 블록에 포함된 거래 내역을 나무 형태로 요약한 것이다. 즉, 기존의 트리구조와 달리 자식노드에서 부모노드로 상향하는 구조를 가지고 있으며 노드들의 최상위에 블록의 헤더라고 할 수 있는 ‘머클루트(Merkle Root)’를 가진다.
머클트리는 블록체인의 효용성 향상에 크게 기여한다.
첫째, 특정 거래내역을 증명하기 위해 모든 거래내역을 검색할 필요가 없다. 블록체인은 모든 거래 내역을 저장하고 있는 풀노드(full node)와 거래 처리 속도를 높이기 위해 데이터 일부만을 처리해 보관하는 라이트 노드(light node)를 분리하는 경우가 있다. 머클트리의 머클루트가 바로 이 라이트 노드와 같은 역할을 해준다. 머클루트 값만 알면 최소한의 정보만으로도 필요한 정보를 블록에서 가져올 수 있다.
둘째로 모든 거래내역들이 합하여 해시화된 값이 머클루트이기 때문에 하나의 거래내역에 작은 변화가 생기더라도 상위 해시값 모두가 변하게 된다. 따라서 특정 거래 내역을 확인하기 위해 모든 거래내역을 일일이 검사해야 하는 번거로움을 줄일 수 있다. 그래서 네트워크의 접근성은 높아졌지만 동시에 보안성도 높아지는 효과까지 있다.
- 머클 경로(Merkle path)는 어떤 거래의 진위를 따질 때 이를 검증하는 과정을 말한다.
- SHA-256는 단방향 암호화 기술로 머클트리가 데이터를 간편하고 확실하게 인증하기 위해 사용한다. 이는 어떠한 수를 암호화하더라도 결과는 16진수 64자이다. SHA-256의 특징 중 하나가 입력된 값이 조금이라도 다를 경우 결과를 전혀 유추할 수 없고, 입력한 글자의 수와 관계없이 결과의 크기가 항상 64자라는 것이다. 거래량의 상관없이 SHA-256를 사용하여 작은 용량으로 유지할 수 있다.
- 풀 노드(full node)는 제네시스 블록부터 현재 시점의 형성된 블록이 연결된 블록체인 전체를 유지하는 노드이다.
- 라이트 노드(Light node)는 일부 블록만 소유하고 풀 노드에게서 필요한 정보만을 받아서 유지하는 노드이다. 머클트리는 라이트 노드에서 거래를 검증하기 위해 사용된다.


