전체 메뉴

[쉽게아는 블록체인] “머클 트리(Merkle Tree)” - 진위(眞僞)를 판단하는, 작지만 알찬 나무

조연호 작가 승인 2018.12.24 17:19 의견 0

블록체인에 대해 공부하다 보면 ‘머클 트리(Merkle Tree)’가 나옵니다. 이 용어를 처음 봤을 때 ‘머클’이라는 단어가 생소해 조사해 봤더니 사람이었습니다. 랄프 머클(Ralph Merkle)이라는 사람이 1979년에 만들어 낸 개념입니다.

¶ 머클 트리의 목적과 역할

머클 트리의 목적은 데이터를 간편하고 확실하게 인증하기 위함입니다.


시간이 지날 수록 블록체인의 용량은 계속 늘어나게 됩니다. 그래서 현재는 성능 좋은 컴퓨터만 모든 블록체인을 다운받는 ‘풀 노드(full node)’로 사용할 수 있습니다.

머클 트리를 사용하면 우리가 가지고 다니는 모바일기기로도 블록체인의 일부 데이터만 다운받아 ‘라이트 노드(light node)’로 쉽고 빠르게 특정 거래를 찾도록 할 수 있고, 거래의 진위를 파악할 수 있게 해줍니다. 바로 이것이 머클 트리의 역할입니다.

¶ 머클 트리의 구성요소

(1) 머클 루트(Merkle Root)

머클 루트란 머클 트리의 뿌리 부분에 해당하는 것으로 해당 블록에 있는 모든 거래 내역을 요약해 작은 사이즈의 용량으로 압축한 블록 헤더에 존재하는 데이터를 말합니다. 거래가 아무리 많아도 뭉쳐서 요약된 머클 루트의 용량은 항상 32바이트입니다.

(2) 머클 경로(Merkle path)

어떤 거래의 진위를 따질 때 이를 검증하는 과정을 머클 경로라고 할 수 있습니다. 머클 루트가 주어진다면, 더 쉽게 검증할 수 있습니다.

(3) SHA-256 암호화 (해시함수라고도 합니다)

머클 트리는 데이터를 간편하고 확실하게 인증하기 위해 ‘SHA-256’ 암호화 기술을 사용하고 있습니다. SHA-256은 단방향 암호화 기술입니다. 어떠한 수를 암호화하더라도 결과는 16진수 64자입니다.


이 암호 기술에는 특징이 있는데 입력된 값이 1개라도 다를 경우 결과를 전혀 유추할 수 없고, 입력한 글자의 수와 관계없이 결과의 크기가 항상 64자라는 점입니다.


수많은 거래가 블록에 포함되더라도 SHA-256가 사용되기 때문에 작은 용량으로 유지할 수 있는 것입니다.

(4) 풀 노드(full node)와 라이트 노드(light node)

‘풀 노드’는 말 그대로 제네시스 블록(첫 번째 블록)부터 지금까지의 블록이 연결된 블록체인 전체를 유지하는 노드입니다. 반면 ‘라이트 노드’는 블록체인 전체가 아닌 몇몇 블록만 가지고 있으며, 풀 노드에게서 필요한 정보만을 받아서 유지하는 노드입니다.

(5) 블룸 필터((Bloom filter)

블룸 필터는 특정 원소가 그 데이터 집합에 속하는지 속하지 않는지를 검사하는데 사용되는 확률 자료 구조입니다. 수많은 거래에서 특정한 거래가 블록체인에 속한 것인지를 명확하게 따질 때, 블룸 필터를 이용하면 모든 정보를 공개하지 않고도 해당 거래의 진위를 검증할 수 있습니다. 위에서 설명한 ‘라이트 노드’에서 정보의 진위를 따질 때 블룸 필터를 사용해서 정보의 진위를 가려냅니다.

¶ 머클 트리 구조

블록체인에서는 각 트랜잭션(거래 내역)들을 SHA-256으로 암호화해 64자의 해시 결과를 만듭니다. 다음으로 각 인접한 노드들을 합한 다음, 다시 SHA-256으로 암호화해 해시 결과를 만들어 냅니다.

단 하나의 해시가 나올 때까지 이런 과정을 반복합니다. 달리 표현하면 수많은 거래내용을 해시함수를 통해 압축하고 인접한 노드끼리 더한 다음 다시 압축합니다. 그리고 이와 같은 과정을 반복합니다. 모든 결과의 값은 이전 해시함수를 거쳤기 때문에 입력이 하나라도 달라지면 최종결과인 ‘머클 루트’가 달라집니다.

이러한 특성이 있어서 블록에서 거래 변조의 여부를 확인할 수 있으며, 거래내용이 아무리 길어도 해시함수를 거친 결과는 무조건 64자이기 때문에 블록의 용량도 줄일 수 있습니다.

이렇게 용어 자체는 복잡하지만, 거래의 진위를 쉽게 가려내고, 수많은 거래를 작은 용량으로 저장하기 위해서 꼭 필요한 ‘작지만 알찬 나무’라고 할 수 있습니다.

<저작권자 ⓒ시사N라이프> 출처와 url을 동시 표기할 경우에만 재배포를 허용합니다.